Hay patrones basados en repetición que consisten en repetir algún elemento que de por sí es repetitivo.
Por ejemplo, podemos entender a la siguiente imagen como la repetición de 4 filas, donde cada fila consiste en la repetición de 4 puntos:
Se le llama ciclos anidados a los ciclos que colocamos dentro de otro(s) ciclo(s).
El siguiente código dibuja de manera “manual” a la imagen previa:
size(500, 500);
background(0);
stroke(255);
strokeWeight(8);
// primera fila
point( 100, 100);
point( 200, 100);
point( 300, 100);
point( 400, 100);
// segunda fila
point( 100, 200);
point( 200, 200);
point( 300, 200);
point( 400, 200);
// tercera fila
point( 100, 300);
point( 200, 300);
point( 300, 300);
point( 400, 300);
// cuarta fila
point( 100, 400);
point( 200, 400);
point( 300, 400);
point( 400, 400);
Podemos apreciar lo siguiente:
x
de los puntos que la conforman cambia por un incremento de 100y
de los puntos que la conforman es constantey
de sus puntos, que cambia por un incremento de 100.Un ciclo que realiza el comportamiento presente en la primera fila podría verse así:
int x = 100;
while( x <= 400 ){
point( x, 100);
100;
x = x + }
o con for
:
for( int x=100; x<=400; x = x + 100){
point( x, 100);
}
Podemos parametrizar la coordenada y
:
int y = 100;
int x = 100;
while( x <= 400 ){
point( x, y );
100;
x = x + }
o con for
:
int y = 100;
for( int x=100; x<=400; x = x + 100){
point( x, y );
}
Ya que identificamos cómo dibujar una fila, podemos entonces indicar una repetición de todo ese bloque de código, cambiando la variable y
en cada iteración.
De esta manera tendremos un ciclo externo que itera sobre la variable y
, y un ciclo interno que itera sobre la variable x
por cada valor de la variable y
. Así definiremos un comportamiento que pasa por cada combinación posible entre las variables x
y y
.
A continuación varios ejemplos.
while
// este ciclo dibuja a las filas
int y = 100;
while( y <= 400 ){
// este ciclo dibuja a una fila:
int x = 100;
while( x <= 400 ){
point( x, y );
100;
x = x + // aquí acaba el ciclo que dibuja a una fila
}
100;
y = y + }
for
// ciclo que dibuja a las filas
for( int y = 100; y <= 400; y = y + 100){
// ciclo que dibuja una fila:
for( int x = 100; x <= 400; x = x + 100){
point(x, y);
}
}
En ocasiones puede tener sentido utilizar contadores para este tipo de iteración:
while
// este ciclo dibuja a las filas
int j = 1;
while( j <= 4 ){
// este ciclo dibuja a una fila:
int i = 1;
while( i <= 4 ){
point( i*100 , j*100 );
100;
i = i + // aquí acaba el ciclo que dibuja a una fila
}
100;
j = j + }
for
// ciclo que dibuja a las filas
for( int j = 1; j <= 4; j = j + 1){
// ciclo que dibuja una fila:
for( int i = 1; i <= 4; i = i + 1){
point( i*100, j*100);
}
}