Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 1

Documentos relacionados
Módulo 8: Primitivas en Pascal

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Resolución de Problemas y Algoritmos

Estructura de Datos: Archivos

Programación en Pascal

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Trabajo Práctico 8 División de Problemas en Subproblemas Uso de Procedimientos y Funciones

Manual de turbo pascal

Declaración de Procedimientos

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

2.2 Nombres, Ligado y Ámbito

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Primer Parcial. Programación 1 Instituto de Computación Año 2011

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Funciones Definición de función

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

Introducción a PL/SQL

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

SUBRANGO ENUMERADOS CONJUNTOS

Elementos de un programa en C

Estructuras de Control. Secuencia y Selección

Resolución de Problemas y Algoritmos

TEMA 5: Subprogramas, programación modular

program entrega1; const esp = ' '; {QUE FUNCION CUMPLE??} type longtext = string; texto = string[20]; {lista circular de jugadores}

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de recursividad

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

GUIA 3 PARTE II. Introducción a PL/SQL

Principios de Computadoras II

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

ALGORITMOS Y ESTRUCTURAS DE DATOS. Ejercicios Resueltos CUADERNILLO DE PRACTICA

PHP: Lenguaje de programación

Guía práctica de estudio 05: Diagramas de flujo

Procesadores de lenguaje Tema 6 La tabla de símbolos

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Ejercicios Tema 6. Funciones

El lenguaje C. 1. Identificadores, constantes y variables

Aprender a programar con Turbo Pascal. Turbo pascal

Módulo 5: Lenguaje Pascal

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

Funciones y paquetes PL/SQL. Jonathan Medina Gómez Facultad de ingeniería Universidad de Antioquia

324 MR Versión 1 Primera Integral 1/5 Lapso 2009/2. ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Primera Integral FECHA DE APLICACIÓN: 24/10/09;

Un programa escrito en Pascal tendrá generalmente la siguiente forma:

Funciones en Lenguaje C

Funciones Tipos de funciones y Recursividad

Estructura de Datos: Archivos. Programacion I Mgter. Vallejos, Oscar A.

Variables lógicas y sentencia IF

Tema 2. El lenguaje JAVA

Estructuras de Datos Declaraciones Tipos de Datos

Aspectos de los LP. Diseño de compiladores. Estático vs. Dinámico. Estático vs. Dinámico. Scope. Scope 24/03/2015

7. PROCEDIMIENTOS Y FUNCIONES

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Paso de Parámetros a una Función

Tema 3 - Modelado con HDL a nivel RTL

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Estructura de datos (arreglos) Vectores y Matrices

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

c1 y c2 deben ser de tipo numérico (real o entero). p y q del mismo tipo, puntero a real o a entero. Los valores entre paréntesis se refieren a zonas

FUNDAMENTOS DE INFORMÁTICA

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

UNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido.

Módulo 6: Condicionales y otros

1.4 Programación estructurada

UTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010

Tema 7. Generación de código

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

FUNDAMENTOS DE INFORMÁTICA

Programación y Computación Ingenierías. Dr. Eric Jeltsch F. FUNCIONES Y PROCEDIMIENTOS. Universidad de La Serena.

Academia técnica de computación A.T.C.

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

Introducción a la Programación Ingenieria en Informática Junio 2008


Lenguaje de programación C. Introducción

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3

GUÍA BÁSICA DE SCHEME v.4

VHDL. Lenguaje de descripción hardware Estructura Básica de diseño

Semántica Denotacional

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

PASCAL. Repaso de Pascal Introducción a Python. Pascal. Pascal - introducción. Pascal Declaraciones: Variables. Pascal Declaraciones: Tipos 07/04/2015

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

UNIDAD 3: TIPOS ABSTRACTOS DE DATOS

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

ARCHIVOS de TEXTO en PASCAL

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Tema 3. Tipos de datos simples

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Procedimientos almacenados en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)

III. Generación de Código orientado a objetos

