Esquema de Programación en Pascal
Una
estructura es una agrupación de variables que hacen referencia a un mismo
elemento y que por lo tanto es lógico que vayan todas juntas.
Por
ejemplo, si queremos guardar los datos de una persona necesitaríamos una serie
de cadenas de texto para el nombre y los apellidos, otra para el DNI, un entero
para
En
Pascal, esto sería:
Type
TipoPersona = RECORD
Nombre : String[12];
Apellido1 : String[12];
Apellido2 : String[12];
DNI : String[9];
Edad : Integer;
Telefono : LongInt;
END;
Var
Persona : TipoPersona;
Acceder
a los campos de una estructura. Cuando queremos asignar valor u obtener el
valor de las variables que están dentro de la estructura se utiliza la
siguiente notación:
Variable.nombreCampo
Ejemplo:
Persona.Nombre := ‘Luis’;
Persona.Apellido : ‘Perez’;
Persona.Edad := 21;
Writeln (Persona.Telefono);
Repetición
un número finito de veces de un conjunto de instrucciones.
El
bucle termina cuando la condición de parada se cumple.
La
condición de parada es una variable de tipo booleano o una expresión de la que
resulte un booleano (operaciones lógicas). Es importante recordar, que la
condición de parada debe ser actualizada dentro del bucle. Una condición de
parada mal definida, mal actualizada o no actualizada, puede dar lugar a un
bucle infinito.
·
Bucles con número de iteraciones predefinidos
En el momento de escribir el programa,
sabemos el número exacto de repeticiones que el bucle va a realizar. Son
denominados bucles tipo “for”. Se utiliza una variable para llevar la cuenta de
la repetición en la que se está. Esta variable es conocida como índice.
FOR variable
:= inicio TO final DO
action;
FOR variable := inicio DOWNTO final DO
action;
Utilizando la partícula TO, el bucle se ejecutará mientras el valor de variable sea menor o igual que “final”. Y con la partícula DOWNTO, mientras sea mayor o igual.
repeticiones := 10;
FOR i := 0 TO repeticiones DO
BEGIN
writeln (‘ El índice vale ‘ , i);
i := i + 1;
END;
·
Bucles sin número de iteraciones
No podemos saber al escribir el programa el
número de repeticiones del bucle.
Un ejemplo sería un bucle controlado por la
opción del usuario. “El bucle no termina hasta que el usuario pulsa la tecla
‘A’ y en cada iteración se solicita que presione una tecla.”
o Se ejecuta de 1
a n veces (Comprobación al final)
Nos interesa que el contenido
del bucle se ejecute por lo menos una vez.
REPEAT
accion1;
accion2;
UNTIL condicionParada;
Ejemplo:
Var
letra : char;
...
REPEAT
write(‘Pulse una tecla, ‘a’ para terminar’);
readln(letra);
writeln (‘Pulso la tecla ‘, letra);
UNTIL letra = ‘a’ ;
o Se ejecuta de 0
a n veces (Comprobación al principio)
Según el desarrollo del programa puede que no
nos interese que se ejecute ese bucle:
WHILE condicioParada DO
accion;
Ejemplo:
Var
error : boolean;
numero : Integer;
...
error :=false;
Randomize;
WHILE error DO
BEGIN
write(‘Hola’);
numero := Random(9);
error := numero > 5;
END;
Son
instrucciones que evalúan una condición lógica (boolean) y en función del
resultado ejecutan o no ejecutan una determinada porción de código.
Condicionales positivos.
Ejecutan una porción de código sólo si la
condición evaluada es positiva.
IF condicion THEN
accion;
Ejemplo
write (‘Escribe un número de 1 a 10’);
readln (numero);
IF numero = 10) THEN
writeln (‘Tu número es de dos cifras’);
write (‘Escribe un número de 2 a 20);
...
Condicionales dobles.
Ejecutan una porción de código si la
condición evaluada es positiva y otra porción de código distinta si la
condición es negativa.
IF condicion THEN
accion si positiva;
ELSE
accion si negativa;
Ejemplo
write (‘Escribe un número de 1 a 10’);
readln (numero);
IF numero > 5) THEN
writeln (‘Tu número es mayor de 5’);
ELSE
writeln (‘Tu número es menor o igual de 5’);
write (‘Escribe un número de 2 a 20);
...
Condicionales múltiples.
Son utilizadas para ejecutar distintas
porciones de código en función del valor de una variable de tipo Integer, Byte
o Char.
CASE variable OF
valor1: accion;
valor2: accion;
...
ELSE accionElse;
END;
La entrada “ELSE” no es obligatoria, pero si
recomendada, ya que se ejecuta si “variable” no tiene ninguno de los valores
definidos por “valor1”, “valor2”..
Ejemplo
write (‘Escribe un número de 1 a 10’);
readln (numero);
CASE numero OF
1 : writeln (‘Ha escrito 1’);
2 : BEGIN
writeln (‘Ha escrito 2’);
writeln (‘Es un numero par);
END;
3 : writeln (‘Ha escrito 3’);
...
10 : writeln (‘Ha escrito 10’);
ELSE writeln (‘No es un valor correcto’);
END;
El
objetivo de crear funciones (y procedimientos) es agrupar y generar módulos que
realizan una función muy concreta. à Modularidad.
Los
argumentos son información que se le pasa a la función con la que realiza
operaciones. Los argumentos se definen de la siguiente manera:
nombreArgumento : tipo
del argumento
FUNCTION Suma(a,b: Integer): Integer;
Las
funciones devuelven un valor como resultado de sus operaciones. Los procedimientos
no devuelven ningún valor.
PROCEDURE Suma(a,b: Integer; VAR resultado : Integer);
Existen
dos métodos de pasar argumentos, por valor o por variable. Cuando se pasa un
argumento por variable se utiliza la partícula “VAR”. El valor de la variable
cambia fuera de la función o procedimiento. Mientras que si se pasa por valor,
cualquier cambio se descarga una vez terminado el procedimiento o función.
Funciones
Devuelven un valor, hay que definir un tipo
de dato para el retorno. Para devolver ese nivel se realiza la siguiente
acción.
nombreFuncion := ValorRetorno
Procedimientos
No devuelven nada.