You are on page 1of 24

TEMA 2: Parametrizacin de acciones

2.1 Parametrizacin y Lxico local Parmetro y variable local Definicin y tipos de parmetros Ventajas de su uso 2.2 Funciones Concepto de funcin Acciones vs funciones Composicin funcional vs secuencial 2.3 Tipo de dato tabla Caractersticas y operaciones Tablas vs productos de tipos
1

Ventajas de la parametrizacin:

Permite representar un conjunto potencialmente infinito de diferentes clculos con un nico texto de algoritmo que es una abstraccin de ellos. Es un mtodo para conseguir generalidad. Definicin segn la Real Academia Espaola de: Abstraer: separar por medio de una operacin intelectual las cualidades de un objeto para considerarlas aisladamente o para considerar el mismo objeto en su pura esencia o nocin. Generalidad: mayora, muchedumbre o casi totalidad de los individuos u objetos que componen una clase o todo sin determinacin de persona o cosa particular. Facilitan una escritura de acciones sin referencias a variables del lxico que la incluye: INDEPENDENCIA DEL CONTEXTO EN EL QUE SE INTRODUCE LA ACCIN.
2

Abstraccin en acciones parametrizadas:


Doble abstraccin: Abstraccin por especificacin Abstraccin por parametrizacin
Ej: Intercambio: una accin (datoresultado x, y : entero) {e.i.: x = X, y = Y} {e.f.: x = Y, y = X} Especificacin vs implementacin

Localidad: Las acciones parametrizadas pueden ser escritas o comprendidas independientemente del contexto (lxico) en que se utilicen. Su uso implica comprender slo su especificacin Facilitan: la descomposicin, legibilidad, mantenimiento, y reutilizacin

Notacin algortmica para definir acciones

nombre : una accin (tp1 par1: td1;....tpn pan: tdn) donde:


tpi: clase de parmetro (dato, resultado o datoresultado ) pari: nombre (identificador) de parmetro tdi: tipo de dato del parmetro nombre: nombre de la accin

Definir una nueva accin supone ENRIQUECER el conjunto de acciones primitivas o no primitivas disponibles Las acciones son la base para la DESCOMPOSICIN DE PROGRAMAS en el paradigma imperativo
4

Eleccin de los parmetros de una accin


Mayor parametrizacin mayor independencia del contexto: ms reutilizable Limitacin de la parametrizacin, implica una adaptacin mayor de la accin al contexto la reutilizacin directa es menos evidente

Debemos distinguir entre los parmetros DATO, RESULTADO y los parmetros DATORESULTADO.
e1
. .

ACCIN

s1
. .

en

sm

Parmetros de entrada: valores que se suministran a la accin y no deben modificarse dentro (DATO) Parmetros de salida: valores calculados por la accin (RESULTADO) Parmetros de entrada/salida: su valor inicial es necesario para la ejecucin de la accin y es modificado por sta (DATORESULTADO)
5

Abstraccin procedural en el uso de una accin

ALGORITMO

ACCIN B( P1, P2, ..., Pn)

B(a1, ..., an)

(final de la ejecucin de B)

: Flujo de ejecucin

a) Si el parmetro es un DATO de la accin: (en la llamada) parmetro argumento el argumento es una expresin del mismo tipo de dato que el parmetro. b) El parmetro es DATO y RESULTADO de la accin. (en la llamada) parmetro argumento (en el retorno) argumento parmetro el argumento es una variable del mismo tipo de dato que el parmetro.
6

Ejemplos de llamadas a acciones y sus efectos en los parmetros y argumentos


LXICO Intercambio: una accin (datoresultado x, y : entero) { intercambia los valores de x e y } bin = TIPO secuencia de [0,1]; DecBin: una accin (dato m : entero; datoresultado b : bin) {convierte un entero decimal en su equivalente en binario} ALGORITMO Decbin (x, binario); DecBin (15, bina); Intercambio (a, b); Intercambio (x, b);

LLAMADA m x b binario m 15 b bina x a y b x x y b

RETORNO binario b

bina b

a x b y x x b y

Consideraciones sobre el uso de parmetros


Al emparejarse los parmetros de ambas listas (parmetros formales y argumentos) lo hacen de forma ordenada y deben coincidir en: Nmero de parmetros Tipo de parmetros Posicin en las listas

No es necesario que coincidan los identificadores de los argumentos y los parmetros formales: Los parmetros de una accin son parte de su lxico local No son visibles ni utilizables fuera de ella Sus identificadores pueden enmascarar elementos del lxico superior
8

Distintos tipos de abstraccin en el uso de acciones parametrizadas

ACCIONES

