Está en la página 1de 11

ETSII

Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

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 ejecucin de las acciones correspondientes.
Mdulos o bloques que resuelven un problema parcial y que se pueden utilizar en
un algoritmo principal como si fuesen operaciones primitivas simplificacin en la
codificacin.
Existe la posibilidad de anidamiento (dentro de un subalgoritmo, definir otro).

5.2.- FUNCIONES Y PROCEDIMIENTOS:


Existen dos tipos de subalgoritmos:
Funciones: resultado explcito funcin del valor de unos parmetros o argumentos.
Procedimientos: no producen forzosamente un resultado explcito.
Ejemplo:
Algoritmo seleccin
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
Funcin entera indice_minimo (a,i,n)
parmetro vector de reales a(1..n)
parmetros 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)
parmetro variable vector de reales a(1..n)
parmetros enteros i,k
variable real x
x=a(i)
a(i)=a(k)
45

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

46

a(k)=x
-Fin

5.2.1.- FUNCIONES
Declaracin: Funcin tipo nombre (parmetros)
Resultado de una funcin: se especifica mediante una instruccin de asignacin incluida
en el subalgoritmo:
nombre=expresin
Declaracin de los parmetros: al comienzo de la funcin y pueden ser de cualquier tipo,
incluido vector, matriz o tabla:
parmetro tipo nombre
Parmetros: valores constantes del subalgoritmo. Ninguna operacin debe modificarlos.
Dentro de la funcin se pueden definir las variables necesarias para su ejecucin
(adems de los parmetros).
Referencia a una funcin:

mediante un nombre con los valores de los parmetros

particulares.
Cuando el nombre de la funcin aparece en una expresin del algoritmo principal,
se ejecutan las operaciones definidas en el subalgoritmo, calculndose as su valor, y
sustituyndose ste en la expresin donde se hace referencia a la funcin.
Las funciones pueden aparecer en cualquier lugar de una expresin, siempre que
sean del tipo adecuado.
Ejemplos:
-Funcin real g(x)
parmetro real x
g=sen(x) + cos(x)
-Fin
Funcin entera m (a,b)
parmetros enteros a,b
m=(a + b) / 2
Fin

46

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

47

Funcin real producto_escalar (x,y)


parmetros 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 utilizacin 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:
Declaracin: procedimiento nombre (parmetro)
En lugar de devolver un valor escalar, los procedimientos pueden tener parmetros
variables (escalares o vectoriales), cuyo valor se puede modificar en el subalgoritmo,
siendo visible el cambio de valor por el algoritmo invocador.
Activacin de un procedimiento: se produce con la presencia de su nombre como
instruccin independiente, junto con los parmetros correspondientes, en el algoritmo
principal. Obsrvese que un procedimiento no devuelve ningn valor, as que no debe
invocarse en una accin de asignacin ni dentro de una expresin, como es el caso de las
funciones.
Ejemplos de definicin de procedimientos:
Procedimiento P(a,b,c)
parmetros enteros a,b
parmetro variable entero c
c=(a + b) / 2
Fin
47

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

48

Procedimiento suma_de_vectores (x,y,z)


parmetros vectores reales x(1..n),y(1..n)
parmetro 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 utilizacin 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 PARMETROS:


ALGORITMO SUBALGORITMO
Dentro de un subalgoritmo podemos encontrar:
variables locales al subalgoritmo
variables globales al subalgoritmo y a otros mdulos
parmetros (constantes y opcionalmente variables en procedimientos)

5.3.1.- VARIABLES LOCALES


Variables definidas en cada subalgoritmo o algoritmo principal, accesibles dentro del
mdulo correspondiente. Existe la posibilidad de que coincidan sus nombres en mdulos
distintos (se consideran como variables distintas). Cuando se sale de un mdulo, el
contenido de estas variables locales es borrado automticamente.

48

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

49

Ejemplo:
Porcedimiento P(i)
parmetro variable entero i
variable entera j
j=i + 2
i=2 * j
Fin
Algoritmo A1
variables enteras i,j

Traza:

i=1
j=2

A1: i j
1 2

p(i)
Fin

6 2

P: i
1
6

j
3

j variable local (no se modifica en A1)

5.3.2.- VARIABLES GLOBALES:


