Unidad 4
Unidad 4
Eleanor Roosevelt
Programación modular
Objetivo
Manejar la programación modular mediante los procedimientos y
funciones, aplicando todos los conceptos estudiados
anteriormente.
En esta unidad
Programación Modular.
Procedimientos.
Funciones.
Carrera Profesional de Computación e Informática
Programación Modular
Con el análisis del problema, se determina lo que deberá realizar un algoritmo,
mediante el diseño se determina las diversas maneras en que se podrá realizar la solución
del problema; cuando se diseña el algoritmo se debe tener en cuenta que el desarrollo del
mismo podrá realizarse de manera modular es decir creando subalgoritmos(subprogramas o
módulos) que puedan ser utilizados por otros algoritmos; existen dos maneras para
desarrollar este tipo de subalgoritmos: módulos de tipo procedimientos y módulos de tipo
función.
Modulos del
Programa Programa
Principal Sub_Programa 1 Principal
INICIO
.....
.....
FIN
Modulos
Programa Principal Secundarios
INICIO Sub_Programa 2
......
...... INICIO
...... ..... Sub_Prg 3.1
...... .....
...... FIN INICIO
...... .....
.....
......
FIN
FIN
INICIO INICIO
..... .....
..... .....
FIN FIN
• Un Programa.
• Un Procedimiento
• Una Función
Características de un módulo
Los módulos debe de tener máxima cohesión (internamente todas las sentencias
deberán realizar únicamente una actividad con la finalidad de que los algoritmos que se
crean sean exactos) y el mínimo acoplamiento (los módulos deberán ser lo menos
dependientes de otros módulos, es decir trabajar solos, los parámetros son los únicos
valores que hacen posible la relación entre módulos)
Finalmente los módulos son cajas negras que requieren entradas(datos) para generar
salidas(información).
Caja Negra
Input Output
(módulo)
b) Crear una jerarquía de módulos, es decir diseñar los algoritmos teniendo en cuenta
que partes de código podrán ejecutarse de manera independiente y podrían ser
usados por otros algoritmos o dentro del mismo algoritmo (creación de los módulos
en diseño).
c) Definir los parámetros que deberán usar los módulos que se han creado, ya que
estos son los únicos que los relacionarán ya sea con el algoritmo principal u otros
módulos.
Tipos de Variables
b) Variables Globales o públicas.- Estas variables son declaradas dentro del programa
principal y serán reconocidas en todo el programa, incluyendo sus módulos
(subprogramas).
Las variables que son pasadas como parámetro a los módulos pueden o no
modifican su valor dependiendo como se las pase ya sea por referencia o por valor.
Ejemplo:
Programa Principal
INICIO
......
G=3
Invoca Calculo(4, G*8)
......
......
FIN
Asignaciones Directas
Los valores que asumen las variables formales X e Y(del módulo), serán 4 y G*8
(variables actuales), estos parámetros no permiten modificación alguna es decir se
consideran únicamente como parámetro de entrada.
De esta forma, las modificaciones que el método pueda realizar sobre estos
argumentos se realizan efectivamente sobre los argumentos actuales. En este caso,
ambos argumentos (formal y actual) se pueden considerar como la misma variable
con dos nombres, uno en el método llamante y otro en el llamado o invocado, pero
hacen referencia a la misma posición de memoria.
Ejemplo:
Programa Principal
INICIO
......
w = 5; k = 6
Invoca Calculo(w, k)
......
...... Los valores y variables
FIN hacen referencia a
posiciones de memoria
5 6
Tanto los valores que asumen las variables formales X e Y(del módulo) como las
variables w y k (variables actuales), serán 5 y 6 en ese orden, es decir ambos pares
de variables apuntan a los mismos valores(posiciones de memoria) de esa manera
estos parámetros permiten modificaciones es decir se consideran como parámetro
de entrada/salida.
I. Procedimientos
Sintaxis :
Donde:
Estructura en un algoritmo :
INICIO
[Declaraciones locales/globales]
___ Invoca al Procedimiento
___
Nomb_Proc (var1, var2, var3, .....)
___
___
FIN
Procedimiento Nomb_Proc (var1: tp_dato, var2: tp_dato,...)
[Declaraciones locales]
Inicio
___
___
Fin
Desarrollo de Problemas
a) Problema #1
Diseñar un algoritmo que mediante un procedimiento permita intercambiar los
valores de 2 números que se ingresan.
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Intercambiar los valores de 2 números.
ii. ¿Qué datos necesito conocer?
Los números que se intercambiaran.
2. Planteamiento Lógico.
Para lograr intercambiar los números se deberá de hacer por medio de una
variable auxiliar, por ejemplo:
X = 5; Y = 7
El intercambio se realizará de la siguiente forma:
AUX = Y
Y=X
X = AUX
Ahora
X = 7; Y = 5
INICIO
Declaración de variables
X, Y: entero
Escribir(‘Ingrese el 1er número a intercambiar:’)
Capturar( X)
Escribir(‘Ingrese el 2do número a intercambiar:’)
Capturar( Y)
Procedimiento Inter(X ,Y)
Mostrar(‘los números intercambiados son:’, X, Y)
FIN
Fundamentos de Programación Pag. 203
Carrera Profesional de Computación e Informática
INICIO
Declaración de variables
X, Y: entero
X, Y
Inter(X, Y)
X, Y
FIN
Declaración de Variables
Dim X As Integer
Dim Y As Integer
b) Problema #2
Desarrolle un algoritmo que permita ingresar 3 números(asumir que todos son
diferentes), luego a cada uno deberá sumarle 10, 20 y 30 al final mostrar cual de
los números fue el mayor, usar un procedimiento para las sumas.
Solución:
1. Análisis.
Los números.
2. Planteamiento Lógico.
La asignación de los valores: 10, 20 y 30 se realizarán mediante un
procedimiento con paso de valores por referencia, para obtener el mayor de
los 3 números usaremos una variable.
Pseudocodigo
INICIO
Declaración de variables
N, M, P, MY: entero
Escribir(‘Ingrese el primer número:’)
Capturar(N)
Escribir(‘Ingrese el segundo número:’)
Capturar(M)
Escribir(‘Ingrese el tercer número:’)
Capturar(P)
Procedimiento Suma(N, M, P)
MY = N
Si (MY < M) entonces
MY = M
Fin_Si
Si (MY < P) entonces
MY = P
Fin_Si
Mostrar(‘El mayor de los 3 números es:’, MY)
FIN
Diagrama de Flujo
INICIO
Declaración de variables
N, M, P, MY: entero
N, M, P
Suma(N, M, P)
MY=X1
MY<X2
MY=X2
MY<X3
MY=X3
MY
FIN
Case Else
KeyAscii = 0
End Select
End Sub
c) Problema #3
Desarrolle un algoritmo que permita ingresar 2 números(se deberá verificar que
deben ser diferentes), luego mediante un procedimiento extraer el 10% de cada
uno de ellos y mostrar finalmente el menor de dichos números, utilizar
parámetros por valor.
Solución:
1. Análisis.
2. Planteamiento Lógico.
Mediante el procedimiento se deberá extraer el 10% a los dos números y
finalmente se deberá verificar cual es el menor de estos.
- Visión Estructurada
Pseudocodigo
INICIO
Declaración de variables
A, B: real
Hacer
Escribir(‘Ingrese el primer número:’)
Capturar(A)
Escribir(‘Ingrese el segundo número:’)
Capturar(B)
Hasta que (A<>B)
Procedimiento Porcentaje(A, B)
FIN
Procedimiento Porcentaje(N: real, M: real)
Inicio
N = 0.1 * N
M = 0.1 * M
Si (M < N) entonces
Mostrar(‘El menor es:’, M)
Sino
Mostrar(‘El menor es:’, N)
Fin_Si
Fin
Diagrama de Flujo
INICIO
Declaración de variables
A, B: real
A, B
A<>B
Porcentaje(A, B)
FIN
Declaración de Variables
Dim A As Integer
Dim B As Integer
Case 13
SendKeys ("{TAB}")
Case Else
KeyAscii = 0
End Select
End Sub
II. Funciones
Son módulos diseñados para realizar una tarea específica. Una función toma
una lista de valores llamados argumentos (o parámetros actuales) y devuelve un
único valor sobre si mismo (en el nombre de la función).
Sintaxis :
Estructura en un algoritmo :
INICIO
Invoca a la Función
[Declaraciones locales/globales]
___
___
Var = Nomb_Función(var1, var2, var3, .....)
___
___
FIN
Función Nomb_Función(par1:tipo1):Tipo
[Declaraciones locales]
Inicio
___
___
Fin
La llamada a una función debe formar parte de una expresión o sentencia. Para
invocar a una función escriba su nombre y entre paréntesis escriba los argumentos de
la función.
Fundamentos de Programación Pag. 215
Carrera Profesional de Computación e Informática
Desarrollo de Problemas
a) Problema #1
Desarrolle un algoritmo que permita calcular y mostrar el promedio de notas
(examen parcial y final) de 100 alumnos; utilice una función para hallar cada
promedio.
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Calcular y mostrar el promedio de 100 alumnos (nota de examen
parcial y final).
ii. ¿Qué datos necesito conocer?
Las notas de los exámenes.
2. Planteamiento Lógico.
El desarrollo es simple, lo único que se requiere conocer son las notas de los
exámenes y proceder a calcular mediante una función los promedios.
- Visión Estructurada
Pseudocodigo
INICIO
Declaración de variables
EP, EF, i, PR: entero
Para i = 1 hasta 100
Escribir(‘Ingrese la nota de Examen Parcial:’)
Capturar(EP)
Escribir(‘Ingrese la nota de Examen Final:’)
Capturar(EF)
PR = Prom(EP, EF)
Mostrar(‘El promedio es:’, PR)
Fin_Para
FIN
Declaración de variables
EP, EF, i: entero
PR: real
Para i=1
Hasta 100
EP, EF
PR = Prom(EP, EF)
PR
FIN
Declaración de Variables
Dim PR As Single
Dim i As Byte
b) Problema #2
En un hotel se cobra por el tipo de habitación que se desea ocupar y el número de
días que se quedará el cliente, según la tabla:
Tipo_Habitación Costo
Simple (SP) 15
Con TV (CT) 25
Con Circuito Cerrado (CC) 40
Los costos son por días; adicionalmente el cliente podrá solicitar algunos
servicios:
Servicio Costo
Desayuno 5
Almuerzo 9
Cena 10
Con los datos anteriores, desarrolle un algoritmo que permita saber cuanto pagará
un cliente si se hospeda en dicho hotel diariamente, teniendo en cuenta el tipo de
habitación y el servicio solicitado, use funciones.
Solución:
1. Análisis.
i. ¿Qué te piden que realices?
Calcular y mostrar el pago que realizará cada cliente que ocupe una
habitación en el hotel.
2. Planteamiento Lógico.
Se deberá ingresar los datos básicos(habitación y servicio) de modo que el
algoritmo por medio de funciones vaya calculando los costos y al final del día
se totalice cuanto deberá pagar el cliente.
- Visión Estructurada
Pseudocodigo
INICIO
Declaración de variables
TH, SER, MH, MS, TOT: entero
Escribir(‘Ingrese el tipo de habitación:’)
Capturar(TH)
Escribir(‘Ingrese el servicio solicitado:’)
Capturar(SER)
MH = Mhab(TH)
MS = Mser(SER)
TOT = Mh + MS
Mostrar(‘El monto a pagar es:’, TOT)
FIN
Diagrama de Flujo
INICIO
Declaración de variables
entero
TH, SER, MH, MS, TOT:
TH, SER
MH = Mhab(TH)
MS = Mser(SER)
TOT = Mh + MS
TOT
FIN
Declaración de Variables
Dim Mh As Byte
Dim Ms As Byte
Dim TOT As Byte
Dim TH As String
c) Problema #3
Diseñe una función que permita hallar el valor de la siguiente función (F(x))
matemática, teniendo en cuenta las restricciones.
2X + 3 .... Si X < 0
F(X) 2 ........... Si X = 0
X-5 .......... Si X > 0
Solución:
1. Análisis.
2. Planteamiento Lógico.
Teniendo en cuenta las restricciones se deberá diseñar la función y empezar a
realizar los cálculos(las restricciones son para los valores de X: <0, =0 y > 0).
INICIO
Declaración de variables
X: entero
Escribir(‘Ingrese el valor de X, para hallar F(x):’)
Capturar(X)
Mostrar(‘El valor de F(x) es:’, ValorFX(X))
FIN
Función ValorFX(N: entero): entero
Inicio
Si (N > 0) entonces
ValorFX = N – 5
Sino
Si (N = 0) entonces
ValorFX = 2
Sino
ValorFX = 2 * N + 3
Fin_Si
Fin_Si
Fin
Diagrama de Flujo
INICIO
Declaración de variables
X: entero
El valor de F(x)
es:’, ValorFX(X)
FIN
ValorFX = 2
Else
ValorFX = 2 * N + 3
End If
End If
End Function