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.

6.4. Diseño y desarrollo de bucles 109<br />

ddo dsor coc resto<br />

Paso 0: 7 = 7 = 2 · 0 + 7 7 2 0 7<br />

Paso 1: 7 = 2 + 5 = 2 · 1 + 5 7 2 1 5<br />

Paso 2: 7 = 2 + 5 = 2 · 1 + 5 7 2 2 3<br />

Paso 3: 7 = 2 + 2 + 2 + 1 = 2 · 3 + 1 7 2 3 1<br />

Figura 6.7.<br />

1. Para decidir qué tipo de bucle usar debemos observar que, <strong>en</strong> principio,<br />

no sabemos cuántas repeticiones van a ser necesarias <strong>en</strong> cada caso (no<br />

nos sirve for); por otro lado, no siempre va a ser necesaria al m<strong>en</strong>os una<br />

repetición del cuerpo del bucle, como por ejemplo al dividir 5 <strong>en</strong>tre 7 (no<br />

nos sirve repeat). En consecu<strong>en</strong>cia t<strong>en</strong>dremos que usar un bucle while.<br />

2. Las variables que necesitaremos para codificar el bucle deb<strong>en</strong> ser al m<strong>en</strong>os<br />

cuatro: para el divid<strong>en</strong>do, el divisor, el coci<strong>en</strong>te y el resto, que llamaremos<br />

respectivam<strong>en</strong>te ddo, dsor, coc y resto.<br />

3. Dados ddo y dsor, el resultado que deseamos obt<strong>en</strong>er son valores para coc<br />

yresto tales queddo = dsor * coc + resto verificando que0 ≤ resto<br />

≤ dsor.<br />

4. Por último, ¿qué se realiza <strong>en</strong> cada iteración? S<strong>en</strong>cillam<strong>en</strong>te, reducirresto<br />

(<strong>en</strong> dsor unidades) e increm<strong>en</strong>tar coc (<strong>en</strong> 1 unidad): o sea, tantear que<br />

ha cabido una vez más el divisor <strong>en</strong> el divid<strong>en</strong>do. Si detallamos la división<br />

de 7 <strong>en</strong>tre 2 (véase la figura 6.7) podemos ver cómo cambian las variables<br />

coc y resto y observar que:<br />

(a) En cada iteración del bucle existe una relación que permanece constante:<br />

ddo = dsor * coc + resto.<br />

(b) Se finaliza cuando resto 0 y dsor > 0}<br />

Dar valor inicial a las variables coci<strong>en</strong>te y resto

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

Saved successfully!

Ooh no, something went wrong!