LA PROGRAMACION LENGUAJE PASCAL

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Administración Base de Datos SQL

Datos 33. Dato, Constante, Literal, Variable, Tipos de dato, Ordinal, Predefinido, Enumerado, Subrango, Compatibilidad.

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Transcripción:

Resolución de Problemas y lgoritmos Dr. lejandro J. García 21/5/212 Resolución de Problemas y lgoritmos Clase 13 Lenguaje Pascal: estructura de bloques, entornos de referencia, visibilidad de identificadores. Pasaje de parámetros Dr. lejandro J. García http:// cs.uns.edu.ar /~ajg Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur ahía lanca - rgentina (repaso) vimos en la clase anterior que Las funciones predefinidas: Se utilizan en una expresión. Siempre retornan un valor de un tipo de Pascal. Ejemplos: EOF( F ): recibe un manejador y retorna boolean TRUC( R ): recibe real y retorna integer SQRT( R ): recibe real y retorna real CHR( I ): recibe integer y retorna char En Pascal puedo construir mis propias funciones Resolución de Problemas y lgoritmos Dr. lejandro J. García 2 (repaso) vimos en la clase anterior que Los procedimientos predefinidos: Se los usa en una sentencia. Pueden tener o más parámetros. Ejemplos: Writeln Readln reset (F) Rewrite (F) ssign (F, nombre) En Pascal puedo construir nuevos procedimientos Resolución de Problemas y lgoritmos Dr. lejandro J. García 3 Ejemplo de llamada: (repaso) Conceptos: funciones Se invocan desde una expresión l regresar de la invocación se sigue ejecutando la sentencia de la llamada. Tiene un tipo asociado al resultado unque no tenga parámetros devuelve un valor que se usa en la expresión que la llama. IF esayuscula( ) = TRUE then FUCTIO Esayuscula (letra :char): boolean; IF(letra>= ) and (letra <= Z ) THE Esayuscula:=true ELSE Esayuscula:=false; Resolución de Problemas y lgoritmos Dr. lejandro J. García 4 (repaso) procedimientos Se invocan como sentencia. l regresar de la invocación se ejecuta la sentencia siguiente a la llamada. o tienen un tipo asociado. Pueden no retornar un valor. Ejemplo de llamadas: ultiplicarfracciones(2,3,4,5,,d); Write(Resultado:,, /,D); Pausa; PROCEDURE Pausa; {uestra un mensaje y espera ETER} Write( Press ETER to continue ); Readln; ED ; PROCEDURE ultiplicarfracciones (1, D1, 2, D2 : ITEGER; VR umres,denres: ITEGER); umres := 1 * 2; DenRes := D1 * D2; Resolución de Problemas y lgoritmos Dr. lejandro J. García 5 División del problema en subproblemas PROLE etología: Para resolver un problema complejo se propone: 1) dividirlo en subproblemas, 2) resolver cada parte y luego 3) para cada parte implementar PRIITIVS en Pascal: como funciones o procedimientos C D Program SOLUCIÓ; egin End. Function Procedure Function C Procedure D Resolución de Problemas y lgoritmos Dr. lejandro J. García 6 Resolución de Problemas y lgoritmos. otas de Clase. lejandro J. García. Universidad acional del Sur. (c)18-212. Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur 1

