Você está na página 1de 9

Programacin II

En general es posible anidar tantos ciclos como sean

necesarios. Esto es muy semejante a lo que ocurra cuando definamos una instruccin que usaba otra instruccin definida antes.
El primer ejemplo anida dos instrucciones iterate para

colocar ms de un beeper por esquina.

Sembrando B
El Dr. Karelov desea colocar 10 beepers en 5 esquinas a

lo largo de una calle. Para ello, Karel debe ser programado para hacer el trabajo por l.

Colocar 10 beepers en 5 esquinas consecutivas

Podriamos hacer una funcin que coloque 10 beepers en la

posicin en la que se encuentra karel y repetir esa instruccin 5 veces a travs de un iterate. Sin embargo, tambin es posible colocar un iterate . De este modo nuestr o cdigo queara como:
program() { Iterate(5) { iterate(10) putbeeper(); move(); } turnoff(); }

Cosechando C
El Dr. Karelov est complacido por el trabajo de Karel.

Por ello, le he pedido que recoja los tornillos que hay en el suelo. Hay 5 tornillos por esquina a lo largo de un cuadrado de 6 avenidas por 4 calles.

Tornillos en el cuarto.

Seccionando el programa en 3 partes. Inciamos con el

siguiente anlisis.
Requerimos recorrer 6 avenidas para recoger los beepers

en cada avenida. Por lo tanto emplearemos un iterate, quedando nuestra primera parte del programa: program() { iterate(6) { <recogemos una avenida> } turnoff(); }

Para recorrer cada avenida necesitamos un ciclo que se repita 4

veces (una por cada esquina), en dicho ciclo debemos recoger los beepers (por ahora nos concentraremos en recorrer las avenidas unicamente) . Adems debemos emplear otro ciclo que retorne a Karel a la calle inicial y por ltimo necesitamos que Karel se coloque en una posicin similar a la inicial, solo que en la siguiente avenida.

Iterate(4) { <recogemos los beepers de la esquina correspondiente> move(); } halfturn(); iterate(4) move(); leftmove(); turnleft();

Despus del ciclo que recorre las 4 esquinas (que

contienen beepers), es necesario que Karel de media vuelta (halfturn) se desplace 4 esquinas (iterate con las instrucciones move) y por ltimo mover a Karel a la siguiente avenida y mirando al norte.
Ya solo nos queda recoger los beepers de cada esquina,

lo cual podemos conseguir empleando un iterate con la instruccin pickbeeper.


iterate(5) pickbeeper();

program() { iterate(6) { iterate(4) { iterate(5) pickbepper(); move(); } halfturn(); iterate(4) move(); leftmove(); turnleft(); } turnoff(): }

Programa principal que cosecha un campo de beepers

Você também pode gostar