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 52 <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>nteAunque en el enunciado se ha <strong>de</strong>jado c<strong>la</strong>ro que <strong>la</strong> secuencia <strong>de</strong> entrada está bien formada,podéis observar que en <strong>la</strong> solución dada, en el caso peor en que <strong>de</strong>spués <strong>de</strong> “propietario” nohubiese el nombre <strong>de</strong>l propietario y se llegase al final <strong>de</strong> <strong>la</strong> secuencia, el propietario sería“FinTextoHTML”.funcion ultimaPagina(P: tPagina): booleanoretorna p.finalffuncion { ultimaPagina }b) Consi<strong>de</strong>remos ahora <strong>la</strong> facturación <strong>de</strong> empresas. Aquí el objetivo es que el objeto Facturascontenga el nombre <strong>de</strong> <strong>la</strong>s empresas clientes presentes en <strong>la</strong> secuencia S, y para cada empresacliente, el importe acumu<strong>la</strong>do <strong>de</strong> <strong>la</strong>s facturaciones <strong>de</strong> todas <strong>la</strong>s páginas <strong>de</strong> S que pertenecena <strong>la</strong> empresa cliente en cuestión.Definición <strong>de</strong>l tipoHay que mantener una tab<strong>la</strong> don<strong>de</strong> conste el nombre <strong>de</strong> cada empresa cliente y el valor <strong>de</strong>limporte <strong>de</strong> <strong>la</strong> factura. El enunciado nos asegura que no habrá más <strong>de</strong> 50 empresas distintas.Debemos tener en cuenta que pue<strong>de</strong> haber páginas sin i<strong>de</strong>ntificación <strong>de</strong> propietario queserán para <strong>la</strong> empresa fantasma “NoI<strong>de</strong>ntificados”. Así pues, tenemos 51 empresas diferentes.Dado el propietario <strong>de</strong> una página, tendremos que buscar en <strong>la</strong> tab<strong>la</strong> si ya está o si se le <strong>de</strong>beañadir. La búsqueda que utilizaremos para saber si una empresa cliente ya está necesitará unaposición más <strong>de</strong> <strong>la</strong> tab<strong>la</strong>, como veremos más a<strong>de</strong><strong>la</strong>nte. De este modo, <strong>la</strong> <strong>de</strong>c<strong>la</strong>ración <strong>de</strong> tiposerá <strong>la</strong> siguiente:constmaxEmpresas: entero = 51;fconsttipotFactura = tup<strong>la</strong>nombreCliente; tPa<strong>la</strong>bra;importe: real;ftup<strong>la</strong>tFacturas =tup<strong>la</strong>nEmpresas: entero;f: tab<strong>la</strong>[ maxEmpresas + 1] <strong>de</strong> tFactura;ftup<strong>la</strong>ftipoP<strong>la</strong>nteamiento y solucionesI<strong>de</strong>ntificación <strong>de</strong>l esquema: búsqueda.Notad que...... hemos utilizado un esquema<strong>de</strong> búsqueda por centine<strong>la</strong>. Poreste motivo, hemos necesitadouna posición <strong>de</strong> más. El centine<strong>la</strong>es siempre <strong>la</strong> empresaque buscamos en <strong>la</strong> tab<strong>la</strong>.accion facturaPagina(sal p: tPagina, entsal f: tFacturas)var i: entero;fvar{ Buscamos <strong>la</strong> empresa por centine<strong>la</strong> }f.f[F.nEmpresas + 1].nombreCliente := p.propietario;i := 1;mientras no pa<strong>la</strong>brasIguales(f.f[i].nombreCliente, p.propietario) haceri := i + 1fmientrassi i = f.nEmpresas + 1 entonces{ Damos <strong>de</strong> alta a <strong>la</strong> empresa e inicializamos el importe }f.nEmpresas := f.nEmpresas + 1;f.f[i].importe := p.importesino { Añadimos el nuevo importe }f.f[i].importe := f.f[i].importe + p.importe;fsifaccion { facturaPagina }

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

Saved successfully!

Ooh no, something went wrong!