Clase Programación 9

Share Embed Donate


Short Description

Descripción: Clase 9 de Programación, Prof. Gonzalo Müller [email protected], Facultad de Ingeniería, UCV...

Description

Programación

Clase 9. Programación Modular Prof. Gonzalo Müller [email protected]

Facultad de Ingeniería Universidad Central de Venezuela

Clase Anterior

 Algunas aplicaciones numéricas:  Métodos Secuenciales   

Sucesión, Sumatoria y Productoria. Estadística Descriptiva: Media, Varianza, Regresión. Integración: Suma de Riemann.

 Métodos Iterativos 

Solución de una ecuación f(x) = 0: Newton

 Métodos Evolutivos 

Búsqueda del Máximo o Mínimo de f(x): 1 + 1.

 Métodos Iterativos – Reducción de Intervalos  

Solución de una ecuación f(x) = 0: Bisección. Búsqueda del Máximo o Mínimo de f(x): Sección Dorada. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 2

Programación Estructurada Técnica de programación donde:  El algoritmo tiene un solo final.  Toda operación realizada por el algoritmo está definida en un solo bloque.  Todo el algoritmo está construido utilizando las estructuras básicas: Secuencial.  Selectiva.  Repetitiva. 

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 3

Programación Estructurada Ejemplo: Algoritmos estructurados: Sumatoria S=0

Comienzo

k=0

Leer A y B

Leer N

V

S=S+k

A>B

B=A+B

Escribir A

k=k+1 Mientras (k ≤ N)

Escribir B

Escribir S Fin

FIN Programación – Prof. Gonzalo Müller – Clase 9 – GM - 4

F

Programación Estructurada En la programación estructurada se ataca el problema utilizando un solo bloque.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 5

Programación Modular Técnica de programación en la cual se descompone el proceso en pequeños módulos independientes.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 6

Programación Modular Técnica de programación en la cual se descompone el proceso en pequeños módulos independientes.

Divide y Vencerás Programación – Prof. Gonzalo Müller – Clase 9 – GM - 7

Módulos Conjunto de sentencias que realizan una tarea concreta.  Cada módulo se comporta como un subprograma: el cual recibe entradas, realiza un proceso y genera salidas.

Entradas

Módulo

Salidas

Las entradas recibe el nombre de parámetros Programación – Prof. Gonzalo Müller – Clase 9 – GM - 8

Módulos Conjunto de sentencias que realizan una tarea concreta.  Cada módulo se comporta como un subprograma: el cual recibe entradas, realiza un proceso y genera salidas.

Parámetros

Módulo

Salidas Valor utilizado fuera del algoritmo

Resultado Valor utilizado dentro del algoritmo Programación – Prof. Gonzalo Müller – Clase 9 – GM - 9

Módulos

… …

Resultado Valor utilizado dentro del algoritmo



… Mientras (…)

Salidas … FIN

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 10

Valor utilizado fuera del algoritmo

Clases de Módulos

 Reciben parámetros y retorna un resultado. Parámetros

Módulo

Resultado

Ejemplo: 

sqrt(x): recibe un número x y devuelve el resultado de x1/2



pow(x, y): recibe dos número y devuelve xy Programación – Prof. Gonzalo Müller – Clase 9 – GM - 11

Clases de Módulos

 No reciben parámetros y retorna un resultado. Módulo

Resultado

Ejemplo: rand(): devuelve un número aleatorio entre 0 y 32767.  random(): devuelve un número aleatorio entre 0 y 1. 

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 12

Clases de Módulos

 Reciben parámetros y no retorna resultado, pero cumplen un propósito(puede generar salidas). Parámetros

Módulo

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 13

Salidas

Clases de Módulos

 Reciben parámetros y no retorna resultado, pero cumplen un propósito(puede generar salidas). Módulo

Parámetros

Salidas

Ejemplo: 

write(texto): Escribe un texto en salida. Salida C++

