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 17 <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 número <strong>de</strong> caracteres. Dado que nos interesa comparar el último con el primero,etc., siempre nos pue<strong>de</strong> ser más útil tener <strong>la</strong> longitud <strong>de</strong> <strong>la</strong> frase en lugar<strong>de</strong>l centine<strong>la</strong>. Sin embargo, si <strong>de</strong>c<strong>la</strong>ramos lo siguiente:varncaracteresFrase: entero;Frase: tFrase;fvarestamos dispersando <strong>la</strong> abstracción <strong>de</strong> frase en dos conceptos: su longitud y <strong>la</strong>frase en sí. Esta dispersión pue<strong>de</strong> parecer ridícu<strong>la</strong>, pero si <strong>de</strong>spués nos vemosobligados a guardar más <strong>de</strong> una frase, <strong>de</strong>beremos <strong>de</strong>c<strong>la</strong>rar más contadores <strong>de</strong>caracteres para <strong>la</strong>s diferentes tab<strong>la</strong>s. A<strong>de</strong>más, tendríamos que cambiar los parámetros<strong>de</strong> <strong>la</strong>s acciones y/o funciones en <strong>la</strong>s que no lo hayamos previsto, paraconsi<strong>de</strong>rar los nuevos contadores. Es <strong>de</strong>cir, vamos <strong>de</strong> un nivel a otro reescribiendoel código ya resuelto, y esto no nos interesa. Lo mejor es encapsu<strong>la</strong>rcompletamente todo lo que haga referencia a <strong>la</strong> abstracción que estamos implementando:tipotFrase = tup<strong>la</strong>nCaracteres: entero;c: tab<strong>la</strong> [maxCarFrase] <strong>de</strong> caracter;ftup<strong>la</strong>ftipoDe este modo, tenemos <strong>de</strong>ntro <strong>de</strong>l tipo <strong>de</strong>c<strong>la</strong>rado los <strong>de</strong>talles que nos interesan<strong>de</strong> <strong>la</strong> abstracción que trabajamos; en el nivel más abstracto no es necesariohacer ningún cambio, ya que los <strong>de</strong>talles serán trabajados en el nivel <strong>de</strong> <strong>la</strong> abstracción<strong>de</strong> frase.Imaginemos ahora que lo que nos pi<strong>de</strong>n es averiguar si una frase <strong>de</strong>l texto tiene<strong>la</strong>s mismas pa<strong>la</strong>bras que una frase dada, pero con distinto or<strong>de</strong>n. De formamás breve, si po<strong>de</strong>mos <strong>de</strong>cir que una frase es permutación <strong>de</strong> otra. Sin entraren <strong>de</strong>talles <strong>de</strong>l problema, parece c<strong>la</strong>ro que es necesario ver <strong>la</strong> frase como unasecuencia <strong>de</strong> pa<strong>la</strong>bras; por lo tanto, <strong>la</strong> anterior <strong>de</strong>finición <strong>de</strong> tFrase no nos serviría,ya que necesitamos estructurar <strong>la</strong> frase en una colección <strong>de</strong> pa<strong>la</strong>bras paracomparar<strong>la</strong>s entre sí. Una estructura que no resulta nada útil es <strong>la</strong> siguiente:Por ejemplo, <strong>la</strong> frase “La mar estabaserena” es una permutación <strong>de</strong> <strong>la</strong>frase “serena estaba <strong>la</strong> mar”.tipotFrase = tup<strong>la</strong>nPa<strong>la</strong>bras: entero;c: tab<strong>la</strong> [maxPa<strong>la</strong>brasFrase, maxCarPa<strong>la</strong>bra + 1] <strong>de</strong> caracter;ftup<strong>la</strong>ftipo

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

Saved successfully!

Ooh no, something went wrong!