Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de...

31
M.C. Yolanda Moyao Martínez 1 Diseño Modular Top-Down

Transcript of Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de...

Page 1: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

M.C. Yolanda Moyao Martínez 1

Diseño ModularTop-Down

Page 2: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Desventajas Diseño Tradicional.

• Rigidez e inflexibilidad de los algoritmos

• Pérdida excesiva de tiempo en la corrección de errores.

• Documentación deficiente e ineficiente, incluso mala

• Imposibilidad de reutilizar el pseudocódigo o fragmentos del mismo en proyectos futuros

Page 3: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

M.C. Yolanda Moyao Martínez 3

Top Down

El problema complejo es dividido en subproblemas más pequeños o más fáciles de resolver.

Cada problema se resuelve por una función o modulo.

Si algún subproblema, aún es demasiado complejo, éste es dividido a su vez, en subproblemas, y así sucesivamente

Page 4: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

Page 5: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ventajas Top-Down

Construcción del programa (son + pequeños)

Depuración del programa (aísla errores).

Facilidad para la legibilidad.

Aísla las modificaciones.

Eliminación de redundancia.

Page 6: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ventajas

Crear grandes programas de forma sencilla.

Ayuda a que un programa sea más fácil de modificar.

Pruebas separadas.

Reutilización.

Mayor comprensión.

Page 7: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

M.C. Yolanda Moyao Martínez 7

Características

Permiten dividir un problema en subproblemas mas fáciles de realizar y mantener.

Todo algoritmo consta de al menos un módulo

Page 8: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

M.C. Yolanda Moyao Martínez 8

Son bloques desentencias con los quese construyen Algoritmos

Modulo

Page 9: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

M.C. Yolanda Moyao Martínez 9

Flujo de Control de llamado

Principal()

Inicio

m1()

….

m1()

Regresa()

Fin_Principal

m1()

Inicio

m2()

….

Regresa()

Fin_m1

m2()

Inicio….

Regresa()

Fin_m2

Page 10: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Definición de módulo

tipo nombre([,argumentos])

Inicio

[declaraciones]

sentencias

Regresa([expresión])

Fin_nombre

Page 11: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Encabezado

Tipo: El tipo del valor devuelto

Nombre: Identificador válido

Argumentos: Declaraciones separadas por , de argumentos que recibe la función.

Nota: si no recibe ni devuelve no se coloca nada

Page 12: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Cuerpo del módulo

Sentencia compuesta que define lo que hace el modulo.

Puede contener declaraciones de variables utilizadas en dichas sentencias. Estas variables, por defecto son locales al modulo.

Regresa([expresión]) se utiliza para devolver el valor del modulo

Page 13: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ámbito de las variables

Desde el punto de un módulo las variables pueden ser locales o globales:

Variables locales se declaran dentro de un módulo y sólo tienen utilidad dentro de ese módulo.

Page 14: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Variables globales

Son declaradas de forma que puedan ser utilizadas (consultada y/o modificada) desde cualquiera de los módulos que forman el algoritmo.

En este caso, no puede haber dos variables con el mismo nombre(local y global)

Nota: tienen prioridad las locales

Page 15: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

Ejemplo:

variables: x 20 de tipo entero

escribe_x()

Inicio

Escribir(“ El valor de x (Global) es = “,x) coment: x=20

Regresa()

Fin_escribe_x

Modulo_Principal ()

Inicio

variables: x 12 de tipo entero

escribe_x() coment: Escribe el Valor de x = 20

Escribir(“El valor de x (Local) es = “,x) coment: x=12

Regresa()

Fin_Principal

Page 16: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

letrero() No recibe

Inicio

coment: no variable locales

Escribir(“ Este es un modulo simple”)

Regresa() coment: no devuelve

Fin_letrero

No devuelve

Page 17: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

checa_num(entero i) Si recibe

Inicio coment: No variables locales

si (i>0) entonces

Escribir(“ i es positivo”)

si_no

Escribir(“ i es negativo”)

Regresa() coment: no devuelve

Fin_checa_num

No devuelve

Page 18: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

entero suma(entero a, entero b) Recibe enteros

Inicio

entero valor coment: variable local