write(‘C++

#1’) Programación – Prof. Gonzalo Müller – Clase 9 – GM - 14

#1

Clases de Módulos

 No reciben parámetros y no retorna resultado, pero cumplen un propósito(puede generar salidas). Módulo

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 15

Salidas

Clases de Módulos

 No reciben parámetros y no retorna resultado, pero cumplen un propósito(puede generar salidas). Módulo

Salidas

Ejemplo: 

version(): datos sobre versión de programa. Salida

version()

COLARA versión 1.101

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 16

Tipos de Módulos

 Se agrupan en:  Funciones: realiza una operación y retorna el resultado de la misma. Ejemplo: rand(), sqrt(x), etc.

 Subrutinas o procedimientos: realiza una tarea y regresa a la instrucción siguiente a su llamada, es decir, no generan un resultado. Ejemplo: write(), version(), etc.

Ambos pueden o no recibir parámetros. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 17

Programación Modular Algoritmo  Existe un bloque principal en el cual se encuentran las llamadas a los módulos.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 18

Programación Modular Algoritmo  Existe un bloque principal en el cual se encuentran las llamadas a los módulos.  El algoritmo estará construido con: 

Estructuras: 

Secuenciales.



Selectivas.



Repetitivas.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 19

Programación Modular Algoritmo  Existe un bloque principal en el cual se encuentran las llamadas a los módulos.  El algoritmo estará construido con: 



Estructuras: 

Secuenciales.



Selectivas.



Repetitivas.

Dentro de las estructuras existirán: 

Llamadas a módulos previamente definidos. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 20

Programación Modular

Nombre …

Bloque Principal

… Mientras (…) …

Estructuras Secuenciales, Selectivas, Repetitivas y Llamadas a módulos.

FIN

Ni el bloque principal ni los módulos debe ocupar más de 20 líneas Programación – Prof. Gonzalo Müller – Clase 9 – GM - 21

Representación de Algoritmos Modulares



Definición de una subrutina. PC  Con parámetros: Nombre(parámetro1, parámetro2, …) { … }

 Sin parámetros: Nombre() { … } Programación – Prof. Gonzalo Müller – Clase 9 – GM - 22

Representación de Algoritmos Modulares



Definición de una subrutina. PC  Con parámetros: Nombre(parámetro1, parámetro2, …) { … }

 Sin parámetros: Nombre() ← Los paréntesis permiten diferenciar un módulo del { bloque principal … } Programación – Prof. Gonzalo Müller – Clase 9 – GM - 23

Representación de Algoritmos Modulares DRE  Con parámetros: Nombre(parámetro1, parámetro2, …) … Fin

 Sin parámetros: Nombre() … Fin Programación – Prof. Gonzalo Müller – Clase 9 – GM - 24

Representación de Algoritmos Modulares DF  Con parámetros: Nombre(parámetro1, parámetro2, …)

 Sin parámetros:

Fin

Nombre()

Fin Programación – Prof. Gonzalo Müller – Clase 9 – GM - 25

Representación de Algoritmos Modulares Ejemplo: Construir una subrutina para presentar en la salida el máximo de dos números. Fase 1: Diseño y Análisis: DES, DRE ó DF y LV.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 26

Representación de Algoritmos Modulares 

Definición de una función. PC  Con parámetros: Nombre(parámetro1, parámetro2, …) { … retorna valor }

 Sin parámetros: Nombre() { … retorna valor } Programación – Prof. Gonzalo Müller – Clase 9 – GM - 27

Representación de Algoritmos Modulares DRE  Con parámetros: Nombre(parámetro1, parámetro2, …) … retorna valor

 Sin parámetros: Nombre() … retorna valor Programación – Prof. Gonzalo Müller – Clase 9 – GM - 28

Representación de Algoritmos Modulares DF  Con parámetros: Nombre(parámetro1, parámetro2, …)

retorna valor

 Sin parámetros: Nombre()

retorna valor Programación – Prof. Gonzalo Müller – Clase 9 – GM - 29

Representación de Algoritmos Modulares Ejemplo: Construir una función para calcular el máximo de dos números. Fase 1: Diseño y Análisis: DES, DRE ó DF, LV.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 30

Representación de Algoritmos Modulares

 Llamada a una subrutina. PC  Con argumentos: … Nombre(argumento1, argumento2, …) …

 Sin argumentos: … Nombre() … Programación – Prof. Gonzalo Müller – Clase 9 – GM - 31

Representación de Algoritmos Modulares DRE  Con argumentos:

Nombre(argumento1,argumento2,…)

 Sin argumentos: Nombre() Programación – Prof. Gonzalo Müller – Clase 9 – GM - 32

Representación de Algoritmos Modulares DF  Con argumentos:

Nombre(argumento1, argumento2, …)

 Sin argumentos:

Nombre()

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 33

Representación de Algoritmos Modulares

 Llamada a una función. PC  Con argumentos: … variable = Nombre(argumento1, argumento2, …) …

 Sin argumentos: … Escribir Nombre() … Programación – Prof. Gonzalo Müller – Clase 9 – GM - 34

Representación de Algoritmos Modulares DRE  Con argumentos:

Mientras (Nombre(argumento1, …) ==…)

 Sin argumentos: Variable = Nombre() Programación – Prof. Gonzalo Müller – Clase 9 – GM - 35

Representación de Algoritmos Modulares DF  Con argumentos: Escribir Nombre(argumento1, argumento2, …)

 Sin argumentos: variable = Nombre()

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 36

Representación de Algoritmos Modulares Ejemplo: Construir dos algoritmos para calcular el máximo de dos números que utilicen los módulos desarrollados previamente. Fase 1: Diseño y Análisis: DES, DRE ó DF y LV del Bloque Principal.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 37

Corrida en frío de Algoritmo Principal

Dato 1







Variables

Dato N

Módulo1 (…)









MóduloZ (…)

Condición

1



Llamadas Programación – Prof. Gonzalo Müller – Clase 9 – GM - 38





Condición

M



Condiciones

Salida



Corrida en frío de Subrutinas

Parámetro

1







Parámetro

Dato

W

1





Parámetros





Dato

Condición

N

1





Variables Programación – Prof. Gonzalo Müller – Clase 9 – GM - 39





Condición

M



Condiciones

Salida



Corrida en frío de Funciones

Parámetro

1







Parámetro

Dato

W

1





Parámetros





Dato

Condición

N

1





Variables Programación – Prof. Gonzalo Müller – Clase 9 – GM - 40





Condición

M



Condiciones

Retorno



Corrida en frío de Módulos Ejemplo: Realizar una corrida en frío para el algoritmo principal y módulos del ejemplo anterior.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 41

Programación Modular … Nombre(argumento1,argumento2,…)

Llamada



Nombre(parámetro1, parámetro2, …) … Fin Programación – Prof. Gonzalo Müller – Clase 9 – GM - 42

Definición

Programación Modular … Nombre(argumento1,argumento2,…) 1

… Asigna el argumento al parámetro antes de continuar la ejecución: parametro1 = argumento1

Nombre(parámetro1, parámetro2, …) … Fin Programación – Prof. Gonzalo Müller – Clase 9 – GM - 43

Llamada

Programación Modular … Nombre(argumento1,argumento2,…) … 2 Continua la ejecución el módulo correspondiente

Nombre(parámetro1, parámetro2, …) … Fin Programación – Prof. Gonzalo Müller – Clase 9 – GM - 44

Programación Modular … Nombre(argumento1,argumento2,…) …

3

Nombre(parámetro1, parámetro2, …) … Fin Programación – Prof. Gonzalo Müller – Clase 9 – GM - 45

Ejecuta todas las sentencias del módulo

Programación Modular … Nombre(argumento1,argumento2,…) 4

… Regresa y continua la ejecución el algoritmo principal

Nombre(parámetro1, parámetro2, …) … Fin Programación – Prof. Gonzalo Müller – Clase 9 – GM - 46

Metodología de la Programación Modular

 Diseño Modular del algoritmo  Estructurar la resolución del problema por módulos.  Cada módulo se encarga de resolver una parcialidad del problema.  Cada módulo debe realizar una función especifica y debe ser sencillo e independiente. Divide y Vencerás Programación – Prof. Gonzalo Müller – Clase 9 – GM - 47

Metodología de la Programación Modular  Se debe realizar una descomposición jerárquica, utilizando el diseño top-down o diagramas de estructuras.  Diagramas Top-Down: Son una representación gráfica de la jerarquía existente entre los módulos. 

Cada módulo se representa con un rectángulo.



Existen dos tipos de módulos: 

Primitivos o Terminales: Es independiente.



No Primitivos: Requiere de otros módulos.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 48

Metodología de la Programación Modular  Los módulos debe ser organizados de tal manera que la secuencia de ejecución de los mismo sea de izquierda a derecha. 1. Se desarrolla un bosquejo inicial. Módulo No Primitivo

Programa Inicialización

Entrada

Proceso

Secuencia de Ejecución Programación – Prof. Gonzalo Müller – Clase 9 – GM - 49

Módulo Primitivo

Salida

Metodología de la Programación Modular  Cuando la descripción de la tarea realizada por un módulo no es lo suficientemente sencilla se debe subdividir en varios módulos. 

Se debe subdividir en al menos dos módulos.

2. Se refina paso a paso de forma de enriquecer la jerarquía inicial con niveles adicionales. Programa Inicialización Lectura

Entrada

Validación

Proceso

Tarea 1

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 50

Salida Tarea 2

Metodología de la Programación Modular

Programa Inicialización Lectura

Entrada

Validación

Proceso

Tarea 1

Salida Tarea 2

Bottom-Up

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 51

Metodología de la Programación Modular Ejemplo: Se requiere un programa para obtener las raíces de una ecuación cuadrática. Realizar el diseño, utilizando una descomposición jerárquica.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 52

Metodología de la Programación Modular

 Luego de realizar el diagrama Top-Down, se continua con la construcción del algoritmo el cual se complementa con dos nuevos pasos muy importantes:  Definición de módulos: se desarrolla el algoritmo que define a la subrutina. 

Cada módulo dispone de su propio diagrama.

 Llamada a los módulos: Se pone en ejecución el modulo previamente definida donde sea necesario.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 53

Programación Modular  Algunos módulos clásicos son: 

Módulos de entrada de datos.



Módulos de proceso.



Módulos de presentación de resultados.

 Los módulos se caracterizan por su: 

Acoplamiento.



Cohesión.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 54

Acoplamiento Describe la dependencia de un módulo respecto de otro.  Acoplamiento de zonas: Los módulos manejan los datos de entradas y de salida a través de variables comunes, llamadas variables globales.

Acoplamiento de Alto Nivel

Módulo A Módulo B Datos (Variables

Efecto Colateral

Globales)

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 55

Diagrama de acoplamiento

Acoplamiento  Acoplamiento de datos: Los módulos manejan los datos de entradas y de salida haciendo uso de parámetros. Acoplamiento de Bajo Nivel

Módulo A

Módulo B

Datos (Parámetros)

Datos (Parámetros)

Un buen programa contiene módulos con acoplamiento de bajo nivel, ya que al realizar modificaciones no es necesario preocuparse por el impacto en los otros módulos. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 56

Cohesión Establece como se interrelacionan el conjunto de sentencias y datos que forman al módulo. Cohesión  de Alto Nivel

Cohesión funcional: Todas las sentencias se destinan a llevar a cabo una y solo una sola tarea.



Cohesión secuencial: Los resultados generados por una sentencia son utilizados en la siguiente.



Cohesión en datos: Las sentencias realizan varias tareas a las vez utilizando los mismo datos.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 57

Cohesión 

Cohesión temporal: Las sentencias realizan varias tareas sin importar el orden con distintos datos cuyo significado es el mismo. Por ejemplo: Módulo de inicialización.



Cohesión lógica: Las sentencias realizan una de varias tareas a partir de datos de control. Por ejemplo: Módulo de selección de un menú.



Cohesión coincidental: Las sentencias realizan varias tareas sin relación alguna.

Cohesión de Bajo Nivel

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 58

Programación Modular

Un buen programa contiene módulos con cohesión de alto nivel, donde sus sentencias y datos se interrelaciona fuertemente entre sí y no depende de otros módulos, ya que es más sencillo realizar modificaciones cuando éstos se destina a realizar funciones especifica. Un módulo debe tener una o pocas responsabilidades de lo contrario debería dividirse en varios para facilitar una fuerte cohesión.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 59

Acoplamiento de datos básico El bloque principal se construye solo con los bloques terminales del diagrama Top-Down y módulos solo deben poseer parámetros de entrada. Bloque Principal Programa Inicialización Lectura

Entrada

Validación

Proceso Tarea 1

Salida Tarea 2

Bloques Terminales

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 60

Acoplamiento de datos básico El bloque principal se construye solo con los bloques terminales del diagrama Top-Down y módulos solo deben poseer parámetros de entrada. Bloque Principal Programa Inicialización Lectura

Salida

Validación

Tarea 1

Tarea 2

Bloques Terminales

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 61

Acoplamiento de datos básico

 Subrutinas:



 Pueden recibir Valores o Parámetros de Entrada.  No retorna resultado, pero realizar una operación dada. 

Utilizadas usualmente para presentación de datos en pantalla.

 Funciones:

… 1

 Pueden recibir Valores o Parámetros de Entrada.  Retorna 1 resultado. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 62

Acoplamiento de datos básico Ejemplo: Construir el algoritmo modular con acoplamiento de datos básico para obtener las raíces de una ecuación cuadrática.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 63

Metodología de la Programación Modular

 Tabla de Módulos: Una vez desarrollados los algoritmos de todos los módulos es de utilidad para la posterior implementación en el lenguaje construir una tabla donde se listen todos los módulos, sus tipos y parámetros. Modulo Parámetros Nombre del Lista de módulo parámetros

Retorno Valor retornado

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 64

Tipo Subrutina o Función

Metodología de la Programación Modular Ejemplo: Construir la tabla de módulos del algoritmo anterior.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 65

Programación Modular

 Reutilización: Separa en un módulos los procesos que se repita más de una vez el programa.  Disminuye el tamaño del programa. Ejemplo: La lectura de un punto (X, Y)

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 66

Programación Modular

 Reutilización: Separa en un módulos los procesos que se repita más de una vez el programa.  Disminuye el tamaño del programa. Ejemplo: La lectura de un punto (X, Y)

 Facilita las modificaciones y localización de errores: Se comprueba o modifica de forma individual cada uno de los módulos.

Programación – Prof. Gonzalo Müller – Clase 9 – GM - 67

Programación Modular

 Reutilización: Separa en un módulos los procesos que se repita más de una vez el programa.  Disminuye el tamaño del programa. Ejemplo: La lectura de un punto (X, Y)

 Facilita las modificaciones y localización de errores: Se comprueba o modifica de forma individual cada uno de los módulos.

 Reduce el tiempo de desarrollo: Se reparte la construcción de los módulos entre diferentes equipos de trabajo. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 68

Ejercicios a) Definir un módulo para: 1) Establecer el mínimo de dos valores. 2) Determinar la distancia entre 2 maquinas. 3) Calcular f(x) = sen(2*x)+x4. 4) Determinar si un número entero es par. 5) Establecer el signo de un valor (-1, 0, 1). Fase 1: Diseño y Análisis: DES, DRE ó DF, LV y CF del Módulo. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 69

