int i = 0;
int j = 0;
int k = 0;
Estas son tres declaraciones que se pueden escribir en una declaración, como:
int i = 0, j = 0, k = 0;
Hay un tipo de datos; Las expresiones están separadas por comas. Una declaración termina con un punto y coma. Se han declarado múltiples variables aquí en una declaración.
Ahora, considere las siguientes declaraciones incrementales:
int i ++;
int j ++;
int k ++;
Estas tres declaraciones pueden ser reemplazadas por una declaración, como sigue:
int i ++, j ++, k ++;
Aquí, hay tres expresiones en una declaración para un tipo de datos.
También considere las siguientes tres declaraciones condicionales:
i < 10;
j < 10;
k < 10;
Estas tres declaraciones pueden ser reemplazadas por una declaración, como sigue:
i < 10 && j < 10 && k < 10;
Aquí, tres declaraciones se han combinado en una expresión de una forma especial. Estas expresiones no están separadas por comas como en los casos anteriores, pero se combinan con lo lógico y.
Este artículo explica cómo se pueden declarar y utilizar múltiples variables en un bucle for-bucle, con correspondencias regulares. Se utilizan ejemplos muy simples para ilustraciones.
Contenido del artículo
For-bucle unidimensional
mientras
Un bucle para mostrar números de cero a 9, es como en el siguiente programa:
#incluir
usando el espacio de nombres STD;
int main ()
int i = 0;
mientras yo < 10)
cout << i << endl;
i ++;
regresar 0;
La primera línea en el programa incluye la biblioteca iOStream para el objeto Cout. La siguiente línea en el programa es una declaración. Asegura que cualquier nombre utilizado sea de la biblioteca estándar C ++ a menos que se indique lo contrario.
En la función main (), existe la declaración de inicialización, del entero, i = 0. Luego está el bucle while, que tiene en cuenta la declaración de inicialización. La condición del tiempo es (yo < 10), and as long as i is less than 10 (never equal to 10), the cout iostream object in the body of the while-loop displays the value of i. The next statement in the while-loop increments i (adds 1 to the value of i).
La salida es la siguiente pero se muestra verticalmente:
0 1 2 3 4 5 6 7 8 9
For-bucle unidimensional
El código en la función main () anterior se reproduce, en el siguiente programa, como un bucle for-loop:
#incluir
usando el espacio de nombres STD;
int main ()
para (int i = 0; i < 10; i++)
cout << i << endl;
regresar 0;
La salida es la misma que en el caso anterior. La declaración de inicialización para el código anterior es ahora la primera declaración entre paréntesis del for-bucle, seguido de un punto y coma. La condición de while para el código anterior es ahora la segunda declaración entre paréntesis del bucle for-bucle, seguido de un punto y coma. La declaración de incremento en el cuerpo del bucle while, para el código anterior, es ahora la tercera declaración entre paréntesis del bucle for-loop. No es seguido por un punto y coma porque es la última declaración entre paréntesis. La única declaración en el bucle de for-loop muestra el valor de i.
Bidón
Anidado mientras
El for-bucle unidimensional anterior muestra una columna, donde cada celda tiene un número, el valor de i. Un bucle, anidados en otro bucle, mostraría una tabla, donde cada celda tendría un número (el valor de J en esa posición). El siguiente programa ilustra esto:
#incluir
usando el espacio de nombres STD;
int main ()
int i = 0;
mientras yo < 5)
int j = 0;
mientras (J < 5)
cout << j << ";
j ++;
cout << endl;
i ++;
regresar 0;
La salida es:
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
La variable I determina las filas. La variable j determina las columnas. Los valores máximos para I y J son cada 4 en este código. No se imprime ningún valor de i. Para cada valor de j, el valor de j se imprime horizontalmente. J se incrementa para imprimir el siguiente valor horizontalmente para cada línea.
Hay dos declaraciones de inicialización: una para i y otra para j, ambas inicializadas a cero. La declaración de inicialización para j está dentro del bucle exterior. De esta manera, J se reinicializa para cada fila (cada línea horizontal). De esta manera, J puede producir números de 0 a 4 para cada fila. El valor de I nunca se imprime; solo indica el número de fila. Estoy incrementado afuera y debajo del bucle anidado. Estoy incrementado para el propósito de la próxima fila.
Anidado para el bucle
El siguiente bucle anidado produce el mismo resultado (tabla) que el anterior anidado mientras: loop:
#incluir
usando el espacio de nombres STD;
int main ()
para (int i = 0; i < 5; i++)
para (int j = 0; j < 5; j++)
cout << j << ";
cout << endl;
regresar 0;
Los paréntesis de cada bucle tienen su propia declaración de inicialización, su propia declaración de condición y su propia declaración de incremento.
Uno mientras
La salida de la tabla anterior puede ser producida por uno durante el bucle, con una declaración de inicialización y una declaración de condición. Sin embargo, la reasignación de cero a J y el incremento de I debe ocurrir en una construcción de IF. El siguiente código ilustra esto:
#incluir
usando el espacio de nombres STD;
int main ()
int i = 0, j = 0;
mientras yo < 5 && j <5)
cout << j << ";
j ++;
if (j == 5)
cout << endl;
j = 0;
i ++;
regresar 0;
La salida es la misma tabla que la anterior.
Un bucle para
La salida de la tabla anterior puede ser producida mediante un bucle for-bucle, con una declaración de inicialización y una declaración de condición. Sin embargo, la reasignación de cero a J y el incremento de I debe ocurrir en una construcción de IF. El siguiente programa ilustra esto:
#incluir
usando el espacio de nombres STD;
int main ()
para (int i = 0, j = 0; i < 5 && j <5; j++)
cout << j << ";
if (j == 4)
cout << endl;
j = -1;
i ++;
regresar 0;
La salida es la misma tabla que la anterior. Sin embargo, aquí, dado que J se incrementa al final del bucle, entre paréntesis, la condición if es (j == 4) y J se reasigna, -1 para cada fila.
Lo que es espacial aquí es que se han declarado dos variables en un bucle for-bucle. Y así, múltiples variables se pueden declarar en un bucle.
Direccionamiento diagonal líder
En una mesa cuadrada, la diagonal principal es la diagonal desde el extremo superior izquierdo hasta el extremo inferior derecho. El siguiente programa muestra las coordenadas de la diagonal principal de la tabla anterior:
#incluir
usando el espacio de nombres STD;
int main ()
para (int i = 0, j = 0; i < 5 && j <5; i++,j++)
cout << i << ',' << j << ";
cout << endl;
regresar 0;
La salida es:
0,0 1,1 2,2 3,3 4,4
Observe que en el programa, se han declarado dos variables entre paréntesis del for-bucle; La condición tiene las dos variables, relacionadas con lo lógico y; y la declaración de incremento tiene las dos variables, cada una incrementada agregando una. Bajo esta condición, la única declaración en el cuerpo del bucle imprime las coordenadas de la diagonal principal.
Tridimensional
Puede ser engorroso imprimir todos los valores de las celdas de un cubo. El siguiente programa solo imprime las coordenadas de la diagonal principal de un cubo:
#incluir
usando el espacio de nombres STD;
int main ()
para (int i = 0, j = 0, k = 0; i<5&&j<5&&k<5; i++,j++,k++)
cout << i << ',' << j << ',' << k << ";
cout << endl;
regresar 0;
La salida es:
0,0,0 1,1,1 2,2,2 3,3,3 4,4,4
Observe que la declaración de inicialización tiene tres variables; La declaración de condición tiene las tres variables, y la declaración de incremento tiene las tres variables. Solo hay una declaración en el cuerpo del for-bucle.
Posible ventaja
Considere un solo bucle para mostrar todos los valores de las celdas de una tabla cuadrada:
Tener las dos variables en la declaración de inicialización y en la condición no brinda ninguna ventaja en la velocidad, en comparación con la situación en la que un bucle está anidado.
Sin embargo, si solo se accede a los valores seleccionados en la tabla, entonces tener las dos variables, en la declaración de inicialización, en la declaración de condición y en la declaración de incremento, traería una ventaja a la velocidad; En el sentido de que no se accederá a todos los valores, antes de eliminar muchos de ellos. En el siguiente programa, se imprimen cualquier otro par de coordenadas, en la diagonal principal:
#incluir
usando el espacio de nombres STD;
int main ()
para (int i = 0, j = 0; i < 10 && j <10; i+=2,j+=2)
cout << i << ',' << j << ";
cout << endl;
regresar 0;
La salida es:
0,0 2,2 4,4 6,6 8,8
Todavía solo hay una declaración en el for-bucle. Obtener ventaja en la velocidad, de esta manera, implica incluir una lógica selectiva adicional en la declaración de condición y/o en la declaración de incremento. Las expresiones de inicialización en la declaración de inicialización pueden no tener que inicializarse a cero.
En el código anterior, la declaración de incremento es:
i+= 2, j+= 2
lo que significa,
i = i+2, j = j+2;
Conclusión
Sí, puedo declarar múltiples variables en un bucle. Y usted también ahora puede declarar múltiples variables, en un bucle for-bucle, de la siguiente manera: simplemente separe las variables múltiples en la declaración de inicialización con comas. No olvide finalizar la declaración de inicialización completa con un punto y coma. Si el acceso de los elementos de la estructura debe ser selectivo, entonces estas variables también deben usarse, en la condición y/o declaraciones de incremento, en las paréntesis del for-bucle, posiblemente con alguna lógica adicional.