ABSTRACCIN POR ESPECIFICACIN Qu hace? vs Cmo lo hace?

ABSTRACCIN POR PARAMETRIZACIN Generalidad PARMETROS dato datoresultado vs Especificidad

ABSTRACCIN valores de entrada objeto

Ejemplo: Desplazamiento circular de los valores de tres variables enteras a, b y c:

12

80

25

80

25

12

Especificacin
{ estado inicial: { estado final: a= A, b= B, c=C } a= B, b= C, c=A }

10

Solucin: introduccin de un estado intermedio e1 y de una accin parametrizada para el intercambio de dos variables:

LXICO a, b, c: entero; Intercambio : accin (datoresultado x, y : entero) LXICO variable local a la accin t: entero; ALGORITMO t x; x y; y t FIN; ALGORITMO Leer (a, b, c); { ei : a=A, b=B, c=C } Intercambio (a, b); { e1 : a=B, b=A, c=C } Intercambio (b, c); { ef : a=B, b=C, c=A } Escribir (a, b, c) FIN.
11

Niveles de lxico: mbito y visibilidad de identificadores

Una accin puede contener a su vez otras acciones como parte de su lxico:

Algoritmo ALG Accin A Accin A1

El lxico de: ALG A A1 A2 B

Tiene mbito en: ALG, A, A1, A2, B A, A1, A2 A1 A2 B

Accin A2

Accin B

Identificadores en lxicos interiores enmascaran otros idnticos en niveles superiores (regla de la mxima localidad)
12

Funciones
Aunque se definen de forma parecida, tienen importantes diferencias con las acciones. En cuanto a su especificacin:

Acciones: Su efecto es modificar el estado del proceso, en trminos de estado inicial y estado final. Funciones: Establecen una relacin entre los elementos de los conjuntos A (dominio) y B (codominio).
f . . . . . . . . . B f:AB
En general el dominio puede estar compuesto por varios conjuntos:

f : A1 A2 An B Al igual que las acciones favorecen la Descomposicin la Legibilidad y la Reutilizacin


13

Funciones
En cuanto a su utilizacin:

ms elementales o primitivas. Se utilizan de idntico modo a las primitivas. Funciones: Extienden el repertorio de operadores definiendo otros nuevos. Se utilizan del mismo modo que los operadores, e.d., en expresiones donde pueda aparecer un valor del tipo correspondiente (codominio).

Acciones: Describen acciones complejas en funcin de otras

En cuanto a su descripcin:

elementales se combinan para modificar el estado del proceso y conseguir su postcondicin a partir de su precondicin. Funciones: Tambin se describen en forma de algoritmo, pero el objetivo de ste no es modificar el estado del proceso sino calcular el elemento del tipo resultado (codominio) que se corresponde con los valores de los parmetros suministrados (dominio).
14

Acciones: Su algoritmo establece la forma en que acciones ms

Funciones: problema ejemplo

Enunciado: Escribir una funcin que obtenga el valor mximo de tres enteros dados distintos a, b, c. Especificacin: Max3: ent ent ent ent Max3: (a, b, c) = a si (a > b) y (a > c) b si (b > a) y (b > c) c si (c > a) y (c > b)
15

Funciones: problema ejemplo: ejemplos de uso

Lxico a, b, c: entero; Max3: funcin (x, y, z: entero) entero; ? Algoritmo Leer (a, b, c); ..... t a + b + c Max3 (a, b, c); .... SI Max3 (a, b, c) = a ENTONCES a a+1; FIN_SI; ..... Escribir (Max3 (a, b, c));

16

Funciones: problema ejemplo

SOLUCIN 1: Composicin funcional: SOLUCIN 2: Anlisis exhaustivo de casos: Introduccin de funciones intermedias: Max3: Funcin (x, y, z: entero) entero; Max2: Funcin (x, y: entero) entero; Algoritmo SEGN x, y, z : Algoritmo (x > y) y (x > z) : Max3 x; Max2 ((x+y) + abs (xy)) DIV 2 (y > x) y (y > z) : Max3 y; FIN; (z > x) y (z > y) : Max3 z; Max3: Funcin (x, y, z: entero) entero; FIN_SEGN FIN; Algoritmo Max3 Max2(x, Max2(y, z)) FIN;

17

Funciones: problema ejemplo

SOLUCIN 3: Composicin funcional con anlisis de casos: Max2: Funcin (x, y: entero) entero; Algoritmo SEGN x, y : x > y : Max2 x; x < y : Max2 y; FIN_SEGN FIN;

SOLUCIN 4: Anlisis de casos en dos etapas:

