of 19 /19
MODULARIDAD Procedimientos (Procedures) Funciones (Function) Elab. Ing. Anaida Escalona Colab. Ing. Fidel Montesdeoca

Unidad III

Embed Size (px)

Text of Unidad III

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.
  • Un mdulo puede ser:
          • Un programa
          • Una funcin
          • Una subrutina (Procedimiento o Funcin)

4. Modularidad

  • Ventajas
  • 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)
  • Desventajas
  • La programacin modular requiere ms memoria y tiempo de ejecucin.
  • Notas:
  • 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

  • Reglas
  • 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 *)
  • BEGIN
  • (* Cuerpo del Procedimiento *)
  • END;
  • Llamada del procedimiento
  • Nombre_Procedimiento (Lista de Parmetros Efectivos o Actuales);
  • Nota:
  • 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

  • Variable Global:
  • Aquella que est declarada en la seccin de declaracin del programa principal.
  • Estas variables pueden ser utilizadas y modificadas en cualquier parte del programa.
  • Variable Local:
  • 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.
  • Nota:
  • 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.
  • Ejemplos:
  • Declaracin:
  • PROCEDURE MiEjemplo(VAR A,B: REAL; C,D : INTEGER; VAR E : CHAR);
  • Llamada
  • X, Y : REAL;
  • M : INTEGER;
  • Siguiente : 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 *)
  • BEGIN
  • (* Cuerpo del Procedimiento *)
  • Nombre_Funcion := Expresin;
  • END;
  • Llamada de la funcin
  • Valor := Nombre_Funcion (Lista de Parmetros Efectivos o Actuales);
  • Nota:
  • 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.
  • Retornan un nico valor
  • 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:
  • Consumo (m3)Pts/m3
  • Primeros 10030
  • De 100 a 50040
  • De 500 a 100060
  • Ms de 1000100
  • 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.