Sunteți pe pagina 1din 0

219

A. Fabin Lpez Valencia Dpto. de Ingeniera de Sistemas y Automtica


Escuela Superior de Ingenieros (UPV/EHU)











Anexo A

Estilo de programacin
220 Anexo A: Estilo de programacin
Dpto. de Ingeniera de Sistemas y Automtica A. Fabin Lpez Valencia
Escuela Superior de Ingenieros (UPV/EHU)
ESTILO DE PROGRAMACION
Uno de los requisitos para el desarrollo del lenguaje de programacin Ada
1
fue el de que facilitara la escritura de
programa legibles, al considerarse que los programa profesionales se leen muchas ms veces de las que se escriben.
Sin embargo, la legibilidad de un programa no depende slo de las caractersticas del lenguaje de programacin, sino
que es el estilo en que est escrito el que determina en gran medida su legbilidad.
Uno de los principales aspectos en los que juega un papel muy importante la legibilidad de los programas es en el del
mantenimiento del software, es decir la modificacin de los programas con la finalidad de corregir errores o aadir
nuevas opciones o funcionalidades. Teniendo en cuenta, que la mayor parte del tiempo que dedica un programador al
mantenimiento se emplea en estudiar el cdigo fuente del programa, se llega a la conclusin de que la claridad es
vital para el adecuado desarrollo de una aplicacin informtica, especialmente cuando el trabajo se realiza en grupo.
A diferencia de la sintaxis del lenguaje de programacin, que son reglas fijas que obligatoriamente hay que seguir, un
estilo de programacin est constituido por directrices que ayudan a obtener programas ms legibles. Es por esto
que, si bien no existen estilos de programacin absolutamente correctos o incorrectos, es aconsejable la adopcin, de
una manera sistemtica, de un conjunto de normas para la escritura de programas. Y esto es as, no slo para el
desarrollo de grandes proyectos de programacin, sino tambin para el de pequeos programas, que habitualmente
constituyen el ncleo del aprendizaje de las tcnicas bsicas de programacin.
Por ello, se proponen aqu algunas normas relativas a la denominacin de los objetos de los programas y de la
estructuracin de stos, recordando que el objetivo fundamental de un estilo de programacin no es hacer que todos
los programas sean iguales, sino que resulten fciles de leer, comprender y manipular tanto para el desarrollador
inicial del programa como para quien tenga que realizar el mantenimiento del mismo.

1. IDENTIFICADORES
Identificador es el nombre que asignamos a un objeto del programa (constante, tipo de dato, variable,
funcin, procedimiento, ...) que representa alguna entidad del mundo real. La funcin de una entidad del
mundo real se refleja en la funcin del objeto que la representa en el programa. Es por sto que los
identificadores o nombres de los objetos de un programa deben ser coherentes con el significado de la
entidades del mundo real que modelan, de tal manera que sean una descripcin clara y breve de las
mismas. Nada contribuye tanto a la claridad y legibilidad de un programa como la eleccin de buenos
nombres mnemotcnicos, teniendo siempre presente que el objetivo de la eleccin del identificador no es
minimizar el nmero de pulsaciones si no maximizar la claridad del programa.
Palabras reservadas
Se utilizarn letras maysculas.
Palabras reservadas de Pascal estndar:
AND DIV FILE IN OF RECORD TYPE
ARRAY DO FOR LABEL OR REPEAT UNTIL
BEGIN DOWNTO FUNCTION MOD PACKED SET VAR
CASE ELSE GOTO NIL PROCEDURE THEN WHILE
CONST END IF NOT PROGRAM TO WITH

