Professional Documents
Culture Documents
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
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
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
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
ALGORITMO
(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
RETORNO binario b
bina b
a x b y x x b y
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
ACCIONES
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
Una accin puede contener a su vez otras acciones como parte de su lxico:
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:
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).
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
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
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
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
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;
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
funcin Cvsd
funcin Cvds
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
OPERACIN BSICA: acceso directo TE = TIPO Tabla [5, 100] de real; T : TE;
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
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