LENGUAJES DE PROGRAMACION III

PROGRAMACION EN PASCAL
(Estructuras - Procedimientos y Funciones)

Ing. Yuri Giovani Román Lazarinos CIP 79596
T3-LP3-FISI-UJCM T3- LP3- FISI-

Programación Estructurada
► ►

Sentencias compuestas Sentencias repetitivas
Ciclos FOR Ciclos WHILE Ciclos REPEAT-UNTIL REPEAT-

Bifurcaciones condicionales
IF...THEN...ELSE IF anidados CASE
T3-LP3-FISI-UJCM

Sentencias compuestas

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. Uno de los ejemplos más claros END. má 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 aú sentencias:

Sentencias compuestas
PROGRAM Prueba; BEGIN WriteLn('Primera linea de una sentencia compuesta'); WriteLn('Primera WriteLn('Segunda linea de una sentencia compuesta'); WriteLn('Segunda WriteLn('Tercera linea de una sentencia compuesta'); WriteLn('Tercera END.

T3-LP3-FISI-UJCM

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 compilació determinado número de veces la ejecución de una nú ejecució sentencia, ya sea sencilla o compuesta, para realizar esta tarea Turbo Pascal cuenta con instrucciones específicas especí para el tipo de repetición que se requiera. repetició

T3-LP3-FISI-UJCM

Ciclos FOR
► ►

El ciclo FOR repite una sentencia un determinado número nú 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ón; instrucció Donde el identificador es la variable que se incrementará, incrementará inicio es el primer valor que tendrá dicha variable y fin es tendrá el valor hasta el cual se incrementará la misma; instrucción incrementará instrucció es la sentencia (sencilla o compuesta) que se ejecutará en ejecutará cada incremento de la variable.

Ciclos FOR

El siguiente ejemplo escribe los números del 1 al 50 en nú 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á el número de veces ejecutará nú predefinido sin posibilidad de agregar o eliminar ciclos.

T3-LP3-FISI-UJCM

T3-LP3-FISI-UJCM

Ciclos FOR

Es posible hacer que un ciclo cuente hacia atrás, es decir atrá que la variable en lugar de incrementarse se decremente. decremente. Para ésto cambiamos la palabra TO por DOWNTO, y DOWNTO, colocamos el valor mayor a la izquierda y el menor a la derecha. Ejemplo: PROGRAM Ciclo_FOR_2; Ciclo_FOR_2; VAR Numero : Integer; Integer; BEGIN FOR Numero := 50 DOWNTO 1 DO WriteLn(Numero); WriteLn(Numero); END.

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.

► Donde

T3-LP3-FISI-UJCM

T3-LP3-FISI-UJCM

Ciclos WHILE

Un programa que escriba los números del 1 al 50, utilizando el ciclo nú WHILE se vería como sigue: verí PROGRAM Ciclo_WHILE; Ciclo_WHILE; VAR Numero : Integer; Integer; BEGIN Numero := 1; WHILE Numero <= 50 DO BEGIN WriteLn (Numero); Numero := Numero +1; END; END.

Ciclos REPEAT-UNTIL

Este tipo de ciclos es muy parecido a los ciclos WHILE, la diferencia entre diferencia ambos es que en WHILE la condición se evalúa al principio del ciclo, en cambio condició evalú en REPEAT-UNTIL se evalúa al final, lo que significa que en un ciclo REPEATREPEATevalú REPEATUNTIL la sentencia se ejecutará por lo menos una vez, cosa que puede no ejecutará 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.
T3-LP3-FISI-UJCM

Para crear un buen programa es necesario dotarlo con capacidad de desición de desició con base en las variables o eventos definidos por el programador, para que el programador, programa sea aplicable en un entorno más generalizado y no solo para un má problema específico. especí

T3-LP3-FISI-UJCM

Al final del programa la variable Numero guardará el valor 51, que fué guardará fué el valor que no cumplió con la condición establecida en el ciclo WHILE. cumplió condició

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.

► 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.

► Donde

T3-LP3-FISI-UJCM

T3-LP3-FISI-UJCM

ESTRUCTURAS DE CONTROL

Ejemplo:
PROGRAM IF_THEN_ELSE; IF_THEN_ELSE; VAR Contador : Integer; Integer; BEGIN FOR contador := 1 to 50 DO BEGIN IF contador > 10 THEN WriteLn(Contador) ELSE WriteLn('*'); WriteLn(Contador) WriteLn('*'); END; END.

ESTRUCTURAS DE CONTROL
► ►

Sentencias IF anidadas Es posible utilizar en una expresión del tipo IF..THEN..ELSE expresió una sentencia compuesta como la sentencia a ejecutarse en caso de que la condición sea verdadera, así como en la condició así 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;<BR"> IF Numero <30 THEN Opcion2 :="Numero;<BR"> END;

T3-LP3-FISI-UJCM

T3-LP3-FISI-UJCM

En este pequeño programa la variable Contador se incrementará desde 1 hasta pequeñ incrementará 50, la sentencia condicional IF verificará si es verdad que Contador es mayor a verificará 10, de ser así se escribirá en pantalla el valor de la variable, de lo contrario se así escribirá escribirá en la pantalla un carácter "*". Como el contador inicia desde 1, escribirá cará tenemos que se imprimirán 10 asteriscos antes del primer número, que será el imprimirá nú será 11, valor que si cumple la condición "Contador > 10" (la hace verdadera). condició La sección ELSE con su correspondiente sentencia son opcionales y pueden secció omitirse en caso de no necesitarse.

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á realizar una deberá acción especial. Por ejemplo, si se crea un menú con diferentes opciones se acció menú realizará un determinado proceso para cada acción, aunque la selección por realizará acció selecció parte del usuario se haga desde el mismo lugar. El siguiente programa ilustra el uso de la forma CASE, el programa preguntará programa preguntará un número al usuario y lo clasificará de acuerdo a su valor. nú clasificará PROGRAM Case; VAR Numero : Integer; Integer; BEGIN WriteLn('Introduzca un número entero del 1 al 5: '); WriteLn('Introduzca nú ReadLn(Numero); ReadLn(Numero); CASE Numero OF 1 : WriteLn('El número fué 1'); WriteLn('El nú fué 2 : WriteLn('El número fué 2'); WriteLn('El nú fué 3 : WriteLn('El número fué 3'); WriteLn('El nú fué 4 : WriteLn('El número fué 4'); WriteLn('El nú fué 5 : WriteLn('El número fué 5'); WriteLn('El nú fué ELSE WriteLn('El número no estaba en el rango indicado'); WriteLn('El nú END.

PROCEDIMIENTOS
► ►

Definición de procedimiento Definició 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

T3-LP3-FISI-UJCM

PROCEDIMIENTOS
► ►

Creación de los procedimientos Creació 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": PROCEDURE Titulo; BEGIN WriteLn ('Programa de Turbo Pascal'); END;
T3-LP3-FISI-UJCM

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ón, solo dentro de éste campo acció es posible utilizarlo. Los ejemplos más claros son las variables, que pueden ser globales má o locales. La diferencia estriba en que una variable global puede ser utilizada por puede cualquier parte del programa, incluyendo a todos los procedimientos, en cambio una procedimientos, variable local puede ser utilizada únicamente por el procedimiento en el que esta declarada, el programa principal y los otros procedimientos la toman como inexistente. toman 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.

PROCEDIMIENTOS
► ►

Variables locales y globales Es posible darle el mismo nombre a una variable local y a una global en el mismo global programa, pero entonces el procedimiento no podrá utilizar la variable global ya que le podrá da preferencia a las locales sobre las globales. Por ejemplo: PROGRAM Variables_2; VAR Saludo : String; PROCEDURE Mensaje; VAR Saludo : String; BEGIN Saludo := 'Este mensaje solo es válido para el procedimiento "Mensaje"'; WriteLn('Saludo'); END; BEGIN Saludo := 'Primer saludo (Global)'; WriteLn (Saludo); Mensaje; WriteLn (Saludo); {Se escribirá el mensaje "Primer saludo"} END.
T3-LP3-FISI-UJCM

T3-LP3-FISI-UJCM

PROCEDIMIENTOS
► ►

Parámetros Pará Para poder pasar información entre el programa principal y procedimientos, o informació entre los mismos procedimientos usamos los parámetros, que son los canales pará de comunicación de datos. comunicació Los parámetros son opcionales y si no se necesitan no se deben usar. Para pará Para utilizarlos es necesario declararlos son la siguiente sintaxis: PROCEDURE nombre (lista de parámetros); pará La lista de parámetros esta compuesta de los nombres de los mismos y del pará 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, b : Integer; c, d : String); Ejemplo(a, Integer; String); Para llamar a un procedimiento que utiliza parámetros se pueden utilizar como pará tales otras variables o constantes, siempre y cuando sean del mismo tipo que mismo los declarados. Ejemplo: Ejemplo(1, 2, 'Hola', 'Adios'); 'Adios');

PROCEDIMIENTOS

Ejemplo de un programa con procedimiento que utiliza un parámetro. pará 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ón} informació END; {que llega como parámetro } pará BEGIN Saludo := 'Bienvenidos al programa'; Imprime_5 (Saludo); {llama al procedimiento Imprime_5, usando como} {parámetro la variable Saludo } {pará Imprime_5 ('Fin'); {Utiliza la cadena "fin" como parámetro } pará 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

T3-LP3-FISI-UJCM

FUNCIONES
► ►

Definición de las funciones Definició 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ón de las funciones se declaració realiza de la siguiente forma: FUNCTION nombre(parámetros) : tipo_de_datos; nombre(pará metros) tipo_de_datos;

A continuación se escribe el contenido de la función como una sentencia continuació funció normal (sencilla o compuesta), normalmente terminando con la igualación de igualació la función al valor que regresará. Ejemplo: funció regresará FUNCTION Promedio (a, b : Real) : Real; {Promedio de dos números reales} nú BEGIN Promedio := (a + b) / 2; END;

FUNCIONES
► ►

Uso de las funciones Como las funciones devuelven un valor específico la forma más usual de utilizarlas es por especí má medio de asignaciones de una variable a la función. Ejemplo: funció PROGRAM Funciones; VAR X, Y, Z : Real; FUNCTION Promedio (a, b : Real) : Real; {Promedio de dos números reales} nú BEGIN Promedio := (a + b) / 2; END; BEGIN X := 5.89; Y := 9.23; Z := Promedio (X, Y); {Iguala Z al valor devuelto por la función Promedio} funció WriteLn('El promedio de ',X,' y ',Y,' es: ',Z); WriteLn('El END.

T3-LP3-FISI-UJCM

T3-LP3-FISI-UJCM