0% encontró este documento útil (0 votos)
228 vistas46 páginas

Tema 2. Programacion Modular

Este documento introduce los conceptos básicos de la programación modular. Explica que la programación modular consiste en dividir un algoritmo en unidades más pequeñas llamadas módulos. Cada módulo resuelve una tarea específica y los módulos se pueden combinar para resolver un problema más grande. También describe los componentes clave de un módulo como parámetros, ámbito y sintaxis.

Cargado por

Juan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
228 vistas46 páginas

Tema 2. Programacion Modular

Este documento introduce los conceptos básicos de la programación modular. Explica que la programación modular consiste en dividir un algoritmo en unidades más pequeñas llamadas módulos. Cada módulo resuelve una tarea específica y los módulos se pueden combinar para resolver un problema más grande. También describe los componentes clave de un módulo como parámetros, ámbito y sintaxis.

Cargado por

Juan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 46

Módulo 1.

Conocimientos
básicos de programación

Tema 2. Programación modular

Informática Tema 2. Programación Modular 1 / 46


Objetivos
• Introducir los principales conceptos relacionados con
la programación modular.

• Presentar las herramientas de programación que


permiten resolver problemas complejos mediante su
descomposición en otros más simples.

• Comprender los distintos tipos de parámetros y


cómo se pasan entre módulos.

Informática Tema 2. Programación Modular 2 / 46


Índice
1. Definición.
2. Proceso de invocación.
3. Módulos.
4. Sintaxis.
5. Nombre de un módulo.
6. Llamada a un módulo.
7. Ejemplos.
8. Errores típicos.
9. Resumen.
Informática Tema 2. Programación Modular 3 / 46
Definición
• Programación modular: consiste en dividir un
algoritmo en unidades de menor tamaño  cada
una realiza una tarea explícita y única.
• Cada fragmento se denomina módulo, sub-
algoritmo, subrutina o subprograma.
• Ventajas:
– Simplicidad: permite descomponer un problema en otros
más simples.
– Reutilización: cada módulo se identifica mediante un
nombre, lo que permite utilizarlo siempre que se quiera.
– Generalidad: se pueden parametrizar.

Informática Tema 2. Programación Modular 4 / 46


Definición
• División de un problema en subproblemas más pequeños que
se resuelven con módulos.
• Es deseable que cada subproblema sea independiente de los
otros.
• Combinación de las soluciones parciales para obtener la
solución global.
P

+ nivel detalle
SP1 SP2 …… SPn

S11 S12 S21 ……

Informática Tema 2. Programación Modular 5 / 46


Definición
• Ejemplo. Supongamos que tenemos un robot para dibujar
figuras geométricas y sólo sabe realizar las siguientes tareas:
– Posicionarse en un punto dado.
– Trazar una línea de x cm a partir de donde esté situado y en la
dirección que en ese momento se lleve.
– Girar en el sentido de las agujas del reloj un número de grados, para
modificar la dirección de la pluma.

¿Cómo dibujamos un cuadrado?.


¿Y si queremos dibujar después más cuadrados?.

Informática Tema 2. Programación Modular 6 / 46


Proceso de invocación


Memoria
principal
Instrucciones

Informática Tema 2. Programación Modular 7 / 46


Proceso de invocación

Memoria Siguientes
principal instrucciones
Llamada
módulo M

Instrucciones
Entorno módulo
M Instrucciones
módulo

Informática Tema 2. Programación Modular 8 / 46


Proceso de invocación

Siguientes
Memoria instrucciones
principal Llamada
módulo M

Entorno
M
end

Informática Tema 2. Programación Modular 9 / 46


Módulos
• Parámetros: permiten la comunicación entre un
módulo y otro (o programa principal).
• Pueden ser de Entrada y/o Salida:
– Entrada: valores que son proporcionados al módulo.
– Salida: son valores que se calculan en el módulo y que se
devuelven al que lo ha invocado.
• Según el comportamiento, hay módulos que:
– Devuelven la salida asociada a su nombre.
– Devuelven las salidas en parámetros.

Informática Tema 2. Programación Modular 10 / 46


Módulos

• Tipos de parámetros:

– Reales o actuales: valores que se pasan al módulo.


– Formales: los que aparecen en la declaración del
módulo y contendrán los valores de los
parámetros actuales cuando se invoca al módulo.
• Los parámetros actuales en la invocación del módulo,
deben coincidir en número, orden y tipo con los
parámetros formales de la declaración del módulo.

