TEMA 4:SUBALGORITMOS

Anuncio
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
45
TEMA 5:SUBALGORITMOS
5.1.- SUBALGORITMOS:
Conjunto estructurado de operaciones identificado mediante un nombre único, de
modo que toda referencia al mismo implica la ejecución de las acciones correspondientes.
Módulos o bloques que resuelven un problema parcial y que se pueden utilizar en un
algoritmo principal como si fuesen operaciones primitivas  simplificación en la codificación.
Existe la posibilidad de anidamiento (dentro de un subalgoritmo, definir otro).
5.2.- FUNCIONES Y PROCEDIMIENTOS:
Existen dos tipos de subalgoritmos:
 Funciones: resultado explícito función del valor de unos parámetros o argumentos.
 Procedimientos: no producen forzosamente un resultado explícito.
Ejemplo:
Algoritmo selección
constante n =...
vector de reales a(1..n)
variables enteras i,k
leer a
para i de 1 a n-1 hacer
k=indice_minimo (a,i,n)
intercambiar (a,i,k)
fin para
escribir a
Fin
Función entera indice_minimo (a,i,n)
parámetro vector de reales a(1..n)
parámetros enteros i,n
variables enteras x,j
x=i
para j de i+1 a n hacer
si a(j)<a(i) entonces x=j fin si
fin para
indice_minimo=x
Fin
-Procedimiento intercambiar (a,i,k)
parámetro variable vector de reales a(1..n)
parámetros enteros i,k
variable real x
x=a(i)
a(i)=a(k)
a(k)=x
-Fin
45
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
46
5.2.1.- FUNCIONES
Declaración: Función tipo nombre (parámetros)
Resultado de una función: se especifica mediante una instrucción de asignación incluida en
el subalgoritmo:
nombre=expresión
Declaración de los parámetros: al comienzo de la función y pueden ser de cualquier tipo,
incluido vector, matriz o tabla:
parámetro tipo nombre
Parámetros: valores constantes del subalgoritmo. Ninguna operación debe modificarlos.
Dentro de la función se pueden definir las variables necesarias para su ejecución
(además de los parámetros).
Referencia a una función:
mediante un nombre con los valores de los parámetros
particulares.
Cuando el nombre de la función aparece en una expresión del algoritmo principal, se
ejecutan las operaciones definidas en el subalgoritmo, calculándose así su valor, y
sustituyéndose éste en la expresión donde se hace referencia a la función.
Las funciones pueden aparecer en cualquier lugar de una expresión, siempre que
sean del tipo adecuado.
Ejemplos:
-Función real g(x)
parámetro real x
g=sen(x) + cos(x)
-Fin
Función entera m (a,b)
parámetros enteros a,b
m=(a + b) / 2
Fin
46
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
47
Función real producto_escalar (x,y)
parámetros vectores reales x(1..n),y(1..n)
variable real p
variable entera j
p=0 * 0
para j de 1 a n hacer
p=p + x(j) * y(j)
fin para
producto_escalar=p
Fin
Ejemplos de utilización de funciones:
variables enteras i,j,k
variables reales a,b,c
vectores reales x(1..3),y(1..3)
...
...
i=m (j,k) + 2
...
k=3 * i + 2 * m (i,j)
...
a=g(b) / 3 * 0 + c * producto_escalar(x,y)
5.2.2.- PROCEDIMIENTOS:
Declaración: procedimiento nombre (parámetro)
En lugar de devolver un valor escalar, los procedimientos pueden tener parámetros
variables (escalares o vectoriales), cuyo valor se puede modificar en el subalgoritmo,
siendo visible el cambio de valor por el algoritmo invocador.
Activación de un procedimiento: se produce con la presencia de su nombre como
instrucción independiente, junto con los parámetros correspondientes, en el algoritmo
principal. Obsérvese que un procedimiento no devuelve ningún valor, así que no debe
invocarse en una acción de asignación ni dentro de una expresión, como es el caso de las
funciones.
Ejemplos de definición de procedimientos:
Procedimiento P(a,b,c)
parámetros enteros a,b
parámetro variable entero c
c=(a + b) / 2
Fin
47
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
48
Procedimiento suma_de_vectores (x,y,z)
parámetros vectores reales x(1..n),y(1..n)
parámetro variable vector real z(1..n)
variable entera i
para i de 1 a n hacer
z(i)=x(i) + y(i)
fin para
Fin
Ejemplos de utilización de procedimientos:
constante n=3
variables enteras i,j,k
vectores reales a(1..n),b(1..n),c(1..n)
...
...
i02
j=5
P(i,j,k)
...
leer a,b
suma_de_vectores (a,b,c)
escribir c
...
5.3.- VARIABLES Y PARÁMETROS:
ALGORITMO  SUBALGORITMO
Dentro de un subalgoritmo podemos encontrar:
 variables locales al subalgoritmo
 variables globales al subalgoritmo y a otros módulos
 parámetros (constantes y opcionalmente variables en procedimientos)
