Вы находитесь на странице: 1из 12

elRaid procedimientos funciones PASCAL PROCEDIMIENTOS Y FUNCIONES PROCEDIMIENTOS PASCAL

Un camino para dividir un gran programa en partes ms pequeas es el uso de los llamados procedimientos. Un procedimiento es un grupo de instrucciones, variables, constantes, etc., que estn diseados con un propsito particular y tiene su nombre propio. Es decir un procedimiento es un mdulo de un programa que realiza tareas especficas y que no puede regresar valores a la parte principal del programa u otro procedimiento que lo est invocando. Despus de escribir un procedimiento se usa su propio nombre como una sola instruccin o llamada al procedimiento. Los procedimientos se podrn escribir despus del cuerpo principal del programa utilizando el formato: procedure nombre; const (* Constantes *) var (* Variables *) begin (* instrucciones *) end; Observar que es similar a un programa completo y se declara en la parte de arriba despus sel USES. Pero tambin los procedimientos debern declararse antes del main como lo muestra el programa ejemplo. Un programa puede tener tantos procedimientos como se deseen para hacer una llamada o invocacin al procedimiento durante la ejecucin de un programa solo se deber escribir el nombre del procedimiento.

Prog9.pas

program prog9; uses crt; procedure edadmeses; var edad,meses:integer; begin clrscr; write('dame edad :');readln(edad); meses:=edad*12; write('meses = ',meses); readln; end; begin (* invocando procedimiento *) edadmeses; end. corrida: Recordar tambin que un programa puede tener muchos procedimientos, y estos pueden llamarse o invocarse entre si. MUCHO OJO con la nota anterior, es vlido que un procedimiento se llame o invoque o se active a si mismo o usando una referencia circular, por ejemplo proc1, activa proc2 que a su vez llama a proc1 esto se llama recursin y si no se controla con una instruccin if(condicion)break o exit(no me acuerdo cual de las dos) se va a obtener un hermoso ciclo infinito, muy divertido cuando le pasa a los programas de los compaeros, estn avisados.

Como se observa un procedimiento puede ser un programa completo.

TAREAS PROGRAMACION BORLAND PASCAL

Construir los siguientes programas con procedimientos a) Convertir $800.00 Pesos a dlares. b) Calcular el rea de un tringulo de base=20 y altura=30. c) Desplegar una Boleta de calificaciones. PARAMETROS PASCAL Un parmetro es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algn proceso. Estos valores que se pasan del cuerpo principal del programa o de un procedimiento a otros procedimientos se llaman parmetros. Entonces la declaracin completa de un procedimiento es : Procedure nomproc(lista de parametros); Donde lista de parametros es una o mas variables separadas por punto y coma como lo muestra el pograma ejemplo.

prog10.pas

program prog10; uses crt; var edad1:integer; procedure edadmeses(nombre:string; edad:integer); var meses:integer; begin meses:=edad*12;

write(nombre,' tus meses son= ',meses); readln; end; begin (* capturando el dato *) clrscr; write('dame edad : ');readln(edad1); (* Invocando procedimiento y pasando parmetros *) edadmeses('JUAN', edad1); end.

Y no olvidar declarar el procedimiento antes del BEGIN-END incluyendo sus parmetros como lo muestra el ejemplo. Recordar tambin que se pueden mandar como parmetros, datos, variables y expresiones algebraicas(no formulas o ecuaciones algebraicas)

Observar que en el procedimiento los parmetros son dos variables locales es decir variables que solo se pueden usar dentro del procedimiento estas variables son quienes reciben los datos o valores. REGLAS PARA EL USO DE PARAMETROS 1.- Cuando se usan variables como parmetros, la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se est enviando. 2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre o el mismo nombre por claridad de programa, pero recordar que internamente en la memoria del computador existirn dos variables diferentes. 3.- La cantidad de variables que se envan deben ser igual en cantidad, orden y tipo a las variables que reciben. 4.- La variable que se recibe tiene un mbito local dentro del procedimiento, es decir solo la puede usar ese procedimiento.

