Tema Progress:

Free Pascal. Estructura de un fichero de código fuente

Tal y como ocurre con otros lenguajes, los ficheros de código fuente en Free Pascal guardan una estructura muy concreta que, en este lenguaje, es bastante estricta.

Del mismo modo que esos otros lenguajes, la estructura de un archivo de código fuente variará dependiendo de si se trata de una unidad o no.

Fichero de código fuente base

El fichero de código fuente clásico se guarda con extensión .PAS pero el código en sí, guarda una estructura rígida que ha de cumplirse aunque existan elementos que son obligatorios y otros opcionales:

  • program NombrePrograma; Esta palabra clave, obligatoria, indica el nombre del programa o aplicación.
  • {$directivas de compilación}. Las directivas de compilación son instrucciones que se dan al compilador, antes de hacer su trabajo. Es opcional.
  • uses. El bloque opcional uses, permite enlazar unidades o módulos externos. Si se usan más de uno se separan por comas.
  • type. Este bloque permite especificar tipos de datos nuevos, personalizados, basados en otros. Es opcional.
  • const. Otro bloque opcional que nos permite declarar las constantes que necesitemos.
  • var. Bloque opcional donde declaramos las variables del bloque principal del programa.
  • Funciones y procedimientos. Declararemos e implementaremos en esta sección todas las funciones y procedimientos que necesite el programa.
  • begin … end.. Bloque del código principal del programa. Por supuesto es obligatorio.

Adicionalmente es posible encontrarse con otros bloques como los comentarios que seran, claro, opcionales.

Fichero de Unidad o módulo

Los módulos o unidades son las clásicas librerías de otros lenguajes. Como tal, contendrán código que realizará tareas muy concretas y que podrá reutilizarse cuando fuera necesario. La palabra clave de Free Pascal para usar una unidad es… use. Dispone de una distribución o estructura un poco diferente de los programas pero igualmente rígida:
  • unit NombreDeLaUnidad; Esta palabra clave, obligatoria, indica el nombre de la unidad o módulo.
  • {$directivas de compilación}. Las directivas de compilación son instrucciones que se dan al compilador, antes de hacer su trabajo. Es opcional.
  • interface. Indica el comienzo del bloque de interfaz de la unidad. Lo indicado en este bloque será público para el programa o la unidad que use a ésta.
  • uses. El bloque opcional uses, permite enlazar la unidad con otras para reutilizar sus funcionalidades.
  • type. Este bloque permite especificar tipos de datos nuevos, personalizados, basados en otros que proveerá la unidad. Es opcional.
  • const. Constantes que provee la unidad. Opcional.
  • var. Variables que provee la unidad. Opcional.
  • Funciones y procedimientos. Declaración de las funciones y procedimientos que proveerá la unidad.
  • implementation. Bloque obligatorio donde implementaremos las funciones y procedimientos declarados en interface. Del mismo modo, podemos insertar aquí los tipos, variables, constantes, etc., propios de este bloque que es, privado (no visible desde fuera de la propia unidad).
  • initialization. Acciones previas de inicialización, como asignar valores por defecto a variables. El código debe ir dentro de un bloque begin … end;. Opcional.
  • finalization. Acciones de finalización de la unidad. Ejemplo: cerrar conexiones con ficheros. El código debe ir dentro de un bloque begin … end;. Opcional.