Resolución de Problemas y lgoritmos Dr. lejandro J. García 21/5/212 Pascal es estructurado por bloques PROGR IPROGR; COST... TYPE. VR... FUCTIO F(X:real):real; COST... TYPE. VR.. PROCEDURE FUCTIO...sentencias... PROCEDURE P(Var X: char); COST... TYPE. VR... PROCEDURE FUCTIO...sentencias...sentencias... En Pascal, un programa constituye un bloque compuesto por: Constantes, tipos, Variables, funciones, procedimientos, y sentencias. Cada procedimiento o función también constituye un bloque con: parámetros constantes, tipos, variables, procedimientos, funciones, y sentencias. Resolución de Problemas y lgoritmos Dr. lejandro J. García 7 En Pascal no hay límite en cantidad o anidamiento de bloques PROGR PROGR1; PROCEDURE FUCTIO PROCEDURE PROCEDURE FUCTIO PROCEDURE {puede incluir todos los proc. o fn. que quiera}... PROGR PROGR2; PROCEDURE FUCTIO PROCEDURE...... {..y en c/bloque, todo el anidamiento que quiera}... Resolución de Problemas y lgoritmos Dr. lejandro J. García 8 Pascal: estructurado por bloques En un programa pueden incluirse tantos procedimientos y funciones como se desee. Cada uno de ellos puede a su vez tener sus bloques internos y así siguiendo. Esto permite implementar cualquier división del problema en subproblema que se diseñe. Resolución de Problemas y lgoritmos Dr. lejandro J. García Estructurado por loques Elementos de un LOQUE: 1. identificadores de constantes 2. identificadores de tipos 3. identificadores de variables 4. identificadores parámetros formales (en proc. y fn.) 5. identificadores de procedimientos 6. identificadores de funciones 7. sentencias Dentro de un mismo bloque no puede haber dos identificadores iguales para distintos elementos. Dos elementos pueden tener el mismo identificador si pertenecen a diferentes bloques. Resolución de Problemas y lgoritmos Dr. lejandro J. García 1 (P) loques e identificadores PROGR ; {para entender los conceptos} Const Pi= 3.14; type Tdig=..; var,, C:CHR; PROCEDURE P1 (:REL); var : REL; F2: Tdig; begin := ; WRITE() end; PROCEDURE P2 (:REL); var, I: real; FUCTIO F2 (:REL):REL; var, DE_F2: REL begin := ; F2:= + Pi; end; begin := ; WRITE(F2()); P1() end; P2(5); P1(1); Resolución de Problemas y lgoritmos Dr. lejandro J. García 11 (P) loques (demarcados) e identificadores PROGR ; {para entender los conceptos} Const Pi= 3.14; type Tdig=..; var,, C:CHR; PROCEDURE P1 (:REL); var : REL; F2: Tdig; begin := ; WRITE() end; PROCEDURE P2 (:REL); var, I: real; FUCTIO F2 (:REL):REL; var, DE_F2: REL begin := ; F2:= + Pi; end; begin := ; WRITE(F2()); P1() end; P2(5); P1(1); Resolución de Problemas y lgoritmos Dr. lejandro J. García 12 Resolución de Problemas y lgoritmos. otas de Clase. lejandro J. García. Universidad acional del Sur. (c)18-212. Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur 2

