LENGUAJES DE PROGRAMACION III
PROGRAMACION EN PASCAL (Estructuras - Procedimientos y Funciones)
Ing. Yuri Giovani Román Lazarinos CIP 79596 T3T3-LP3LP3-FISIFISI-UJCM
Programación Estructurada ►
Sentencias compuestas
►
Sentencias repetitivas Ciclos FOR Ciclos WHILE Ciclos REPEATREPEAT-UNTIL
Bifurcaciones condicionales IF...THEN...ELSE IF anidados CASE
T3-LP3-FISI-UJCM
►
►
Las sentencias compuestas son grupos de sentencias, separadas cada una por un punto y coma ";" que son tratadas como una sola sentencia.
►
Para identificar una sentencia compuesta de un grupo sucesivo de sentencias se encierran entre las palabras reservadas BEGIN y END. END. Uno de los ejemplos má 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ú aún cuando contenga varias instrucciones o sentencias:
T3-LP3-FISI-UJCM
Sentencias compuestas
Sentencias compuestas PROGRAM Prueba;
►
El punto y coma que se encuentra antes de la palabra reservada END puede ser suprimido sin afectar a la compilació compilación. En ocasiones es necesario repetir un determinado nú número de veces la ejecució ejecución de una sentencia, ya sea sencilla o compuesta, para realizar esta tarea Turbo Pascal cuenta con instrucciones especí específicas para el tipo de repetició repetición que se requiera.
T3-LP3-FISI-UJCM
BEGIN WriteLn('Primera WriteLn('Primera linea de una sentencia compuesta'); WriteLn('Segunda WriteLn('Segunda linea de una sentencia compuesta'); WriteLn('Tercera WriteLn('Tercera linea de una sentencia compuesta'); END.
Ciclos FOR ►
►
El ciclo FOR repite una sentencia un determinado nú número de veces que se indica al momento de llamar al ciclo. 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ó instrucción; Donde el identificador es la variable que se incrementará incrementará, inicio es el primer valor que tendrá tendrá dicha variable y fin es el valor hasta el cual se incrementará incrementará la misma; instrucció instrucción es la sentencia (sencilla o compuesta) que se ejecutará ejecutará en cada incremento de la variable.
T3-LP3-FISI-UJCM
►
Ciclos FOR
►
El siguiente ejemplo escribe los nú números del 1 al 50 en pantalla. La variable utilizada es "Numero". PROGRAM Ciclo_FOR; Ciclo_FOR; VAR Numero : Integer; Integer; BEGIN FOR Numero := 1 to 50 DO WriteLn(Numero); WriteLn(Numero); END. Una de las limitaciones de los ciclos FOR es que una vez iniciado el ciclo se ejecutará ejecutará el nú número de veces predefinido sin posibilidad de agregar o eliminar ciclos.
T3-LP3-FISI-UJCM
►
Ciclos FOR ►
Es posible hacer que un ciclo cuente hacia atrá atrás, es decir que la variable en lugar de incrementarse se decremente. decremente. Para ésto cambiamos la palabra TO por DOWNTO, DOWNTO, y colocamos el valor mayor a la izquierda y el menor a la derecha. Ejemplo:
BEGIN FOR Numero := 50 DOWNTO 1 DO WriteLn(Numero); WriteLn(Numero); END.
T3-LP3-FISI-UJCM
PROGRAM Ciclo_FOR_2; Ciclo_FOR_2; VAR Numero : Integer; Integer;
Ciclos WHILE ► Los
ciclos WHILE ofrecen la ventaja de que la ejecución se realiza mientras se cumpla una condición, por lo tanto es posible controlar el número de repeticiones una vez iniciado el ciclo. Su sintaxis es: WHILE condición DO instrucción 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.
T3-LP3-FISI-UJCM
► Donde
Ciclos WHILE ►
Un programa que escriba los nú números del 1 al 50, utilizando el ciclo WHILE se verí vería como sigue: PROGRAM Ciclo_WHILE; Ciclo_WHILE; VAR Numero : Integer; Integer;
►
Al final del programa la variable Numero guardará guardará el valor 51, que fué fué el valor que no cumplió cumplió con la condició condición establecida en el ciclo WHILE.
T3-LP3-FISI-UJCM
BEGIN Numero := 1; WHILE Numero <= 50 DO BEGIN WriteLn (Numero); Numero := Numero +1; END; END.
►
Este tipo de ciclos es muy parecido a los ciclos WHILE, la diferencia diferencia entre ambos es que en WHILE la condició condición se evalú evalúa al principio del ciclo, en cambio en REPEATREPEAT-UNTIL se evalú evalúa al final, lo que significa que en un ciclo REPEATREPEATUNTIL la sentencia se ejecutará ejecutará por lo menos una vez, cosa que puede no ocurrir en el ciclo WHILE. Ejemplo: PROGRAM Ciclo_RepeatUntil; Ciclo_RepeatUntil; VAR Numero : Integer; 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 de desició desición con base en las variables o eventos definidos por el programador, programador, para que el programa sea aplicable en un entorno má más generalizado y no solo para un problema especí específico.
T3-LP3-FISI-UJCM
Ciclos REPEAT-UNTIL
SENTENCIAS DE CONTROL ► Sentencia IF...THEN...ELSE ► Esta expresión es utilizada para
ejecutar una sentencia en el caso que una condición establecida sea verdadera, de lo contrario se podra ejecutar una sentencia distinta. Su sintaxis es: IF condición THEN instrucción ELSE otro 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.
T3-LP3-FISI-UJCM
► Donde
ESTRUCTURAS DE CONTROL ► Sentencia IF...THEN...ELSE ► Esta expresión es utilizada para
ejecutar una sentencia en el caso que una condición establecida sea verdadera, de lo contrario se podra ejecutar una sentencia distinta. Su sintaxis es: IF condición THEN instrucción ELSE otro 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.
T3-LP3-FISI-UJCM
► Donde
ESTRUCTURAS DE CONTROL ►
Ejemplo: PROGRAM IF_THEN_ELSE; IF_THEN_ELSE; VAR Contador : Integer; Integer;
►
►
En este pequeñ pequeño programa la variable Contador se incrementará incrementará desde 1 hasta 50, la sentencia condicional IF verificará verificará si es verdad que Contador es mayor a 10, de ser así así se escribirá escribirá en pantalla el valor de la variable, de lo contrario se escribirá escribirá en la pantalla un cará carácter "*". Como el contador inicia desde 1, tenemos que se imprimirá imprimirán 10 asteriscos antes del primer nú número, que será será el 11, valor que si cumple la condició condición "Contador > 10" (la hace verdadera). La secció sección ELSE con su correspondiente sentencia son opcionales y pueden omitirse en caso de no necesitarse.
T3-LP3-FISI-UJCM
BEGIN FOR contador := 1 to 50 DO BEGIN IF contador > 10 THEN WriteLn(Contador) WriteLn(Contador) ELSE WriteLn('*'); WriteLn('*'); END; END.
ESTRUCTURAS DE CONTROL ►
Sentencias IF anidadas Es posible utilizar en una expresió expresión del tipo IF..THEN..ELSE una sentencia compuesta como la sentencia a ejecutarse en caso de que la condició condición sea verdadera, así así como en la sentencia posterior a un ELSE, de esta forma podemos utilizar otra sentencia IF..THEN..ELSE dentro de la anterior, para de esta forma evaluar varias condiciones una dentro de otra. Ejemplo: IF Numero > 5 THEN BEGIN IF Numero <10 THEN Opcion :="Numero;
IF Numero <30 THEN Opcion2 :="Numero;
END;
T3-LP3-FISI-UJCM
►
ESTRUCTURAS DE CONTROL ►
►
Selecciones CASE Esta forma de control se utiliza cuando se va a evaluar una expresi ón que expresió puede contener varios datos diferentes y en cada dato deberá deberá realizar una acció acción especial. Por ejemplo, si se crea un menú menú con diferentes opciones se realizará realizará un determinado proceso para cada acció acción, aunque la selecció selección por parte del usuario se haga desde el mismo lugar. El siguiente programa ilustra el uso de la forma CASE, el programa programa preguntará preguntará un nú número al usuario y lo clasificará clasificará de acuerdo a su valor. PROGRAM Case; VAR Numero : Integer; Integer; BEGIN WriteLn('Introduzca WriteLn('Introduzca un nú número entero del 1 al 5: '); ReadLn(Numero); ReadLn(Numero); CASE Numero OF 1 : WriteLn('El WriteLn('El nú número fué fué 1'); 2 : WriteLn('El WriteLn('El nú número fué fué 2'); 3 : WriteLn('El WriteLn('El nú número fué fué 3'); 4 : WriteLn('El WriteLn('El nú número fué fué 4'); 5 : WriteLn('El WriteLn('El nú número fué fué 5'); ELSE WriteLn('El WriteLn('El nú número no estaba en el rango indicado'); END.
T3-LP3-FISI-UJCM
►
►
Definició Definición de procedimiento
►
Un procedimiento es un grupo de sentencias que realizan una tarea concreta. En lugar de reescribir el código completo de esa tarea cada vez que se necesite, únicamente se hace una referencia al procedimiento. Por ejemplo, es muy común que se quiera visualizar un título determinado varias veces en un programa, para evitar teclear ese título en nuestro programa fuente todas las veces que sea necesario creamos un procedimiento llamado "Titulo" que se encargará de escribirlo. Una vez creado un procedimiento actuará como una instrucción más de Turbo Pascal, y para ejecutarlo únicamente teclearemos el nombre de dicho procedimiento. Para poder ejecutar un procedimiento es necesario declararlo en el programa que se este utilizando.
►
►
►
T3-LP3-FISI-UJCM
PROCEDIMIENTOS
PROCEDIMIENTOS ►
Creació Creación de los procedimientos
►
El primer paso para crear un procedimiento es saber que queremos que haga. Una vez definiendo este punto declaramos el procedimiento después de haber declarado variables y constantes, antes del cuerpo del programa principal. La palabra reservada para su declaración es Procedure seguida del nombre del procedimiento. Vamos a crear un procedimiento encargado de escribir en pantalla el enunciado "Programa de Turbo Pascal":
T3-LP3-FISI-UJCM
PROCEDURE Titulo; BEGIN WriteLn ('Programa de Turbo Pascal'); END;
PROCEDIMIENTOS ►
►
Uso de los procedimientos Una vez declarado el procedimiento es posible utilizarlo como una instrucción de Turbo Pascal. Al uso de un procedimiento se le conoce como llamada al procedimiento. El siguiente programa ilustra el uso o la llamada al procedimiento creado anteriormente: PROGRAM Procedimientos; PROCEDURE Titulo; BEGIN WriteLn ('Programa de Turbo Pascal'); END; BEGIN WriteLn ('Programa ejemplo del uso de procedimientos'); Titulo; {Llama al procedimiento} WriteLn; WriteLn; Titulo; {Vuelve a llamar al procedimiento} END;
T3-LP3-FISI-UJCM
►
PROCEDIMIENTOS Variables locales y globales En Turbo Pascal cada identificador tiene un campo de acció acción, solo dentro de éste campo es posible utilizarlo. Los ejemplos má más claros son las variables, que pueden ser globales o locales. La diferencia estriba en que una variable global puede puede ser utilizada por cualquier parte del programa, incluyendo a todos los procedimientos, procedimientos, en cambio una variable local puede ser utilizada únicamente por el procedimiento en el que esta declarada, el programa principal y los otros procedimientos la toman toman como inexistente. Ejemplo: PROGRAM Variables; VAR Hola : String; PROCEDURE prueba; VAR Adios : String; BEGIN {En esta sección si es posible usar la variable Hola} Adios := 'Adios, que les vaya bien'; WriteLn (Adios); END;
BEGIN {En esta sección no se reconoce a la variable Adios} Hola := 'Hola, bienvenidos al programa'; WriteLn (Hola); WriteLn (Adios); {Al compilar el programa se generará un error ya que la variable Adios es inexistente en esta sección, para eliminar el problema quites esta linea} prueba; END.
T3-LP3-FISI-UJCM
► ►
PROCEDIMIENTOS ►
Variables locales y globales
►
Es posible darle el mismo nombre a una variable local y a una global global en el mismo programa, pero entonces el procedimiento no podrá podrá utilizar la variable global ya que le da preferencia a las locales sobre las globales. Por ejemplo: PROGRAM Variables_2; VAR Saludo : String;
BEGIN Saludo := 'Primer saludo (Global)'; WriteLn (Saludo); Mensaje; WriteLn (Saludo); {Se escribirá el mensaje "Primer saludo"} END.
T3-LP3-FISI-UJCM
PROCEDURE Mensaje; VAR Saludo : String; BEGIN Saludo := 'Este mensaje solo es válido para el procedimiento "Mensaje"'; WriteLn('Saludo'); END;
PROCEDIMIENTOS ►
►
Pará Parámetros Para poder pasar informació información entre el programa principal y procedimientos, o entre los mismos procedimientos usamos los pará parámetros, que son los canales de comunicació comunicación de datos. Los pará parámetros son opcionales y si no se necesitan no se deben usar. Para Para utilizarlos es necesario declararlos son la siguiente sintaxis: PROCEDURE nombre (lista de pará parámetros);
►
La lista de pará parámetros esta compuesta de los nombres de los mismos y del tipo de datos que representan, los del mismo tipo se separan con comas "," y cada tipo diferente se separa con punto y coma ";". Ejemplo: Procedure Ejemplo(a, Ejemplo(a, b : Integer; Integer; c, d : String); String);
►
Para llamar a un procedimiento que utiliza pará parámetros se pueden utilizar como tales otras variables o constantes, siempre y cuando sean del mismo mismo tipo que los declarados. Ejemplo: Ejemplo(1, 2, 'Hola', 'Adios '); 'Adios');
T3-LP3-FISI-UJCM
►
PROCEDIMIENTOS Ejemplo de un programa con procedimiento que utiliza un pará parámetro. PROGRAM Parametros; Parametros; VAR Saludo : String; String; PROCEDURE Imprime_5 (a : String); String); VAR Contador : Integer; Integer; BEGIN FOR contador := 1 to 5 DO {Imprime 5 veces la cadena almacenada } WriteLn(a); WriteLn(a); {en la variable "a", que es la informació información} END; {que llega como pará parámetro } BEGIN Saludo := 'Bienvenidos al programa'; Imprime_5 (Saludo); {llama al procedimiento Imprime_5, usando como} {pará {parámetro la variable Saludo } Imprime_5 ('Fin'); {Utiliza la cadena "fin" como pará parámetro } END.
Es válido crear un procedimiento que llame a otro procedimiento siempre y cuando el procedimiento llamado haya sido declarado antes del que lo usará.
T3-LP3-FISI-UJCM
►
FUNCIONES ►
Definició Definición de las funciones
►
Las funciones son, al igual que los procedimientos, un conjunto de sentencias que se ejecutan constantemente, la diferencia entre éstas y los procedimientos es que las funciones regresan un valor. La declaració declaración de las funciones se realiza de la siguiente forma: FUNCTION nombre(pará nombre(parámetros) metros) : tipo_de_datos; tipo_de_datos; A continuació continuación se escribe el contenido de la funció función como una sentencia normal (sencilla o compuesta), normalmente terminando con la igualaci ón de igualació la funció función al valor que regresará regresará. Ejemplo: FUNCTION Promedio (a, b : Real) : Real; {Promedio de dos nú números reales} BEGIN Promedio := (a + b) / 2; END;
T3-LP3-FISI-UJCM
►
FUNCIONES ►
Uso de las funciones
►
Como las funciones devuelven un valor especí específico la forma má más usual de utilizarlas es por medio de asignaciones de una variable a la funció función. Ejemplo: PROGRAM Funciones; VAR X, Y, Z : Real;
BEGIN X := 5.89; Y := 9.23; Z := Promedio (X, Y); {Iguala Z al valor devuelto por la funció función Promedio} WriteLn('El WriteLn('El promedio de ',X,' y ',Y,' es: ',Z); END.
T3-LP3-FISI-UJCM
FUNCTION Promedio (a, b : Real) : Real; {Promedio de dos nú números reales} BEGIN Promedio := (a + b) / 2; END;