Informática Tema 2. Programación Modular 11 / 46


Módulos
Algoritmo o módulo
(hace la llamada)

Parámetros actuales

Coincidir: Tipo y Número


Correspondencia: Orden

… Parámetros formales
Módulo

Informática Tema 2. Programación Modular 12 / 46


Módulos
• Tipo de paso de parámetros:

– Valor o copia: se utilizan para proporcionar información a


un módulo. Los cambios realizados no son visibles fuera.

– Variable o referencia: se utilizan tanto para recibir como


para transmitir valores, de manera que los cambios que se
hagan serán visibles desde fuera. Se indican de alguna
forma, por ejemplo con una palabra reservada (var) o
algún símbolo (&).
En Matlab todas los parámetros se pasan por
valor, no por referencia.

Informática Tema 2. Programación Modular 13 / 46


Módulos
Algoritmo o módulo
(hace la llamada)

Parámetros actuales

Paso por variable


Valor
o referencia
Valor
Paso por valor o copia

Valor

Parámetros formales

Módulo

Informática Tema 2. Programación Modular 14 / 46


Módulos

• Ámbito de las variables:

– Globales: conocidas en todos los módulos.


No se recomienda su uso.

– Locales: específicas de un módulo.

Informática Tema 2. Programación Modular 15 / 46


Sintaxis
• Un módulo consta de:
– Una cabecera donde se especifica su nombre, cuáles y
cuántos parámetros tiene, y cuáles y cuántos valores
devuelve. En Matlab se identifica por la palabra reservada
function.
– El cuerpo del módulo contiene las sentencias que sean
necesarias para calcular los valores que se van a devolver.
Se utilizarán los parámetros de entrada del módulo, así
como aquellas variables auxiliares que se precisen.
Ojo: las variables que no sean parámetros son locales a la
función.

Informática Tema 2. Programación Modular 16 / 46


Sintaxis

function parámetros-salida = nombre (parámetros-entrada) Cabecera


% Descripción: qué hace la función
% Parámetros de entrada:
% identificador y descripción
% Parámetros de salida:
% identificador y descripción Comentarios /
Ayuda
% Variables (internas):
% identificador: tipo

% Instrucciones del cuerpo de la función

Cuerpo

Informática Tema 2. Programación Modular 17 / 46


Sintaxis
• Definición del módulo. La primera línea define el nombre del
módulo, el número y orden de parámetros de entrada, y el
número y orden de parámetros de salida.
Si el módulo tiene más de un parámetro de entrada, estos se
separan por comas y si devuelve más de un valor, se
escriben separados por comas y entre corchetes [ ].
• Texto de ayuda. Es opcional, aunque muy recomendable.
Matlab despliega como ayuda (orden help) todas las líneas
que estén precedidas con % hasta que encuentre la primera
línea no comentada.
• Cuerpo del módulo. Sentencias que realizan los cálculos y
asignan valores a los parámetros de salida.

Informática Tema 2. Programación Modular 18 / 46


Sintaxis

• Ejemplo:

function pfinal = pvt (precio)


% Descripción: calcula el precio con IVA de un producto
% Parámetros de entrada: precio: REAL, precio sin IVA
% Parámetros de salida: pfinal: REAL, precio con IVA
% Variables (internas): iva: REAL

iva = 0.21;
pfinal = precio * (1+iva);

Informática Tema 2. Programación Modular 19 / 46


Sintaxis

• Ejemplos con varios argumentos de entrada o salida:

function pfinal = pvtIVA (precio, iva)


% Descripción: calcula el precio con IVA de un producto
% Parámetros de entrada: precio: REAL, precio sin IVA
% iva: ENTERO, porcentaje de IVA a aplicar
% Parámetros de salida: pfinal: REAL, precio con IVA

pfinal = precio * (1+iva/100);

Informática Tema 2. Programación Modular 20 / 46


Sintaxis
• Ejemplos con varios argumentos de entrada o salida:

function [x,y] = fejemplo (a,b,c)


% Descripción: calcula la suma y producto de tres valores
% Parámetros de entrada: a, b, c: REAL
% Parámetros de salida: x, y: REAL

x = a + b + c;
y = a * b * c;

Informática Tema 2. Programación Modular 21 / 46


Sintaxis
• Un módulo puede no devolver nada y/o no tener
parámetros de entrada. Ejemplo:
function info
% Descripción: muestra información sobre la precisión de la
% máquina
% Parámetros de entrada: Ninguno
% Parámetros de salida: Ninguno