5.3.1.- VARIABLES LOCALES
Variables definidas en cada subalgoritmo o algoritmo principal, accesibles dentro del
módulo correspondiente. Existe la posibilidad de que coincidan sus nombres en módulos
distintos (se consideran como variables distintas). Cuando se sale de un módulo, el
contenido de estas variables locales es borrado automáticamente.
48
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
49
Ejemplo:
Porcedimiento P(i)
parámetro variable entero i
variable entera j
j=i + 2
i=2 * j
Fin
Algoritmo A1
Traza:
variables enteras i,j
i=1
A1: i j
1 2
j=2
p(i)
6 2
P: i
1
6
j
3
Fin
j  variable local (no se modifica en A1)
5.3.2.- VARIABLES GLOBALES:
Son variables accesibles desde diferentes módulos (conservan su valor en todo el
programa):
Declaración: variable global nombre
Se incluye la declaración en cada módulo en el que se haga referencia a la variable
global.
Ejemplo:
Procedimiento P(i)
parámetro variable entero i
variable global entera k
variable entera j
j=i + 2
i=2 * j
k=i + 2
Fin
49
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Algoritmo A2
variable global entera k
variables enteras i,j
i=1
j=2
k=3
P(i)
Fin
Fundamentos
de Informática
50
Traza:
A2: i j k
P: i j k
1 2 3
- - 3
3
1 3 3
8
6 3 8
6 2 8
Todo cambio en el valor de k se refleja en ambos módulos (no sucede con j,i)
5.3.3.- PARÁMETROS:
Medio normal de transmisión de información entre módulos y otros. Son el tercer tipo
de variables que intervienen en un algoritmo descompuesto en subalgoritmos.
Parámetros Formales:
los que aparecen en la definición del subalgoritmo (nombres
genéricos sin existencia propia).
Parámetros Actuales: los que aparecen en la llamada al subalgoritmo y que sustituyen a los
formales en la ejecución del subalgoritmo.
Los parámetros formales pueden considerarse locales con respecto al subalgoritmo.
Además, son sustituidos por parámetros actuales en virtud de su posición relativa en la lista
de parámetros.
Ejemplo:
Procedimiento P(x,y)
parámetros enteros x,y
...
Fin
(x,y parámetros formales)
Si efectuamos las siguientes llamadas al procedimiento P(x,y) mediante las
instrucciones:
P(i,j)
i=x
j=y
50
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
P(2,a)
2=x
a=y
p(m,n/2)
m=x
n/2=y
51
Fundamentos
de Informática
Los parámetros actuales y los parámetros formales deben tener igual número y ser
del mismo tipo.
Parámetros (otra clasificación):
 constantes (o de entrada) – funciones y procedimientos
 variables (de entrada/salida) – sólo en procedimientos
5.4.- MODOS DE TRANSMISION DE LOS PARAMETROS:
 Transmisión por valor: si los parámetros formales son constantes, se copian los valores
de los parámetros actuales en el lugar correspondiente del subalgoritmo.
 Transmisión por referencia o por dirección: si los parámetros formales son variables, los
que se copia en el subalgoritmo es una referencia a la posición de memoria de los
parámetros actuales.
5.5.- PARAMETROS FUNCIONALES:
Mediante este nombre identificamos, no a los parámetros de una función, sino a la
Posibilidad
de
usar
funciones
y
procedimientos
como
parámetros
de
un
subalgoritmo.
Ejemplo:
Procedimiento tabular_funcion (f,a,b,delta)
parámetro función real f
----------> PARÁMETRO FUNCIONAL
parámetros reales a,b,delta
variables reales x,y
x=a
mientras x<b hacer
y=f(x)
----------> USO DE LA FUNCION
escribir x,y
PASADA COMO PARÁMETRO
x=x + delta
fin mientras
Fin
Así, en otro algoritmo podríamos encontrar llamadas al procedimiento tales como:
tabular_funcion (sen,0 * 0,pi,0 * 1)
51
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
52
tabular_funcion (exp,0 * 0,1 * 0,0 * 1)
Aplicación al cálculo de una integral definida mediante el método de los rectángulos:

b
S  f ( x)dx
a
S
n1
n1
k 0
k 0
 f ( xk )  h  h  f ( xk )
siendo h 
ba
; x0  a; xk 1  xk  h
n
Podemos realizar este cálculo mediante la función:
Función real integral (f,a,b,n)
parámetro función real f
parámetros reales a,b
parámetro entero k
h=(b - a) / n
s=0 * 0
x=a
para k de 0 a n-1 hacer
s=s + f(x)
x=x + h
fin para
integral=h * s
Fin
5.6.- PROGRAMACION MODULAR:
Consiste en la descomposición de un algoritmo en subalgoritmos para reducir la
complejidad de la programación. Así, podemos descomponer un problema complejo de
programación en módulos compilables por separado
Sus principales ventajas son:





Facilita la programación.
Aumenta la claridad de los programas.
Posibilidad de desarrollo en paralelo.
Posibilidad de biblioteca de subprogramas.
...
52
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
53
Ejercicios de Evaluación:
1. Escribir una función para calcular el producto escalar de dos vectores, x e y, de
dimensión n.
2. Escribir una función que calcule el módulo de un vector real x.
3. Escribir un procedimiento para multiplicar matrices.
4. Escribir un procedimiento para calcular el factorial de un número y otro para, utilizando el
procedimiento anterior, calcular:
Cnm 
n!
m!(n  m)!
5. Escribir un procedimiento para restar de una fila i de una matriz el producto de otra fila j
por un escalar c.
53
ETSII
Dpto. de Informática
y Sistemas
ALGORÍTMICA
PARTE 1 - TEORÍA
Fundamentos
de Informática
54
54
Descargar