5.- Se puede mandar a un procedimiento un dato, una variable(como lo muestran los ejemplos) o una expresin algebraica (no ecuacin o formula, pero siempre se debern recibir en una variable. TAREAS 1.- Programa que captura 3 calificaciones en principal, calcular promedio en procedimiento uno e imprimir nombre y promedio en un segundo procedimiento. 2.- Construir una tabla de multiplicar que el usuario indique captura y control de ciclo en principal, calculo y despliegue en un procedimiento. 3.- Construir un procedimiento que reciba un numero entero y que mande llamar a un segundo procedimiento pasando el letrero PAR O IMPAR

VARIABLES LOCALES Y GLOBALES PROGRAMACION PASCAL

El lugar donde sea declarada una variable afectara el uso que el programa quiera hacer de esa variable. Las reglas bsicas que determinan como una variable puede ser usada depende de 3 lugares donde se puede declarar una variable. En primer lugar es dentro de cualquier funcin o procedimiento a estas se les llama variables locales y solo pueden ser usadas por instrucciones que estn dentro de esa funcin o procedimiento. En segundo lugar es como parmetro de una funcin donde despus de haber recibido el valor podr actuar como variable local en esa funcin o procedimiento. En esencia una variable local solo es conocida por el cdigo de esa funcin o procedimiento y es desconocida por otras funciones o procedimientos. En tercer lugar es fuera de todas los procedimiento o funciones a este tipo de variables se les llama variables globales y podrn ser usadas por cualquier funcin o procedimiento del programa. En programacin en serio no es acostumbrado usar muchas variables globales por varias razones, una de ellas es que variables globales estn vivas todo el tiempo de ejecucin del programa y si una global solo la ocupan unos cuantos procedimientos no tiene caso que este viva para todo el resto, otra razn es que es peligroso tener variables globales porque todo el conjunto de procedimiento y funciones que componen un programa tienen acceso o comparten su valor y se corre el riesgo de que inadvertidamente alguno de ellos modifique su valor.

Prog11.pas

program prog11; uses crt; var (* Realmente estas son variables globales *) edad,meses:integer; nombre:string; procedure edadmeses; begin meses:=edad*12; write(nombre,' tus meses son= ',meses); readln; end; begin (* capturando el dato *) clrscr; write('dame edad : ');readln(edad); (* invocando procedimiento sinparametros *) nombre :='PEDRO'; edadmeses; end. Es muy agradable trabajar sin parametros pero recordar la nota de arriba que no es muy bueno usar muchas variables globales: TAREAS PROGRAMACION PASCAL 1.- BOLETA DE CALIFICAIONES Y SOLO USAR DOS VARIABLES GLOBALES 2.- UNA TABLA DE MULTIPLICAR Y SOLO USAR UNA VARIABLE GLOBAL

FUNCIONES TURBO PASCAL Una funcin es un mdulo de un programa separado del cuerpo principal, que realiza una tarea especfica y que puede regresar un valor a la parte principal del programa u otra funcin o procedimiento que la invoque. La forma general de una funcin es: Function NomFuncion(parametros): tipodatoregresa; Begin Instrucciones; End; Donde tipo dat especifica el tipo de dato que regresara la funcin. Y el NomFuncion tiene dos papeles en pascal: A) Es el nombre que se invocara dentro del principal o de algn procedimiento u otra funcin . B) Es tambin una variable que deber cargarse dentro del cuerpo de instrucciones (begin ..end) para que pueda regresar el dato o resultado al principal o procedimiento o funcin que la est invocando. La lista de parmetros formales es una lista de variables separadas por punto y coma ( ;) que almacenaran los valores que reciba la funcin, estas variables actan como locales dentro del cuerpo de la funcin. Recordar adems que cuando se llame una funcin deber haber una variable que reciba el valor que regresara la funcin, es decir generalmente se llama una funcin mediante una sentencia de asignacin, por ejemplo resultado=funcion(5, 3.1416);

Prog12.pas program prog11; uses crt; var

dolar:real; FUNCTION dolares(pesos,tc:real):real; begin dolares := pesos /tc;

end; begin clrscr; (* llamando funcion y cargando resultado *) dolar := dolares(123.45 , 11.25); write('SON ',dolar:0:2, ' DOLARES'); readln; end. EXISTEN 3 CLASES USUALES DE FUNCIONES.

Las primeras son de tipo computacional que son diseadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operacin. Las segundas funciones son aquellas que manipulan informacin y regresan un valor que indican la terminacin o la falla de esa manipulacin. Las terceras son aquellas que no regresan ningn valor, es decir son estrictamente procedurales. Esto quiere decir que en general toda operacin o calculo en un programa deber convertirse a una o muchas funciones y el resto debern ser procedimientos.

TAREAS PROGRAMACION PASCAL 1.- Capturar 3 calificaciones y nombre en un procedimiento, calcular promedio en una funcin, desplegar en otro procedimiento. 2.- Crear una tabla de multiplicar, captura y control de ciclo en el principal, operaciones en una funcin, despliegue en el principal.