disp (‘precisión de la máquina: ’);


disp (eps); % Épsilon de la máquina. Ej: 2.2204e-016
disp (’mayor numero real’);
disp(realmax); %Real más grande de la máquina. Ej: 1.7977e+308
disp (’menor numero real’);
disp(realmin); %Real más pequeño de la máquina. Ej: 2.2251e-
308

Informática Tema 2. Programación Modular 22 / 46


Nombre de un módulo
• Deben empezar por una letra.
• Lo correcto es denominar al archivo que contiene el módulo,
con el mismo nombre del mismo, seguido de la extensión .m.
Por ejemplo, pvt.m.
• Un archivo puede incluir varios módulos. Sólo el primero es
accesible desde el exterior (línea de órdenes, etc.) mientras
que el resto de módulos del fichero son internos, es decir,
utilizables únicamente por los módulos presentes en el
archivo.
• Si un conjunto de módulos van a ser utilizados sólo por un
módulo principal, sí que los podemos juntar en el mismo
archivo.

Informática Tema 2. Programación Modular 23 / 46


Llamada a un módulo
• Podemos llamar a un módulo desde la línea de órdenes.
• También podemos llamar a un módulo dentro de otro.
• Ejemplo:
>> precio_ini = 1000;
>> precio_final = pvt(precio_ini)
>>
precio_final =
1210
• Observa que los parámetros de entrada y salida no tienen por
qué tener el mismo nombre que en la definición de la función.

Informática Tema 2. Programación Modular 24 / 46


Llamada a un módulo
• Escribimos todos los parámetros de entrada entre paréntesis
y todos los parámetros de salida entre corchetes, siempre en
el orden correspondiente:

>> [v, w] = fejemplo (a, b, c)

• Las variables de un módulo son locales, de modo que, aunque


en el módulo se modifiquen los parámetros de entrada, el
valor de dichas variables queda inalterado en el entorno
principal.

Informática Tema 2. Programación Modular 25 / 46


Ejemplos

• La forma de realizar la llamada sería así:


>> [z1, z2] = fejemplo (4,2,3)
z1 = 9
z2 = 24

• Mientras que si ponemos:


>> z = fejemplo (4,2,3)
z=9 sólo recuperamos el primer valor

Informática Tema 2. Programación Modular 26 / 46


Ejemplo 1
• Problema. Diseñar un módulo que calcule el área de un
rectángulo.

function a = calculoArea(lado1,lado2)
% Descripción: calcula el área de un rectángulo
% Parámetros de entrada: lado1, lado2: REAL, representan la
% medida de los lados de un rectángulo; lado1>0 y lado2>0.
% Parámetros de salida: a: REAL, el área del rectángulo

a = lado1 * lado2;

Informática Tema 2. Programación Modular 27 / 46


Ejemplo 1
• Problema (cont.). Llamada desde el algoritmo principal.

base=input(‘Introduce el tamaño del primer lado: ’);


altura=input(‘Introduce el tamaño del segundo lado: ’);
area=calculoArea(base,altura); Parámetros actuales
disp(‘El área es ’), disp(area); (de la llamada)

base altura

lado1 lado2

Parámetros formales
(de la función)

Informática Tema 2. Programación Modular 28 / 46


Ejemplo 2
n!
Problema: Hacer un programa que calcule el combinatorio Cn,k =
% Programa Combinatoria (n  k )!k!
% Entradas: n y k son número enteros >0 y n>k
% Salidas: Mensaje de cuánto vale el combinatorio de n sobre k
% Variables: n, k: ENTEROS
División del
1) Leer n y k programa en
1) Leer n Leer un número mayor subprogramas
2) Leer k que 0 más sencillos
2) Calcular Cn,k
1) Calcular factorial de n
2) Calcular factorial de k Calcular el factorial
3) Calcular factorial de (n-k)
3) Mostrar Cn,k

Informática Tema 2. Programación Modular 29 / 46


Ejemplo 2
function num = LeerNum
% Descripción: lee un número mayor que 0
% Parámetros de entrada: Ninguno
% Parámetros de salida: num: ENTERO, un número mayor que 0

num = input(‘Introduzca nº mayor que 0: ’);


while (num <= 0 )
num = input (‘Error. Introduzca nº positivo: ’);
end

Informática Tema 2. Programación Modular 30 / 46


