12.07.2015 Views

Introducción a la metodología de diseño descendente

Introducción a la metodología de diseño descendente

Introducción a la metodología de diseño descendente

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

© FUOC • P05/75062/00112 42 <strong>Introducción</strong> a <strong>la</strong> <strong>metodología</strong> <strong>de</strong> <strong>diseño</strong> <strong>de</strong>scen<strong>de</strong>ntefsifmientras{nuDeLA indica el número <strong>de</strong> ‘LA’ que hay en F}escribirEntero(nuDeLA)falgoritmoEvaluación 1La corrección <strong>de</strong> <strong>la</strong> solución presentada es muy difícil <strong>de</strong> evaluar. Por ejemplo, <strong>de</strong>bemos resolvercuestiones <strong>de</strong>l siguiente tipo:1. ¿Tiene en cuenta <strong>la</strong> secuencia vacía formada sólo por el punto?2. ¿Tiene en cuenta casos como ‘ELLA’?3. ¿Avanza siempre <strong>la</strong> secuencia, o se queda estancada en algún punto?Si seguís bien el algoritmo, os daréis cuenta <strong>de</strong> que todas <strong>la</strong>s cuestiones están bien cubiertas.A pesar <strong>de</strong> ello, es muy difícil verlo.P<strong>la</strong>nteamiento general 2El hecho <strong>de</strong> pensar este problema en términos <strong>de</strong> caracteres ha creado un cierto <strong>de</strong>sor<strong>de</strong>n. Encambio, si convenimos en <strong>la</strong> abstracción <strong>de</strong> pareja <strong>de</strong> caracteres, veremos que el problema esmás fácil <strong>de</strong> analizar y <strong>de</strong>sarrol<strong>la</strong>r. Lo primero que <strong>de</strong>bemos hacer es imaginarnos que tenemosuna secuencia <strong>de</strong> parejas <strong>de</strong> caracteres. Esto nos conduce a particu<strong>la</strong>rizar el esquema <strong>de</strong>recorrido teniendo en cuenta <strong>la</strong> abstracción convenida:1)Primer nivelSoluciónalgoritmo contarLAvarnuDeLA: entero;Pareja: tPareja;fvar{ f = F, f es una frase acabada en punto y f sólo contiene mayúscu<strong>la</strong>s}nuDeLA := 0;obtenerPrimeraPareja(pareja);mientras no ultimaPareja(pareja) hacersi esLA(pareja) entoncesnuDeLA := nuDeLA + 1fsiobtenerPareja(pareja)fmientras{ nuDeLA indica el número <strong>de</strong> ‘LA’que hay en F }escribirEntero(nuDeLA)falgoritmoAhora tenemos una parte <strong>de</strong> <strong>la</strong> solución expresada, y el nivel se completará con <strong>la</strong> especificación<strong>de</strong> <strong>la</strong>s acciones y funciones que quedan por <strong>de</strong>sarrol<strong>la</strong>r:accion obtenerPrimeraPareja (sal p: tPareja);{ Pre: s = S, s es una frase acabada en punto y <strong>la</strong> parte izquierda <strong>de</strong> s está vacía }{ Post: p contendrá <strong>la</strong> primera pareja <strong>de</strong> <strong>la</strong> secuencia <strong>de</strong> parejas y <strong>la</strong> parte izquierda <strong>de</strong> scontendrá un carácter }accion obtenerPareja (entsal p: tPareja);{ Pre: s = S, s es una frase acabada en punto y <strong>la</strong> parte izquierda <strong>de</strong> S no está vacía, <strong>la</strong> parte<strong>de</strong>recha <strong>de</strong> s tampoco está vacía y p = P y P es <strong>la</strong> anterior pareja obtenida }{ Post: p contendrá <strong>la</strong> pareja siguiente <strong>de</strong> <strong>la</strong> secuencia <strong>de</strong> parejas, y <strong>la</strong> parte izquierda <strong>de</strong> scontendrá un carácter más }funcion ultimaPareja(p: tPareja): booleano{ Pre: p = P }{ Post: ultimaPareja(p) es cierto si P es <strong>la</strong> última pareja <strong>de</strong> <strong>la</strong> secuencia }

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!