PROGRAMACION PASCAL PARAMETROS POR VALOR Y POR REFERENCIA

Un concepto interesante que se maneja fcilmente en pascal es el paso de parmetros por calor y por referencia. Hasta ahora todos los parmetros que se han usado en esta unidad se han pasado por valor, esto es el caso normal.

Cuando se pasa un parmetro por valor, el compilador bsicamente crea una copia del dato y lo almacena en la variable parmetro que lo recibe, esto ocasiona que si el procedimiento o la funcin le hacen algn cambio a la variable parmetro, la variable original que se mand como parmetro no sufre ningn cambio. Sin embargo cuando se manda un dato por referencia cualquier cambio que se realice a la variable parmetro, tambin se le estar haciendo a la variable original, es decir cuando se manda una variable a un procedimiento o funcin el compilador no saca una copia de la variable, en su lugar sigue usando el mismo espacio de memoria donde la tiene almacenada pero ahora este espacio de memoria estar apuntado tanto por la variable original como por la variable parmetro. Esto quiere decir que cambios a la variable parmetro, realmente se le estarn haciendo a la variable original, como lo demuestra el programa ejemplo ms abajo. Para pasar una variable por referencia a una variable parmetro se usara el siguiente formato.

Procedure nomproc(VAR lista de parametros); Solo agregar la palabra reservada VAR a la lista de parmetros que se quieran pasar como referencia.

Prog13.pas program prog13; uses crt; var nombre:string; edad:integer; procedure pasar(nombre1:string; var edad1:integer); begin (* cambiando los parametros *) nombre1:='maria elena'; edad1:=50; end;

BEGIN clrscr; (* cargando las variables *) nombre:='juan fernando'; edad:=15; (* mandando a procedimiento *) pasar(nombre,edad); (* desplegando *) writeln('nombre : ',nombre); writeln('edad : ',edad); readln; END. Observar que se pueden mandar parmetros por valor ( EL CASO DE NOMBRE) y parmetros por referencia (EL CASO DE EDAD). Observar tambin en la corrida que para el caso de edad, el cambio que se le hizo dentro del procedimiento realmente se le est haciendo a la variable original.

PROGRAMACION TAREAS PASCAL 1.- Inicializar 5 datos de alumno en principal y mandar la mitad de ellos por referencia a un procedimiento para practicar este concepto 2.- Construir un tabla de dividir usando alguna variable por referencia.

ARREGLOS COMO PARAMETROS PROGRAMACION PASCAL En este tema usaremos una instruccin nueva en pascal la instruccin TYPE, bsicamente se usa para crear un tipo de dato nuevo que no exista dentro del estndar de pascal, por ejemplo;

TYPE Meses = (ene, feb, mar, abr); Pares = (2,4,6,8);

VAR Mes:Meses; Num:Pares Como se observa se crearon dos tipos de datos nuevos y se declararon dos variables de ese tipo. Para pasar un arreglo completo como parmetro a un procedimiento a una funcin solo se manda el nombre del arreglo sin corchetes e ndices. En el procedimiento o funcin que recibe solo se declara un arreglo del mismo tipo. Recordar tambin que el arreglo se podr mandar POR VALOR o POR REFERENCIA en este ltimo caso ms til ( evitamos gastar memoria duplicando el arreglo ) cambios que se le hagan a los datos del arreglo que recibe realmente se est haciendo al arreglo original como lo muestra el siguiente ejemplo:

Prog14.pas program prog14; uses crt; type rango = array[1..3] of integer; var vector:rango; r1:integer; PROCEDURE listas(var lista:rango); var r:integer; begin for r:=1 to 3 do lista[r] := lista[r] + 1000; end; begin

clrscr; (* cargando vector *) vector[1]:=50;vector[2]:=100;vector[3]:=200; (* pasandolo a procedimiento *) listas(vector); for r1:=1 to 3 do writeln(vector[r1]); readln; end. Es de recordar que los cambios que le hagan al arreglo dentro de la funcion se reflejaran en el arreglo original, es por esto que si se quiere modificar un arreglo en una funcion no hay necesidad de regresar ningun valor.

TAREAS PROGRAMACION PASCAL

1.- Inicializar 10 edades en el principal mandar la lista a un procedimiento que la convierte a meses, desplegar en principal. 2.- Capturar un arreglo de 7 ciudades en principal, sortear u ordenar o alfabetizar (sorteo burbuja) en un procedimiento y desplegar en otro procedimiento tanto la lista original como la lista ordenada.

Вам также может понравиться