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 25 <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>nteOs pue<strong>de</strong>n parecer exageradas estas funciones excesivamente breves, pero <strong>la</strong>ventaja es c<strong>la</strong>ra: puesto que el primer nivel no se preocupa <strong>de</strong> los <strong>de</strong>talles <strong>de</strong>tFrase, no se <strong>de</strong>berá modificar nunca si en el segundo nivel elegimos otra representaciónpara tFrase y diseñamos <strong>la</strong>s acciones y funciones <strong>de</strong> acuerdo con<strong>la</strong> nueva representación. Sólo hemos cambiado el nivel don<strong>de</strong> concentramos <strong>la</strong>abstracción, sin cambiar el resto <strong>de</strong> los niveles, don<strong>de</strong> están <strong>la</strong>s otras abstraccionessin concretar. Por lo tanto, <strong>la</strong>s posibles modificaciones que hay que realizaren el algoritmo sólo tienen lugar en <strong>la</strong>s abstracciones o <strong>la</strong> abstracción cuyarepresentación nos hemos propuesto cambiar.Pasemos ahora al tercer nivel correspondiente a <strong>la</strong> abstracción <strong>de</strong> pa<strong>la</strong>bras. Po<strong>de</strong>mosconsi<strong>de</strong>rar una pa<strong>la</strong>bra como una secuencia <strong>de</strong> caracteres acabada enb<strong>la</strong>nco, a excepción <strong>de</strong> <strong>la</strong> última <strong>de</strong> <strong>la</strong> frase, que acaba en punto antes <strong>de</strong> llegaral espacio. En este nivel, entonces, <strong>la</strong> expresaremos en términos <strong>de</strong> caracteres,que afortunadamente son entendidos por nuestro lenguaje algorítmico; se trata,por lo tanto, <strong>de</strong>l último nivel <strong>de</strong> abstracción, ya que el <strong>diseño</strong> estará ya suficientementeconcretado.Lo que nos interesa <strong>de</strong> <strong>la</strong> pa<strong>la</strong>bra aquí es saber si sería necesario corregir<strong>la</strong> ono. Por lo tanto, tenemos que <strong>de</strong>tectar <strong>la</strong> presencia <strong>de</strong>l carácter “*” una vezpara saber si <strong>la</strong> pa<strong>la</strong>bra se <strong>de</strong>be corregir o no. Si <strong>la</strong> pa<strong>la</strong>bra consiste sólo en elNotad que...... expresar <strong>la</strong>s soluciones quetratan una pa<strong>la</strong>bra en términos<strong>de</strong> caracteres es convenientepara el problema que estamostrabajando, pero no en general.Por ejemplo, si tuviésemos quecontar <strong>la</strong>s sí<strong>la</strong>bas <strong>de</strong> una pa<strong>la</strong>brao un vocablo, tal vez seríaconveniente consi<strong>de</strong>rar esta pa<strong>la</strong>bracomo una secuencia <strong>de</strong>sí<strong>la</strong>bas y no <strong>de</strong> caracteres.carácter “*”, se interpretará que hace falta añadir una pa<strong>la</strong>bra para corregir <strong>la</strong>frase. Por otro <strong>la</strong>do, también nos interesa conocer si se trata <strong>de</strong> una pa<strong>la</strong>bra finalválida o es vacía. Por lo tanto:tipotPa<strong>la</strong>bra = tup<strong>la</strong>final: booleano;vacio: booleano;hayQueCorregir: booleano;ftup<strong>la</strong>ftipo{ Pre: en <strong>la</strong> entrada tenemos <strong>la</strong> secuencia <strong>de</strong> pa<strong>la</strong>bras, t, <strong>de</strong>l texto T, <strong>de</strong> <strong>la</strong> que sólo po<strong>de</strong>mosobtener su parte <strong>de</strong>recha DT, y ésta no ha llegado al final <strong>de</strong>l texto }accion obtenerPa<strong>la</strong>bra(sal m: tPa<strong>la</strong>bra)varc: caracter;caracteresLeidos: entero;fvarcaracteresLeido := 0;c := leerCaracter();mientras c ≠ ‘*’ y c ≠ ‘ ’ y c ≠ ‘.’ hacer { buscamos asterisco }caracteresLeidos := caracteresLeidos + 1;c := leerCaracter()fmientrasm.hayQueCorregir := c = ‘*’;mientras c ≠ ‘ ’ y c ≠ ‘.’ hacer { pasamos resto pa<strong>la</strong>bra }caracteresLeidos := caracteresLeidos + 1;c := leerCaracter()fmientrasm.vacio := caracteresLeidos = 0;m.final := c = ‘.’;faccion{ Post: m representa <strong>la</strong> primera pa<strong>la</strong>bra que hay en DT. La pa<strong>la</strong>bra obtenida estará en <strong>la</strong>parte izquierda <strong>de</strong> <strong>la</strong> secuencia t }

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

Saved successfully!

Ooh no, something went wrong!