1 Lenguaje de alto nivel (basado en Pascal) patrocinado por el Ministerio de Defensa de los EE UU y desarrollado a partir de un estudio
previo de los requisitos que deba satisfacer un lenguaje de programacin moderno: legibilidad, tipado fuerte, construccin de grandes
programas, manejo de excepciones, abstraccin de datos , procesamiento paralelo, unidades genricas,... Es el primer lenguaje prctico
que posee conjuntamente las distintas categoras de abstraccin de datos.
Anexo A: Estilo de programacin 221
A. Fabin Lpez Valencia Dpto. de Ingeniera de Sistemas y Automtica
Escuela Superior de Ingenieros (UPV/EHU)
Palabras reservadas aadidas en Turbo Pascal:
ASM CONSTRUCTOR DESTRUCTOR IMPLEMENTATION INLINE
INTERFACE OBJECT SHL SHR STRING
UNIT USES XOR
Directivas de Turbo Pascal:
ABSOLUTE ASSEMBLER EXTERNAL FAR FORWARD
INTERRUPT NEAR PRIVATE PUBLIC VIRTUAL
Identificadores de constantes predefinidas
Se utilizarn letras maysculas.
Ejemplos: MAXINT, MAXLONGINT
Identificadores de tipos de datos, funciones y procedimientos predefinidos
Se utilizarn letras minsculas, comenzando con maysculas cada una de las palabras que forman el
identificador.
Ejemplos: Integer, Char, Write, Read, WriteLn, ReadLn
Identificadores de constantes definidas por el usuario
Se escribirn en maysculas, con un prefijo en minsculas correspondiente a la notacin hngara, que se
explicar ms adelante. Si el identificador de la constantes est formado por varias palabras, estas se
separaran mediante el carcter subrayado.
Ejemplos: cESPACIO, iMAX_FILAS, byMESES_ANYO
Identificadores de tipos definidos por el usuario
2

Se utilizarn letras minsculas, comenzando cada palabra que componga el identificador con letras
maysculas
3
.
Se utilizar un prefijo en el identificador de acuerdo con la notacin hngara, comenzado siempre por la
letra minscula t.
Ejemplos: tsCadenas, trgPersonas, trgFechas
Identificadores de variables y parametros
Se utilizarn letras minsculas, comenzando cada palabra que componga el identificador con
maysculas.
Se utilizar un prefijo en el identificador de acuerdo con la notacin hngara.
Ejemplos: iContador, iContPalabras, rPorcentaje, cUltimaLetra

2 En muchas ocasiones, se utiliza el plural para resaltar la idea de generalidad implcita en el concepto de tipo de dato, frente a la
particularidad del concepto de variable.
3 Una opcin alternativa es separar las palabras que componen un identificador mediante el carcter de subrayado. Por ejemplo:
iCont_Palabras, iUltima_letra, ...
222 Anexo A: Estilo de programacin
Dpto. de Ingeniera de Sistemas y Automtica A. Fabin Lpez Valencia
Escuela Superior de Ingenieros (UPV/EHU)
Identificadores de procedimientos
4

Se utilizarn letras minsculas, comenzando cada palabra que componga el identificador con letras
maysculas.
Identificadores de funciones
Se utilizarn letras minsculas, comenzando cada palabra que componga el identificador con letras
maysculas.
Se utilizar un prefijo en el identificador de acuerdo con la notacin hngara, comenzado siempre por las
letras minsculas fn.
2. ESTRUCTURA DEL PROGRAMA
2.1 Utilizacin de elementos LOCALES y GLOBALES
Utilizar siempre tipos y constantes con nombre
Ser preferible, por claridad del programa y para facilitar el mantenimiento del mismo, la utilizacin de
constantes con nombre, en lugar de constantes literales.
Utilizar siempre variables locales
Se utilizarn siempre variables locales a los subprogramas, para evitar los efectos laterales de las
variables globales.
No utilizar funciones o procedimientos locales
No es aconsejable, para los ejercicios que se realizarn durante el curso, la utilizacin de procedimientos
o funciones locales, puesto que, dada la poca complejidad de los ejercicios propuestos, el uso de
subprograma locales dificultara la claridad de los programas, sin aadir ventajas apreciables.
Utilizar tipos locales slo cuando est estrictamente justificado
Siguiendo el mismo razozamiento de los procedimientos o funciones locales, se procurar no abusar del
uso de tipos locales a subprogramas. No obstante, se tendr en cuenta que, en ocasiones muy especficas,
su uso mejorar la claridad del programa. Siendo ms fcil encontrar justificacin al uso de tipos locales
a un subprograma que al uso de funciones y procedimientos locales, incluso en ejercicios no muy
complejos.
2.2 Estructura general de las partes del programa
Cada una de las partes del programa comenzar en la primera columna, indentando o sangrando las
lneas que componen cada una de las partes del programa.
Se recomienda la utilizacin de sangrados de 4 o 5 espacios en blanco como mximo; utilizar uno ms
grande (8 o ms espacios) da lugar a lneas de programa demasiado largas.
Se separar cada una de las partes o bloques del programa (TYPE, VAR, ...) con una lnea en blanco.