valor a+b

Regresa(valor) coment: devuelve

Fin_suma

Devuelve entero

Page 19: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Llamado

Se hace mediante su nombre con los argumentos entre paréntesis.

Generalmente se asigna el valor del modulo a una variable del mismo tipo de esta.

Page 20: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

Principal()

Inicio

entero res, x 7, y 8

letrero(); coment: no devuelve ni recibe

checa_num(10); coment:no devuelve

res suma (5,10) coment: recibe y devuelve

Escribir(“La suma es : “,res)

Escribir(“La suma es : “, suma(x,y))

Regresa()

Fin_Principal

Page 21: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Declaración de prototipo

Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo que va en la declaración de variables.

Es necesario hacer una declaración forward cuando se hace el llamado del modulo antes de haberlo definido.

Page 22: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

Principal()

Inicio

coment: declaración de un modulo prototipo

variables:

real escribe(real x, entero y)

real r, a 3.14

entero b 5

r = escribe(a,b) coment: llamada al modulo

Escribir(“el resultado es “,r)

Regresa ()

Fin_Principal

coment: definición del modulo

real escribe(real x, entero y)

Inicio

Regresa( x + y * 13 )

Fin_escribe

Page 23: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Paso de parámetros

Por valor

El módulo (o subalgoritmo) recibe sólo una copia del valor que tiene el dato

No la puede modificar.

Sintaxis:

tipo nombre_módulo(tipo d1, tipo d2)

Page 24: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Por referencia

Se pasa la posición de memoria donde esta guardado el dato

El módulo puede saber cuánto vale, pero además puede modificar el valor del dato.

Page 25: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Sintaxis: Definición

tipo nombre_módulo(tipo var d1, tipo var d2)

Sintaxis. Llamado

nombre_módulo(dir d1, dir d2)

Dirección

Dirección

Page 26: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo:Intercambia por valor

Ordena (entero p, entero q)

Inicio

Variables:

tmp de tipo entero

Si (p>q) Entonces

tmp p

p q

q tmp

Fin_si

Regresa()

Fin_Ordena

Page 27: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo:Intercambia por referencia

Ordena1(entero var p, entero var q)

Inicio

Variables: tmp de tipo entero

Si (var p > var q) Entonces

tmp var p

var p var q

var q tmp

Fin_Si

Regresa()

Fin_Ordena1

Page 28: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo

Coment: módulo sumar

entero sumar(entero a, entero b, entero var r)

Inicio

b b + 2

var r = a + b

Regresa()

Fin_sumar

Principal()

Inicio

entero v 5, res 0

res sumar(4*v,v, dir res) coment: llama al módulo

Escribir(res) coment: imprime 27

Escribir(v) coment: imprime 5

Regresa()

Fin_Principal

Page 29: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo: Pasar una cadena

entero cadena(caracter var cad)

Inicio

variables: i de tipo entero

para(i 1 hasta i<LenC(cad) Paso 1)

cad[i] '.‘

Fin_Para

Regresa()

Fin_cadena

Principal ()

Inicio

variables: nif[] "hola todos“ de tipo caracter

cadena(nif) coment: llamo a modulo cadena

EscribirC(nif)

Regresa()

Fin_Principal

Page 30: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Ejemplo: Pasar vector

entero vec(entero var num, entero tam)

Inicio

variables: i de tipo entero

Para(i 1 hasta tam Paso 1)

num[i] num[i]*2

Fin_Para

Regresa()

Fin_vec

Principal ()

Inicio

variables: i de tipo entero

n[]={1,2,3,4,5} de tipo entero

vec(n,5) coment: llamo al modulo vec

Para(i 1 hasta 5 Paso 1)

escribir(“los números son’”,n[i])

Fin_Para

Regresa()

Fin_Principal

Page 31: Diseño Modular Top-Downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfDeclaración de prototipo Un modulo prototipo tiene la misma sintaxis que el encabezado de un modulo solo

Práctica: Diseñar

Un algoritmo que llame a un módulo el cual debe contar cuantos números pares y cuántos impares hay en el vector.

Un algoritmo que llame a un módulo el cual debe contar cuantos números primos hay en el vector.