Resolución de Problemas y lgoritmos Dr. lejandro J. García 21/5/212 Preguntas sobre el programa puedo llamar a P1 desde las sentencias de P2? puedo llamar a F2 desde las sentencias de P2? puedo llamar a F2 desde las sentencias de P1? puedo llamar a P1 desde las sentencias de F2? HG HOR SUS PREGUTS! (y copie las de sus compañeros) Pregunta más general: desde qué lugar del programa puedo llamar a una función o proced.? en qué bloques puedo usar la variable I? y la variable DE_F2? en qué bloques puedo usar una variable? Todas las respuestas en la teoría que sigue a continuación Resolución de Problemas y lgoritmos Dr. lejandro J. García 13 Vocabulario: declaración vs. referencia Es importante distinguir entre: 1. La declaración de un identificador de constante, tipo, variable, parámetro, función, o procedimiento. Ejemplos: COST pi=3.14; TYPE archi: FILE OF integer; VR precio: real; a_pagar: integer; PROCEDURE recargo(precio, rec:real; var monto:real); FUCTIO intereses(monto:integer):real 2. La referencia (uso) de un identificador. Ejemplos: recargo(24,incremento,precio); a_pagar := intereses(round(precio)); En cada bloque, se declaran identificadores; y además, se hace referencia (usan) identificadores. Resolución de Problemas y lgoritmos Dr. lejandro J. García 14 Concepto: Entorno de referencia para un bloque El entorno de referencia de un bloque está formado por: El entorno local: parámetros formales, constantes, tipos y variables declarados dentro de y el nombre de los procedimientos y funciones declarados dentro del bloque. El entorno global: conjunto de identificadores declarados en el bloque del programa principal El entorno no-local: conjunto de identificadores declarados en los bloques que contienen al bloque, exceptuando al global El entorno predefinido: conjunto de identificadores ya declarados por el compilador de Pascal y disponible para todo programa (Ej: maxint, char, write, eof). Resolución de Problemas y lgoritmos Dr. lejandro J. García 15 Conceptos: identificadores ocultos Cuando se hace referencia a un identificador: 1. primero se busca en su entorno de referencia local, 2. luego en su entorno de referencia no local, 3. luego en su entorno de referencia global, 4. y finalmente en el entorno de referencia predefinido Por lo anterior, si hay identificadores iguales en diferentes entornos uno oculta al otro. 1. Un identificador de nombre en un entorno local oculta a todo identificador del mismo nombre en otro entorno (no-local, global, predefinido) 2. Uno no-local oculta a otro global de nombre, 3. Un identificador global oculta a uno predefinido Resolución de Problemas y lgoritmos Dr. lejandro J. García 16 Conceptos y vocabulario Un identificador es referenciable en un bloque, si es parte de su entorno de referencia y no está oculto. Un identificador es visible, si es referenciable. El alcance de un identificador D, son aquellas sentencias (o bloques) del programa donde el identificador D es visible. ire la hora ire la hora Por favor diga tienen un merecido descanso de Ejercicios propuestos: Para cada bloque del programa, encuentre los identificadores visibles (referenciables). Indique el alcance del identificador P1 y el alcance de la variable global. Resolución de Problemas y lgoritmos Dr. lejandro J. García 17 Resolución de Problemas y lgoritmos Dr. lejandro J. García 18 Resolución de Problemas y lgoritmos. otas de Clase. lejandro J. García. Universidad acional del Sur. (c)18-212. Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur 3

PRÁETROS Resolución de Problemas y lgoritmos Dr. lejandro J. García 21/5/212 Qué lindo! Un merecido descanso de 5 minutos. descansar Resolución de Problemas y lgoritmos Dr. lejandro J. García 1 PROCEDURE ayuscula ( Letra:char; VR ayu:integer); egin ayu:= chr(ord(letra)-32); end;. carac1:= b ; ayuscula (carac1,carac2); writeln(car1, car2); Parámetros formales Parámetros efectivos Diferencias entre los tipos de parámetros formales: P. por valor: el valor del parámetro efectivo Carac1 se copia al formal correspondiente (Letra),las modificaciones a Letra no afectan a la variable Carac1. P. por referencia: se crea un referencia entre Carac2 y ayu. Todo cambio en ayu afecta y cambia a Carac2. Resolución de Problemas y lgoritmos Dr. lejandro J. García 2 La llamada a FUCTIO debe realizarse desde una expresión: PROGR Prueba_potencia; VR,E, Pot :Integer; FUCTIO Potencia (ase, Exponente:integer) : integer; VR aux,p: integer; Parámetros formales por valor: reciben P := 1; una copia de los valores de los efectivos FOR aux:= 1 TO Exponente DO P := P * ase; Potencia:= P; write( Ingrese base y exponente: ); readln(,e); Pot:=Potencia(,E); := +1; E:=E+1; writeln(pot, <>, potencia(,e)); Parámetros efectivos Resolución de Problemas y lgoritmos Dr. lejandro J. García 21 Conceptos: Parámetros en Funciones y Procedimientos Formales Efectivos Por valor : <nombre/s>:<tipo> Por referencia: VR <nombre/s>:<tipo> si corresponde a un parámetro formal por valor, puede ser... si corresponde a un parám. formal por referencia, debe ser únicamente... un valor una expresión una variable una variable PROCEDURE ultfrac (1,D1,2,D2:integer; VR, D:integer); Ejemplos: p. formales ultifrac (1,2,3,4,,D); p. efectivos ultifrac (,D, 2+2, trunc(2.3)+1, 1, D1); Resolución de Problemas y lgoritmos Dr. lejandro J. García 22 Conceptos: compatibilidad entre parámetros Si un procedimiento o función tiene un parámetro formal pasado POR REFERECI, entonces el tipo del parámetro formal debe ser idéntico al tipo del parámetro real. Por ejemplo, si hemos declarado: PROCEDURE Calcula( VR valor:real); y se realiza la invocación: Calcula(numero); entonces numero debe ser de tipo idéntico a real. Resolución de Problemas y lgoritmos Dr. lejandro J. García 23 Conceptos: compatibilidad entre parámetros El valor de un parámetro real pasado POR VLOR debe ser de asignación-compatible al tipo del parámetro formal. Por ejemplo, si hemos declarado: PROCEDURE Calcula(valor:real); y se realiza la invocación: Calcula(numero); entonces numero debe ser asignación compatible con real. Resolución de Problemas y lgoritmos Dr. lejandro J. García 24 Resolución de Problemas y lgoritmos. otas de Clase. lejandro J. García. Universidad acional del Sur. (c)18-212. Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur 4