4 Generalmente la primera palabra del identificador ser un verbo en infinitivo para resaltar la accin que realiza el procedimiento.
Anexo A: Estilo de programacin 223
A. Fabin Lpez Valencia Dpto. de Ingeniera de Sistemas y Automtica
Escuela Superior de Ingenieros (UPV/EHU)
As mismo, se recomienda dejar un espacio en blanco antes de cada punto y coma ( ; ) utilizado para
separar las sentencias de un programa.
Ejemplo:
TYPE
< declaracin de tipo > ;
< declaracin de tipo > ...

VAR
< declaracin de variable > ;
< declaracin de variable > ...

BEGIN
< sentencia > ;
< sentencia > ...
END .
2.3 Estructura de las sentencias
Declaracin de registro
Declaracin de registro fijo o normal

= RECORD
< campo > ;
< campo > ...
END
Declaracin de registro variante

= RECORD
< campo > ;
< campo > ...
CASE <campo> : < tipo > OF
< etiqueta > :
( < campo > ... ) ;
< etiqueta > :
( < campo > ... ) ;
...
END
Sentencia compuesta

BEGIN
< sentencia > ;
< sentencia > ...
END
Sentencia condicional simple ( IF )

224 Anexo A: Estilo de programacin
Dpto. de Ingeniera de Sistemas y Automtica A. Fabin Lpez Valencia
Escuela Superior de Ingenieros (UPV/EHU)
IF < condicin > THEN
< sentencia simple o computesta >
Sentencia condicional compuesta ( IF ELSE )

IF < condicin > THEN
< sentencia simple o compuesta >
ELSE
< sentencia simple o compuesta >
Sentencia condicional mltiple ( IF ELSE IF )

IF < condicin 1 > THEN
< sentencia simple o compuesta >
ELSE IF < condicin 2 > THEN
< sentencia simple o compuesta >
ELSE IF < condicin 3 > THEN
< sentencia simple o compuesta >
ELSE
< sentencia simple o compuesta >
Sentencia condicional mltiple ( CASE )

CASE < condicin > OF
< etiqueta > :
< sentencia simple o compuesta >
< etiqueta > :
< sentencia simple o compuesta >
...
ELSE
< sentencia(s) >
END
Sentencia repetitiva con condicin de entrada ( WHILE )

WHILE < condicin > DO
< sentencia simple o compuesta >
Sentencia repetitiva con condicin de salida ( REPEAT UNTIL )

REPEAT
< sentencia > ;
< sentencia > ...
UNTIL < condicin >
Sentencia repetitiva con nmero predeterminado de iteraciones ( FOR )

Anexo A: Estilo de programacin 225
A. Fabin Lpez Valencia Dpto. de Ingeniera de Sistemas y Automtica
Escuela Superior de Ingenieros (UPV/EHU)
FOR < variable de control > := < inicial > TO < final > DO
< sentencia simple o compuesta >
Condiciones compuestas que no caben en una lnea
Se procurar no escribir ninguna condicin simple a lo largo de varias lneas.
Ejemplos de IF-THEN :

IF < condicin > AND
< condicin > THEN
< sentencia simple o compuesta >


