Lenguaje de Programacion Pascal
Historia de lenguaje pascal
El lenguaje de programación Pascal apareció por primera vez en 1971, de la mano de Niklaus Wirth. Wirh inventó el lenguaje como una forma de mejorar el por aquel entonces arcaico Algol. No es el primer lenguaje que Wirth diseña, posteriormente inventó el Modula-2 y el Oberon. Sin embargo, paradójicamente, esos dos lenguajes han sido ampliamente superados por el Extended Pascal y el Object Pascal. De todos esos lenguajes, Pascal es el que más éxito ha tenido.
Aunque nace a principios de los 70, Pascal cobra auténtica vida a partir de principios/mediados de los 80, popularizado por el fabuloso Turbo Pascal de MS-DOS para PC, y sobre todo el Apple Pascal. Pascal ha sido tan popular hasta mediados de los 90, que una gran parte (la mayor parte) de las aplicaciones desarrolladas para Mac estaban realizadas en Pascal, así como una enorme parte también de los programas de MS-DOS.
Todavía hoy, Pascal se enseña en las universidades como primer lenguaje, pues se trata de un lenguaje muy legible. Fue Borland la que, hasta el Turbo Pascal 7, se encargó de la mayor parte de la evolución de este lenguaje. A mediados de los 90, con el boom de Windows y el renacimiento de los sistemas Unix (entre ellos Linux) como ordenadores servidores primero y luego como estaciones de trabajo, motivó que Pascal pasara a un segundo plano en beneficio de C.
En ese momento, prácticamente solo Delphi (Object Pascal para Windows) consiguió mantenerse en la brecha, pero conformándose con una pequeña parte del mercado solamente.
Casi todo el mundo intentó pasarse a C++. Fíjate que decimos intentó. C++ no consiguió calar del todo por su extrema complejidad. Su sistema de objetos, los macros, los crípticos nombres de funciones, los namespaces tan difíciles de manejar, los templates, la STL y otra serie de cosas, hicieron que rápidamente mucha gente pasara de querer usar esa herramienta que todo el mundo proclamaba que era tan potente, a buscar alternativas que fueran más simples y prácticas. Sun, la compañía del Java, se gasto una millonada en promocionar su lenguaje, y tuvo un gran éxito, sin duda debido no solo al dinero en publicidad, sino a la gente que escapaba escaldada del C++. En realidad, Java no es un lenguaje fácil de aprender (obliga a pensar en objetos desde el principio, algo que los novatos no llevan bien), pero comparado con C++, se podía considerar como algo sencillo.
Borland, una compañía con no tanto dinero como Sun, no pudo competir con Pascal, y se tuvo que conformar sacando su propia máquina virtual de Java. Pero Delphi no ha dejado nunca de existir. Aun hoy sigue sacando versiones Delphi, con gran éxito, aunque no consigue subir significativamente su porcentaje de participación en el mercado.
El paso de Turbo Pascal a Delphi también trajo como consecuencias que apareciera Kylix, que no es más que un Delphi multiplataforma. No caló lo suficiente, debido a la licencia cerrada, y a que imponía que el programa compilado fuera GPL.
Posteriormente Microsoft compró la mayor parte de Borland. Con ello se abandonó Kylix, Linux, y se hizo a Borland 100% Windows. Esta estrategia prácticamente ha arruinado el avance de Pascal frente a otros lenguajes, en el entorno corporativo.
En el momento en que Borland pasó de Turbo Pascal a Delphi, apareció Free Pascal. Free Pascal es un intento de la comunidad de código libre de hacer un compilador compatible con Turbo Pascal para todas las plataformas más famosas (incluido Linux, OS X y Windows). Desde la versión 2.0, Free Pascal es además compatible con Delphi.
Free Pascal es, hoy en día, el sistema preferido para programar en Pascal multiplataforma. Su IDE principal, el Lazarus, un clon del Delphi, corre tanto en Windows como en OS X como en Linux.
- Estructura de un programa en pascal
La parte de declaraciones y definiciones es la zona del programa donde se definen y declaran todos los elementos (constantes, tipos, variables, funciones y procedimientos) con los que va a trabajar el programa. Se trata de una parte opcional (puede no existir) pero, si existe, debe de aparecer al principio del programa, justo tras la cabecera del mismo y en el orden apropiado.
El cuerpo del programa es la zona donde se encuentran las instrucciones ejecutables. El cuerpo del programa siempre empieza con la palabra 'BEGIN' y acaba con 'END.'. De esta forma, un programa en PASCAL, ha de tener, como mínimo, un encabezamiento y un bloque o cuerpo con al menos una instrucción, por ejemplo:
PROGRAM Ejemplo (Input, Output);
BEGIN
Write ('HOLA'); (* CUERPO *)
END.
- El Encabezado: Es la primera instrucción de un programa, Todo programa en pascal comienza con la palabra program, y el nombre del programa, máximo 8 caracteres, sin espacios en blancoseguido de un punto y coma. Ejemplo:
Program nomina;
.
Program IDENTIFICADOR;
Program Indica el inicio del programa.
IDENTIFICADOR Sirve para identificar el programa.
; Indica el fin de la instrucción.
2. Es conveniente utilizar la cláusula uses crt para utilizar las propiedades de la pantalla. Ejemplo:
uses crt;
3 Declaracion de variables: En esta sección se declaran las constantes (const), los tipos de datos (type), las variables (var), los precedimientos (procedure) y las funciones (function) definidos por el programador que se usan en el programa. También se puede indicar tanto la <lista_de_unidades> como la <lista_de_etiquetas> que se utilicen en el programa.
Los caracteres abrir corchete ([) y cerrar corchete (]) se utilizan para indicar que lo que contienen es opcional.
Cuerpo: En el cuerpo se escriben las instrucciones del bloque de instrucciones principal del programa. La sintaxis es:
begin |
begin y end son palabras reservadas que marcan el principio y final de la sección cuerpo. Por último, escribimos el programa principal, el cual comienza con la palabra begin y termina con la palabra end seguida de un punto. Dentro del begin y el end final se encuentran todas las instrucciones y llamadas a los procedimientos que hemos definido anteriormente. Ejemplo:
begin
write(‘Escriba el nombre del estudiante: ‘);
readl(nombre);
……..
listar; —> aqui llamamos al procedimiento listar definido antes
……..
end.
Las palabras reservadas son identificadores reservados predefinidos que tienen un significado especial y no se pueden utilizar como identificadores en sus programas.
Identificador: nombre utilizado para describir constantes, variables, tipos, funciones e incluso el nombre del programa.
Un identificador puede tener cualquier número de caracteres, pero debe empezar con un carácter alfabético y, a continuación, cualquier número de caracteres alfanuméricos .
Los identificadores que pueden ser utilizados en los programas no podrán coincidir con un conjunto de palabras del lenguaje con un significado especial o palabras reservadas (como por ejemplo AND, FOR, PACKED, WHILE, ARRAY, FUNCTION, PROCEDURE, WITH, BEGIN, PROGRAM, CASE, IF, RECORD, FALSE, TRUE, MAXINT, BOOLEAN, CHAR, INTEGER, ...)
Un identificador se debe separar con un blanco (o salto de línea) de las palabras reservadas y de las constantes numéricas.
4.- Declaraciones básicas- tipos de variables- Valores y operaciones.
Tipo INTEGER: Se trata del subconjunto finito de los números enteros comprendido entre–(MAXINT+1) y MAXINT, donde ‘MAXINT’ corresponde al valor máximo entero que el ordenador puede representar.
|
|
Aritméticos |
+ - * div mod |
|
Operadores |
Lógicos |
|
|
|
Relacionales |
< <= > >= = <> |
|
|
|
|
Operaciones sobre INTEGER |
Funciones |
ABS (), PRED(), SUCC(), SQR(), ORD(), ODD() |
|
|
|
|
|
|
Procedimientos |
READ(), READLN() |
|
|
|
WRITE(), WRITELN() |
|
Tipo REAL: Subconjunto finito de los números reales comprendido entre: –MAXREAL .. –MINREAL, 0, MINREAL .. MAXREAL. También se llaman números de punto o coma flotante.
|
|
Aritméticos |
+ - * / |
|
Operadores |
Lógicos |
|
|
|
Relacionales |
< <= > >= = <> |
|
|
|
|
Operaciones sobre REAL |
Funciones |
ABS(), SQR(), SQRT(), SIN(), COS(), ARCTAN(), LN(), EXP(), TRUNC(), ... |
|
|
|
|
|
|
Procedimientos |
READ(), READLN() |
|
|
|
WRITE(), WRITELN() |
|
Existen dos formas de escribir o especificar los números reales:
¨ Forma normal. En este formato, los números deben de tener un punto decimal con, al menos, un dígito a la izquierda del punto.
¨ Forma exponencial o científica. En este formato, para escribir el número real, se escribe la mantisa, a continuación la letra 'E' y el exponente en base 10 (éste debe de ser un número entero).
Ejemplos de número reales:
Correctos: 2.5 0.0 3.4E-5 5.0E2
incorrectos: E20 .1 5. 7E0.5
La forma exponencial es conveniente para trabajar con números muy grandes o muy pequeños.
Tipo CHAR: El tipo char tiene 256 posibles valores (caracteres) que corresponden al código ASCII (American Standard Code for Infomation Interchange) de los cuales algunos son caracteres de control que no es posible imprimir.
Algunas de las operaciones que se pueden realizar sobre el conjunto de caracteres son las siguientes:
¨ ORD(x) indica la posición dentro del código ASCII del carácter ‘x’
¨ CHR(pos) indica el carácter que hay en la posición pos del código ASCII.
¨ WRITE(x) y READ(x), son las operaciones de lectura y escritura de caracteres.
En PASCAL, los caracteres se representan siempre entre apóstrofes: 'A', '+', '7' ,etc., y expresiones del tipo 'AB' no son de tipo carácter, sino de tipo ‘STRING’ (una cadena o tira de caracteres, este tipo se estudiará en próximas prácticas).
Tipo BOOLEAN: El tipo ‘BOOLEAN’ sólo consta de dos valores: FALSE y TRUE. Las operaciones sobre los valores del tipo sólo son las operaciones lógicas (AND, OR, NOT) y las operaciones relacionales.
variable : escualquier identificador de cualquier tipo que puede asumir diferentes valores durante la ejecución de un programa. Una variable se declara dentro de la zona de declaración identificada por ‘VAR’ de la siguiente forma:
VAR
identif1, identif2: Tipo1;
Ejemplos:
VAR
a,b,c : REAL;
dias : INTEGER;
f,t : BOOLEAN;
Tipos Homogéneos. Tipo vector.
Vector: es una colección de componentes del mismo tipo, homogénea, que tiene un nombre o identificador común. En concreto es posible denotar y acceder a cada componente individual por su posición dentro del grupo o colección y en Pascal, y en la mayoría de los lenguajes de programación, el número de componentes de un vector se define inicialmente, no siendo posible su modificación posterior, por ello se dice que el vector es un tipo de datos estático.
El siguiente ejemplo muestra la definición de una variable, denominada pluviosidad, formada por 100 componentes individuales, cada una de ellas de tipo real:
VAR pluviosidad: Array [1..100] of real;
Efectuada la declaración anterior en un programa en Pascal, es posible en las instrucciones de dicho programa acceder (para determinar o modificar cada valor) a cada uno de los 100 elementos de tipo real que constituyen la variable pluviosidad,
En Pascal la palabra reservada que se utiliza para definir un vector es la palabra "Array", como es habitual en este lenguaje de programación la definición de variables de tipo vector puede efectuarse directamente, como en el ejemplo anterior, en la sección de declaración de variables; o puede definirse previamente un nuevo tipo, en la sección de definición de tipos y, a continuación, definir cualquier número de nuevas variables pertenecientes a dicho tipo.
La forma general que adopta una declaración de un nuevo tipo vector en Pascal es la siguiente:
TYPE
NombreTipo = ARRAY [Indice] OF TipoBase;
Pudiéndose, tras la declaración anterior, definir nuevas variables de dicho tipo, como se efectúa a continuación:
VAR Nom1, Nom2, ..., NomN : NombreTipo;
En la declaración del tipo anterior distinguimos:
¨ La declaración del tipo base (TipoBase), que es el tipo de cada uno de los elementos individuales del vector. En el ejemplo inicial (pluviosidad) dicho tipo era el Real.
¨ La definición de un índice (Indice), que puede ser cualquier tipo subrango o enumerado. Dicha declaración establece el número de elementos del vector, así como el tipo que deberán tener las expresiones que se utilizarán en la referenciación individual de cada componente.
En general, el TipoBase del vector puede ser cualquier otro tipo válido en Pascal, siendo posible que dicho tipo base sea, a su vez, estructurado. Así, es posible definir vectores de tuplas, e incluso vectores cuyos componentes son también vectores.
A los vectores cuyas componentes son, a su vez, otros vectores, se les denomina multidimensionales. Por lo contrario, a los vectores cuyas componentes no son otros vectores se les denomina unidimensionales.
El siguiente ejemplo muestra algunas declaraciones de vectores unidimensionales efectuadas en Pascal:
TYPE
Fecha = Record
Dia, Mes, Anyo: Integer
End;
Ind1 = -3 .. 123;
Letras = 'A' .. 'Z';
VecFechas = ARRAY [Ind1] OF Fecha;
VecLetras1 = ARRAY [Letras] of Integer;
VecLetras2 = ARRAY [1..100] of Letras;
VAR
VFecha1, VFecha2 : VecFechas;
VLetras1: VecLetras1;
VLetras2: VecLetras2;
Cuerpo del programa.
El cuerpo del programa es obligatoria. Siempre empieza con la palabra "BEGIN" y finaliza con "END."; entre ambas se sitúan las instrucciones del programa.
6.1.- Instrucciones de asignación y compuesta.
La instrucción de asignación es una sentencia que permite reemplazar el valor de una variable durante la ejecución de un programa. Es una operación destructiva, esto es, el nuevo valor sustituye al anterior. Su sintaxis es la siguiente:
identificador := expresión;
Se evalúa la expresión de la derecha y el resultado se "asigna" a la variable que aparece a la izquierda del ":=". Ha de existir una consistencia de tipos entre la expresión y la variable a la que se le asigna. Por lo tanto su significado es exactamente igual al estudiado en la notación algorítmica.
Dada la siguiente declaración de variables:
VAR
i,j : Integer;
a,b : Real;
c : Boolean;
Las siguientes instrucciones de asignación no son válidas:
i := j + a;
1 := i; i + 1 := i;
Las siguientes son válidas:
i := 1;
i := i +1;
Una sentencia compuesta es un grupo de instrucciones simples que se agrupan en una sola instrucción, encuadrándolas con "Begin" y "End". Las instrucciones se ejecutan o realizan en el orden especificado entre ellas.
Ejemplo:
BEGIN (* cuerpo del programa *)
| BEGIN
| | BEGIN
| | | x:=3;
| | | y:=4;
| | | z:=5
| | END
| END;
| sum:=x+y+z
END.
6.2.- Instrucciones de entrada/salida (e/s).
Estas instrucciones permiten comunicar al entorno (usuario) con el programa tanto para introducirle (entrada) datos como para obtener (salida) resultados. Es interesante resaltar que no existen instrucciones equivalentes en la notación algorítmica estudiada en las clases de teoría, ya que en el diseño del algoritmo se supone que los datos ya tienen valores y los resultados se obtienen a partir de ellos. En la fase de diseño basta con asumir que los valores de los datos cumplen la precondición del problema. Es por tanto en la fase de codificación cuando tengamos que definir la interfaz con el usuario a través de las instrucciones de entrada y salida.
Las instrucciones de entrada y salida de datos se usan en casi todos los programas, al menos las de salida. Desde el punto de vista físico, estas instrucciones van a servir para intercambiar datos con los periféricos (pantallas, impresoras, teclados,...). Así tenemos:
¨ Instrucción de entrada: READ, lee datos del teclado (por defecto).
¨ Instrucción de salida: WRITE, visualiza los datos por pantalla (por defecto).
Como se indicó en la práctica anterior, el sistema operativo estructura toda la información a través del concepto de fichero. Por ello tanto el teclado como la pantalla son entendidos como ficheros, en este caso el fichero input representa el teclado y el fichero output la pantalla, que son la entrada y salida estándar. Tras el nombre del programa se indican los ficheros de dónde se van a leer los datos y a dónde se van a escribir. De momento sólo utilizaremos la entrada y salida estándar. Por ejemplo:
PROGRAM ejemplo (input, output);
lo que significa que las variables van a tomar valores del teclado (fichero input)y los resultados se visualizarán en la pantalla (fichero output).
Instrucciones de entrada.
READ y READLN, son las dos instrucciones que vamos a utilizar para realizar la entrada de los datos. Estas instrucciones leen los datos del fichero de entrada (input) y los asigna a las variables que tengan como argumentos. Su sintaxis es la siguiente:
READ(v1,v2,...., vn)
READLN(v1,v2,...., vn)
Veamos dos ejemplos para entender su funcionamiento y las diferencias entre ellas. Dado el siguiente programa
VAR a,b,c,d : Integer;
BEGIN
read(a,b); read(c,d);
END.
Si ante la ejecución de este programa, el usuario introduce por teclado la secuencia de datos: el número uno, el carácter blanco, el número dos, el carácter blanco, el número cuatro, el carácter salto de línea, el número veinte, el carácter blanco y el número cincuenta. Los valores de las variables quedan:
a <--1, b <--2, c <--4, d <--20
Si en vez de instrucciones read las instrucciones fueran readln, ante la misma secuencia de datos los valores que tomarán las variables serán:
a <--1. b <--2, c <--20, d <--50
La interpretación de esta situación se basa en el hecho que la instrucción readln requiere que se escriba por teclado un salto de línea y la siguiente instrucción read o readln ignora todo lo que se haya escrito anteriormente.
Instrucciones de salida
WRITE y WRITELN escriben valores a un fichero de salida, en nuestro caso la pantalla (fichero output). Una instrucción de salida puede imprimir:
¨ Comentarios o cadenas de caracteres entre apóstrofes. Por ejemplo Write(‘hola’)
¨ Constantes, valores de variables, resultados de expresiones y funciones.
WRITELN obliga a la pantalla (fichero output) a pasar al inicio de la línea siguiente tras realizar la impresión de los argumentos que tiene entre paréntesis.
Algunas veces se necesita una salida de datos tabulada en vez de el formato de salida que ofrece el PASCAL por defecto. Para obtener una salida formateada, cada valor a imprimir o escribir puede ir seguido de ":" y un entero mayor que 0 (valor o expresión). Este entero indica la anchura de campo o el número de posiciones mínimas para escribir el valor a imprimir. Si dicho valor necesita menos posiciones, se rellena con blancos a la izquierda y si necesita más se hará caso omiso del entero mayor que 0 y se usarán tantas posiciones como sean necesarias.
Además, si el valor a escribir es un número real, se puede especificar otro carácter ":" y otro entero mayor que 0, en este caso, el número real se escribirá en notación de punto fijo y éste segundo campo especificará el número de dígitos a escribir, si se puede, tras el punto decimal.
Ejemplo 1:
PROGRAM formato(INPUT,OUTPUT);
VAR
i : Integer;
a : Real;
c : Char;
d : Boolean;
BEGIN
i := 10; a := 3.47;
c := '*'; d := a > 0.0;
write ('Número':10,i:3,a:4:1,c:2,d:3)
END.
Este programa escribiría, como resultado de su ejecución:
----Número-10-3.4-*TRUE
donde "-" equivale a caracteres en blanco.
Ejemplo:
PROGRAM ejemplo(INPUT,OUTPUT);
VAR
x, y,z : Char;
BEGIN
Readln(x,y);
Readln(z);
Writeln(x)
Write(y,z)
END.
Suponiendo que el programa se ha compilado y que durante su ejecución el usuario ha introducido por el teclado los siguientes caracteres: ‘a’, ‘b’, ‘c’, salto de línea, ‘d’, y salto de línea en la pantalla aparecerán los siguientes caracteres:
a
b d
6.3.- Instrucciones condicionales.
Cuando presentamos la instrucción compuesta, veíamos que se comportaba como una única instrucción, donde se realizaban todas las acciones que se indicaban en la instrucción, una detrás de otra, en el orden especificado. A veces, cuando se escribe un programa, es necesario describir dos o más cursos o direcciones de acción, y permitir al proceso que ejecuta el programa seleccionar uno de ellos durante la ejecución, es decir, que se ejecute un conjunto de instrucciones u otro en función de alguna condición (en vez de que se ejecuten todas las instrucciones incondicionalmente). En la notación algorítmica las instrucciones presentadas para tal fin son:
¨ OPCION ...FOPCIÓN
¨ SI...FSI
En Pascal las instrucciones condicionales son las siguientes:
¨ La sentencia IF , que es practicamente equivalente a la sentencia SI..FSI.
¨ La sentencia CASE entendida como un caso especial de condicional. CASE permite al proceso ejecutar una de entre varias acciones de acuerdo con el valor de una expresión de tipo escalar o subrango. Por lo tanto no es equivalente a la sentencia OPCION ...FOPCIÓN.
6.3.1.- Condicional binaria (if....then....else).
La sintaxis de esta sentencia es:
IF expresión lógica THEN Sentencia1
ELSE Sentencia2;
Si el valor de la condición o expresión lógica es TRUE (verdadero), se ejecuta la sentencia que sigue a THEN (entonces), y si ese valor es FALSE (falso), se ejecuta la sentencia que sigue a ELSE (si no). Sentencia, puede ser una sentencia simple, una sentencia compuesta (entre Begin y End) o incluso otra condicional.
Ejemplo:
VAR
precio, pagado, mayor, menor : Integer;
iguales, cruce : Boolean;
BEGIN
. . . .
IF pagado < precio THEN pagado := pagado + 10
ELSE pagado := pagado -1;
. . . .
IF mayor > menor THEN
BEGIN {instrucción compuesta}
mayor := mayor - 1;
menor := menor +1
END
ELSE cruce := true; {atención al uso de ;}
. . . .
END.
En la instrucción IF, la cláusula ELSE es opcional y puede ser omitida, en tal caso, si la condición se evalúa y resulta FALSE, no se hará ninguna acción. Si en la instrucción IF no esta omita la cláusula ELSE, la última instrucción de la sentencia asociada al IF no debe de llevar punto y coma “;”
Como ya hemos dicho, la sentencia que sigue a THEN o a ELSE podría ser, a su vez, una sentencia IF, en este caso, a la sentencia se le llama IF compuesto o anidado. Por ejemplo:
IF mayor > menor THEN
BEGIN {mayor > menor}
mayor := mayor -1;
menor := menor + 1
END
ELSE {mayor <= menor}
IF mayor = menor THEN iguales := true
ELSE cruce := true; {mayor < menor}
Sólo se ejecutará una de las tres sentencias en función de la relación entre mayor y menor. En este caso, la cláusula ELSE de la sentencia IF es, a su vez, una sentencia IF. También podríamos tener una sentencia IF en la cláusula THEN.
Cuando aparecen varias sentencias IF anidadas, se pueden producir ambigüedades, dado que la cláusula ELSE es opcional, veamos el caso:
IF condición1 THEN
IF condición2 THEN sentencia 1
ELSE sentencia2
¿A que IF pertenece la cláusula ELSE?. La sintaxis de PASCAL indica que la cláusula ELSE pertenece al IF más próximo que se encuentra para el que no existe una cláusula ELSE. Esto resuelve la confusión del último ejemplo, aclarando que la cláusula ELSE pertenece al segundo IF.
6.3.2.- Condicional n-aria (CASE...OF).
La sentencia IF permite al proceso seleccionar una de entre dos opciones posibles de acuerdo con el valor de una expresión Booleana o predicado. La sentencia CASE permite al proceso ejecutar una de entre varias acciones de acuerdo con el valor de una expresión escalar.
La sintaxis de la sentencia CASE:
CASE expresión OF
lista de valores1 : sentencia1;
lista de valores2 : sentencia2;
...
lista de valoresn : sentencian
END;
Las listas de valores pueden presentarse mostrando explícitamente los valores separados por comas o por comprensión, igual que en el tipo subrango (Ej. 1..5 ó 1,2,3,4,5 ). Las sentencias asociadas a cada lista de valores serán, a su vez, sentencias simples, compuestas (entre BEGIN y END) o nuevas condicionales.
Por último cabe resaltar que la sentencia OPCION..FOPCION, no es equivalente al CASE del lenguaje de programación PASCAL. Para traducir una instrucción OPCION..FOPCION al PASCAL, se realizará a través de IF aninados.
7.- Documentación interna de un programa.
La documentación interna de un programa incluye elementos cuyo objetivo es facilitar la inteligibilidad del mismo, sin referirse, en ningún caso, a las especificaciones externas al código del programa.
Todos los puntos que veremos en este apartado, hacen referencia al código del programa y la finalidad de los mismos es conseguir un código fácilmente comprensible, incluso por aquellos que no lo escribieron.
7.1.- Importancia de la documentación interna.
Los programas, usualmente, son estudiados y modificados por personas distintas de las que originalmente los crearon, es por eso que la legibilidad de un programa es, en la práctica, uno de sus atributos más importantes.
Uno de los objetivos fundamentales de las prácticas de esta asignatura es inculcar la costumbre de una buena documentación interna de los programas realizados que facilite la lectura de los mismos.
En un ambiente de producción real de software, los programas de ordenador se utilizan durante largos periodos de tiempo (incluso después de que la persona que hizo el programa abandone la empresa). Además, la mayoría de los programas no son estáticos, sino que cambian con frecuencia en respuesta a los cambios de las situaciones que los produjeron. Estas dos características (longevidad y dinamismo) implican que el mantenimiento de los programas será realizado normalmente por alguien no familiarizado con los programas originales. En este entorno, la importancia de una buena documentación de los programas, que permita una correcta legibilidad de los mismos, es más que evidente.
Sintaxis
Con frecuencia se resaltan los elementos de la sintaxis con colores diferentes para facilitar su lectura. Este ejemplo está escrito en Python.
A la forma visible de un lenguaje de programación se le conoce como sintaxis. La mayoría de los lenguajes de programación son puramente textuales, es decir, utilizan secuencias de texto que incluyen palabras, números y puntuación, de manera similar a los lenguajes naturales escritos. Por otra parte, hay algunos lenguajes de programación que son más gráficos en su naturaleza, utilizando relaciones visuales entre símbolos para especificar un programa.
Bucles
Los bucles son parientes cercanos de los condicionantes, pero ejecutan constantemente un código mientras se cumpla una determinada condición. Los más frecuentes son:
- For: Ejecuta un código mientras una variable se encuentre entre 2 determinados parámetros.
- While: Ejecuta un código mientras se cumpla la condición que solicita.
Hay que decir que a pesar de que existan distintos tipos de bucles, ambos son capaces de realizar exactamente las mismas funciones. El empleo de uno u otro depende, por lo general, del gusto del programador.