1. MODULARIDAD Procedimientos (Procedures) Funciones (Function)
Elab. Ing. Anaida Escalona Colab. Ing. Fidel Montesdeoca 2.
Modularidad
- La modularidad se basa en ladescomposicin de un problemaen una
serie de subproblemas; dividindolo en mdulos que resultan de
segmentar el problema en funciones lgicas.
- Se considera la programacin estructurada como la programacin
que se hacepor mdulos . Cada mdulo realiza alguna tarea especfica y
cuando se necesite esa tarea simplemente se hace el llamado a ese
mdulo.
- Como cada modulo es independiente del resto, las relaciones
entre estos se realiza a travs deinterfacesbien definidas.
3. Modularidad
- Mdulo :Est constituido por una o variasinstruccionesfsicamente
contiguas y lgicamente encadenadas, las cuales se pueden
referenciar mediante unnombrey pueden serllamadasdesde diferentes
puntos de un programa.
-
-
-
-
- Una subrutina (Procedimiento o Funcin)
4. Modularidad
- Un programa modular es fcil de mantener y modificar.
- Un programa modular es ms fcil de escribir y depurar (ejecutar,
probar y poner a punto).
- Un programa modular es ms fcil de controlar.
- Posibilita el uso de la reutilizacin de mdulos en otros
programas (Libreras)
- La programacin modular requiere ms memoria y tiempo de
ejecucin.
- Debe nombrarse con mucho cuidado y deben ser significativos de
su finalidad, para facilitar la lectura del cdigo fuente y su
comprensin.
- Cuando su finalidad sea muy compleja, se recomienda utilizar
ternas de tres letras para nombrarlas, y se puede utilizar el
smbolo _ para concatenarlas.
5. Modularidad
- Cada subprograma deber ejecutar solo una tarea.
- Cada subprograma debe comunicarse con tan pocos como sea
posible.
- Deben intercambiar la menor informacin posible.
- Cada subprograma deber ocultar algo , es decir, que toda la
informacin de un mdulo debe ser privada al mdulo, a menos que se
haya declarado especficamente como global o sea de la
interfase.
6. Procedimientos
- Son mdulos de programas que pueden realizar una tarea y no
retornar ningn valor o retornar mas de uno.
- Declaracin de un Procedimiento
- PROCEDURE Nombre_Procedimiento (Lista de Parmetros
Formales);
- (* Seccin Local de Declaracin *)
- (* Cuerpo del Procedimiento *)
- Llamada del procedimiento
- Nombre_Procedimiento (Lista de Parmetros Efectivos o
Actuales);
- Las variables declaradas en la seccin local de declaracin solo
esta definido durante la ejecucin de la funcin.
- Los Procedimientos Predeterminados se pueden llamar siempre y
cuando se incluyan las libreras en la seccin USES.
7. Variables
- Aquella que est declarada en la seccin de declaracin del
programa principal.
- Estas variables pueden ser utilizadas y modificadas en
cualquier parte del programa.
- Aquella que est declarada y definida dentro de una funcin o
procedimiento.
- Solo son reconocidas en el procedimiento o funcin donde se haya
declarado y en ninguna otra parte del programa se puede hacer uso
de ella.
- Debe nombrarse las variables con mucho cuidado y deben ser
significativos de su finalidad para mejorarla lecturadel cdigo
fuente y sucomprensin .
- Las variables globales deben utilizarse lo menos posible ya que
disminuyen la interfase entre los mdulos.
8. Parmetros
- Parmetros Actuales o Efectivos
- Son los datos (Parmetros) que se le envan al procedimiento o
funcin para que realice determinada tarea. A cada parmetro efectivo
se le asocia un parmetro formal.
- Lista de Parmetros Formales:
- Son los datos recibidos cuando se realiza la llamada a un
procedimiento o funcin. Se especifican los parmetros formales y sus
tipos.
- Variables:Parmetros que se pueden modificar en el procedimiento
y se modifica su correspondiente parmetro efectivo o actual. Debe
colocarse la palabra reservada VAR.
- Valor:Parmetros que se pueden modificar en el procedimiento y
NO se modifica su correspondiente parmetro efectivo.
- Nota:Uso de Parmetros de Valor y Variable ( Tiempo de
Procesamiento y Consumo de Memoria Vs Proteccin ).
9. Uso de Parmetros
- Reglas de Correspondencia de la Lista de Parmetros
- Debe haber el mismo numero de parmetros efectivos que
formales.
- Para los parmetros de variables, su correspondiente formal y
efectivo deben ser del mismo tipo.
- Para los parmetros de valor, su correspondiente formal y
efectivo deben ser de tipo compatible.
- Un parmetro efectivo que corresponda a un parmetro formal de
variable debe ser una variable.
- PROCEDURE MiEjemplo(VAR A,B: REAL; C,D : INTEGER; VAR E :
CHAR);
- MiEjemplo (M, Y, M+3, 10, Siguiente);
- MiEjemplo (10, Y, M, M, Siguiente);
- MiEjemplo (Y, X, 35, M DIV 10, Siguiente);
10. Uso de Parmetros Ejemplos: Declaracin: PROCEDURE
MiEjemplo(VAR A,B: REAL; C,D : INTEGER; VAR E : CHAR); Llamada X, Y
: REAL; M : INTEGER; Siguiente : CHAR; MiEjemplo (M, X, 30, 10,
Siguiente); El tipo de M no es real MiEjemplo (X, Y, M, 10); La
lista de parmetros est incompleta MiEjemplo (35.1, Y, M, 10,
Siguiente);La constante real 35.1 no es una variable MiEjemplo (X,
Y, M, M/10, Siguiente); El tipo de M/10 es real MiEjemplo (A, B,
30, 10, Siguiente); Las variables A y B no estn declaradas 11. Uso
de Parmetros Ejemplos de Declaraciones: PROCEDURE MiEjemplo (VAR
A,B: REAL, C,D : INTEGER, VAR E : CHAR); PROCEDURE MiEjemplo (VAL
A,B: REAL; C,D : INTEGER; VAR E : CHAR); PROCEDURE MiEjemplo (VAR
A,B; C,D : INTEGER; VAR E : CHAR); PROCEDURE MiEjemplo (A: 111999;
C : INTEGER); 12. Funciones Definidas por el Programador
- Son mdulos de programas que pueden realizar una tarea retornan
un valor.
- Declaracin de una Funcin:
- FUNCTION Nombre_Funcion (Lista de Parmetros
Formales):Tipo_Resultado;
- (* Seccin Local de Declaracin *)
- (* Cuerpo del Procedimiento *)
- Nombre_Funcion := Expresin;
- Valor := Nombre_Funcion (Lista de Parmetros Efectivos o
Actuales);
- Las variables declaradas en la seccin local de declaracin solo
esta definido durante la ejecucin de la funcin.
- Las Funciones Predeterminadas se pueden llamar siempre y cuando
se incluyan las libreras en la seccin USES.
13. Diferencias Entre Procedimientos y Funciones
- Se le asigna un valor al nombre de la funcin.
- No se le asigna un valor por lo tanto no tiene tipo.
- El su llamada realiza una evaluacin del valor retornado o una
asignacin.
- El su llamada no se realiza una evaluacin o asignacin
- Los parmetros formales deben ser de tipo valor
- Los parmetros formales pueden ser de valor y/o variables.
- Pueden no retornar valor o retornar varios valores
FUNCIONES PROCEDIMIENTOS 14. Funciones Predefinidas Son
proporcionadas por el lenguaje. Genera nmeros aleatorios.Ej. Random
devuelve un nmero entre 0 y 1. Random(5) devuelve un valor entre 0
y 4 . Random() Es igual a x := x n Dec(X,n) Es igual a x := x 1
Dec(X) Decrementa un valor de tipo ordinal. Dec() Es igual a x := x
+ n Inc(X,n) Es igual a x := x + 1 I nc(X) Incrementa un valor de
tipo ordinal. Inc() Redondea un nmero real al entero mas prximo.
Ej. Round(12.9) devuelve 13. Round() Devuelve la parte entera de un
nmero real. Ej. Int(4.29) devuelve el real 4. Int() Devuelve la
parte decimal de un nmero Real. Ej. Frac(4.29) devuelve 0.29 Frac()
15. Estructura de una Unidad en Delphi unitUnit1; Interface uses {
Lista de unidades } type{ Lista de tipos definidos por el usuario }
{ Luego encabezado de los procedimientos y funciones de los
objetos} var { variables visibles desde afuera } implementation
uses { lista de unidades usadas localmente }var { variables
visibles solo localmente } { Luego implementacin de los
procedimientos y funciones declaradas en interface ms otras las del
programador} Procedure NombreProcedimientoProgramador; Function
NombreFuncionProgramador:TipoRetorno; Initialization { cdigo de
inicializacin antes de ejecutarse} finalization; { cdigo de
finalizacin despus de ejecutarse} end . 16. Ejercicios
- Implemente un programa modular que, leyendo de teclado los
valores necesarios, muestre por pantalla el rea de un crculo, un
cuadrado, un tringulo.
- Implemente un programa modular que muestre el precio de un
equipo informtico (con y sin iva) compuesto por pantalla, teclado,
ratn, 2 disco duro de 1.28 Gb, 1Gb de memoria RAM, un procesador,
una tarjeta de red, una tarjeta de video y una tarjeta de sonido.
El precio de cada componente se debe leer de teclado.
- Implemente un programa modular que, leyendo el nombre de N
alumnos y la nota obtenida por cada uno en una asignatura, muestre
por pantalla la media de las notas.
- Escribir un programa que solicite al usuario la longitud de los
tres lados de un triangulo. El programa debe mostrar si el
triangulo es equiltero, issceles o escaleno. Se emplea un
procedimiento que tiene como entrada los lados del triangulo y como
salida una variable de tipo enumerado que indica si el triangulo es
equiltero, issceles o escaleno.
17. Ejercicios
- Desarrollar un programa que pide por teclado dos valores
enteros. Y muestre en pantalla la suma de todos los enteros que hay
entre los dos nmeros introducidos por teclado. Emplear para ello un
procedimiento que calcule dicha suma .
- Desarrollar un programa que dado un nmero entero determine y
muestre por pantalla si dicho nmero es o no primo. En caso de no
serlo, se mostrarn por pantalla todos sus divisores y el nmero
primo ms cercano a l. Para ello: se emplear una funcin que
determine si un nmero es primo o no, un procedimiento para calcular
y mostrar en pantalla todos los divisores de un nmero, y otra
funcin para obtener el primo ms cercano a otro dado. Las cabeceras
de las funciones y procedimientos son las siguientes:
- function primo (numero:integer):boolean;
- procedure calcular_divisores (numero:integer);
- procedure primo_mas_cercano (numero:integer; var
primo:integer)
18. Ejercicios
- Desarrollar un programa que llame a un procedimiento o funcin
que calcule el factorial de un nmero natural pasado como parmetro,
en forma iterativa. Realizar todas las validaciones que considere
necesarias .
- Escribir una funcin que determine si un ao es bisiesto. Son
bisiestos los aos divisibles entre 4 y si es divisible entre 100
debe ser tambin divisible entre 400.
- Sabiendo que el mximo comn divisor de dos nmeros X e Y tiene
las siguientes propiedades:
- Si X>Y entonces m.c.d(X,Y)=m.c.d.(X-Y,Y)
- Si Y>X entonces m.c.d.(X,Y)=m.c.d(X,Y-X)
- Si X=Y entonces m.c.d.(X,Y)=X
- implementar una funcin que calcule el mximo comn divisor de dos
nmeros dados como parmetros de una funcin. El m.c.d. debe ser el
valor de retorno de la funcin.
19. Ejercicios
- Se decidi poner en prctica un sistema de cobro de agua que
penalizara el consumo excesivo de la forma que se indica en la
tabla siguiente:
- Escribe un subprograma que dados unos metros cbicos consumidos
devuelva el coste de agua total. Tener en cuenta que en la tabla se
indica lo que hay que cobrar por los metros cbicos que se
encuentran en el intervalo. As si hemos consumido 750m3 deberamos
pagar:
- 100*30 + 400*40+250*60 = 34000pts.