Ejemplo 2
function fact = Factorial (num)
% Descripción: calcula el factorial de un número
% Parámetros de entrada: num: ENTERO, un número > 0
% Parámetros de salida: fact: ENTERO, resultado de calcular el
% factorial de num
% Variables (internas): i: ENTERO
fact = 1;
for i = 2:num
fact = i* fact;
end

Informática Tema 2. Programación Modular 31 / 46


Ejemplo 2
n!
Problema: Hacer un programa que calcule el combinatorio Cn,k =
% Programa Combinatoria (n  k )!k!
% Entradas: n y k son número enteros >0 y n>k
% Salidas: Mensaje de cuánto vale el combinatorio de n sobre k
% Variables : n, k: ENTEROS
n= LeerNum ;
k = LeerNum ;
if (n>k)
disp (‘El combinatorio es:’) ;
disp (Factorial(n) /( Factorial (n-k)*Factorial(k) ) );
else
disp (‘Error n debe ser mayor que k’);
end
Informática Tema 2. Programación Modular 32 / 46
Ejemplo 3
Problema: Realizar un programa que lea en una matriz una serie de
coordenadas y en un vector sus temperaturas correspondientes. Devolverá la
media de temperaturas y la temperatura más alta y más baja y dónde se
encuentran. Finalmente mostrará las temperaturas por pantalla.

% Programa Temperaturas
% Entradas: Array (2,tam) donde las 2 primeras filas son coordenadas latitud y
longitud, array con las temperaturas correspondientes a cada coord.
número de coordenadas introducidas (tam)
% Salidas: media , máximo , mínimo, sus coordenadas y la lista de temperaturas
%Variables: datos: Array (2,tam) de REALES;
temperatura : Array (tam) de REALES;
tam :ENTERO;
media , maximo , minimo:REALES ;

Informática Tema 2. Programación Modular 33 / 46


Ejemplo 3
1) Inicializar Datos
a. Leer tamaño
b. Leer coordenadas Leer Numero [n,m]
i. Leer latitud [90,-90]
ii. Leer longitud [180,-180]
c. Leer Temperaturas
División del
2) Calcular programa en
a. Media
subprogramas
b. Máximo
c. Mínimo más sencillos

3) Mostrar
a. La media
b. El máximo y coordenadas
c. El mínimo y coordenadas
d. Las temperaturas

Informática Tema 2. Programación Modular 34 / 46


Ejemplo 3
function num = LeerNumEntre (sup, inf)
% Descripción: Lee un número, situado en un rango, de teclado
% Parámetros de entrada: inf, sup: ENTEROS, límites superior e
% inferior para leer un número
% Parámetros de salida: num:ENTERO, valor leído entre sup e inf

num = input (‘Introduce nº: ’);


while (num > sup || num < inf)
num = input(‘Error. Introduzca nº otra vez: ’);
end

Informática Tema 2. Programación Modular 35 / 46


Ejemplo 3
function coor = LeerCoordenadas
% Descripción: Lee una matriz de coordenadas del teclado
% Parámetros de entrada: Ninguno
% Parámetros de salida: coor: ARRAY (2, tam) DE REALES, matriz con las
% coordenadas leídas de teclado
% Variables (internas): i: ENTERO
disp (‘Introduzca el número de coordenadas a introducir: ’);
tam = LeerNumEntre (100,1); %no más de 100 coordenadas
disp (‘Introduzca valores coordenadas: ’);
for i = 1 : tam
coor (1,i) = LeerNumEntre (90,-90); %Latitud
coor (2,i) = LeerNumEntre (180,-180); %Longitud
end
Informática Tema 2. Programación Modular 36 / 46
Ejemplo 3
function t = LeerTemperaturas (tam)
% Descripción: Lee un vector de temperaturas en el rango [100,-100]
% Parámetros de entrada: tam: ENTERO, número de temperaturas a
% leer de teclado
% Parámetros de salida: t: ARRAY(tam) DE REALES, matriz de temperaturas
% Variables (internas): i: ENTERO
disp (‘Comience a introducir temperaturas: ’);

for i = 1 : tam
t (i) = LeerNumEntre (100,-100); %Temperaturas a leer
end

Informática Tema 2. Programación Modular 37 / 46


Ejemplo 3
function media = CalcularMedia ( t )
% Descripción: Calcula la media de los elementos de un vector
% Parámetros de entrada: t : ARRAY (tam) DE REALES
% Parámetros de salida: media: REAL, media de los elementos de t
% Variables (internas): i,tam: ENTEROS

