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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
© FUOC • P05/75062/00112 26 <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>nteEl resto <strong>de</strong> funciones son obvias:funcion ultimaPa<strong>la</strong>bra(m: tPa<strong>la</strong>bra): booleanoretorna m.final o m.vacioffuncionfuncion pa<strong>la</strong>braVacia(m: tPa<strong>la</strong>bra): booleanoretorna m.vaciaffuncionfuncion hayQueCorregirPa<strong>la</strong>bra(m: tPa<strong>la</strong>bra): booleanoretorna m.hayQueCorregirffuncionCon esto llegamos al final <strong>de</strong> <strong>la</strong> solución <strong>de</strong>l ejercicio. Habréis notado <strong>la</strong> cantidad<strong>de</strong> <strong>de</strong>talles que han sido necesarios para llegar a <strong>la</strong> solución. El análisisha sido complicado a causa <strong>de</strong> los <strong>de</strong>talles que se <strong>de</strong>bían tener en cuenta, sobretodo en <strong>la</strong> etapa en que trabajábamos con frases como secuencias <strong>de</strong> pa<strong>la</strong>bras.Sin embargo, <strong>la</strong> separación <strong>de</strong> los problemas nos ha ayudado a concentrarnos<strong>de</strong> forma más cómoda en estos <strong>de</strong>talles, algo que no hubiese ocurrido si hubiéramostenido en cuenta todos los <strong>de</strong>talles <strong>de</strong>l problema al mismo tiempo.1.8. Valoración final <strong>de</strong> <strong>la</strong> <strong>metodología</strong>¿Realmente es tan útil el método propuesto? Si lo hubiésemos pensado sólo encaracteres, sin utilizar ninguna abstracción ni separación <strong>de</strong> problemas, podríamoshaber llegado a una solución como ésta:algoritmo churrovarc: caracter;N1, N2, N3, N4, Mx: entero;FF, A, DP: booleano;fvarN1 := 0;Mx := 0;N2 := 0;N3 := 0;N4 := 0;A := falso;FF := cierto;c := leerCaracter();mientras (no FF) o (c ≠ ‘.’) hacersi (c ≠ ‘ ’) entoncesFF := falso;si no A entoncesA := c = ‘*’fsic := leerCaracter();si (c = ‘ ’) entoncessi A entoncesN2 := N2 + 1;A := falsofsiDP := c = ‘.’;c := LeerCaracter()fsisinoDP := c = ‘.’;c := LeerCaracter()fsi