IF < condicin > AND
< condicin >
THEN
< sentencia simple o compuesta >
2.4 Comentarios y lneas en blanco
2.4.1 Comentarios generales de los programas, funciones y procedimientos
Cada programa debe tener un comentario general, que debe aparecer cerca del comienzo del
mismo. En general, este comentario debe contener la siguiente informacin:
Un breve resumen de lo que hace el programa y del mtodo que para ello utiliza
El nombre de los programadores
La fecha en que fue escrito el programa
Una referencia a los manuales tcnicos y de usuario que dan informacin adicional sobre el
programa
Una breve historia de todas las modificaciones realizadas, indicando el programador que las
realizn y el motivo que las caus
Cada subprograma debe tener un comentario general, que debe aparecer cerca del comienzo del
mismo. En general, este comentario debe contener la siguiente informacin:
Un breve resumen de lo que hace el subprograma y del mtodo que para ello utiliza
Condiciones de entrada: Estado inicial del subprograma
Parmetros que se le pasan
Condiciones de salida: Parmetros que devuelve
Cambios que se producen en el estado
Enumeracin de los subprogramas que utiliza
Enumeracin de los subprogramas que le utilizan
2.4.2 Comentarios dentro del cdigo de los programas
Un programa no es una secuencia de sentencias sin relacin entre s; ms bien al contrario, se trata de
una serie de acciones a realizar con un objetivo determinado. La realizacin de cada una de estas
acciones se efecta generamente mediante varias sentencias o mediante un subprograma. Para mejorar la
claridad del programa se remarcar adecuadamente cada una de estas acciones o bloques de cdigo,
separndolas mediante lneas en blanco y precediendolas con comentarios que clarifiquen la accin que
llevan a cabo.
Se utilizarn comentarios para aclarar el significado de aquellas variables y constantes cuyo identificador
no sea suficiente para entender su uso.
No se deben aadir comentarios a sentencias evidentes:
226 Anexo A: Estilo de programacin
Dpto. de Ingeniera de Sistemas y Automtica A. Fabin Lpez Valencia
Escuela Superior de Ingenieros (UPV/EHU)
Ejemplo: iCont := iCont + 1 ; { Incrementar contador }
Cuando se produce un gran nivel de anidamiento de sentencias estructuradas, se pueden aadir
comentarios en los cierres de bloques ( END ) para clarificar a qu sentencia de control pertenecen.
Los comentarios deben ser breves y concisos, evitando las divagaciones: el cdigo nos debe indicar el
cmo se realiza la operacin y el comentario debe informarnos sobre el qu y/o el por qu se realiza.
Ejemplo:
PROCEDURE MostrarModa ( CONST aiNumeros : taiVector; iLong : Integer );
VAR
aiFrecuencias : taiVector ; { Contendr la "frecuencia" de cada
valor de aiNumeros, desde su
posicin en el array en adelante }
rMayorFrecuencia : Real ;
i, j : Integer ; { Indices para recorrer los arrays }

BEGIN
{ Calcular las "frecuencias" de los valores de aiNumeros }
FOR i := 1 TO iLong - 1 DO
BEGIN
aiFrecuencias[i] := 1 ;
FOR j = i + 1 TO iLong DO
IF aiNumeros[j] = aiNumeros[i] THEN
aiFrecuencias [i] := aiFrecuencias [i] + 1
END ;

{ Calcular la frecuencia mayor }
rMayorFrecuencias := fnrCalcularValorMayor (aiFrecuencias,iLong) ;

{ Mostrar aquellos nmeros cuya frecuencias coincida con el valor
mayor de la frecuencia }
Writeln ('Valores que constituyen la Moda:') ;
FOR i := 1 TO iLong DO
IF aiFrecuencias[i] = rMayorNumeroFrecuencias THEN
Writeln (aiNumeros[i])
END ; (* MostrarModa *)
2.4.3 Espacios en blanco en las sentencias
Se utilizarn espacios en blanco dentro de las sentencias para separar los diferentes elementos o tokens
que las componen: delante y detrs de un nombre de variable, de una constante, de una palabra
reservada, de un operador, delante de los parntesis de la llamada a un subprogramas, ...
Ejemplos:
FOR i := 1 TO iLong - 1 DO
BEGIN
aiFrecuencias[i] := 1 ;
...
aiFrecuencias [i] := aiFrecuencias [i] + 1
END ;

rMayorFrecuencias := fnrCalcularValorMayor (aiFrecuencias, iLong) ;

227
A. Fabin Lpez Valencia Dpto. de Ingeniera de Sistemas y Automtica
Escuela Superior de Ingenieros (UPV/EHU)












Notacin hngara simplificada
228 Anexo A: Estilo de programacin. Notacin hngar simplificada
Dpto. de Ingeniera de Sistemas y Automtica A. Fabin Lpez Valencia
Escuela Superior de Ingenieros (UPV/EHU)
NOTACION HUNGARA SIMPLIFICADA
La notacin hngara se basa en la utilizacin de prefijos en los identificadores de tipos, constantes, variables,
parmetros y funciones, que nos indiquen el tipo de dato que lo constituyen (tipos, constantes, variables, y
parmetros) o el tipo de dato que devuelven (funciones).
Los prefijos se escribirn en minsculas, y en el resto del identificador se comenzar con letra mayscula cada
palabra que lo componga
5
.
1. PREFIJOS PARA TIPOS SIMPLES