media = 0;
tam = length (t);
for i = 1:tam
media = t (i) + media;
end
media = media/tam;

Informática Tema 2. Programación Modular 38 / 46


Ejemplo 3
function [pos, maximo] = CalcularMaximo ( t )
% Descripción: Calcula el máximo y su posición, en un vector
% Parámetros de entrada: t : Array (tam) de Reales, con tam >= 1
% Parámetros de salida: pos: Entero, posición del máximo en t
% maximo: Real, el valor máximo de t
% Variables: i: Entero
maximo = t (1);
pos = 1;
for i = 2 : length (t)
if maximo < t(i)
maximo = t (i);
pos = i;
end
end

Informática Tema 2. Programación Modular 39 / 46


Ejemplo 3
function [pos, minimo] = CalcularMinimo ( t )
% Descripción: Calcula el mínimo, y su posición, en un vector
% Parámetros de entrada: t : Array (tam) de Reales, con tam >= 1
% Parámetros de salida: pos: Entero, posición del mínimo en t
% minimo: Real, el valor mínimo de t
% Variables: i: Entero
minimo = t (1);
pos = 1;
for i = 2 : length (t)
if minimo > t(i)
minimo = t (i);
pos = i;
end
end

Informática Tema 2. Programación Modular 40 / 46


Ejemplo 3
function MostrarCoord (coor, pos)
% Descripción: Muestra una columna de una matriz de dos filas
% Parámetros de entrada: coor: Array (2,tam) de Reales, la matriz
% pos: Entero, la columna a mostrar
% Parámetros de salida: ninguno

disp (‘Latitud: ’); disp(coor(1,pos));


disp (‘Longitud: ’); disp (coor(2,pos));

Informática Tema 2. Programación Modular 41 / 46


Ejemplo 3
function MostrarVector (tempe)
% Descripción: Muestra un vector (de temperaturas) por pantalla
% Parámetros de entrada: tempe: array (tam) de Reales, el vector
% Parámetros de salida: ninguno
% Variables (internas): i : Entero;

for i = 1: length(tempe)
disp (‘Temperatura: ’) ; disp (tempe(i));
end

Informática Tema 2. Programación Modular 42 / 46


Ejemplo 3
1) Inicializar Datos
a. Leer tamaño LeerNumEntre
b. Leer t coordenadas
i. Leer latitud [90,-90] LeerNumEntre LeerCoordenadas
ii. Leer longitud [180,-180] LeerNumEntre
c. Leer Temperaturas
a. Leer t temperaturas LeerNumEntre LeerTemperaturas
2) Calcular
a. Media CalcularMedia
b. Máximo CalcularMaximo
c. Mínimo CalcularMínimo
3) Mostrar
a. La media
b. El máximo y coordenadas MostrarCoord
c. El mínimo y coordenadas
d. Las temperaturas MostrarVector

Informática Tema 2. Programación Modular 43 / 46


Ejemplo 3
% Programa Temperaturas
% el resto de entradas y salidas se encuentran en la transparencia 33

datos = LeerCoordenadas ();


[posicion, tam] = size (datos);
temperatura = LeerTemperaturas (tam);
media = CalcularMedia (temperatura);
disp (‘La media es:’) ; disp (media);

[posicion, maximo] = CalcularMaximo (temperatura);


disp (‘El maximo es:’) ; disp ( maximo);
MostrarCoord (datos, posicion);
[posicion, minimo] = CalcularMinimo (temperatura);
disp (‘El mínimo es:’) ; disp ( minimo);
MostrarCoord(datos, posicion);
MostrarVector (temperatura);
Informática Tema 2. Programación Modular 44 / 46
Errores típicos

• Los parámetros formales de un módulo sólo están definidos


durante la ejecución del mismo. Si los usamos fuera, se
producirá un error.
• Evitar redefinir módulos ya definidos.
• No se pueden pasar nombres de módulos como parámetros.

Informática Tema 2. Programación Modular 45 / 46


Resumen
• Comunicación entre módulos mediante parámetros  por
variable o por valor.
• En Matlab, los módulos se definen como funciones, con sus
parámetros de entrada y salidas.
• La relación entre parámetros actuales y formales se establece
por orden.
• La llamada a un módulo va en cualquier sitio donde pueda
aparecer un valor del mismo tipo del que devuelve la función.
• La llamada a una función que no devuelve nada, va aislada en
una línea.

Informática Tema 2. Programación Modular 46 / 46

También podría gustarte