Son variables accesibles desde diferentes mdulos (conservan su valor en todo el
programa):
Declaracin: variable global nombre
Se incluye la declaracin en cada mdulo en el que se haga referencia a la variable
global.
Ejemplo:
Procedimiento P(i)
parmetro variable entero i
variable global entera k
variable entera j
j=i + 2
i=2 * j
k=i + 2
Fin

49

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

50

Algoritmo A2
variable global entera k
variables enteras i,j
i=1
j=2
k=3
P(i)
Fin

Traza:
A2: i j k
1 2 3
3
8
6 2 8

P: i
1
6

j
3
3

k
3
3
8

50

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

51

Todo cambio en el valor de k se refleja en ambos mdulos (no sucede con j,i)

5.3.3.- PARMETROS:
Medio normal de transmisin de informacin entre mdulos y otros. Son el tercer
tipo de variables que intervienen en un algoritmo descompuesto en subalgoritmos.
Parmetros Formales:

los que aparecen en la definicin del subalgoritmo (nombres

genricos sin existencia propia).


Parmetros Actuales: los que aparecen en la llamada al subalgoritmo y que sustituyen a
los formales en la ejecucin del subalgoritmo.
Los parmetros formales pueden considerarse locales con respecto al subalgoritmo.
Adems, son sustituidos por parmetros actuales en virtud de su posicin relativa en la lista
de parmetros.
Ejemplo:
(x,y parmetros formales)

Procedimiento P(x,y)
parmetros enteros x,y
...
Fin

Si efectuamos las siguientes llamadas al procedimiento P(x,y) mediante las


instrucciones:

P(i,j)
P(2,a)
p(m,n/2)

i=x
2=x
m=x

j=y
a=y
n/2=y

Los parmetros actuales y los parmetros formales deben tener igual nmero y ser
del mismo tipo.
Parmetros (otra clasificacin):
constantes (o de entrada) funciones y procedimientos
variables (de entrada/salida) slo en procedimientos
51

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

52

5.4.- MODOS DE TRANSMISION DE LOS PARAMETROS:


Transmisin por valor: si los parmetros formales son constantes, se copian los valores
de los parmetros actuales en el lugar correspondiente del subalgoritmo.
Transmisin por referencia o por direccin: si los parmetros formales son variables, los
que se copia en el subalgoritmo es una referencia a la posicin de memoria de los
parmetros actuales.

5.5.- PARAMETROS FUNCIONALES:


Mediante este nombre identificamos, no a los parmetros de una funcin, sino a la
Posibilidad de usar funciones y procedimientos como parmetros de un subalgoritmo.
Ejemplo:
Procedimiento tabular_funcion (f,a,b,delta)
parmetro funcin real f
----------> PARMETRO FUNCIONAL
parmetros 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 PARMETRO
x=x + delta
fin mientras
Fin
As, en otro algoritmo podramos encontrar llamadas al procedimiento tales como:
tabular_funcion (sen,0 * 0,pi,0 * 1)
tabular_funcion (exp,0 * 0,1 * 0,0 * 1)
Aplicacin al clculo de una integral definida mediante el mtodo de los rectngulos:

S f ( x)dx
a

n 1

n 1

k 0

k 0

f ( xk ) h h f ( xk )

siendo h

ba
; x0 a; xk 1 xk h
n

Podemos realizar este clculo mediante la funcin:


52

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

53

Funcin real integral (f,a,b,n)


parmetro funcin real f
parmetros reales a,b
parmetro 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 descomposicin de un algoritmo en subalgoritmos para reducir la
complejidad de la programacin. As, podemos descomponer un problema complejo de
programacin en mdulos compilables por separado
Sus principales ventajas son:

Facilita la programacin.
Aumenta la claridad de los programas.
Posibilidad de desarrollo en paralelo.
Posibilidad de biblioteca de subprogramas.
...

Ejercicios de Evaluacin:

1. Escribir una funcin para calcular el producto escalar de dos vectores, x e y, de


dimensin n.
2. Escribir una funcin que calcule el mdulo de un vector real x.
3. Escribir un procedimiento para multiplicar matrices.
53

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

54

4. Escribir un procedimiento para calcular el factorial de un nmero 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.

54

ETSII
Dpto. de Informtica
y Sistemas

ALGORTMICA
PARTE 1 - TEORA

Fundamentos
de Informtica

55

55