Guía de Estilo de PASCAL
|
|
|
Seminario de Programación
Departamento de Informática
Este documento tiene como finalidad proporcionar un conjunto de reglas que nos ayuden a escribir programas en Pascal con un "buen estilo". Un código escrito con buen estilo es aquel que tiene las siguientes propiedades:
Hay muchos estilos que cumplen estas características. En este documento simplemente vamos a dar uno de ellos. Este documento es una versión resumida y adaptada de la guía de estilo para C de Juan José Moreno Moll (http://bugs/guia/asignatu/EDS/9697/ESTILO/estilo20.html)
Los principios de esta sección sirven para aumentar la legibilidad del código y para facilitar su mantenimiento. Éstos son:
La encapsulación y ocultación de información ayudan a organizar mejor el código y evitan el acoplamiento entre funciones del código.
La encapsulación permite agrupar elementos afines del programa. Los subprogramas afines se agrupan en ficheros (unidades), y los datos en grupos lógicos (estructuras de datos).
Ocultación de información: Un subprograma no necesita saber lo siguiente:
Para conseguir esto se deben seguir las siguientes reglas:
Los comentarios dan información sobre lo que hace el código en el caso que no sea fácil comprenderlo con una lectura rápida. Se usan para añadir información o para aclarar secciones de código. No se usan para describir el programa. Por lo tanto no se deben poner comentarios a una sola instrucción. Los comentarios se añaden en los niveles siguientes:
Los comentarios se pueden escribir en diferentes estilos dependiendo de su longitud y su propósito. En cualquier caso seguiremos las siguientes reglas generales:
Aquí vamos a describir como hacer comentarios dentro del código. Dentro de este tipo de comentarios se pueden distinguir:
Ejemplo: comentario tipo prólogo en una caja:
(*************************************************************)
(* AUTOR: Nombre *)
(* *)
(* PROPOSITO: *)
(* *)
(*************************************************************)
Ejemplo: Separador de secciones.
(**********************************************************)
Ejemplo: comentarios para bloques grandes de código.
(*
* Usar para comentarios a mas de un bloque de
* sentencias.
*)
En caso de utilizar este tipo de comentario, seguir las siguientes reglas:
Ejemplo: Comentarios en un bloque de datos.
CONST
MaxTeoria = 120; (* Maximo de alumnos por grupo teoría *)
MaxPracticas = 24; (*Maximo de alumnos por grupo prácticas*)
Ejemplo: Comentarios al final de una estructura.
FOR I := 1 TO Final DO
BEGIN
WHILE NOT(Correcto) DO
BEGIN
Correcto := FALSE;
write('Introduce dato:');
readln(Dato);
IF Dato < 100 THEN
Correcto := TRUE
END; (* WHILE *)
writeln
END; (* FOR *)
Ejemplo:
(* Hallamos la nota media de todos los examenes *)
FOR i := 1 TO NumAlumnos DO
Suma := Suma + Nota[i];
Media := Suma / NumAlumnos;
Los espacios en blanco facilitan la lectura y el mantenimiento de los programas. Los espacio en blanco que podemos utilizar son: líneas en blanco, carácter espacio, sangrado.
Se utiliza para separar "párrafos" o secciones del código. Cuando leemos un programa entendemos que un fragmento de código entre dos líneas en blanco forma un conjunto con una cierta relación lógica.
Veamos como separar secciones o párrafos en el programa:
Los espacios en blanco sirven para facilitar la lectura de los elementos que forman una expresión. Los espacios en blanco se utilizan en los casos siguientes:
Ejemplos:
Espaciado correcto:
Media := Suma / Cuenta;
Espaciado incorrecto:
Media:=Suma/Cuenta;
Espaciado dentro de una lista de parámetros:
concat(s1, s2)
El sangrado se utiliza para mostrar la estructura lógica del código. El sangrado óptimo es el formado por cuatro espacios. Es un compromiso entre una estructuración legible y la posibilidad de que alguna línea (con varios sangrados) del código supere el ancho de una línea de una hoja de papel o del monitor.
Los identificadores que dan nombre a subprogramas, constantes, tipos o variables han de colaborar a la autodocumentación del programa, aportando información sobre el cometido que llevan a cabo. Para elegir nombre se deben seguir las siguientes recomendaciones generales:
Hay algunos nombres cortos que se usan muy habitualmente. El uso de estos nombres (y sólo de estos) es aceptable.
Ejemplo: nombres cortos aceptables.
c, ch caracteres
i, j, k indices
n contadores
p, q punteros
s, Cad cadenas
En este apartado vamos a describir la forma correcta de escribir ciertas estructuras del lenguaje.
Las palabras reservadas CONST, TYPE y VAR deben comenzar en la misma columna de la cabecera y los elementos declarados se sangrarán a una misma columna. Las declaraciones deben seguir las siguientes reglas:
Como excepción a esta regla podemos agrupar en la misma línea variables auxiliares, contadores, etc.
La forma que tiene Pascal de agrupar instrucciones en bloques es utilizar los parentizadores BEGIN-END. Su colocación se debe hacer en líneas reservadas para cada uno de ellos, sin ninguna otra instrucción en esa línea. Ambos deben ir en la misma columna que la instrucción de la que dependen.
Ejemplo:
FOR i := 1 TO N DO
BEGIN
Vect[i] := Vect2[i];
Suma := Suma + Vect[i]
END
La sentencia o sentencias después de THEN y ELSE van siempre en una nueva línea sangrada:
IF expresión THEN
sentencia
ELSE
otra_sentencia;
|
IF expresión THEN
BEGIN
sentencia1;
sentencia2
END
ELSE
BEGIN
otra_sentencia1;
otra_sentencia2
END;
|
Los valores asociados a la sentencia CASE irán en línea aparte sangrada. El bloque de sentencias asociado comenzará en la misma línea a continuación del valor. Todos los bloques de sentencias pertenecientes al CASE comenzarán en la misma columna.
CASE expresión OF
1 : BEGIN
sentencia1;
sentencia2
END;
2, 3: otra_sentencia
END;
La sentencia o sentencias pertenecientes a la estructura de repetición (sentencias después del DO o REPEAT) van siempre en una nueva línea sangrada:
WHILE expresión DO
sentencia;
|
WHILE expresión DO
BEGIN
sentencia1;
sentencia2
END;
|
Un código bien escrito debe poder ejecutarse en otras máquinas o plataformas haciendo un mínimo de cambios. Nuestro código debe ser lo más portable posible.