Resolución de Problemas y lgoritmos Dr. lejandro J. García 21/5/212 Traza con parámetros por valor o referencia Elementos de un LOQUE: Cambian sus 1. identificadores de constantes valores en 2. identificadores de tipos ejecución 3. identificadores de variables 4. identificadores parámetros formales (en proc. y fn.) 5. l realizar una traza hay que tener en cuenta que: cada bloque tiene sus propios identificadores, los parámetros formales reciben datos de los parámetros efectivos correspondientes, y los parámetros por referencia modifican los valores de sus correspondientes efectivos. Resolución de Problemas y lgoritmos Dr. lejandro J. García 25 Traza con llamadas a primitivas Para reflejar lo que sucede en ejecución (esto es dinámicamente) y poder hacer una traza, se usará una tabla (o cajita ). También llamada Registro de ctivación. Esa tabla contendrá un espacio por cada parámetro formal o cada variable local del mismo. Cada vez que se invoca un procedimiento o función se crea una nueva tabla (o cajita ). Cada vez que finaliza un procedimiento o función se destruye la tabla correspondiente. Resolución de Problemas y lgoritmos Dr. lejandro J. García 26 Traza con llamadas a primitivas Parámetros por valor Parámetros por referencia Para cada bloque Variables Locales que se ejecuta. Resultado de la función Resolución de Problemas y lgoritmos Dr. lejandro J. García 27 PROGR Ejemplo2; {ej. traza parámetros por valor} PROCEDURE EjemploxValor (, : integer); write(, ); ux := ; := aux + 1; := ux; write(,, ux); :=; :=; EjemploxValor(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 28 PROGR Ejemplo2; {ej. traza parámetros por valor} PROCEDURE EjemploxValor (, : integer); write(, ); ux := ; := aux + 1; := ux; write(,, ux); l comenzar la ejecución se crea el :=; bloque. Las variables aún no tienen valor. :=; EjemploxValor(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 2???? PROGR Ejemplo2; {ej. traza parámetros por valor} PROCEDURE EjemploxValor (, : integer); write(, ); ux := ; := aux + 1; := ux; write(,, ux); ntes de llamar al procedimiento EjemploxValor :=; :=; las variables y ya tienen valor asignado. EjemploxValor(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 3 Resolución de Problemas y lgoritmos. otas de Clase. lejandro J. García. Universidad acional del Sur. (c)18-212. Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur 5

Resolución de Problemas y lgoritmos Dr. lejandro J. García 21/5/212 PROGR Ejemplo2; {ej. traza parámetros por valor} PROCEDURE EjemploxValor (, : integer); write(, ); ux := ; := aux + 1; := ux; write(,, ux); :=; :=; l entrar al procedimiento se crea un nuevo bloque y los parámetros toman los valores que les fueron enviados. Las variables locales aún no tienen valor. EjemploxValor(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 31 aux?? PROGR Ejemplo2; {ej. traza parámetros por valor} PROCEDURE EjemploxValor(, : integer); write(, ); ux := ; := aux + 1; := ux; write(,, ux); :=; :=; ntes de terminar el procedimiento los valores de, y aux cambiaron EjemploxValor(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 32 1 aux PROGR Ejemplo2; {ej. traza parámetros por valor} PROCEDURE EjemploxValor(, : integer); write(, ); ux := ; := aux + 1; := ux; write(,, ux); l volver del procedimiento EjemploxValor las :=; variables y conservan su valor asignado. :=; EjemploxValor(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 33 Traza del programa Ejemplo2 (1) (2) (3) (4) aux?? (1) ntes de llamar al procedimiento EjemploxValor (2) l entrar al procedimiento (3) ntes de salir del procedimiento (4) Después de salir del procedimiento Resolución de Problemas y lgoritmos Dr. lejandro J. García 34 1 aux Ejemplo de traza con parámetros por referencia PROGR ; VR,, aux: integer; PROCEDURE Intercambiar (VR, : integer); ux := ; := ; := ux :=5; :=; aux: 1; Intercambiar(,); Writeln( l terminar es ',,' y es ',,'.') Ejemplo de intercambio de valores Cuando comienza el programa. Después de ejecutar las asignaciones y quedan con los siguientes valores: 5 Resolución de Problemas y lgoritmos Dr. lejandro J. García 35 Resolución de Problemas y lgoritmos Dr. lejandro J. García 36 Resolución de Problemas y lgoritmos. otas de Clase. lejandro J. García. Universidad acional del Sur. (c)18-212. Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur 6

Resolución de Problemas y lgoritmos Dr. lejandro J. García 21/5/212 5 Ejemplo de intercambio de valores Cuando se invoca al procedimiento Intercambiar debe crearse un bloque para ese procedimiento. 5 Pasaje de parámetros por referencia Cuando un parámetro es pasado por referencia, el parámetro formal es una referencia al parámetro real. ux Intercambiar ux Intercambiar Resolución de Problemas y lgoritmos Dr. lejandro J. García 37 Resolución de Problemas y lgoritmos Dr. lejandro J. García 38 ux Pasaje de parámetros por referencia Cuando un parámetro es pasado por referencia, cada cambio en el parámetro formal afecta al parámetro real. 5 5 5 Intercambiar Ejemplo de intercambio de valores Cuando termina la ejecución de Intercambiar queda el siguiente estado: 5 5 En pantalla se imprimirá lo siguiente:. Inicialmente es 5 y es. l terminar es y es 5. Resolución de Problemas y lgoritmos Dr. lejandro J. García 3 Resolución de Problemas y lgoritmos Dr. lejandro J. García 4 Problema propuesto (1) PROGR Propuesto1; PROCEDURE EjemploxValor_y_Ref (:integer; var :integer); write(, ); ux := ; := aux + 1; := ux; write(,, ux); Realice la traza de este programa donde ahora, :=; hay un parámetro por valor y otro por referencia. :=; EjemploxValor_y_Ref(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 41 PROGR Propuesto2; PROCEDURE EjemploxRef (var,:integer); ux := ; writeln( 1,, ); := aux + ; writeln( 2,, ); := ux + ; writeln( 3,, ); :=; :=; Problema propuesto (2) Realice la traza de este programa donde ahora, hay 2 parámetros por referencia con el mismo parámetro efectivo. EjemploxRef(,); Writeln( l terminar es ',,' y es ',,'.') Resolución de Problemas y lgoritmos Dr. lejandro J. García 42 Resolución de Problemas y lgoritmos. otas de Clase. lejandro J. García. Universidad acional del Sur. (c)18-212. Departamento de Ciencias e Ingeniería de la Computación Universidad acional del Sur 7