3.1.- Los procedimientos Basicamente los procedimientos son sub-conjuntos de los programas y como tales pueden tener todo lo que ellos poseen (excepto la sentencia uses) solo se diferencian en que los procedimientos terminan con punto y coma en vez de punto y que no pueden correrse en forma aislada. Veamos un ejemplo: PROGRAM PROCEDIMIENTO; USES CRT; VAR { ESTE VAR ES DEL PROGRAMA PRINCIPAL } LETRA : CHAR; PROCEDURE ESCRIBE (LIMITE:CHAR); VAR { VAR DEL PROCEDIMIENTO } LETRAS : CHAR; BEGIN WRITELN ('LAS ',ORD (LIMITE) - 64,' PRIMERAS LETRAS SON:'); FOR LETRAS := 'A' TO LIMITE DO BEGIN WRITE (LETRAS); { CUERPO DEL PROCEDIMIENTO } WRITE (' '); END; END; BEGIN CLRSCR; WRITELN ('HASTA QUE LETRA DESEA IMPRIMIR '); READLN (LETRA); ESCRIBE (LETRA); END. Vemos que el procedimiento se coloca antes que el programa principal. Esto se debe a una regla de pascal que dice que cualquier cosa que se use debe estar ya declarada previamente. Asi nuestro programa principal no hubiese podido usar el procedimiento escribe de no haber sido declarado antes. Esta regla tiene algunas excepciones como veremos mas adelante. Debe notar el lector que al llamar al procedimiento solo escribimos el nombre de este y continuacion los parametros necesarios en este caso, escribe necesita un solo parametro tipo char. Que los nombres sean distintos en la llamada y en la lista de parametros no debe extraniar puesto que esto se construyo asi para que uno pueda crear procedimientos aparte y luego poder usarlos desde cualquier programa. Los unicos que necesitan atencion son el paso de cadenas y los tipos de datos que esperan los parametros cuando no se trata de lo tipos simples (con los tipos simples se pueden mandar parametros que sean simplemente compatibles con los de la definicion), estos deben ser iguales no simplemente "compatibles", como se explico anteriormente, si se deben mandar varios parametros deben separarse por comas. .