Ejercicios b) Partiendo de los módulos creados anteriormente construir un algoritmo modular para: 1) Establecer el menor de 3 valores. 2) Determinar las distancias entre 3 maquinas. 3) Calcular f(x) = sen(2*x)+x4 para N puntos. 4) Contar la cantidad de números pares de N datos. 5) Establecer si 2 valores tienen el mismo signo. Fase 1: Diseño y Análisis: DES, DRE ó DF, LV y CF del Bloque Principal. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 70

Ejercicios c) Construir un algoritmo modular para: 1) Calcular el factorial de N números. 2) Dado un conjunto de N números, establecer cuales son números compuestos. 3) Promediar los pares y promediar los impares de los números entre A y B. 4) Dado N intervalos, calcular la sumatoria de los números que contiene cada intervalo. Fase 1: Diseño y Análisis: DES, DTD DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF del Bloque Principal. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 71

Ejercicios c) Construir un algoritmo modular para: 5) Dado un conjunto de puntos en R2 por el usuario determinar cuales se encuentra por encima, por debajo y sobre una recta dada por el usuario. 6) Encontrar por Newton 1 solución para f(x) = 0. 7) Encontrar 1 Mínimo de f(x) por 1+1. Fase 1: Diseño y Análisis: DES, DTD DES, DRE ó DF y LV de Módulos y TM. DRE ó DF, LV y CF del Bloque Principal. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 72

Resumen

 Programación estructurada.  Programación modular.  Algoritmo: Bloque principal, llamadas, 20 líneas.  Módulos.  Clases.  Tipos: Subrutinas y Funciones.  Representación de Algoritmos Modulares  Definición: subrutinas, funciones.  Llamada: subrutinas, funciones. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 73

Resumen

 Metodología de la Programación Modular  Diseño Modular: Diagrama Top-Down.  DRE, DF, PC y CF.  Tabla de Módulos.  Características: Acoplamiento y Cohesión.  Acoplamiento de datos básico.  Solo bloques terminales del DTD.  Subrutinas: No generan resultado.  Funciones: Generan 1 resultado.

 Beneficios: reutilización, cambios, errores y tiempo. Programación – Prof. Gonzalo Müller – Clase 9 – GM - 74

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF