# Programación en Pascal
## Introducción

El lenguaje de programación Pascal fue desarrollado por el profesor suizo Niklaus Wirth a finales de los años 60. El objetivo de este lenguaje era facilitar el aprendizaje del lenguaje de la programación a sus alumnos.

## Palabras reservadas

Algunas de las palabras reservadas en Pascal son:
| Palabra | Uso | Palabra | Uso |
| ABSOLUTE | | AND | Conjunción lógica |
| ARRAY | Definición de variables (arrays) | ASM | |
| BEGIN | Inicio de procedimiento | CASE | Salto condicional SWITCH - CASE - END |
| CONST | Definición de constantes | CONSTRUCTOR | |
| DESTRUCTOR | | EXTERNAL | |
| DIV | División entera | DO | Bucle FOR - TO/DOWNTO - DO - END |
| DOWNTO | Bucle FOR - TO/DOWNTO - DO - END | ELSE | Salto condicional IF - THEN - ELSE - END |
| END | Término de saltos condicionales y bucles | FILE | Definicion de un archivo |
| FOR | Bucle FOR - TO/DOWNTO - DO - END | FORWARD | |
| FUNCTION | Definición de función | GOTO | Salto incondicional |
| IF | Salto condicional IF - THEN - ELSE - END | IMPLEMENTATION | |
| IN | Inclusión de conjuntos | INLINE | |
| INTERFACE | | INTERRUPT | |
| LABEL | | MOD | Resto de división entera |
| NIL | | NOT | Negación lógica |
| OBJECT | | OF | Definición de variables |
| OR | Disyunción lógica inclusiva | PACKED | |
| PRIVATE | | PROCEDURE | Definición de procedimiento |
| PROGRAM | | RECORD | Definición de variables (registros) |
| REPEAT | Bucle REPEAT - UNTIL | SET | Definición de variables (conjuntos) |
| SHL | | SHR | |
| STRING | | THEN | Salto condicional IF - THEN - ELSE - END |
| TO | Bucle FOR - TO/DOWNTO - DO - END | TYPE | Definición de tipos |
| UNIT | Interfaz de programa dado | UNTIL | Bucle REPEAT - UNTIL |
| USES | Definicion para usar una libreria | VAR | Definición de variables |
| VIRTUAL | | WHILE | Bucle WHILE - DO - END |
| WITH | Definicion para utilizar las variables de un registro. | XOR | Disyunción lógica exclusiva |
También pasarán a ser reservadas las palabras que usemos para llamar a procedimientos o funciones implementados por nosotros en el programa.

## Instrucciones basicas

- Asignacion:
La asignacion se usa para dar valores a variables. La estructura de la instruccion es la siguiente:
donde a y b se entienden que son variables correctamente definidas y del mismo tipo.
- Muestreo por pantalla:
Para poder imprimir datos por pantalla usaremos la instruccion write. Su estructura es:
donde a es una variable con datos guardados previamente.
En caso de que deseemos imprimir por pantalla cierto texto, deberemos escribir:
- Recepción de valores
Para que el programa trabaje con datos introducidos por el usuario debemos usar la instruccion read. Su estructura es:
donde a es una variable definida para recibir unos datos de un tipo determinado.
Si queremos recibir varios valores seguidos, sera:
El usuario debera introducir los valores separados por espacio, o por intro.
Tambien tenemos la posibilidad de mostrar por pantalla (equivalentemente introducir datos) en lineas distintas. Para ello, usaremos la palabra reservada writeln (eq. readln):
Y por pantalla se mostraria:
- Comentarios
Los comentarios en nuestros programas seran de gran utilidad para poder aclarar la funcion de una variable, procedimiento, etc. En Pascal, tenemos dos maneras de crear comentarios: mediante el uso de "{" y "}" o "(*" y "*)". Todo lo que escribamos entre ambas partes, formara parte de los comentarios de nuestro programa y en ningun momento seran compilados.

## Nuestro primer programa: Hello World

