Bucle con condición previa java. Bucles for y while en Java. Características del uso del operador for

¿Necesita procesar muchos datos del mismo tipo? ¿Necesitas calcular una serie? ¿Necesitas multiplicar matrices? ¡Todo esto y mucho más te ayudará a completar el ciclo! 🙂 Todos sistemas computacionales Fueron concebidos originalmente para facilitar el procesamiento de datos. y procesamiento grandes cantidades Los datos ni siquiera se pueden imaginar sin ciclos.

En general, los bucles en programación suelen dividirse en tres grupos. El primer grupo son los ciclos con contador. En ellos, el cuerpo del bucle se ejecuta un número determinado de veces, inicialmente especificado por el programador. Un bucle de este tipo necesariamente se ejecutará un número específico de veces. El segundo grupo son los ciclos con una condición previa. En ellos, el cuerpo del bucle se ejecuta sólo después de comprobar alguna condición y se ejecutará siempre que esta condición sea verdadera. Es posible que dichos bucles no se ejecuten ni siquiera una vez (si la condición es inicialmente falsa). Y el tercer grupo de ciclos son los ciclos con una poscondición. En ellos, primero se ejecuta el cuerpo del bucle y luego se verifica la condición. Este bucle se ejecutará al menos una vez.

Comencemos con un bucle con un contador. En Java esto es para bucle; EN vista general se puede escribir así:

Para( Condición inicial; condición final; cambiar) (cuerpo del bucle;)

Así, si queremos realizar alguna acción 10 veces entonces debemos escribir lo siguiente:

Para (int i = 0; i<10; i++) { System.out.println(i); }

dicho programa mostrará secuencialmente números del cero al nueve. Con un poco más de detalle, simplemente creamos una nueva variable i y le asignamos el valor inicial 0 (int i = 0;). Luego especificamos que el bucle debe ejecutarse hasta que yo< 10 и указываем каким образом должно изменяться i после каждой итерации цикла (i++).

Quienes hayan programado en Pascal estarán satisfechos con esta oportunidad:

Ent k = 15;

para (flotar i = 0; i

En este ejemplo, el valor de la variable i aumentará en 1,5 con cada iteración. Puedes comprobarlo :). Próximo ciclo en línea - mientras

. Este es un bucle con una condición previa y, en forma general, se puede escribir así:

Mientras (expresión lógica) (acciones)

Bueno, si tomamos un ejemplo práctico, se verá así:<10) { System.Out.Print(a); a++; }

Por lo tanto, está claro que tiene sentido utilizar este bucle si no sabe exactamente cuántas iteraciones se necesitan para lograr el objetivo, pero sabe exactamente las condiciones bajo las cuales se logrará su objetivo. ¡Es posible que una construcción de este tipo no se ejecute ni siquiera una vez (después de todo, este es un bucle con una condición previa)! La cantidad de veces que se ejecutan las acciones en el bucle depende del valor que estaba inicialmente en la variable a.

Y el tercer tipo de ciclos son los ciclos con poscondición. El es muy parecido a mientras... hazlo solo si en mientras... hazlo la condición se verifica antes de ejecutar el cuerpo del bucle, aquí la condición se verifica después de ejecutar el cuerpo del bucle. Esto significa que el bucle se ejecutará al menos una vez antes de comprobar la condición.

Un ciclo es un fragmento de un programa que se repite muchas veces.

Hay dos tipos de bucles en Java: el tipo "mientras" y el tipo "n-time".

El primer tipo de "mientras" está diseñado para repetir alguna acción siempre que se cumpla alguna condición. Ejemplo: aumentar un número en 5 hasta llegar a tres dígitos.

El segundo tipo, "n-time", está destinado a repetir algunas acciones un número predeterminado de veces. Ejemplo: multiplicar un número por sí mismo 4 veces.

Bucle while (declaraciones while y do... while)

La declaración while repite las acciones especificadas siempre que su parámetro sea verdadero.

Por ejemplo, dicho bucle se ejecutará 4 veces y se mostrará "1 2 3 4" en la pantalla:

Ent i = 1; mientras (yo< 5) { System.out.print(i + " "); i++; }

Dicho bucle no se ejecutará ni una sola vez y no se mostrará nada en la pantalla:

Ent i = 1; mientras (yo< 0) { System.out.print(i + " "); i++; }

Este bucle se ejecutará sin fin y la pantalla mostrará “1 2 3 4 5 6 7...”:

Ent i = 1; mientras (verdadero) ( ​​System.out.print(i + " "); i++; )

