Académique Documents
Professionnel Documents
Culture Documents
30/08/04
Analisis y Diseno Modular
Ejemplo No 1.
Dadas las coordenadas (en dos dimensiones) de los ve rtices de un triangulo, hallar el
permetro y el area.
1 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
Flujo de Datos
ve rtices
triangulo
permetro, area
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
3 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
macro algoritmo
1. Obtener
2. Obtener
3. Obtener
fin
30/08/04
Analisis y Diseno Modular
obtenerVertices
el primer vertice
el segundo vertice
el tercer vertice
de
los
lados
Datos Modificados en
Memoria
Datos Necesarios en
Memoria
Datos Visualizados
al Usuario
4 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
Se agregan los datos que estan en memoria del computador, los que son necesario
que ya tengan valor en memoria y aquello cuyo valor se modifica en memoria. De
esta manera los flujos de datos y macro algoritmos se expresan as:
Flujo de Datos
Ve rtices
obtenerVertices
macro algoritmo
1. Obtener
2. Obtener
3. Obtener
Fin
Ve rtices
obtenerVertices
primer vertice
segundo vertice
tercer vertice
Flujo de Datos
Ve rtices
Calculo
Permetro y area
de
los
lados
Flujo de Datos
Permetro, area
Mostrar
Permetro, area
5 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
Ve rtices
macro algoritmo
1. Calcular
2. Calcular
3. Calcular
Fin
calcularLados
Lados
calcularLados
la longitud del primer lado
la longitud del segundo lado
la longitud del tercer lado
6.1. Subprogramas
Para escribir las instrucciones correspondientes a los macro algoritmos de la
descomposicio n se hace necesario agregar a los programas un nuevo componente:
los subprogramas.
Existen dos tipos de subprogramas: funciones y procedimientos.
6.1.1. Funcio n:
Una funcio n en el sentido matematico es una relacio n entre dos conjuntos tal que
para todo elemento del conjunto de partida existe una y solo una imagen. En
te rminos de programacio n de computadores, una funcio n es aquel subprograma que
ejecuta un conjunto de instrucciones y que puede calcular y retornar valores a partir
de datos conocidos y enviados por el programa que lo llamo . Generalmente, el
resultado que retorna se asigna a variables, aunque tambie n puede ser utilizado en
una expresio n.
6.1.2. Procedimiento:
Un procedimiento es un subprograma que ejecuta un conjunto de instrucciones para
resolver un subproblema y que puede recibir y/o devolver 0, 1 o mas datos desde y
hacia el programa o subprograma que lo llamo . Tanto la entrada de informacio n al
procedimiento como la devolucio n de resultados desde el procedimiento al programa
que lo llamo se realizan a trave s de los datos enviados y recibidos.
6 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
De entrada (in)
De salida (out)
De entrada/salida (inout)
7 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
8 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
9 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
module triangulos
|[
var
Triangulo: Ttriangulo
write(area y Permetro de triangulos);
(* Obtener los vertices *)
pedirVertices(triangulo.vertices);
(* Calcular permetro y area *)
(* Como llamado a procedimiento *)
calculo(triangulo.vertices,
triangulo.permetro,
triangulo.area);
(* Como llamado a funcion *)
Triangulo.permetro, triangulo.area :=
calculo(triangulo.vertices);
(* visualizar permetro y area *)
mostrar(triangulo.permetro, triangulo.area)
]|
Observe que cada paso del macro algoritmo invoca o llama al subprograma
respectivo dando su nombre y colocando entre pare ntesis los argumentos, los datos
en memoria que corresponden con los canales de comunicacio n definidos para cada
subprograma. Por Ej.:
El argumento triangulo.ve
rtices
subprograma pedirVertices
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
Por ejemplo
a,b := 3,5;
a,b := b,a;
Tiene el significado de intercambiar los valores de las dos variables. Cual seria el
equivalente para lograr este efecto usando asignaciones sencillas y no asignaciones
multiples?
Finalmente solo resta escribir los cuerpos de cada subprograma , las instrucciones
correspondientes al algoritmo de cada subprograma. Como ejemplo se muestra el
subprograma mostrar
proc mostrar(in permetro, area: real)
(*
OBJ: Visualizar el permetro y el area del triangulo
*)
|[
(* Visualizar el permetro *)
write(El permetro es :, permetro)
(* Visualizar el area *)
write(El area es : , area)
]|
11 de 12
Ing. Gerardo Ospina
Programacio n Imperativa:
Un enfoque basado en objetos
30/08/04
Analisis y Diseno Modular
12 de 12
Ing. Gerardo Ospina