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 55 <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>ntemientras separador(c) y c ≠ ‘.’ hacer { saltamos los primeros separadores }c := leerCaracter()fmientrasm.caracterLeido := c;obtenerPa<strong>la</strong>bra(m)faccionI<strong>de</strong>ntificación <strong>de</strong>l esquema: recorrido.accion leerPa<strong>la</strong>bra(sal m: tPa<strong>la</strong>bra)vari: entero; cNoSeparador: booleano;c: caracter;fvarm.long := 0;c := m.caracterLeido;mientras no (separador(c) y (m.long < maxCar)) hacer { obtenemos <strong>la</strong> pa<strong>la</strong>bra }m.long := m.long + 1;m.c[m.long] := c;c := leerCaracter()fmientrasmientras no separador(c) hacer { saltamos los caracteres que sobran }c := leerCaracter()fmientrasmientras separador(c) hacer { saltamos los separadores }c := leerCaracter()fmientrasm.caracterLeido := cfaccionObservad que...... <strong>la</strong> acción leerPa<strong>la</strong>bra tiene encuenta <strong>la</strong> posibilidad <strong>de</strong> que <strong>la</strong>pa<strong>la</strong>bra leída sea más <strong>la</strong>rga quemaxCar. La pa<strong>la</strong>bra se lee, perolos caracteres <strong>de</strong> <strong>la</strong> pa<strong>la</strong>bra queestán más allá <strong>de</strong> maxCar en <strong>la</strong>tab<strong>la</strong> no se guardan. Dado quesólo nos interesa comprobar <strong>la</strong>spa<strong>la</strong>bras que tienen maxCar caracteres,como mucho, el truncamiento<strong>de</strong> <strong>la</strong> pa<strong>la</strong>bra no tieneningún efecto en el resto <strong>de</strong>l algoritmoy permite aceptarpa<strong>la</strong>bras tan <strong>la</strong>rgas como sequiera.Aplicación directa <strong>de</strong> <strong>la</strong> alternativaaccion contabilizaPa<strong>la</strong>bra( ent pa<strong>la</strong>bra: tPa<strong>la</strong>bra; entsal importe: real)var pa<strong>la</strong>braImagen: tPa<strong>la</strong>bra;fvarinicializaPa<strong>la</strong>braImagen(pa<strong>la</strong>braImagen);si pa<strong>la</strong>brasIguales(pa<strong>la</strong>bra, pa<strong>la</strong>braImagen) entoncesimporte:= importe + 50sinosi no(pa<strong>la</strong>braEntreMenoresMayores(pa<strong>la</strong>bra) y longitudPa<strong>la</strong>bra(pa<strong>la</strong>bra) > 1) entoncesimporte := importe + 5;fsifsifaccionI<strong>de</strong>ntificación <strong>de</strong>l esquema: búsqueda.funcion pa<strong>la</strong>brasIguales(m1: tPa<strong>la</strong>bra, m2: tPa<strong>la</strong>bra): booleanovari: entero;iguales: booleano;fvarsi m1.long = m2.long entoncessi m1.l > 0 entoncesi := 1;mientras (m1.c[i] = m2.c[i]) y (i < m1.l) hacer i := i + 1fmientrasiguales := m1.c[i] = m2.c[i]sino iguales := ciertofsisino iguales := falsofsiretorna igualesffuncion { pa<strong>la</strong>brasIguales }

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

Saved successfully!

Ooh no, something went wrong!