2. La descomposición de un programa en módulos
más pequeños se conoce como el método de
divide y vencerás (divide and conquer) o diseño
descendente (top-down). Consiste en dividir un
problema en unidades más pequeñas sucesivas
hasta que sean directamente ejecutadas, en otras
palabras, la solución del problema se divide una y
otra vez hasta que esté expresada en términos de
estructuras de control, cada uno de los niveles o
pasos sucesivos se conoce como refinamiento
DISEÑO DESCENDENTE
3. La metodología del diseño descendente
consiste en efectuar una relación entre las
etapas de estructuración de manera que se
relacionen entre sí a través de entradas y
salidas de datos. Es decir, se descompone el
problema en etapas de estructuración
jerárquicas, de forma que se pueda considerar
cada estructura desde dos puntos de vista:
¿qué hace? y ¿cómo lo hace?
4. El método consiste en resolver el problema separándolo
en distintos niveles de abstracción.
No se debe de intentar pasar directamente del problema
a instrucciones de ordenador.
• Se plantea el problema a resolver con términos del
problema mismo (nivel 1 de abstracción).
• Se descompone en varios subproblemas, que serán lo
más independientes entre sí que sea posible, enunciados
en términos del problema (nivel 2 de abstracción).
• Se vuelven a descomponer los subproblemas en otros
subproblemas (nivel 3 de abstracción).
5. Se repite el proceso hasta que se
llega a subproblemas que son muy
concretos, en contra de los
enunciados tan abstractos que se
hacían en los primeros niveles. Esta
es la esencia del diseño
descendente. Se trabaja a partir de
una solución muy abstracta (nivel
1-top) hasta llegar a una solución
final (down), mediante una serie de
refinamientos sucesivos.
6. Ejemplo
El problema consiste en leer un número N y dar
la lista de los cuadrados perfectos entre 1 y N
(se supone N entero y positivo). Un cuadrado
perfecto es un número cuya raíz cuadrada es
un número entero. Por ejemplo los cuadrados
perfectos que hay entre 1 y 30 son 1,4, 9, 16 y
25.
SOLUCIÓN:
7. El diseño descendente del problema planteado se muestra en la figura
2.2.
Obsérvese que en cada nivel, el problema debe de quedar completamente
resuelto. Los cuatro rectángulos, a partir de los cuales no salen líneas
inferiores (también llamados terminales), pueden considerarse como los
puntos de partida para la construcción del algoritmo. Se marcan con un
recuadro doble. Los otros rectángulos (también llamados no-terminales),
definen estructuras de decisión de más alto nivel que describen como se
ha desarrollado el trabajo; pueden aparecer en el algoritmo final en forma
de subprogramas muy generales o tal vez sólo como comentarios.