diseño modular top-downymoyao.cs.buap.mx/admin/archivos/modular7 metodo.pdfdeclaración de...
TRANSCRIPT
![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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/13.jpg)
Á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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.co/reader034/viewer/2022042113/5e9009a613625e5bd324808e/html5/thumbnails/31.jpg)
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.