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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

10 Capítulo 1. Problemas, algoritmos y programas<br />

donde d1, d2, a, b, r ∈ IN, p ∈ {3, . . . , 6}, y si<strong>en</strong>do<br />

y<br />

I = {< 1; [d1, d2]; [ ]; — >}<br />

F = {< 7; [ ]; [r]; — >}.<br />

La función de transición t es la sigui<strong>en</strong>te:<br />

t(< 1; [d1, d2]; [ ]; — >) = < 2; [d2]; [ ]; a ≡ d1 ><br />

t(< 2; [d2]; [ ]; a ≡ d1 >) = < 3; [ ]; [ ]; a ≡ d1, b ≡ d2 ><br />

<br />

< 6; [ ]; [ ]; b ≡ b0 > si a = 0<br />

t(< 3; [ ]; [ ]; a ≡ a0, b ≡ b0 >) =<br />

< 4; [ ]; [ ]; a ≡ a0, b ≡ b0 > si a = 0<br />

t(< 4; [ ]; [ ]; a ≡ a0, b ≡ b0 >) = < 5; [ ]; [ ]; a ≡ a0 − 1, b ≡ b0 ><br />

t(< 5; [ ]; [ ]; a ≡ a0, b ≡ b0 >) = < 3; [ ]; [ ]; a ≡ a0, b ≡ b0 + 1 ><br />

t(< 6; [ ]; [ ]; b ≡ b0 >) = < 7; [ ]; [b0]; — ><br />

t(< 7; [ ]; [r]; — >) = < 7; [ ]; [r]; — ><br />

Desde el punto de vista del usuario de un algoritmo, se puede considerar un<br />

algoritmo como una caja opaca cuyos detalles internos se ignoran, aflorando sólo<br />

la lectura de los datos y la escritura de los resultados. Estos aspectos observables<br />

desde el exterior se llaman frecu<strong>en</strong>tem<strong>en</strong>te la interfaz externa. No obstante, el<br />

mecanismo interno interesa al autor de algoritmos, esto es, al programador. Para<br />

at<strong>en</strong>der esta necesidad, algunos <strong>en</strong>tornos de programación permit<strong>en</strong> “trazar”<br />

programas, con lo que el programador puede ver evolucionar el estado interno<br />

durante la marcha de su programa con el grado de detalle que desee (véanse<br />

los apartados 5.4.1 y C.2.6). Esta posibilidad es interesante para depurar los<br />

programas, esto es, para buscar los posibles errores y subsanarlos.<br />

Para terminar este apartado, debemos decir que el esquema de funcionami<strong>en</strong>to<br />

descrito a base de transiciones <strong>en</strong>tre estados se conoce con el nombre de<br />

modelo de von Neumann (véase el apartado 7.2.1 de [PAO94]). Se dice que este<br />

modelo es secu<strong>en</strong>cial, <strong>en</strong> el s<strong>en</strong>tido de que los pasos se efectúan uno tras otro. De<br />

hecho, no es posible acelerar el proceso efectuando más de un paso a un tiempo,<br />

porque cada paso ti<strong>en</strong>e lugar desde el estado dejado por el paso anterior. Este<br />

“cuello de botella” es un defecto propio de las máquinas de von Neumann.<br />

Cualidades deseables de un algoritmo<br />

Es muy importante que un algoritmo sea sufici<strong>en</strong>tem<strong>en</strong>te g<strong>en</strong>eral y que se<br />

ejecute efici<strong>en</strong>tem<strong>en</strong>te. Veamos con más detalle qué se <strong>en</strong>ti<strong>en</strong>de por g<strong>en</strong>eral y<br />

por efici<strong>en</strong>te:

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

Saved successfully!

Ooh no, something went wrong!