
Para identificar una sentencia compuesta de un grupo sucesivo de sentencias se encierran entre las palabras reservadas BEGIN y END. Uno de los ejemplos más claros de una sentencia compuesta es el cuerpo de un programa principal en Turbo Pascal, el lenguaje toma todo lo que existe entre estas dos sentencias como un solo elemento a ejecutarse aún cuando contenga varias instrucciones o sentencias:
|
PROGRAM Prueba; BEGIN WriteLn('Primera linea de una sentencia compuesta'); WriteLn('Segunda linea de una sentencia compuesta'); WriteLn('Tercera linea de una sentencia compuesta'); END. |
El punto y coma que se encuentra antes de la palabra reservada END puede ser suprimido sin afectar a la compilación. En ocasiones es necesario repetir un determinado número de veces la ejecución de una sentencia, ya sea sencilla o compuesta, para realizar esta tarea Turbo Pascal cuenta con instrucciones específicas para el tipo de repetición que se requiera.
Lo que hace FOR es que incrementa una variable en uno desde un valor inicial hasta un valor final ejecutando en cada incremento la sentencia que se quiere repetir. Su sintaxis es:
FOR identificador := inicio TO fin DO instrucción;
Donde el identificador es la variable que se incrementará, inicio es el primer valor que tendrá dicha variable y fin es el valor hasta el cual se incrementará la misma; instrucción es la sentencia (sencilla o compuesta) que se ejecutará en cada incremento de la variable.
El siguiente ejemplo escribe los números del 1 al 50 en pantalla. La variable utilizada es "Numero".
|
PROGRAM Ciclo_FOR; VAR Numero : Integer; BEGIN FOR Numero := 1 to 50 DO WriteLn(Numero); END. |
Una de las limitaciones de los ciclos FOR es que una vez iniciado el ciclo se ejecutará el número de veces predefinido sin posibilidad de agregar o eliminar ciclos.
Es posible hacer que un ciclo cuente hacia atrás, es decir que la variable en lugar de incrementarse se decremente. Para ésto cambiamos la palabra TO por DOWNTO, y colocamos el valor mayor a la izquierda y el menor a la derecha. Ejemplo:
|
PROGRAM Ciclo_FOR_2; VAR Numero : Integer; BEGIN FOR Numero := 50 DOWNTO 1 DO WriteLn(Numero); END. |
WHILE condición DO instrucción
Donde condición es la condición que se evaluará, mientras ésta sea verdadera se ejecutará la instrucción, que es una sentencia simple o compuesta.
Un programa que escriba los números del 1 al 50, utilizando el ciclo WHILE se vería como sigue:
|
PROGRAM Ciclo_WHILE; VAR Numero : Integer; BEGIN Numero := 1; WHILE Numero <= 50 DO BEGIN WriteLn (Numero); Numero := Numero +1; END; END. |
Al final del programa la variable Numero guardará el valor 51, que fué el valor que no cumplió con la condición establecida en el ciclo WHILE.
|
PROGRAM Ciclo_RepeatUntil; VAR Numero : Integer; BEGIN Numero := 1; REPEAT WriteLn (Numero); Numero := Numero + 1; UNTIL Numero = 50; END. |
Para crear un buen programa es necesario dotarlo con capacidad de desición con base en las variables o eventos definidos por el programador, para que el programa sea aplicable en un entorno más generalizado y no solo para un problema específico.
Para lograr este control se cuenta con las estructuras de control que, en Turbo Pascal, son las siguientes:
IF condición THEN instrucción ELSE otro
Donde condición es la expresión que se evaluará, en caso de ser verdadera se ejecutará la sentencia dada como instrucción, en caso de que la condición sea falsa se ejecutara la sentencia dada como otro. Ejemplo:
|
PROGRAM IF_THEN_ELSE; VAR Contador : Integer; BEGIN FOR contador := 1 to 50 DO BEGIN IF contador > 10 THEN WriteLn(Contador) ELSE WriteLn('*'); END; END. |
En este pequeño programa la variable Contador se incrementará desde 1 hasta 50, la sentencia condicional IF verificará si es verdad que Contador es mayor a 10, de ser así se escribirá en pantalla el valor de la variable, de lo contrario se escribira en la pantalla un caracter "*". Como el contador inicia desde 1, tenemos que se imprimiran 10 asteriscos antres del primer número, que será el 11, valor que si cumple la condición "Contador > 10" (la hace verdadera).
La sección
El siguiente programa ilustra el uso de la forma CASE, el programa preguntará un número al usuario y lo clasificará de acuerdo a su valor.
El uso de GOTO no es aconsejable ya que destruye el modelo de la programación estructurada que es la que se utiliza en Turbo Pascal, además se cuenta con las estructuras de datos anteriores que hacen casi innecesario su uso.
Para utilizar este tipo de salto es necesario declarar etiquetas, que no son otra cosa que el identificador que marcará el lugar a donde se dirigirá el flujo del programa al momento de usar el GOTO. La declaración de etiquetas se hace antes que la de constantes y variables, la palabra reservada para su declaración es LABEL. El nombre de la etiqueta es un nombre de un identificador como cualquier otro, pero al utilizarse debe terminar con dos puntos ":".
La sintaxis del comando es:
GOTO etiqueta;
Ejemplo:
Sentencias IF anidadas
IF Numero > 5 THEN
BEGIN
IF Numero < 10 THEN Opcion := Numero;
IF Numero < 30 THEN Opcion2 := Numero;
END;
Selecciones CASE
PROGRAM Case;
VAR
Numero : Integer;
BEGIN
WriteLn('Introduzca un número entero del 1 al 5: ');
ReadLn(Numero);
CASE Numero OF
1 : WriteLn('El número fué 1');
2 : WriteLn('El número fué 2');
3 : WriteLn('El número fué 3');
4 : WriteLn('El número fué 4');
5 : WriteLn('El número fué 5');
ELSE WriteLn('El número no estaba en el rango indicado');
END.
GOTO
PROGRAM Uso_del_GOTO;
LABEL
Etiqueta;
BEGIN
WriteLn('Esta linea si se escribirá');
GOTO Etiqueta;
WriteLn('Esta linea no se escribirá');
Etiqueta:
WriteLn('Se efectuó el brinco');
END.
HALT
PROGRAM Uso_de_HALT;
BEGIN
WriteLn('Primera linea del programa');
WriteLn('Terminará la ejecución del programa');
HALT
WriteLn('');
END.