Estudiemos este sencillo codigo:
Todo programa en Pascal comenzara con una cabecera del estilo program seguido del nombre del programa. Este nombre no podra incluir numeros, signos o espacios para separar palabras.
Tras la cabecera, deberemos declarar los tipos, constantes, procedimientos, funciones y variables. Una vez hecho, comenzaremos el codigo de nuestro programa. Este debera comenzar con la palabra reservada begin.
Ahora escribiremos las instrucciones de nuestro programa. Todas las lineas deberan terminar con un punto y coma (;). Para indicar que hemos terminado con nuestro programa, escribiremos end. Destacar que tras el end, ira ".", no ";".

## Ciclos iterativos: While, For y Repeat

- While
La instruccion while estudia primero la condicion y, en caso de que se cumpla, procedera a ejecutar la(s) instruccion(es) deseada(s).
Su estructura es:
En caso de que haya mas de una instruccion a realizar, escribiremos:
- For
El ciclo for realiza la(s) instruccion(es) deseada(s) durante un numero de vueltas predeterminadas. Este numero de vueltas no podra ser modificado NUNCA dentro del bucle, por lo que debemos tener cuidado en no tocar la variable indice (la que controla el numero de vueltas). Un ejemplo:
Y se mostraria por pantalla:
En caso de que tengamos que ejecutar mas instrucciones dentro del bucle, escribiriamos:
Un ejemplo de esto:
Y en pantalla se imprimiria:
En los ciclos For, podemos seguir dos tipos de direccion. Ascendente (de 1 hasta N) o descendente (de N hasta 1). Esto lo deberemos indicar en el contador del siguiente modo (usaremos el ejemplo anterior):
Ascendente
Descendente
- Repeat
El bucle Repeat realiza una serie de instrucciones y, una vez hechas, comprueba una condicion. En caso de cumplirse, no volvera a repetir dichas instrucciones, y en caso contrario las ejecutara. Su estructura es:
- Aclaraciones
Observese que los 3 ciclos, bien implementados, son equivalentes entre si.
Hay que tener especial cuidado en el ciclo que se desea usar: · Si se desea hacer un numero de vueltas FIJO, podemos usar cualquiera de los 3. · Si las vueltas dependen de una condicion que se modifica dentro del bucle, solo podemos usar los ciclos WHILE y REPEAT. · Si queremos comprobar una condicion antes de realizar ciertas instrucciones, debemos usar el WHILE.

## Selecciones: If y Case

If (si) 1 < 3 (uno menor a 3); then (entonces);
else (sino)

## Subprogramas

Los parámetros
Los parámetros son canales de comunicación para pasar datos ente programas y subprogramas en ambos sentidos. Los parámetros van asociados a variables. constantes, expresiones, etc., y por tanto, se indican mediante los correspondientes identificadores o expresiones. Los parámetros que se utilizan en la llamada o invocación al subprograma se denominan parámetros actuales, reales o argumentos, y son los que entregan la información al subprograma. Los parámetros que la reciben en el subprograma se denominan parámetros formales o ficticios y se declaran en la cabecera del subprograma. En una llamada a un subprograma tiene que verificarse que:
El número de parámetros formales debe ser igual al de actuales. Los parámetros que ocupen el mismo orden en cada una de las Listas deben ser compatibles en tipo.
Estructura, declaración y empleo de un procedimiento
Se declaran inmediatamente después de las variables del programa principal, teniendo la precaución de que si un subprograma referencia o llama a otro, el referenciado debe declararse primero.
Declaración de procedimientos.
Cabecera procedure nombreproced (lista de parámetros);
Declaraciones const Locales
Cuerpo begin
Declaración de parámetros formales.
Se declaran encerrados entre paréntesis, indicando el identificador y el tipo correspondiente asociado a cada uno, separados por ':', y terminando en ';'. La palabra reservada VAR precediendo a un identificador de parámetro formal indica al compilador que el paso del parámetro es pro VARiable. Su ausencia u omisión indica que el paso de parámetro se realiza por VALOR.
Llamada a un procedimiento.
Se realiza desde el programa principal indicando el identificador del procedimiento seguido de la lista de parámetros actuales encerrados entre paréntesis y separados por comas.
Funciones o procedimientos?
Deben utilizarse funciones cuando solo tenga que devolverse un solo valor simple al programa llamador. En todos los demás casos utilizaremos: procedimietos.
Extraido de "LaPolitecnica.Net © 2000-2002, Raúl Zambrano Maestre"