09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

9.2. Un ejemplo de refer<strong>en</strong>cia 191<br />

Sean n1<br />

y<br />

n2<br />

las fracciones que deseamos sumar<br />

d1 d2<br />

Hallar la fracción n d suma<br />

Simplificar n n′<br />

, obt<strong>en</strong>iéndose<br />

d d ′ que es el resultado.<br />

A su vez, Hallar la fracción n d<br />

Calcular d = d1*d2<br />

Calcular n = n1*d2+d1*n2<br />

suma consiste <strong>en</strong>:<br />

y la acción Simplificar n n′<br />

d<br />

, obt<strong>en</strong>iéndose<br />

d ′ se puede refinar como sigue:<br />

Calcular mcd = máximo común divisor de n y d<br />

Calcular n ′ = n div mcd<br />

Calcular d ′ = d div mcd<br />

Ahora solam<strong>en</strong>te faltaría desarrollar Calcular mcd = máximo común divisor<br />

de n y d. Éste es un cálculo muy frecu<strong>en</strong>te y que aparece resuelto fácilm<strong>en</strong>te<br />

de distintas formas <strong>en</strong> la mayoría de los manuales de programación (véase el<br />

ejercicio 2 del primer capítulo de [PAO94], y también el ejercicio 10 del capítulo<br />

anterior):<br />

Sean n, d, r ∈ IN<br />

mi<strong>en</strong>tras d = 0 hacer<br />

r ← n mod d<br />

n ← d<br />

d ← r<br />

El máximo común divisor es n<br />

Si decidimos escribir un programa <strong>en</strong> <strong>Pascal</strong> (al que podríamos llamar por<br />

ejemplo SumaDeFracciones), t<strong>en</strong>emos que tomar algunas decisiones. En primer<br />

lugar hay que observar que el algoritmo consta de dos partes claram<strong>en</strong>te difer<strong>en</strong>ciadas:<br />

<strong>en</strong> la primera se efectúa la suma y <strong>en</strong> la segunda se simplifica la fracción.<br />

Este reparto de tareas se puede concretar <strong>en</strong> forma de dos procedimi<strong>en</strong>tos, que<br />

podríamos llamar SumarFracciones y SimplificarFraccion.<br />

El primero recibiría las dos fracciones dadas (parámetros por valor) y devolvería<br />

la fracción suma (parámetros por refer<strong>en</strong>cia). El segundo actuaría sobre la<br />

fracción suma simplificándola (parámetros por refer<strong>en</strong>cia).<br />

A su vez, el procedimi<strong>en</strong>to SimplificarFraccion, y solam<strong>en</strong>te él, ha de<br />

disponer del máximo común divisor del numerador y d<strong>en</strong>ominador de la fracción,<br />

por lo que es preciso definir una función MCD local a SimplificarFraccion.

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

Saved successfully!

Ooh no, something went wrong!