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 49 <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>nteI<strong>de</strong>ntificación <strong>de</strong>l esquema: búsqueda.funcion pa<strong>la</strong>braCapicua(m: tPa<strong>la</strong>bra): booleanovari, j; entero;encontrado: booleano;fvari := 1; j := m.long;encontrado := falso;mientras (no encontrado) y (i < j) hacersi m.c[i] ≠ m.c[j] entoncesencontrado := ciertosino i := i + 1; j := j – 1fsifmientrasretorna no encontradoffuncionfuncion separador(ent c: caracter): booleanoretorna (c= ‘ ’) o (c = ‘,’) o (c = ‘;’)ffuncion4. Del enunciado <strong>de</strong>ducimos que po<strong>de</strong>mos organizar los niveles <strong>de</strong> <strong>de</strong>scomposición <strong>de</strong>l <strong>diseño</strong>a partir <strong>de</strong> los objetos <strong>de</strong>l problema. En <strong>la</strong> entrada <strong>de</strong>l programa tenemos una secuencia<strong>de</strong> páginas. Una página es una secuencia <strong>de</strong> pa<strong>la</strong>bras separadas por espacios y controles <strong>de</strong>línea. Una pa<strong>la</strong>bra es una secuencia <strong>de</strong> caracteres sin espacios ni controles <strong>de</strong> línea. La secuencia<strong>de</strong> entrada es <strong>de</strong> tipo carácter. Po<strong>de</strong>mos distinguir, pues, tres niveles <strong>de</strong> <strong>de</strong>scomposición<strong>de</strong>l <strong>diseño</strong>:a) Secuencia <strong>de</strong> páginas <strong>de</strong> web acabada con “FinPaginas”.b) Página: secuencia <strong>de</strong> pa<strong>la</strong>bras acabada con <strong>la</strong> pa<strong>la</strong>bra “FinTextoHTML”.c) Pa<strong>la</strong>bra: secuencia <strong>de</strong> caracteres terminada con separador (espacio, símbolo =, caracteres<strong>de</strong> control <strong>de</strong> línea).1)Primer nivel: secuencia <strong>de</strong> páginasEspecificaciónReleemos el enunciadoy lo adaptamos siguiendo<strong>la</strong> abstracción <strong>de</strong> página.El objetivo es confeccionar una lista <strong>de</strong> <strong>la</strong>s empresas clientes que participan en el servidor y,para cada empresa participante, obtener <strong>la</strong> cantidad que se les <strong>de</strong>be facturar. Para cada página,po<strong>de</strong>mos obtener el nombre <strong>de</strong> <strong>la</strong> empresa cliente a <strong>la</strong> cual pertenece y valorar su precioa partir <strong>de</strong>l contenido. En un primer nivel, formu<strong>la</strong>mos el algoritmo en términos <strong>de</strong> una secuencia<strong>de</strong> páginas. De este modo, por lo tanto, <strong>la</strong> entrada se pue<strong>de</strong> ver como una secuencia<strong>de</strong> páginas:s = S = ‘FinPaginas’ indica el final <strong>de</strong> <strong>la</strong> secuencia y se pue<strong>de</strong> consi<strong>de</strong>rar como una página especial yúnica que sólo tiene <strong>la</strong> pa<strong>la</strong>bra “FinPaginas”.La precondición se pue<strong>de</strong> expresar como:{ Pre: s = S = y (toda P i , 1 ≤ i ≤ n, es una página) }La postcondición consistirá en tener una secuencia t <strong>de</strong> empresas clientes con el importe facturado.La secuencia t tendrá <strong>la</strong> forma siguiente:t = Don<strong>de</strong> E i es el nombre <strong>de</strong> una empresa cliente presente en <strong>la</strong> secuencia S, y F i es el importe<strong>de</strong> <strong>la</strong> facturación que se <strong>de</strong>be aplicar a <strong>la</strong> empresa E i . La especificación <strong>de</strong>l algoritmo será, porlo tanto:{ Pre: en <strong>la</strong> entrada se tiene una secuencia s = S = y (toda P i,1 ≤ i ≤ n, es una página) }