16 sept 2015

UNIDAD 2: CONCEPTOS DE DISEÑO ESTRUCTURADO

UNIDAD 2: CONCEPTOS DE DISEÑO ESTRUCTURADO




1. Introducción
Las técnicas para facilitar el entendimiento del problema son:
v  El diseño TOP-DOWN (de arriba hacia abajo)
v  Los diagramas de estructura
v  Los diagramas de flujo
v  El pseudocódigo

2. Conceptos de Diseño Estructurado
Las características del diseño estructurado son:
v  Tiene una entrada y una salida con variaciones ocasionales
v  Utiliza programación modular
v  Elimina el uso de la sentencia GOTO.

3. Diseño Top Down (refinamiento “paso a paso”)
El diseño top down, que implica ir de lo más general a lo más específico, es el proceso de dividir un problema en subproblemas más pequeños.

Para entender el diseño top down vea el siguiente problema:

Se le ha solicitado que escriba un programa para una tienda de videos. El objetivo del programa es permitir que un cliente registrado en la tienda alquile videos.

La tienda tiene un conjunto de reglas que deben cumplirse para que un cliente alquile
un video, las cuales son:
v  El cliente es un miembro registrado
v  No tiene ningún alquiler vencido
v  No debe nada a la tienda
v  La película está en el inventario
v  La película no está reservada

Un programa de alto nivel será:
v  Alquilar un video.

Al descomponer este programa de alto nivel, se obtienen los siguientes sub-programas:
v  Verificar si el cliente es un miembro registrado
v  Verificar los alquileres vencidos
v  Verificar si el miembro debe algún dinero
v  Verificar si la película está en el inventario
v  Verificar si la película ha sido ya reservada

Al descomponer de nuevo, cada uno de los pasos anteriores, se obtiene:

1. Verificar si el cliente es un miembro registrado:
v  Ingresar el número de teléfono u otra identificación del cliente en el sistema
v  Leer la pantalla para ver si el sistema ha encontrado un perfil que coincide

2. Verificar los alquileres vencidos:
v  Ver si el perfil refleja cualquier alquiler vencido en el sistema

3. Verificar si el miembro debe algún dinero:
v  Ver si el perfil refleja algún cargo pendiente

4. Verificar si la película está en el inventario:
v  Ingresar el nombre de la película al sistema
v  Verificar si hay alguna copia que no está alquilada

5. Verificar si la película ha sido ya reservada:
v  Ver si las copias que no están alquiladas no están reservadas.

De nuevo, al descomponer el sub-programa "Verificar si el cliente es un miembro registrado"

1.1. Verificar si el cliente es un miembro registrado
v  Preguntar el número de teléfono u identificación al cliente

1.2. Ingresar el número de teléfono en el sistema:
v  Seleccionar del menú la opción de verificar el número de miembro
v  llenar el número de teléfono del cliente en el prompt
v  Presionar la tecla que indica al sistema que se está listo para que éste verifique por un número que coincida con el que se ha ingresado

1.3. Leer la pantalla para ver si el sistema ha encontrado alguna coincidencia
v  Visualmente, verificar si el sistema dice que 'sí' o 'no' es un miembro.

 4. Diagramas de Estructura
Es una manera gráfica de representar el diseño top down. Nos Permite representar en forma clara la organización de alto nivel de un programa.

Un diagrama de estructura parcial del ejemplo anterior:
 




Diagrama de Estructura del Problema Anterior

5. Diagramas de Flujo
Es una representación gráfica de la lógica del diseño. Generalmente, está a un nivel de detalle más bajo que los diagramas de estructura. Un diagrama de flujo resulta adecuado cuando se desea seguir bajando a un nivel con mayor detalle, tal como agregar bifurcación de condicionales y/o iteración.

5.1 Símbolos





5.3 Metodología para resolver un problema con diagramas de flujo


6. Diagramas N-S O de Nassi-Schederman:
Es una forma de representación semejante al diagrama de flujo, pero sin flechas y cambiando los símbolos de condición y repetición. Está conformado por una serie de cajas de procesos que constituyen las secuencias de acciones necesarias para presentar el algoritmo. Las cajas de proceso o acción van unidas entre sí. Los Diagramas N-S son muy útiles para representar diagramas estructurados.
Representación de Condiciones:
Condición









Estructuras Repetitivas:









6.1          Ejemplo de Diagrama N-S o de Nassi-Schederman
Se presenta a continuación de nuevo el problema de determinar el producto de un conjunto de enteros representada la solución con un diagrama de N-S.
INICIO
p=1
Leer num
Mientras (num >= O)
INICIO
p=1
Leer num
Mientras (num >= O)
 

P = P x num
Leer num
Escribir p
FIN
 

P = P x num
Leer num
Escribir p
FIN

Figura 2.4: Diagrama de NS para el Cálculo del Producto de Enteros

7. Pseudocódigo
El Pseudocódigo es un lenguaje de documentación de programas similar al inglés (o español) que se parece a cualquier lenguaje de programación de alto nivel, pero no necesita seguir ninguna regla específica, como si lo requieren los programas que van a ser traducidos o compilados. El pseudocódigo normalmente no es muy específico para las áreas de E/S.
El pseudocódigo tiene la ventaja que se puede crear fácilmente con cualquier editor de texto. No hay ningún estándar en la industria definido para los pseudocódigos.

Un ejemplo de pseudocódigo parecido a PL/I, se muestra a continuación:
do while(count = O )
do process
count = count - 1
end
Un ejemplo de pseudocódigo parecido a COBOL:
perform until count = O
perform process
subtract 1 from count
end-perform

El pseudocódigo también puede utilizar una serie de palabras claves o palabras especiales que van indicando lo que significa el algoritmo.

Ejemplo de palabras claves en pseudocódigo:
1.       Inicio y Fin: Por donde empieza y termina el algoritmo.

2. Si <condición>
Entonces <acciones>
    Sino <acciones>

3.       Mientras <condición> hacer

4.       Repetir / hasta <condición>


5.       Desde / hasta

6.       Según sea (Para evaluar opciones múltiples)

Los comentarios van encerrados entre llaves.
Hay que utilizar la identación.

La estructura recomendada para los algoritmos en pseudocódigo es:

Algoritmo <nombre algoritmo>
Var
<nombre>: <tipo>
Inicio
<Instrucciones>
Fin

8. Programación Modular
Cuando se trabaja con programas grandes se hace difícil:
v  Desarrollar la lógica
v  Escribir el código
v  Probar totalmente el código
v  Realizar el mantenimiento


La solución para esto es usar la programación modular.
La programación modular rompe el programa en unidades o módulos más pequeños y manejables. Estas unidades más pequeñas se llaman subprogramas, procedimientos o funciones dependiendo del lenguaje que se esté usando.

El ejemplo de la Tienda de video representado en forma modular se presenta en la siguiente Figura.















Representación de la Programación Modular de la Tienda de video

1 comentario:

  1. HOLA, PORDRIA USTED RECOMENDARME UNA PAGINA O LIBRO DONDE PUEDA ENCONTRAR LA HISTORIA DE LA ESTRUCTURA DE DATOS?
    LE AGRADECERIA MUCHO SU AYUDA

    ResponderEliminar