i Integer
lo LongInt
sh ShortInt
by Byte
w Word

bo Boolean
c Char
r Real
e Enumerado
sc Subrango de Caracteres
si Subrango de Enteros
2. PREFIJOS PARA TIPOS COMPUESTOS
s Cadena de caracteres o String
a Array

El prefijo estar formado por la letra a seguida del prefijo del tipo base del array.

Ejemplo:

ai Array de Integers
ar Array de Reales
arg Array de Registros

rg Registro

Los campos tendrn un prefijo, de modo similar a lo indicado para las variables.

fb Fichero o archivo binario

El prefijo estar formado por las letras fb seguidas del prefijo del tipo base del fichero.

Ejemplo:

fbi Fichero de Integers
fbr Fichero de Reales
fbrg Fichero de Registros

ft Fichero o archivo de texto

5 Una opcin alternativa es separar las palabras que componen un identificador mediante el carcter de subrayado. Por ejemplo:
iCont_Palabras, iUltima_letra, ...
Anexo A: Estilo de programacin. Notacin hngar simplificada 229
A. Fabin Lpez Valencia Dpto. de Ingeniera de Sistemas y Automtica
Escuela Superior de Ingenieros (UPV/EHU)
3. PREFIJOS PARA PUNTEROS
p Puntero

El prefijo estar formado por la letra p seguida del prefijo del tipo de datos al que apunta.

Ejemplo:

pr Puntero a Real
prg Puntero a Registro
pai Puntero a Array de Integers
parg Puntero a Array de Registros

4. PREFIJOS PARA IDENTIFICADORES DE FUNCIONES
fn Funcin

El prefijo estar formado por las letras fn seguidas del prefijo del tipo de datos que
devuelve.

Ejemplo:

fni Funcin que retorna un Integer
fns Funcin que retorna un String

5. PREFIJOS PARA IDENTIFICADORES DE TIPOS
t Tipo

Los prefijos de tipos comenzarn con la letra t seguida del tipo de datos.

Ejemplos:

ts Tipo Cadena de caracteres o String
tai Tipo Array de Integers
trg Tipo Registro
targ Tipo Array de Registros
tprg Tipo Puntero a Registro
tfbrg Tipo Fichero de Registros
te Tipo Enumerado
tsc Tipo Subrango de Caracteres
tsi Tipo Subrango de Integers
tse Tipo Subrango de enumerados
230 Anexo A: Estilo de programacin. Notacin hngar simplificada
Dpto. de Ingeniera de Sistemas y Automtica A. Fabin Lpez Valencia
Escuela Superior de Ingenieros (UPV/EHU)

Ejemplo de cdigo utilizando notacin hngara:



PROGRAM Hungara ;

CONST
iLONGITUD = 20 ;
iMAX_EMPLEADOS = 50 ;

TYPE

tsCadenas = String [iLONGITUD] ;

trgPersonas = RECORD
sNombre : tsCadenas ;
byEdad : Byte ;
rSueldo : Real
END ;

targNominas = ARRAY [1 .. iMAX_EMPLEADOS] OF trgPersonas ;

tprgPuntNodo = ^trgNodos ;

trgNodos = RECORD
rgInformacion : trgPersonas ;
prgSiguiente : tprgPuntNodo
END ;

tfbrgFicheros = FILE OF trgPersonas ;

VAR
sNombreFichero : tsCadenas ;
rgEmpleado : trgPersonas ;
argDepartamento : targNominas ;
prgCabezaLista : tprgPuntNodo ;
fbrgFichEmpleados : tfbrgFicheros ;

BEGIN
WITH rgEmpleado DO
BEGIN
sNombre := 'Manuel' ;
byEdad := 35 ;
rSueldo := 210000
END ;

Assign (fbrgFichEmpleados, sNombreFichero) ;
Reset (fbrgFichEmpleados) ;
Seek (fbrgFichEmpleados, FileSize (fbrgFichEmpleados) ) ;

Write (fbrgFichEmpleados, rgEmpleado) ;
Close (fbrgFichEmpleados)

END. { Fin del programa HUNGARA.PAS }

S-ar putea să vă placă și