La condición que determina si el ciclo se repetirá nuevamente se verifica antes de cada paso del ciclo, incluido el primero. Dicen que esta pasando verificación previa condiciones.

Hay un ciclo como “adiós” con control posterior condiciones. Para escribirlo se utiliza una construcción de declaraciones do... while.

Este bucle se ejecutará 4 veces y se mostrará “2 3 4 5” en la pantalla:

< 5);

Este bucle se ejecutará 1 vez y se mostrará "2" en la pantalla:

Ent i = 1; hacer (i++; System.out.print(i + " "); ) mientras (yo< 0);

El cuerpo del bucle do... while se ejecuta al menos una vez. Este operador es conveniente de usar cuando alguna acción en el programa debe realizarse al menos una vez, pero bajo ciertas condiciones deberá repetirse muchas veces.

Consulte el siguiente programa (adivina un número entero aleatorio de un segmento y le pide al usuario que lo adivine ingresando opciones desde el teclado, hasta que el usuario adivine el número, el programa le preguntará y le indicará si el número adivinado es mayor o menor). menos de lo que el usuario ingresó):

Importar java.util.Scanner; public class Main ( public static void main(String args) ( // prog - un número creado por el programa // usuario - un número ingresado por el usuario int prog, usuario; // Genera un número entero aleatorio de 1 a 10 prog = (int)(Math. random() * 10) + 1; System.out.println("Adiviné un número del 1 al 10, adivinalo."); ; System.in); // Comprobar si hay un número entero en el flujo de entrada if(input.hasNextInt()) ( do ( // Leer un número entero del flujo de entrada user = input.nextInt(); if(user = = prog) ( System.out.println("¡Lo has adivinado!"); ) else ( // Comprueba si el número está incluido en el segmento if (usuario > 0 && usuario<= 10) { System.out.print("Вы не угадали! "); // Если число загаданное программой меньше... if(prog < user) { System.out.println("Моё число меньше."); } else { System.out.println("Моё число больше."); } } else { System.out.println("Ваше число вообще не из нужного отрезка!"); } } } while(user != prog); } else { System.out.println("Ошибка. Вы не ввели целое число!"); } System.out.println("До свиданья!"); } }

Realice las siguientes modificaciones al programa:

    El programa debe pensar en un número que no sea del segmento, sino en un número entero del segmento de [−10;10], excluyendo el cero. Al mismo tiempo, intente asegurarse de que la distribución de números aleatorios generados por el programa sea uniforme (es decir, si sale un cero, no puede simplemente reemplazarse con algún otro número, por ejemplo, 1, porque entonces 1 desaparecerá con el doble de probabilidad que el resto de números).

    El programa debería avisar al usuario que cometió un error en el signo si el programa adivinó un número positivo y el usuario ingresó uno negativo. Y viceversa.

Bucle de N tiempos (para declaración)

La declaración for contiene tres parámetros. La primera se llama inicialización, la segunda condición de repetición y la tercera iteración.

For (inicialización; condición; iteración) ( //cuerpo del bucle, es decir, acciones repetidas cíclicamente)

En el primer parámetro, generalmente selecciona alguna variable que se usará para contar el número de repeticiones del bucle. Se llama contador. Al contador se le da un valor inicial (indican a partir de qué valor cambiará).

El segundo parámetro indica alguna limitación en el contador (indica a qué valor cambiará).

El tercer parámetro especifica una expresión que cambia el contador después de cada paso del ciclo. Por lo general, esto es un incremento o una disminución, pero puede usar cualquier expresión en la que al contador se le asigne algún valor nuevo.

Antes del primer paso del ciclo, al contador se le asigna un valor inicial (se realiza la inicialización). Esto sólo sucede una vez.

Antes de cada paso del ciclo (pero después de la inicialización), se verifica la condición de repetición; si es verdadera, luego se ejecuta nuevamente el cuerpo del ciclo. Al mismo tiempo, es posible que el cuerpo del bucle no se ejecute ni siquiera una vez si la condición es falsa en el momento de la primera comprobación.

Después de completar cada paso del bucle y antes de comenzar el siguiente (y por tanto antes de comprobar la condición de repetición), se realiza una iteración.

El siguiente programa muestra números del 1 al 100:

Para (int i = 1; i<= 100; i++) { System.out.print(i + " "); }

El siguiente programa muestra números del 10 al −10:

Para (int s = 10; s > -11; s--) ( System.out.print(s + " "); )

El programa presentado muestra números impares del 1 al 33:

Para (int i = 1; i<= 33; i = i + 2) { System.out.print(i + " "); }

El programa presentado calculará la suma de los elementos de un fragmento de la secuencia 2, 4, 6, 8,... 98, 100. Entonces:

Suma interna = 0; // Acumularemos el resultado aquí para (int j = 2; j

El programa presentado generará un número a partir de una variable. a a grado natural desde variable norte:

Doble a = 2; int norte = 10; doble resolución = 1; // Acumularemos el resultado aquí para (int i = 1; i<= n; i++) { res = res * a; } System.out.println(res);

El programa presentado mostrará los primeros 10 elementos de la secuencia 2n+2, donde n=1, 2, 3…:

Para (int i = 1; i< 11; i++) { System.out.print(2*i + 2 + " "); }

El programa presentado mostrará los primeros 10 elementos de la secuencia 2a n−1 +3, donde a 1 =3:

Int a = 3; para (i=1; yo<=10;i++) { System.out.print(a + " "); a = 2*a + 3; }

En un ciclo, puede configurar varios contadores a la vez. En este caso, varias expresiones en iteración y en inicialización están separadas por comas. Sólo se puede especificar una condición de repetición, pero puede ser una expresión que contenga varios contadores a la vez.

El programa presentado mostrará los primeros 10 elementos de la secuencia 2a n−1 -2, donde a 1 =3:

Para (int a=3, i=1; i<=10; a=2*a-2, i++) { System.out.print(a + " "); }

El programa presentado mostrará la siguiente secuencia “0 -1 -4 -9 -16 -25”:

Para (int a=0, b=0; a-b<=10; a++, b--) { System.out.print(a*b + " "); }

Terminar un bucle antes de tiempo (declaración de interrupción)

Tanto el bucle de tipo “ while” como el bucle de tipo “n-time” pueden finalizar antes si llama al operador dentro del cuerpo del bucle. romper. En este caso, el bucle saldrá inmediatamente; ni siquiera el paso actual se completará (es decir, si hubo otras declaraciones después de la interrupción, no se ejecutarán).

Como resultado del siguiente ejemplo, solo se mostrarán en pantalla los números “1 2 3 4 Fin”:

Para (int a=1; a

Cuando el programa ejecuta el ciclo por quinta vez (ingresa un ciclo con un contador igual a 5), ​​la condición bajo la cual se ejecutará la declaración de interrupción se verificará inmediatamente y se determinará que es verdadera.

La parte restante del cuerpo del bucle (salida a la pantalla) ya no se producirá: el programa procederá inmediatamente a realizar las operaciones especificadas después del bucle y más allá.

Usando la declaración break, puedes interrumpir un bucle obviamente infinito. Ejemplo (la pantalla mostrará “100 50 25 12 6 3 1 0” y luego el bucle se detendrá):

Int s = 100; while (verdadero) ( ​​System.out.print(s + " "); s = s / 2; if(s == 0) ( break; ) )

Tiene sentido llamar al operador de interrupción solo cuando ocurre alguna condición; de lo contrario, el ciclo se completará antes de lo previsto en su primer paso.

Ent a; para (a=25; a>0; a--) ( descanso; System.out.print(a + " "); ) System.out.print("a=" + a); a En el ejemplo anterior, la salida a la pantalla en un bucle no ocurrirá ni una sola vez, y cuando la variable

se muestra en la pantalla después del bucle, resulta que su valor nunca ha cambiado, es decir, se mostrará “a=25” (y nada más).

Tenga en cuenta también que la variable se declaró antes de que comenzara el ciclo. Cuando una variable se declara en los parámetros de un bucle, resulta inaccesible fuera de él, pero en este caso se necesitaba algo más: saber qué valor tendrá el contador una vez finalizado el bucle.

    Tareas

    Cree un programa que muestre todos los números de cuatro dígitos en la secuencia 1000 1003 1006 1009 1012 1015….

    Escribe un programa que muestre los primeros 55 elementos de la secuencia 1 3 5 7 9 11 13 15 17….

    Escriba un programa que muestre todos los elementos no negativos de la secuencia 90 85 80 75 70 65 60….

    Escribe un programa que muestre los primeros 20 elementos de la secuencia 2 4 8 16 32 64 128….

    Muestra todos los términos de la secuencia 2a n-1 -1, donde a 1 =2, que son menores que 10000.

    Muestra todos los términos de dos dígitos de la secuencia 2a n-1 +200, donde a 1 = -166.

    Crear un programa que calcule el factorial de un número natural n que el usuario ingresa desde el teclado.

    Compruebe si el número natural ingresado por el usuario desde el teclado es primo. Trate de no realizar acciones innecesarias (por ejemplo, después de haber encontrado al menos un divisor no trivial, ya está claro que el número es compuesto y no es necesario seguir comprobando). Tenga en cuenta también que el divisor más pequeño de un número natural n, si existe, debe ubicarse en el segmento.

    Escribe un programa que muestre los primeros 12 elementos de la secuencia 2a n-2 -2, donde a 1 =3 y a 2 =2.

    Muestra los primeros 11 términos de la secuencia de Fibonacci. Te recordamos que el primer y segundo término de la secuencia son iguales a unos, y cada uno siguiente es la suma de los dos anteriores.

    Para un número natural ingresado por el usuario desde el teclado, calcule la suma de todos sus dígitos (no se sabe de antemano cuántos dígitos habrá en el número).

    En la ciudad N, los viajes en tranvía se realizan mediante billetes de papel desprendibles. Cada semana, la estación de tranvía encarga a la imprenta local un rollo de billetes con números del 000001 al 999999. Un billete se considera "de la suerte" si la suma de los tres primeros dígitos del número es igual a la suma de los tres últimos. dígitos, como por ejemplo en los billetes con los números 003102 o 567576. La estación de tranvías decidió regalar un souvenir al ganador de cada billete de la suerte y ahora se pregunta cuántos souvenirs se necesitarán. Usando el programa, cuente cuántos billetes de la suerte hay en un rollo.

    En la ciudad N hay un gran almacén en el que hay 50.000 estanterías diferentes. Para comodidad de los trabajadores, la dirección del almacén decidió pedir una plancha con un número del 00001 al 50000 para cada estante a una imprenta local, pero cuando se imprimieron las planchas, resultó que la imprenta, debido a un mal funcionamiento, no imprimió el número 2, por lo que todas las placas cuyos números contenían uno o más dos (por ejemplo, 00002 o 20202) deben volver a escribirlo. Escriba un programa que cuente cuántas de estas placas erróneas había en el lote defectuoso.

    El reloj electrónico muestra la hora en el formato de 00:00 a 23:59. Cuente cuántas veces al día sucede que se muestra una combinación simétrica a la izquierda de los dos puntos por la que está a la derecha de los dos puntos (por ejemplo, 02:20, 11:11 o 15:51).

    En el ejército estadounidense, el número 13 se considera de mala suerte, y en el japonés, el 4. Antes de los ejercicios internacionales, el cuartel general del ejército ruso decidió excluir los números de equipo militar que contienen los números 4 o 13 (por ejemplo, 40123, 13313, 12345 o 13040) para no confundir a los colegas extranjeros. Si el ejército tiene a su disposición 100 mil unidades de equipo militar y cada vehículo de combate tiene un número del 00001 al 99999, ¿cuántos números habrá que excluir?

2010, Alexey Nikolaevich Kostin. Departamento de TIDM, Facultad de Matemáticas, Universidad Pedagógica Estatal de Moscú.

Un bucle Java While Do es una declaración que le permite ejecutar el mismo fragmento de código varias veces. Este bucle se puede utilizar para repetir acciones cuando se cumplan las condiciones.

Mientras bucle

El bucle while es el más sencillo de construir en el lenguaje Java. Consta de una clave while, una condición de bucle y un cuerpo de bucle:

while (condición) ( // cuerpo del bucle )

Cada ejecución separada del cuerpo del bucle se considera una iteración. Antes de cada iteración, se evalúan las condiciones del bucle. Su cuerpo se ejecuta solo si la condición del bucle se evalúa como verdadera.

Las iteraciones del bucle cambian algo y, en cierto punto, la evaluación de la condición devuelve false, momento en el que termina el bucle. Un bucle cuya condición nunca devuelve falso se ejecuta un número infinito de veces. Estos ciclos se llaman interminables.

Ejemplo

número int = 0; mientras (núm.< 10) { System.out.println(num); num++; }

Este ejemplo imprime los números del 0 al 9. Repasemos el código paso a paso. Primero inicializamos la variable num con un valor de 0. Este será el contador de bucles. Cuando el programa llega a while, se evalúan las condiciones del bucle. En nuestro caso 0< 10 возвращает значение true и исполняется тело цикла. Внутри цикла выводится переменная num , а затем увеличивается на 1 . На этом завершается первая итерация.

Después de la primera "ejecución", la condición del bucle While de Java se evalúa por segunda vez. 1< 10 по-прежнему возвращает true , после чего запускается следующая итерация цикла. Один и тот же процесс повторяется несколько раз.

La iteración final comienza cuando el valor de num es igual a 9. El contador de bucle se muestra por última vez y el valor se incrementa a 10. Esta vez, no se puede iniciar una nueva iteración porque la condición del bucle se evalúa como falsa. Ya que 10 no es menos que 10.

Por lo tanto, el bucle se ejecuta mientras se cumpla la condición del bucle. Armado con este conocimiento, puede crear bucles más complejos y funcionales. Repitamos la matriz:

Nombres de cadena = ("Doc", "Dopey", "Tímido", "Grumpy", "Sneezy", "Sleepy", "Feliz"); índice int = 0; mientras (índice< names.length) { System.out.println(names); index++; }

El concepto de este ejemplo es similar al anterior. Inicializamos el contador de bucles e iteramos a través de la matriz hasta que se impriman todos los elementos. Como resultado, iterar sobre matrices es un caso bastante común y Java tiene una mejor construcción para esto: el bucle For.

bucle hacer-mientras

El bucle while do de Java es similar a while, pero tiene una diferencia significativa: a diferencia de while, la condición se verifica al final de cada iteración. Esto significa que el ciclo do- while siempre se ejecuta al menos una vez:

hacer (//cuerpo del bucle) mientras (condición);

Ejemplo

do- while primero ejecuta el cuerpo del bucle y luego evalúa sus condiciones. Dependiendo del resultado obtenido, el bucle se detiene o comienza la siguiente iteración. Veamos un juego sencillo de "adivina el nombre":

Escáner escáner = nuevo escáner (System.in); Conjetura de cadena; hacer ( System.out.print("Adivina el nombre: "); adivinar = scanner.nextLine(); ) while (!"Pato Lucas".equals(adivina)); System.out.println("¡Felicitaciones! ¡Adivinaste mi nombre!");

Esto, mientras que el ejemplo de Java usa Scanner para analizar la entrada de system.ini. Este es el canal de entrada estándar que interactúa con el teclado en la mayoría de los casos. En pocas palabras, simplemente leemos el texto que ingresa el jugador.

En el juego, debes preguntarle al usuario al menos una vez, y hacerlo siempre que el jugador ingrese las respuestas correctas. El bucle do- while es ideal para estos casos. En el cuerpo del bucle, obtenemos el valor del usuario y luego verificamos la exactitud de la respuesta. El bucle debe ejecutarse hasta que el valor ingresado por el usuario sea igual al Pato Lucas. Si se recibe la respuesta correcta, el bucle se detiene y felicitamos al jugador por su victoria.

En conclusión

Los bucles while true de Java le permiten reutilizar fragmentos de código varias veces. Hoy conocimos los bucles while y do- while de Java. Son similares en que verifican las condiciones y ejecutan el cuerpo del bucle si la condición se evalúa como verdadera. Pero al mismo tiempo, tienen una diferencia significativa: la condición del ciclo while se verifica antes de la iteración y la condición del ciclo do- while se verifica al final de cada iteración. Esto significa que el ciclo do- while siempre se ejecuta al menos una vez.

Traducción del artículo “ Los bucles While y Do-While de Java en cinco minutos” fue preparado por el amigable equipo del proyecto.

Cuando es necesario realizar la misma acción varias veces o hasta que se cumpla una determinada condición, los bucles acuden en nuestra ayuda.

Hay varias formas de crear bucles en Java. Como habrás adivinado, los consideraremos todos.

La primera forma de declarar un bucle es utilizar la siguiente construcción: for (condición de inicio del bucle; condición de finalización; paso en el que irá el bucle) (cuerpo del bucle)

Vayamos directamente a los ejemplos. Digamos que tenemos la tarea de mostrar la frase "hola mundo" 10 veces. Si no utiliza bucles, simplemente puede escribir System.out.println("Hola mundo"); diez veces y solucionaremos el problema. Usemos bucles para este propósito. Crea una nueva clase y llámala, por ejemplo, CuclesInJava. Ahora declare la condición del bucle (sea 0), la condición final - 10 y el paso. Iremos en incrementos de uno. En el cuerpo del bucle, coloque la línea System.out.println("Hola mundo");

Aquí hay un ejemplo de código:

El resultado de este código serán 10 líneas seguidas de la frase "¡Hola mundo!"

¿Qué tal escribir algo más complejo? Ya hemos aprendido los básicos. Usémoslos.

Escribamos una aplicación simple que muestre una línea de advertencia cada vez que un paso + alguna variable sea igual a 5. Soy muy malo con la imaginación))

Primero, escribamos un código que acepte como entrada una variable ingresada desde la consola. En el artículo anterior di un ejemplo de este código y acordamos que luego explicaría cómo funciona y de dónde viene. Y ahora simplemente lo usaremos:

A continuación, debe escribir un bucle que comenzará desde cero y contará hasta diez (como en el ejemplo anterior). En el cuerpo del bucle escribiremos una declaración condicional que verificará si esta variable es igual a 5 y, de ser así, generaremos la línea "OK". Esto es lo que obtuve:

    importar java.util.Scanner;

  1. clase pública CuclesInJava(

    variable int = escáner.nextInt(); // llegaremos a esto gradualmente y luego quedará claro cómo funciona

  2. para (int i = 1 ; i< 10 ; i++ ) {

    int nuevaVariable = i + variable;

    si (nuevaVariable==5) (

No resultó muy complicado. Con este ejemplo, quería mostrar cómo se pueden usar bucles con ramas en conjunto.

La siguiente forma de declarar bucles es con la construcción: while(la condición es verdadera)(bloque de código a ejecutar). Este diseño tiene otra forma:

hacer (bloque de código a ejecutar) mientras (la condición es verdadera). La diferencia entre el primero y el segundo es que el segundo ejecuta un bucle independientemente de si la condición es verdadera o no. Puedes pensar por ti mismo: primero ejecutamos el código y luego verificamos la condición. E incluso si la condición no es verdadera, el código se ejecutará una vez, en el momento en que en el primer tipo de construcción se verifica por primera vez la condición y hasta que sea verdadera, el código no se ejecutará.

El código debe ser intuitivo. Creo que vale la pena mencionar que con las construcciones while y do- while puedes "bucle" programa si la condición para salir del bucle no se especifica o se especifica incorrectamente. Mire el ejemplo anterior y piense qué habría pasado si hubiera escrito no i—, sino i++; o en lugar de i>0, i<0. Моя программа никогда не вышла бы из цикла и продолжала бы выводить строку Hello world! до тех пор, пока не завис компьютер. Поэтому, будьте очень осторожными с циклами и всегда следите, чтобы из них Ваша программа могла выйти или закончить работу.

Bueno, un ejemplo con do- while:

Con esto creo que podemos terminar el artículo sobre bucles en Java. Como puedes ver, los diseños no son muy complejos, pero sí muy útiles. Serán especialmente útiles cuando nos familiaricemos con matrices y cadenas.

Desde JDK 5, existen dos formas de bucle for en Java. La primera es la forma tradicional, utilizada desde la versión original de Java. El segundo es el nuevo formulario "para cada uno". Veremos ambos tipos de bucles for, comenzando con la forma tradicional.

Forma general del operador tradicional. para se ve así:

Si solo se repetirá una declaración en un bucle, puede omitir las llaves.

Ciclo para opera de la siguiente manera. Cuando el ciclo se inicia por primera vez, el programa ejecuta inicialización parte del ciclo. En general, esta es una expresión que establece el valor de una variable de control de bucle, que actúa como un contador que controla el bucle. Es importante entender que la expresión inicialización ejecutado solo una vez. Luego el programa calcula condición cual debería ser booleano expresión. Normalmente, la expresión condiciones compara el valor de la variable de control con el valor objetivo. Si este valor es verdadero, el programa se ejecuta. cuerpo ciclo. Si es falso, se cancela la ejecución del bucle.. Luego el programa se ejecuta cuerpo bucle y solo después de eso se ejecuta la parte repetición ciclo. Repetición suele ser una expresión que aumenta o disminuye el valor de una variable de control. Luego, el programa repite el ciclo, cada vez que pasa primero calculando condicional expresión, luego haciendo cuerpo bucle y ejecutando la expresión repeticiones . El proceso se repite hasta que el valor de la expresión condiciones no se volverá falso.

Dado que la mayoría de los bucles sólo utilizan sus variables dentro del bucle, el bucle para permite la expresión inicialización era una declaración de variable completa. Por tanto, la variable está limitada al cuerpo del bucle y es invisible desde el exterior..

Aquí hay un par de ejemplos que explican todo lo anterior:

En este ejemplo la variable i declarado fuera del bucle (línea 7), por lo que también está disponible después de su finalización (línea 12).

Del resultado de este programa se puede ver que la expresión repeticiones ciclo, es decir, el incremento del prefijo ( ++yo) variable i se ejecuta después de ejecutar el cuerpo del bucle, es decir, después de ejecutar la línea 10, que imprime el saludo.

Es muy importante comprender este punto para tener una comprensión correcta de cómo funciona el ciclo. para.

Ahora veamos el resultado de este programa con y sin argumentos de línea de comando:

Como se puede ver en el resultado de este programa, el incremento de la variable i ocurre después de que se ejecuta el último comando en el bucle, que imprime el saludo (línea 10).

Ahora declaremos una variable dentro del bucle (declaración for):

Como puede ver, Eclipse inmediatamente nos señaló el error de que la variable j, declarado en la línea 15, no es visible fuera del bucle porque su alcance, o ámbito, se extiende sólo al cuerpo del bucle en el que fue declarado.

Para que el programa funcione, es necesario comentar la línea 19.

El resultado de este código es similar al resultado del código que acabamos de ver, excepto que en lugar de "Hola", genera "Hola". Bueno, después del bucle no es posible mostrar el valor de una variable. j.

Al declarar una variable dentro de un bucle para es necesario recordar la siguiente circunstancia importante: el área y tiempo de existencia de esta variable coinciden completamente con el área y tiempo de existencia del operador para .

Sintaxis de bucle para no se limita a bucles con una sola variable. Como en la expresión inicialización , y en la expresión repeticiones se puede utilizar coma para separar múltiples expresiones inicialización Y repeticiones .

Por ejemplo:

En este ejemplo en inicialización parte del ciclo establecemos los valores iniciales de ambas variables de control a Y b. Ambas declaraciones separadas por comas en iterativo Las partes se ejecutan cada vez que se repite el bucle.

Este código genera el siguiente resultado:

Ciclo para admite varios sabores que aumentan sus capacidades y aplicabilidad. La flexibilidad de este ciclo se debe a que consta de tres partes: inicialización , condiciones de control Y iterativo no tiene que utilizarse únicamente para el fin previsto. De hecho, cada una de las secciones de la declaración para se puede utilizar para cualquier propósito. Por ejemplo:

El ejemplo es, por supuesto, un poco desconcertante, pero en esencia es sencillo. La primera parte de la declaración inicializa la variable. b, el segundo lo comprueba y el tercero muestra un mensaje en la consola.

Básicamente, este programa hace lo mismo al saludar los argumentos, si existen. Si no están allí, entonces no genera nada. Permítanme darles inmediatamente un ejemplo de su resultado:

Como puede verse en el resultado de este programa, la parte de iteración se ejecuta, como ya se mencionó, después de ejecutar el cuerpo del bucle. En este caso es el operador. imprimir en la línea 9. La declaración for en este código se extiende a lo largo de dos líneas 9 y 10 porque es bastante larga. Hice esto para demostrar que cada parte de la declaración for se puede utilizar para diferentes propósitos. También vale la pena señalar que el incremento de la variable i ocurre en la línea 12 y también establece una condición para continuar o salir del bucle, que se verifica en la línea 9.

Otro ejemplo similar, se puede utilizar un bucle for para iterar a través de los elementos de una lista enlazada:

También vale la pena señalar que cualquier parte del ciclo para (inicialización, condición Y iterativo) o incluso puedes saltarte todo. Por ejemplo, puedes crear un bucle infinito de esta manera:

( ;; ){
//bucle sin fin
}

Es posible que falte una expresión de inicialización o iteración, o ambas:

En este ejemplo inicialización Y iterativo las expresiones se mueven fuera de la definición del operador para. En consecuencia, las partes correspondientes de la declaración para vacío.

Para aclarar la secuencia de ejecución de las partes de la declaración for, daré un pequeño ejemplo. Aunque aún no hemos estudiado los métodos, espero que usted comprenda la idea de este programa. Su propósito es mostrar claramente la secuencia de ejecución de todas las partes de la declaración for.

Del resultado del programa queda claro que inicialización parte del programa ( método initTest()) se ejecuta solo una vez.

Luego se realiza la verificación. condiciones , representado por el método pruebacond().

Después de comprobar condiciones , se ejecuta cuerpo ciclo.

Y después de eso se ejecuta la parte. repetición , representado por el método prueba rec().

El método condTest() comprueba la condición de continuación del bucle. En este caso, la variable i se compara con 4, y siempre que la variable i sea menor que 4, se ejecuta el cuerpo del bucle.

El cuerpo del bucle se ejecuta cuatro veces desde que la variable i se inicializó a cero de forma predeterminada.

Operador para cada uno

A partir de JDK 5, Java puede utilizar una segunda forma del bucle for, que implementa un bucle con el estilo para cada uno (“para todos”). Pedalear con estilo para cada uno está destinado a la ejecución estrictamente secuencial de acciones repetidas en relación con colecciones de objetos, como matrices. En Java, la capacidad de utilizar un bucle. para cada uno implementado mejorando el ciclo para. Formulario de versión general para cada uno ciclo para tiene la siguiente forma:

para (tipo de variable de iteración: colección) declaraciones de bloque

Tipo este es el tipo de variable, variable de iteración — el nombre de una variable iterativa que tomará valores secuencialmente de colecciones , del primero al último. El elemento de colección especifica la colección sobre la que realizar el bucle. con ciclo para Puedes usar diferentes tipos de colecciones, pero por ahora solo usaremos matrices, por cierto, que aún no hemos probado, pero al menos ya ha habido muchos ejemplos con saludos de una matriz de cadenas, donde los argumentos de la línea de comando ir.

Nota: operador para cada uno se aplica a matrices y clases que implementan la interfaz java.lang.Iterable.

En cada iteración del bucle, el programa recupera el siguiente elemento de la colección y lo almacena en una variable de iteración. El bucle se ejecuta hasta que se hayan recuperado todos los elementos de la colección.

Aunque el ciclo se repite para con estilo para cada uno se ejecuta hasta que todos los elementos de la matriz (colección) hayan sido procesados; el bucle se puede interrumpir antes usando el operador; romper.

Debido a que una variable de iteración recibe valores de una colección, su tipo debe coincidir (o ser compatible con) el tipo de los elementos almacenados en la colección. Por lo tanto, al recorrer matrices, el tipo debe ser compatible con el tipo subyacente de la matriz.

Comprender la motivación para usar bucles en el estilo. para cada uno , considere el tipo de ciclo para, que este estilo pretende reemplazar.

Tomemos nuevamente nuestro ejemplo de argumentos de saludo desde la línea de comando:

¿No es mucho más elegante que utilizar otros operadores de bucle para este fin?

En realidad, este programa tiene una salida simple:

Ya lo hemos visto muchas veces en diferentes versiones, pero la repetición es la madre del aprendizaje.

Para mayor claridad, veamos algunos ejemplos más.

Cada vez que pasa el ciclo, a la variable x se le asigna automáticamente un valor igual al valor del siguiente elemento en la matriz de números. Por lo tanto, en la primera iteración x contiene 1, en la segunda - 2, etc. Esto simplifica la sintaxis del programa y elimina la posibilidad de ir más allá de la matriz.

El resultado de esta parte del programa es:

Aunque el ciclo se repite para con estilo para cada uno se ejecuta hasta que se hayan procesado todos los elementos de la matriz; el bucle se puede interrumpir antes utilizando el operador; romper. Por ejemplo:

En este ejemplo, el bucle ejecutará solo tres iteraciones, después de las cuales el bucle saldrá según la condición del operador. si, lo que activará al operador romper.

También es importante comprender que la variable de iteración recibe valores de la colección (matriz) en cada iteración, por lo tanto, incluso si su valor se cambia en el cuerpo del bucle, en la siguiente iteración tomará nuevamente la siguiente valor de la colección. Además, sus cambios no afectan de ninguna manera los valores de la colección (elementos de matriz en este ejemplo).

Este código generará lo siguiente:

Cualquier método que devuelva una matriz se puede utilizar con para cada uno . Por ejemplo, la clase String contiene un método toCharArray que devuelve una matriz de caracteres. Ejemplo:

Este código simplemente imprimirá la cadena ¡Hola mundo!

Aquí es donde podemos terminar con estos operadores. Lo único que vale la pena mencionar es que en la parte de inicialización solo puedes declarar variables del mismo tipo, o inicializar variables de diferentes tipos, pero aquellas que se pueden convertir a un tipo común de acuerdo con la regla de conversión de tipos que vimos anteriormente.

Finalmente, daré un par de ejemplos más de un operador avanzado. para. En general, esto es sólo un código refactorizado del ejemplo que ya di.

¿No es cierto que este código se ha vuelto más legible y comprensible que el que ya proporcioné? ¿O no está claro? Bueno, entonces veamos otro ejemplo de código que hace lo mismo.

¿No está claro otra vez?

Ambos códigos producen el mismo resultado:

Por supuesto, siempre que los argumentos en la línea de comando fueran Vasya y Petya.

Esto concluye con el operador for y su sombra foreach.




Arriba