SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Módulo 6ALGORITMOS Y ESTRUCTURA DE DATOS  PROFESOR:SIRACUSA EMILIANO                      MARTÍN Página Web: www.esiracusa.jimdo.com
Procedimientos y funciones Una estrategia para la resolución de problemas complejos con computadoras es la división o descomposición del problema en otros problemas más pequeños o subproblemas. Estos subproblemas se implementan mediante unidades o subprogramas. Generalmente un proyecto de programación se compone de un programa principal y un conjunto de subprogramas. Los subprograma; en Pascal se clasifican en procedimientos y funciones. Procedimiento: es un subprograma que realiza una tarea específica. Es una unidad de programa independiente. Está compuesto por un conjunto de sentencias a las que se le asigna un nombre. Permite la transferencia de valores entre la unidad que lo activa y el subprograma propiamente dicho.
Puede recibir cero o mas valores de !a unidad que lo activa y devolver cero o más valores a dicho programa activador. La tarca asignada al procedimiento se ejecuta siempre que se encuentre el nombre del procedimiento. Función: unidad de programa independiente que devuelve al menos un valor a la unidad llamadora. Puede recibir cero o más valores de la unidad que lo activa. La tarea asignada a la función se ejecuta siempre que se encuentre el nombre de la función. Declaración de un procedimiento o una función: Todo procedimiento o función se declara dentro de la sección de declaraciones del programa principal o de un subprograma.
Las declaraciones de ambos subprogramas constan de tres partes: El encabezamiento que proporciona el nombre del mismo y en caso de existir, una lista de parámetros. Las funciones tienen que indicar el tipo de dato cuyo valor asume la función cuando se ejecuta. Una sección de declaraciones similar a la de los programas Una sección ejecutable: similar a la de los programas (con alguna variante en las funciones).
Ejemplos de encabezamiento: Procedure PI (a,b: integer ; var e:real); Palabra reservada	 		Identificador del procedimiento	 				Lista de parámetros formales (opcional)	 Procedure Intersección (a, b, c, d, e, f: real; var x, y: real);	 Procedure EscribirMensaje;	 Procedure HorasHombre (dia: Tdiassemana; var horas,minutos; natural);
Ejemplos de encabezamiento: Function Fl (a,b:integer):real; Palabra reservada  	Identificador de función 		Lista de parámetros fórmales (opcional) 				Tipo de dato del valor de la función Function Racional(a,b: integer):real; Function EsBisiesto(año: integer): boolean; Function Salario (dia: Tdiassemnal,horas: natural): real;
En el cuerpo de la función se nene la obligación de asignar un valor al identificador de la función, al menos una vez ya que el último valor que tome será el valor que transmite a la unidad que la invoca. Function EsBisiesto(año: integer): boolean; Begin EsBisiesto:= (año mod 4 = 0) y ( año mod 100 <>0) o (año mod 400= 0); End;
Invocación de un procedimiento Un procedimiento se invoca dentro del programa o de un subprograma directamente por su nombre respetando el alcance de los identificadores, seguido de una lista de parámetros efectivos, si fuera necesario. La invocación de un procedimiento es una sentencia del programa o de la unidad llamadora. La ejecución de dicha sentencia equivale a la ejecución del procedimiento que lleva su nombre. Una vez finalizada la ejecución del procedimiento se retorna el control a la sentencia que sigue a la que dio lugar dicha activación en el subprograma llamador.
Invocación de un procedimiento Procedure P1 (a ;b: integer; var e: real); Pl( x,y,z) Invocación del procedimiento P1 con tres parámetros efectivos, ya que su .definición se realizó con tres parámetros formales.
Invocación da un procedimiento Declaración Procedure Intersección (a,b,c,d,e.f: real; var x,y: real);	 Procedure EscribirMensaje;	 Procedure HorasHombre (dia: Tdiassemana; var horas,minutos; natural); Invocación Procedure Intersección (a, b, c, d, e, f, x, y); Procedure EscribirMensaje;	 Procedure HorasHombre(Undia, Lashoras, Losminutos);
Invocación de una función Una función se invoca dentro del programa o de un subprograma directamente por su nombre respetando el alcance de los identificadores, seguido la una lista de parámetros efectivos, si fuera necesario. La invocación de una función se realiza dentro de una expresión del programa o de la unidad llamadora.  La ejecución de dicha expresión incluye la ejecución de la función indicada que se realiza en el momento que corresponde de acuerdo a las reglas de ejecución de la expresión. Una vez finalizada la ejecución de la función, su valor se opera con el resto de los operandos. Es decir se retorna el control de ejecución a la expresión..
Invocación de una función Function F1 (a, h: integer): real; 			…* F1 (a, h)/3… Invocación de la función F1 con dos parámetros efectivos, ya que su definición se realizó con dos parámetros formales.
Invocación de una función  Declaración. Function Racional(a, b: integer):real; Function EsBisiesto(año: integer): boolean; Function Salario (dia: Tdiassemana; horas: natural): real; Invocación numero := 16*RacionaI(3,b) /7 If EsBisiesto(2008) then writeln('el ano', 2008,'es bisiesto');  while Salario (dia, horas) < 500 do
Ejemplo:	 Program P;	 Procedure Q;	 	begin 		writeln (‘este es un procedimiento')	 	end; {Q}   begin    writeln ('Este programa a activa al procedimiento Q');	 	Q;	 end.	 La ejecución del programa dará por resultado: Este programa activa al procedimiento Q este es un procedimiento
El procedimiento Q está declarado en el programa P. Se puede representar la declaración de procedimientos con un diagrama que revela el lugar que ocupa cada uno dentro dala estructura-estática del programa. P     Program P; 	Procedure Q; Q	begin 	 Writeln ('Este es un procedimiento') 	end;{ Q}         begin Writeln('Este programa activa al procedimiento Q); Q;         end.
Si se tuviera:	 Program P;   procedureQ; 	begin 	End; { Q} procedureR;  begin 	end; {R} begin Q; R; end. P Q			R Q y R pueden hacer referencia a todos los identificadores declarados en P. P pueden hacer referencia alos identificadores Q y R.
Program P; Var  y: integer; Procedure Q; begin  	   Writeln('Dentro de Q se puede hacer referencia a y declarar P ');  	   Writeln( 'el valor de y en Q es:', y);  	end; { Q}  Procedure R; 	begin 	   Writeln( 'Dentro de R se puede hacer referencia a y declarada en P );  	   Writeln( 'el valor de y es:', y)  end; { R} begin y:=3;	 Q;	 P; X Writeln( 'el valor de y declarada en, P es:', y) end. P Q			R
Program P; Var  y: integer; Procedure Q; begin  	   Writeln( 'el valor de y en Q es:', y);  	end; { Q}  Procedure R; 	begin Writeln( 'el valor de y en R es:', y); end; { R} begin y:=3;	 Q;	 P; X Writeln( 'el valor de y declarada en, P es:', y) end. P Q			R Traza en P P	  P	        P 	   Q el valor de y en Q es 3
Program P; Var  y: integer; Procedure Q; begin  	   Writeln('Dentro de Q se puede hacer referencia a y declarar P ');  	   Writeln( 'el valor de y en Q es:', y);  	end; { Q}  Procedure R; 	begin 	   Writeln( 'Dentro de R se puede hacer referencia a y declarada en P );  	   Writeln( 'el valor de y es:', y)  end; { R} begin y:=3;	 Q;	 P; X Writeln( 'el valor de y declarada en, P es:', y) end. P Q			R Traza en P P	  P	        P 	   Q	        R el valor de y en Q es 3 el valor de y en R es 3
Tal como está declarada la variable y es local al programa P y global para los procedimientos Q y R. Identificador local a un subprograma o programa: Es el que está declarado en el subprograma o programa. Está activo sólo durante la ejecución del mismo. Una vez finalizada la ejecución de la unidad donde está declarado no se puede hacer referencia a dicho identificador. Program P;  var   y: integer;  Procedure Q;                  var  x: integer:  begin x:=1; end; { Q} begin  y:= 3;  Q; writeln(‘ el valor de y en P es:’, y); end. y, Q son locales a P x es local Q
La variable ‘y’ y los procedimientos Q y R son locales a P. Los procedimientos Q y R no tienen identificadores locales. Program P; Var  y: integer; Procedure Q; begin  	   Writeln('Dentro de Q se puede hacer referencia a y declarar P ');  	   Writeln( 'el valor de y en Q es:', y);  	end; { Q}  Procedure R; 	begin 	   Writeln( 'Dentro de R se puede hacer referencia a y declarada en P );  	   Writeln( 'el valor de y es:', y)  end; { R} begin y:=3;	 Q;	 P; X Writeln( 'el valor de y declarada en, P es:', y) end.
Traza en P P	  P	        P 	   Q Program P;  var   y: integer;  Procedure Q;                  var  x: integer:  begin x:=1; end; { Q} begin  y:= 3;  Q; writeln(‘ el valor de y en P  es:’, y); end.
Traza en P P	  P	        P 	   Q Program P;  var   y: integer;  Procedure Q;                  var  x: integer:  begin x:=1; x:=x+1; Y:=y+1; end; { Q} begin  y:= 3;  Q; writeln(‘ el valor de y en P  es:’, y); end.
Traza en P P	  P	        P 	   Q Program P;  var   y: integer;  Procedure Q;                  var  y: integer:  begin y:=1; Y:=y+1; end; { Q} begin  y:= 3;  Q; writeln(‘ el valor de y en P  es:’, y); end.
Parámetros: La transferencia de valores desde y hacia el procedimientos o función se realiza por medio de parámetros. Procedure SiEsMayor (x, y:real; var esmayor: boolean);  begin esmayor:= x > y  end; Function SiEsMayor (x, y:real): boolean) ;  begin  SiEsMayor:= x > y  End; Ejemplo:   Algoritmo SiEsMayor DE: x, y: real DS: esmayor: lógico Acciones  esmayor x > y  fin
Una lista de identificadores con sus tipos de datos es el mecanismo para transferir valores desde el subprograma que invoca al subprograma invocado y devolver los valores desde el subprogramas llamador. La lista de identificadores en el encabezamiento de la declaración De un procedimiento o una función es llamada lista de parámetros formales, los parámetros formales son identificadores locales al subprograma donde están declarados. Esta lista establece un conjunto de entidades que representan objetos o datos, en término de los cuales se expresa el procedimiento o la función. Estos parámetros son los datos de entrada al subprograma y/o los datos de salida del mismo, son comparables a los datos de entrada y salida de un algoritmo, pero no son iguales. Dentro del cuerpo del procedimiento se tratan como cualquier otra variable aunque sus efectos no siempre son los mismos.
En la sentencia de invocación del procedimiento se indica la lista de parámetros actuales, reales o efectivos que se corresponderán en número, tipo y orden con los parámetros formales del procedimiento correspondiente. Ejemplo: Program Estudio; ....var, h: integer ,z: boolean..................... Procedure SiEsMayor(x, y: integer; var esmayor: boolean);   begin .................. _ End; Begin ……… SiEsMayor ( a, b, z); {invocación}  ……… End. Lista de parámetros formales Lista de parámetros efectivos
En la invocación de una función se indica la lista de parámetros actuales, reales o efectivos que se corresponderán en número, tipo y orden con los parámetros formales de la función correspondientes. Ejemplo: Program Estudio; ....var, h: integer ,z: boolean..................... Function SiEsMayor(x, y: integer; var ): boolean;   begin .................. _ End; Begin ……… If SiEsMayor ( a, b)  then 	 {invocación}  ……… End. Lista de parámetros formales Lista de parámetros efectivos
Hay cuatro tipos de parámetros formales en Pascal: por valor por variable funciones procedimientos El tipo de cada parámetro actual está determinado por el correspondiente parámetro formal. La correspondencia entre la lista de parámetros formales y efectivos debe ser: La cantidad de parámetros debe ser la misma en ambas listas. Cada parámetro actual se corresponde con el formal que ocupa la misma posición en la listade parámetros  formales. La correspondencia de tipos debe coincidir entre los efectivos y los formales.
Veremos dos tipos de pasaje de parámetros que presenta Pascal  Por valor Por referencia En la lista de parámetros formales, ( en la declaración del procedimiento) los parámetros por referencia se declaran del siguiente modo: var lista de identificadores: identificador de tipo de dato  var x, y: real; var x: real;  var y : integer Los parámetros efectivos que se corresponden con los formales por variable (en la invocación del procedimiento) deben ser variables. SiEsMayor (3,5,z); Los parámetros efectivos van separados por comas.
Ejemplo: En la invocación del procedimiento el parámetro efectivo se liga al formal con pasaje por referencia. Durante la ejecución del procedimiento, toda modificación en el valor del parámetro formal por referencia, modificará el parámetro efectivo Instantáneamente. Finalizada la ejecución del procedimiento no se  tiene más acceso al parámetro formal. Program Estudio; var, h: integer ,z: boolean; Procedure SiEsMayor (x, y: integer; 	                  	        var esmayor: boolean);  	begin Esmayor:= x < y;  	End; begin read(a.b);  SiEsMayor( a,b,z);  Write (z); end.
Los parámetros formales por referencia se pueden comparar con los datos de entrada salida de un algoritmo, pero no son iguales. En un algoritmo el argumento que se corresponde con un dato de entrada y salida de una primitiva, en la invocación de la primitiva, le asigna el valor al dato y cuando finaliza la ejecución de la primitiva el dato le asigna el valor obtenido al argumento. En un subprograma el parámetro que se corresponde con un parámetro formal por referencia, en la invocación del procedimiento, se liga al mismo y todo cambio en el parámetro formal o efectivo se transmite al otro.
Parámetros por valor Se usa el parámetro por valor cuando el único rol del parámetro es ingresar un valor al procedimiento, es unidireccional (parámetro de entrada) se declaran del siguiente modo: Lista de identificadores : tipo de dato El parámetro efectivo que se corresponde con uno formal por valor, asigna al mismo, su valor, en la invocación del procedimiento. No se mantiene la correspondencia durante la ejecución ni a la finalización del mismo. Son comparables a los datos de entrada de las primitivas y sus invocaciones.
Program Area_cuadrado;  var lado, area: real;  Procedure imprimir( a,b: real);  begin 	write(‘el área del cuadrado de lado', a, 'es: ',b)  end; begin read( lado);  area := lado * lado; imprimir (lado, area); End.
Traza del programa Area_cuadrado el área del cuadrado de lado 4 es: 16
Pautas a tener en cuenta para utilizar parámetros: Si la información que se pasa al procedimiento no tiene que ser devuelta fuera del procedimiento el parámetro formal que representa dicha información puede ser un parámetro por valor. Si se tiene que devolver infamación a la unidad llamadora el parámetro formal que representa esa información debe ser un parámetro por referencia. Si la información que se pasa al procedimiento puede ser modificada y se devuelve un nuevo valor, el parámetro formal que representa dicha información debe ser un parámetro por referencia.
Variables globales vs parámetros Las variables globales deben evitarse para intercambiar información entre unidades de programas.  La modificación del valor de una variable global puede tener efectos no esperados sobre las unidades de programas que las usan. El uso de variables globales requiere una estrecha coordinación entre las distintas personas que escriben los procedimientos del programa. El uso de variables globales limita la libre elección de los identificadores y dentro de los procedimientos. El uso de variables globales impide la independencia entre las unidades del programas. No se permitirá el uso de variables globales en los programas de este curso.
Bibliografía ,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Pr106 funcionesdefinicion variables
Pr106 funcionesdefinicion variablesPr106 funcionesdefinicion variables
Pr106 funcionesdefinicion variables
yonatan novoa
 

Was ist angesagt? (20)

Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Manuales ...
Manuales ...Manuales ...
Manuales ...
 
ejercicios-pascal
ejercicios-pascalejercicios-pascal
ejercicios-pascal
 
Fundamentos de programación(1)
Fundamentos de programación(1)Fundamentos de programación(1)
Fundamentos de programación(1)
 
Programación 1: funciones en C
Programación 1: funciones en CProgramación 1: funciones en C
Programación 1: funciones en C
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datos
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempo
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Practica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FIPractica 11 Laboratorio de Computación para Ingenieros FI
Practica 11 Laboratorio de Computación para Ingenieros FI
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++
 
Comandos matlab frecuencia
Comandos matlab frecuenciaComandos matlab frecuencia
Comandos matlab frecuencia
 
Pr106 funcionesdefinicion variables
Pr106 funcionesdefinicion variablesPr106 funcionesdefinicion variables
Pr106 funcionesdefinicion variables
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Practica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FIPractica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FI
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
SUBPROGRAMAS
SUBPROGRAMASSUBPROGRAMAS
SUBPROGRAMAS
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 

Andere mochten auch (15)

3 Programa
3 Programa3 Programa
3 Programa
 
Síntesis 2
Síntesis 2Síntesis 2
Síntesis 2
 
Tema3y4
Tema3y4Tema3y4
Tema3y4
 
Tema5
Tema5Tema5
Tema5
 
Arreglo de punteros
Arreglo de punterosArreglo de punteros
Arreglo de punteros
 
La diferencia entre función y procedimiento
La diferencia entre función y procedimientoLa diferencia entre función y procedimiento
La diferencia entre función y procedimiento
 
Macromedia flash
Macromedia flashMacromedia flash
Macromedia flash
 
Modulos
ModulosModulos
Modulos
 
Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmos
 
Manual de procedimientos
Manual  de procedimientosManual  de procedimientos
Manual de procedimientos
 
Manual de funciones y procedimientos ejemplos
Manual de funciones y procedimientos ejemplosManual de funciones y procedimientos ejemplos
Manual de funciones y procedimientos ejemplos
 
MANUAL DE FUNCIONES Y MANUAL DE PROCEDIMIENTOS EMPRESA: COMERCIAL NUTRESA S.A.S
MANUAL DE FUNCIONES Y MANUAL DE PROCEDIMIENTOS  EMPRESA: COMERCIAL NUTRESA S.A.SMANUAL DE FUNCIONES Y MANUAL DE PROCEDIMIENTOS  EMPRESA: COMERCIAL NUTRESA S.A.S
MANUAL DE FUNCIONES Y MANUAL DE PROCEDIMIENTOS EMPRESA: COMERCIAL NUTRESA S.A.S
 

Ähnlich wie Módulo 6 (sin estilo)

Yerdelis programacion
Yerdelis programacionYerdelis programacion
Yerdelis programacion
yerdelis
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
Manuel
 
Funciones
FuncionesFunciones
Funciones
adark
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
die_dex
 
Material de Clases TP 03 - Programación Computacional
Material de Clases TP 03 - Programación ComputacionalMaterial de Clases TP 03 - Programación Computacional
Material de Clases TP 03 - Programación Computacional
mnllorente
 

Ähnlich wie Módulo 6 (sin estilo) (20)

Módulo 7 (sin estilo)
Módulo 7 (sin estilo)Módulo 7 (sin estilo)
Módulo 7 (sin estilo)
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx
 
Yerdelis programacion
Yerdelis programacionYerdelis programacion
Yerdelis programacion
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
 
Presentacion
PresentacionPresentacion
Presentacion
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Funciones
FuncionesFunciones
Funciones
 
sentenciareturnymetodos
sentenciareturnymetodossentenciareturnymetodos
sentenciareturnymetodos
 
Guía didáctica estructura secuenciales
Guía didáctica estructura secuencialesGuía didáctica estructura secuenciales
Guía didáctica estructura secuenciales
 
Trabajo final programacion
Trabajo final programacionTrabajo final programacion
Trabajo final programacion
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Turbo Pascal 7
Turbo Pascal 7Turbo Pascal 7
Turbo Pascal 7
 
Material de Clases TP 03 - Programación Computacional
Material de Clases TP 03 - Programación ComputacionalMaterial de Clases TP 03 - Programación Computacional
Material de Clases TP 03 - Programación Computacional
 
Catalan
CatalanCatalan
Catalan
 
Laboratorio1 entrada-salida de datos / Lenguance C
Laboratorio1   entrada-salida de datos / Lenguance CLaboratorio1   entrada-salida de datos / Lenguance C
Laboratorio1 entrada-salida de datos / Lenguance C
 
Escuela
EscuelaEscuela
Escuela
 
Escuela
EscuelaEscuela
Escuela
 

Mehr von Emiliano Siracusa (10)

Capacitores
CapacitoresCapacitores
Capacitores
 
Módulo 4 (sin estilo)
Módulo 4 (sin estilo)Módulo 4 (sin estilo)
Módulo 4 (sin estilo)
 
Módulo 5 (sin estilo)
Módulo 5 (sin estilo)Módulo 5 (sin estilo)
Módulo 5 (sin estilo)
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
Elecciones
EleccionesElecciones
Elecciones
 
Módulo 3
Módulo 3Módulo 3
Módulo 3
 
Módulo 2
Módulo 2Módulo 2
Módulo 2
 
Módulo 1
Módulo 1Módulo 1
Módulo 1
 
Programa 4º
Programa 4ºPrograma 4º
Programa 4º
 

Módulo 6 (sin estilo)

  • 1. Módulo 6ALGORITMOS Y ESTRUCTURA DE DATOS PROFESOR:SIRACUSA EMILIANO MARTÍN Página Web: www.esiracusa.jimdo.com
  • 2. Procedimientos y funciones Una estrategia para la resolución de problemas complejos con computadoras es la división o descomposición del problema en otros problemas más pequeños o subproblemas. Estos subproblemas se implementan mediante unidades o subprogramas. Generalmente un proyecto de programación se compone de un programa principal y un conjunto de subprogramas. Los subprograma; en Pascal se clasifican en procedimientos y funciones. Procedimiento: es un subprograma que realiza una tarea específica. Es una unidad de programa independiente. Está compuesto por un conjunto de sentencias a las que se le asigna un nombre. Permite la transferencia de valores entre la unidad que lo activa y el subprograma propiamente dicho.
  • 3. Puede recibir cero o mas valores de !a unidad que lo activa y devolver cero o más valores a dicho programa activador. La tarca asignada al procedimiento se ejecuta siempre que se encuentre el nombre del procedimiento. Función: unidad de programa independiente que devuelve al menos un valor a la unidad llamadora. Puede recibir cero o más valores de la unidad que lo activa. La tarea asignada a la función se ejecuta siempre que se encuentre el nombre de la función. Declaración de un procedimiento o una función: Todo procedimiento o función se declara dentro de la sección de declaraciones del programa principal o de un subprograma.
  • 4. Las declaraciones de ambos subprogramas constan de tres partes: El encabezamiento que proporciona el nombre del mismo y en caso de existir, una lista de parámetros. Las funciones tienen que indicar el tipo de dato cuyo valor asume la función cuando se ejecuta. Una sección de declaraciones similar a la de los programas Una sección ejecutable: similar a la de los programas (con alguna variante en las funciones).
  • 5. Ejemplos de encabezamiento: Procedure PI (a,b: integer ; var e:real); Palabra reservada Identificador del procedimiento Lista de parámetros formales (opcional) Procedure Intersección (a, b, c, d, e, f: real; var x, y: real); Procedure EscribirMensaje; Procedure HorasHombre (dia: Tdiassemana; var horas,minutos; natural);
  • 6. Ejemplos de encabezamiento: Function Fl (a,b:integer):real; Palabra reservada Identificador de función Lista de parámetros fórmales (opcional) Tipo de dato del valor de la función Function Racional(a,b: integer):real; Function EsBisiesto(año: integer): boolean; Function Salario (dia: Tdiassemnal,horas: natural): real;
  • 7. En el cuerpo de la función se nene la obligación de asignar un valor al identificador de la función, al menos una vez ya que el último valor que tome será el valor que transmite a la unidad que la invoca. Function EsBisiesto(año: integer): boolean; Begin EsBisiesto:= (año mod 4 = 0) y ( año mod 100 <>0) o (año mod 400= 0); End;
  • 8. Invocación de un procedimiento Un procedimiento se invoca dentro del programa o de un subprograma directamente por su nombre respetando el alcance de los identificadores, seguido de una lista de parámetros efectivos, si fuera necesario. La invocación de un procedimiento es una sentencia del programa o de la unidad llamadora. La ejecución de dicha sentencia equivale a la ejecución del procedimiento que lleva su nombre. Una vez finalizada la ejecución del procedimiento se retorna el control a la sentencia que sigue a la que dio lugar dicha activación en el subprograma llamador.
  • 9. Invocación de un procedimiento Procedure P1 (a ;b: integer; var e: real); Pl( x,y,z) Invocación del procedimiento P1 con tres parámetros efectivos, ya que su .definición se realizó con tres parámetros formales.
  • 10. Invocación da un procedimiento Declaración Procedure Intersección (a,b,c,d,e.f: real; var x,y: real); Procedure EscribirMensaje; Procedure HorasHombre (dia: Tdiassemana; var horas,minutos; natural); Invocación Procedure Intersección (a, b, c, d, e, f, x, y); Procedure EscribirMensaje; Procedure HorasHombre(Undia, Lashoras, Losminutos);
  • 11. Invocación de una función Una función se invoca dentro del programa o de un subprograma directamente por su nombre respetando el alcance de los identificadores, seguido la una lista de parámetros efectivos, si fuera necesario. La invocación de una función se realiza dentro de una expresión del programa o de la unidad llamadora. La ejecución de dicha expresión incluye la ejecución de la función indicada que se realiza en el momento que corresponde de acuerdo a las reglas de ejecución de la expresión. Una vez finalizada la ejecución de la función, su valor se opera con el resto de los operandos. Es decir se retorna el control de ejecución a la expresión..
  • 12. Invocación de una función Function F1 (a, h: integer): real; …* F1 (a, h)/3… Invocación de la función F1 con dos parámetros efectivos, ya que su definición se realizó con dos parámetros formales.
  • 13. Invocación de una función Declaración. Function Racional(a, b: integer):real; Function EsBisiesto(año: integer): boolean; Function Salario (dia: Tdiassemana; horas: natural): real; Invocación numero := 16*RacionaI(3,b) /7 If EsBisiesto(2008) then writeln('el ano', 2008,'es bisiesto'); while Salario (dia, horas) < 500 do
  • 14. Ejemplo: Program P; Procedure Q; begin writeln (‘este es un procedimiento') end; {Q} begin writeln ('Este programa a activa al procedimiento Q'); Q; end. La ejecución del programa dará por resultado: Este programa activa al procedimiento Q este es un procedimiento
  • 15. El procedimiento Q está declarado en el programa P. Se puede representar la declaración de procedimientos con un diagrama que revela el lugar que ocupa cada uno dentro dala estructura-estática del programa. P Program P; Procedure Q; Q begin Writeln ('Este es un procedimiento') end;{ Q} begin Writeln('Este programa activa al procedimiento Q); Q; end.
  • 16. Si se tuviera: Program P; procedureQ; begin End; { Q} procedureR; begin end; {R} begin Q; R; end. P Q R Q y R pueden hacer referencia a todos los identificadores declarados en P. P pueden hacer referencia alos identificadores Q y R.
  • 17. Program P; Var y: integer; Procedure Q; begin Writeln('Dentro de Q se puede hacer referencia a y declarar P '); Writeln( 'el valor de y en Q es:', y); end; { Q} Procedure R; begin Writeln( 'Dentro de R se puede hacer referencia a y declarada en P ); Writeln( 'el valor de y es:', y) end; { R} begin y:=3; Q; P; X Writeln( 'el valor de y declarada en, P es:', y) end. P Q R
  • 18. Program P; Var y: integer; Procedure Q; begin Writeln( 'el valor de y en Q es:', y); end; { Q} Procedure R; begin Writeln( 'el valor de y en R es:', y); end; { R} begin y:=3; Q; P; X Writeln( 'el valor de y declarada en, P es:', y) end. P Q R Traza en P P P P Q el valor de y en Q es 3
  • 19. Program P; Var y: integer; Procedure Q; begin Writeln('Dentro de Q se puede hacer referencia a y declarar P '); Writeln( 'el valor de y en Q es:', y); end; { Q} Procedure R; begin Writeln( 'Dentro de R se puede hacer referencia a y declarada en P ); Writeln( 'el valor de y es:', y) end; { R} begin y:=3; Q; P; X Writeln( 'el valor de y declarada en, P es:', y) end. P Q R Traza en P P P P Q R el valor de y en Q es 3 el valor de y en R es 3
  • 20. Tal como está declarada la variable y es local al programa P y global para los procedimientos Q y R. Identificador local a un subprograma o programa: Es el que está declarado en el subprograma o programa. Está activo sólo durante la ejecución del mismo. Una vez finalizada la ejecución de la unidad donde está declarado no se puede hacer referencia a dicho identificador. Program P; var y: integer; Procedure Q; var x: integer: begin x:=1; end; { Q} begin y:= 3; Q; writeln(‘ el valor de y en P es:’, y); end. y, Q son locales a P x es local Q
  • 21. La variable ‘y’ y los procedimientos Q y R son locales a P. Los procedimientos Q y R no tienen identificadores locales. Program P; Var y: integer; Procedure Q; begin Writeln('Dentro de Q se puede hacer referencia a y declarar P '); Writeln( 'el valor de y en Q es:', y); end; { Q} Procedure R; begin Writeln( 'Dentro de R se puede hacer referencia a y declarada en P ); Writeln( 'el valor de y es:', y) end; { R} begin y:=3; Q; P; X Writeln( 'el valor de y declarada en, P es:', y) end.
  • 22. Traza en P P P P Q Program P; var y: integer; Procedure Q; var x: integer: begin x:=1; end; { Q} begin y:= 3; Q; writeln(‘ el valor de y en P es:’, y); end.
  • 23. Traza en P P P P Q Program P; var y: integer; Procedure Q; var x: integer: begin x:=1; x:=x+1; Y:=y+1; end; { Q} begin y:= 3; Q; writeln(‘ el valor de y en P es:’, y); end.
  • 24. Traza en P P P P Q Program P; var y: integer; Procedure Q; var y: integer: begin y:=1; Y:=y+1; end; { Q} begin y:= 3; Q; writeln(‘ el valor de y en P es:’, y); end.
  • 25. Parámetros: La transferencia de valores desde y hacia el procedimientos o función se realiza por medio de parámetros. Procedure SiEsMayor (x, y:real; var esmayor: boolean); begin esmayor:= x > y end; Function SiEsMayor (x, y:real): boolean) ; begin SiEsMayor:= x > y End; Ejemplo: Algoritmo SiEsMayor DE: x, y: real DS: esmayor: lógico Acciones esmayor x > y fin
  • 26. Una lista de identificadores con sus tipos de datos es el mecanismo para transferir valores desde el subprograma que invoca al subprograma invocado y devolver los valores desde el subprogramas llamador. La lista de identificadores en el encabezamiento de la declaración De un procedimiento o una función es llamada lista de parámetros formales, los parámetros formales son identificadores locales al subprograma donde están declarados. Esta lista establece un conjunto de entidades que representan objetos o datos, en término de los cuales se expresa el procedimiento o la función. Estos parámetros son los datos de entrada al subprograma y/o los datos de salida del mismo, son comparables a los datos de entrada y salida de un algoritmo, pero no son iguales. Dentro del cuerpo del procedimiento se tratan como cualquier otra variable aunque sus efectos no siempre son los mismos.
  • 27. En la sentencia de invocación del procedimiento se indica la lista de parámetros actuales, reales o efectivos que se corresponderán en número, tipo y orden con los parámetros formales del procedimiento correspondiente. Ejemplo: Program Estudio; ....var, h: integer ,z: boolean..................... Procedure SiEsMayor(x, y: integer; var esmayor: boolean); begin .................. _ End; Begin ……… SiEsMayor ( a, b, z); {invocación} ……… End. Lista de parámetros formales Lista de parámetros efectivos
  • 28. En la invocación de una función se indica la lista de parámetros actuales, reales o efectivos que se corresponderán en número, tipo y orden con los parámetros formales de la función correspondientes. Ejemplo: Program Estudio; ....var, h: integer ,z: boolean..................... Function SiEsMayor(x, y: integer; var ): boolean; begin .................. _ End; Begin ……… If SiEsMayor ( a, b) then {invocación} ……… End. Lista de parámetros formales Lista de parámetros efectivos
  • 29. Hay cuatro tipos de parámetros formales en Pascal: por valor por variable funciones procedimientos El tipo de cada parámetro actual está determinado por el correspondiente parámetro formal. La correspondencia entre la lista de parámetros formales y efectivos debe ser: La cantidad de parámetros debe ser la misma en ambas listas. Cada parámetro actual se corresponde con el formal que ocupa la misma posición en la listade parámetros formales. La correspondencia de tipos debe coincidir entre los efectivos y los formales.
  • 30. Veremos dos tipos de pasaje de parámetros que presenta Pascal Por valor Por referencia En la lista de parámetros formales, ( en la declaración del procedimiento) los parámetros por referencia se declaran del siguiente modo: var lista de identificadores: identificador de tipo de dato var x, y: real; var x: real; var y : integer Los parámetros efectivos que se corresponden con los formales por variable (en la invocación del procedimiento) deben ser variables. SiEsMayor (3,5,z); Los parámetros efectivos van separados por comas.
  • 31. Ejemplo: En la invocación del procedimiento el parámetro efectivo se liga al formal con pasaje por referencia. Durante la ejecución del procedimiento, toda modificación en el valor del parámetro formal por referencia, modificará el parámetro efectivo Instantáneamente. Finalizada la ejecución del procedimiento no se tiene más acceso al parámetro formal. Program Estudio; var, h: integer ,z: boolean; Procedure SiEsMayor (x, y: integer; var esmayor: boolean); begin Esmayor:= x < y; End; begin read(a.b); SiEsMayor( a,b,z); Write (z); end.
  • 32. Los parámetros formales por referencia se pueden comparar con los datos de entrada salida de un algoritmo, pero no son iguales. En un algoritmo el argumento que se corresponde con un dato de entrada y salida de una primitiva, en la invocación de la primitiva, le asigna el valor al dato y cuando finaliza la ejecución de la primitiva el dato le asigna el valor obtenido al argumento. En un subprograma el parámetro que se corresponde con un parámetro formal por referencia, en la invocación del procedimiento, se liga al mismo y todo cambio en el parámetro formal o efectivo se transmite al otro.
  • 33. Parámetros por valor Se usa el parámetro por valor cuando el único rol del parámetro es ingresar un valor al procedimiento, es unidireccional (parámetro de entrada) se declaran del siguiente modo: Lista de identificadores : tipo de dato El parámetro efectivo que se corresponde con uno formal por valor, asigna al mismo, su valor, en la invocación del procedimiento. No se mantiene la correspondencia durante la ejecución ni a la finalización del mismo. Son comparables a los datos de entrada de las primitivas y sus invocaciones.
  • 34. Program Area_cuadrado; var lado, area: real; Procedure imprimir( a,b: real); begin write(‘el área del cuadrado de lado', a, 'es: ',b) end; begin read( lado); area := lado * lado; imprimir (lado, area); End.
  • 35. Traza del programa Area_cuadrado el área del cuadrado de lado 4 es: 16
  • 36. Pautas a tener en cuenta para utilizar parámetros: Si la información que se pasa al procedimiento no tiene que ser devuelta fuera del procedimiento el parámetro formal que representa dicha información puede ser un parámetro por valor. Si se tiene que devolver infamación a la unidad llamadora el parámetro formal que representa esa información debe ser un parámetro por referencia. Si la información que se pasa al procedimiento puede ser modificada y se devuelve un nuevo valor, el parámetro formal que representa dicha información debe ser un parámetro por referencia.
  • 37. Variables globales vs parámetros Las variables globales deben evitarse para intercambiar información entre unidades de programas. La modificación del valor de una variable global puede tener efectos no esperados sobre las unidades de programas que las usan. El uso de variables globales requiere una estrecha coordinación entre las distintas personas que escriben los procedimientos del programa. El uso de variables globales limita la libre elección de los identificadores y dentro de los procedimientos. El uso de variables globales impide la independencia entre las unidades del programas. No se permitirá el uso de variables globales en los programas de este curso.
  • 38.
  • 39. Snyder, Ilana –compiladora (2004): Alfabetismos digitales. Comunicación,innovación y educación en la era electrónica. Málaga: Aljibe Stallman, Richard M. (2004) Software libre para una sociedad libre. Introducción de Lawrence Lessig.
  • 40. Curso Nivelación 2011 - Universidad Nacional de Chilecito Lic. en Sistemas - Ing. En Sistemas – Tecnicatura Univ. Desarrollo Aplic. WEB.
  • 41. Agustin Fonseca- Juegos de mente – Memoria, Cálculo, Memoria, Agilidad Mental.
  • 42. Martín Sierra, Abel Martín Álvarez, Ángel Aguirre Pérez- Aula Matemática digital 2.
  • 43. Ing. Gábor loerines, ing. Francisco Chaves-Micro computación Tomo 2- Nahel Ediciones.
  • 44. Adrián Paenza- Matemática... ¿Estás Ahí?
  • 45. Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 2
  • 46. Adrián Paenza- Matemática... ¿Estás Ahí? Episodio 3,14.
  • 47. Moroni Norma-Apunte de R.P.A (2003) –U.N.S.38