Max3: Funcin (x, y, z: entero) entero; Algoritmo SEGN x, y : x > y : SEGN x, z : x > z : Max3 x; x < z : Max3 z; FIN_SEGN; x < y : SEGN y, z : Max3: Funcin (x, y, z: entero) entero; y > z : Max3 y; Algoritmo SEGN x, y : y < z : Max3 z; x > y : Max3 Max2 (x, z); FIN_SEGN; y > x : Max3 Max2 (y, z); FIN_SEGN FIN_SEGN FIN; FIN;
18

Funciones: descripcin

Como puede verse en los ejemplos, una funcin se describe mediante su propio algoritmo. Desde este punto de vista, una funcin puede visualizarse como una accin en la que:
Todos los parmetros son DATO Produce un nico resultado que es asignado al nombre de la funcin como ltimo paso de sta. El identificador del nombre de la funcin se considera dentro de sta como una variable de slo escritura.
19

Funciones: problema (planteamiento)


Dadas dos duraciones expresadas como <hora, minutos, segundos>, escribir un algoritmo que obtenga la suma expresada de igual modo.
LXICO duracin = TIPO < h : entero 0; m, s : [0, 59] > d1, d2 : duracin; SumarD: funcin (a, b : duracin) duracin; {PRE: a, b : duracin; a=<H1,M1,S1> b=<H2,M2,S2>} {POST: SumarD=<H1+H2+x, (M1+M2+y) mod 60, (S1+S2) mod 60> x=(M1+M2+y) div 60 y=(S1+S2) div 60} ALGORITMO Leer (d1, d2); Escribir (SumarD (d1, d2))
20

// Es preciso definir esta funcin

Funciones: problema (resolucin)


o SumarD: funcin (a, b : duracin) duracin; ul c l Lxico c e d Cvds: funcin (d : duracin) entero; o m rit {duracin n ss correspondiente} o alg Algoritmo // de Cvds Cvds 3600*d.h + 60*d.m + d.s FIN; // de Cvds al n Cvsd: funcin (n:entero) duracion; io c n {nss duracion expresa en hh,mm,ss} fu n Lxico // de Cvsd i c si o d : duracin; p m rh : entero [0..3599]; co Algoritmo // de Cvsd d.h n div 3600; rh n mod 3600; d.m rh div 60; Algoritmo // de SumarD d.s rh mod 60; SumarD Cvsd ( Cvds (a) + Cvds (b) ) Cvsd d FIN; // de SumarD FIN; // de Cvsd
21

funcin Cvsd

funcin Cvds

Estructuracin de informacin: tablas

bi . . . bs
Dominio (intervalo ordinal)

. . .

Dominio: intervalo de un tipo ordinal [bi, bs] Rango: tipo base cualquiera bi, bs: lmites inferior y superior del dominio Dominio Rango bi v1 bi+1 v2 ....... ....... bs vn

Rango (tipo base)

n = ordinal (bs) ordinal (bi) + 1

OPERACIN BSICA: acceso directo TE = TIPO Tabla [5, 100] de real; T : TE;

Si i [5, 100], Ti representa el elemento de T cuyo ndice es i: Total Total + Ti; Ti 30 * s;


22

Estructuracin de informacin: tablas

OBJETOS Temperaturas medias ao: Notas en una asignatura: Usuarios del bus en un mes:

TABLA Temp = TIPO Tabla [1, 12] de real; Mates = TIPO Tabla [1, 40] de real; BusUsers = TIPO Tabla [1, 31] de entero;

Diferencias con el producto de tipos: Idntica naturaleza de los elementos N de elementos significativos no fijo Elementos referenciados por mecanismo de indexacin OPERACIONES FRECUENTES Enumeracin secuencial (recorrido): ejecutar una misma accin sobre todos los elementos Bsqueda: encontrar un elemento que cumpla cierta propiedad
23

formato (da del mes, mes) obtenga el da del ao que le corresponde. Ejemplos: (4, 2) 35, (30, 1) 30, (31, 12) 365 Si todos los meses tuviesen 30 das: (a, b) 30 *(b 1) + a Le aadiremos una correcin: (a, b) 30*(b 1) + a + correcb: mes correc 1 0 2 1 3 1 4 0 5 0 6 1 7 1 8 2 9 3 10 3 11 4 12 4

Tablas: Ejemplo: Disear un algoritmo que dada una fecha en

LXICO
da = TIPO entero [1..31]; mes = TIPO entero [1..12]; fecha= TIPO <d : da; m : mes> correc : TABLA [mes] de entero = [0, 1, 1, 0, 0, 1, 1, 2, 3, 3, 4, 4]; x : Fecha; ALGORITMO Leer (x); Escribir (30 * (x.m 1) + x.d + correcx.m ) FIN.
24

You might also like