Hola y bienvenido. En esta conferencia, quiero hablar sobre los bucles anidados y el control de bucles.
Bucles anidados, bucles dentro de bucles, el control de bucle tiene que ver
con las sentencias break y continue.
Bucles tan anidados.
Hay ocasiones en las que desea colocar un bucle dentro de otro bucle.
Tiene perfecto sentido.
Entonces, por ejemplo, es
posible que desee contar el número de ocupantes en cada casa en una calle.
Entonces, lo que harías es tener un bucle exterior en el que pasas de casa en casa.
Y luego, en cada casa en la que se encuentre, contará el número de ocupantes.
Así que espero que pueda visualizar o comprender cómo podría ser un bucle anidado.
De nuevo, el bucle exterior pasa por todas las casas.
Y luego, para cada iteración del bucle exterior de cada casa que encuentre, entraría en la
casa y tendría un bucle para contar a todas las personas.
Así que ese es un pequeño caso de uso cuando realmente desea
utilizar un ciclo anidado en c.
He aquí un ejemplo. Parece que crees que se vería
un bucle dentro de un bucle que en realidad no es demasiado complicado.
En este ejemplo, usamos bucles for.
Los bucles son agradables porque podemos inicializar la variable de control de bucle,
tener nuestra verificación de condición y nuestra variable de control de bucle de modificación, todo en una línea.
Así que este bucle exterior y se refieren a él como el bucle interior exterior.
El bucle exterior es exactamente lo que implica. Es el bucle en el exterior.
Y puede tener muchas, muchas capas diferentes de anidación. Podrías tener muchos
bucles internos.
En este caso, estamos avanzando y es un
ciclo controlado por contador, comenzamos en uno y vamos hasta el final para contar.
No sabemos qué cuenta hay aquí, no importa.
En el cuerpo del ciclo for, decimos que la suma es igual a 0. Estamos inicializando la suma del ciclo interno.
Y luego, dentro del bucle interno, vemos otro bucle for y j es igual a 1, j es
menor que igual a I y más más j. Luego decimos que suma más es igual a j.
Estamos calculando la suma de los números enteros de 1 a I.
Entonces, lo que realmente está haciendo es ingresar un número 5.
Y para la primera iteración del ciclo, estás
sumando 1 2 3 4 y 5.
Para la siguiente iteración del
ciclo, estás sumando 2 3 4 5.
Para la tercera iteración del ciclo, sumas 3 4 5 y así sucesivamente.
Por lo tanto, los bucles internos son necesarios, especialmente solo en función del caso de uso, solo
un bucle dentro de un bucle perfectamente.
Lo vas a ver bastante.
No te alejes de eso. Dependiendo de lo que necesite hacer y del problema que esté tratando
de resolver, a menudo se usa bastante.
Y hasta ese punto, no siempre es un bucle for dentro de un bucle for, puede tener un
bucle while dentro de un bucle for. Podría tener un bucle do while dentro de un
bucle for, no importa.
Entonces, en este
ejemplo, el mismo ejemplo exacto, excepto que ahora dentro del cuerpo del bucle
for, tenemos un bucle anidado, un bucle interno llamado usando la palabra clave while.
Así que todavía estamos calculando algunos números enteros del 1 al I.
Tenemos alguna inicialización uh fuera del ciclo while.
Tenemos una condición dentro de la verificación while,
y tenemos nuestras sumas dentro del cuerpo del ciclo while donde
estamos modificados, esa es la variable de control del ciclo que estamos modificando.
Entonces suma más igual y luego modificamos la variable de control de ciclo con más más j.
Entonces, si no modificamos más más j, tendríamos un ciclo infinito para el ciclo while.
Pero está haciendo la misma salida, solo está usando un bucle while como un bucle anidado en lugar del bucle for.
Así que el anidamiento no es realmente diferente de cuando anida algo.
Anida las sentencias if, sentencias if dentro de sentencias if, sentencias de
bucle anidado se repite dentro de bucles.
Para alejarse del concepto de
bucles anidados, hablemos de la instrucción continue.
Hasta este punto, cuando hablamos de bucles, siempre lo
hemos ejecutado varias veces en función de la condición de salida, la
expresión booleana que se evalúa como falsa.
Sin embargo, hay ocasiones en las que desea finalizar específicamente un bucle antes
o desea continuar en la siguiente iteración
del bucle sin hacer nada.
En el último caso, si continúa sin hacer
nada, saltando esencialmente, puede usar
la instrucción continue para hacer esto.
Entonces, la instrucción continue en el cuerpo de un ciclo hace lo siguiente.
Y en primer lugar, si desea iniciar esto, todo lo que tiene que hacer es poner la palabra clave
continue seguida de un punto y coma en el cuerpo del bucle.
Pero lo que va a hacer es
básicamente saltarse esa iteración. Por lo tanto, la continuación de
cualquier cosa debajo de la continuación no se ejecutará si está dentro del cuerpo del bucle.
Así que continúe muchas veces, querremos estar en la parte superior del ciclo
en función de alguna condición, generalmente está envuelto en una declaración if.
Si esto sucede en una situación especial, no quiero ejecutar
ningún código en el cuerpo del bucle,
simplemente omita esta iteración y verifique la próxima vez.
Y de nuevo, es un poco confuso porque estás saltando una iteración y estás saltando, pero
es válido y es una forma de hacer múltiples comprobaciones.
Entonces, aunque tenga su condición de salida de bucle dentro de su expresión
booleana, puede tener otra verificación.
Y esa verificación no se saldrá del ciclo, pero se
saltará una iteración.
Por lo tanto, se usa nuevamente para el caso en el que desea omitir la iteración. La ventaja de esto es
que puede usar Continuar y eliminará muchos anidamientos.
También eliminará muchas declaraciones if adicionales dentro de su bloque de bucles.
Por lo tanto, puede mejorar la legibilidad
cuando las declaraciones son muy largas o tiene un anidamiento profundo.
Entonces, si descubre que está anidando mucho.
es posible que desee decir eh, tal vez pueda usar continuar en su lugar.
O si encuentra que tiene muchas declaraciones if
que están haciendo ciertas cosas dentro del cuerpo del bucle, tal vez desee continuar.
No use continuar si complica el código en lugar de simplificarlo.
No utilices continuar si no sabes lo que estás haciendo.
Aquí hay un ejemplo de la continuación.
En este ejemplo, estamos creando una nueva enumeración de tipo día
y estamos diciendo que los valores válidos son lunes martes miércoles jueves viernes sábado domingo.
Y luego tenemos un ciclo for donde estamos inicializando nuestra enumeración
al lunes, y decimos que siempre
que el día sea menor que el domingo, esa es
una condición para salir y luego decimos más más día.
Puede preguntarse cómo incrementamos una enumeración.
Bueno, recuerda que una enumeración debajo del capó es un número entero.
Entonces puede decir más más día en una enumeración y eso solo lo incrementará al siguiente.
Recuerde, el lunes es igual a 0, el martes es igual a 1, el
miércoles es igual a 2, es todo el orden de la lista.
Tan perfectamente bien para incrementar enumeraciones.
En este bucle for si es miércoles,
queremos omitirlo. No queremos hacer nada. No queremos imprimir.
Entonces decimos continuar. Si el día es igual
al miércoles, continúe. Se saltará la línea de impresión. Volverá a la parte
superior del ciclo y ejecutará la siguiente iteración.
Entonces será el jueves.
No será igual al miércoles, por lo que no se saltará.
Se imprimirá y se imprimirá que no es miércoles.
Así que este es un caso de uso común, un ejemplo común del uso de continuar, una sintaxis muy fácil de usar, solo
una palabra clave simple seguida del punto y coma.
El otro caso en el que es posible que desee hacer algo extraño en
el bucle es si desea salir antes.
Entonces, normalmente después de que se haya ingresado el
cuerpo del bucle, un programa ejecutará todas las declaraciones en el cuerpo
del bucle y para cada iteración y luego comprobará y saltará.
Y sabemos cómo funciona la continuación, que está haciendo un salto un poco diferente.
Hay otra declaración que puede alterar la ejecución de todas las declaraciones en el
ciclo, se llama ruptura.
Y esto debería ser algo familiar porque usamos la palabra clave break cuando hablamos de la
declaración de cambio.
Recuerde, cuando teníamos nuestros casos, salíamos de los casos de esa manera.
Bueno, también puedes usar la palabra clave break dentro de un bucle.
Y lo que esto hará es simplemente salirse del bucle.
Entonces, la declaración de interrupción hará que el programa salga inmediatamente del bucle, se está ejecutando.
Se omiten las declaraciones del bucle y se termina la ejecución del bucle.
Así que estás saltando del circuito.
Estás ejecutando temprano. Si la declaración de ruptura está dentro de bucles anidados, solo
afectará al bucle más interno, que lo contiene. Solo saldrás del circuito en el que estás.
Y para hacer esto, usa la palabra clave break seguida de un punto y coma.
El descanso se usa a menudo para dejar un bucle cuando hay 2 razones distintas para irse.
Así que antes mencioné que puede tener otra razón por la que desea omitir una
iteración, pero si hay 2 razones, 2 condiciones en las que desea saltar de un bucle, puede
usar un descanso.
Si solo tiene una
condición, entonces es solo la condición, dentro del bucle en sí, dentro del paréntesis
del while o antes del segundo punto y coma en el bucle for.
Break también se usa en declaraciones de cambio, como mencioné.
Así que solo quería recordarte eso. No los confunda.
Sin embargo, esencialmente hacen las mismas cosas. Saltan del código.
Romper una declaración de cambio saltará de esa
declaración de cambio por completo, romper un bucle saltará de ese bucle.
Bueno, aquí tienes un ejemplo. Tenemos un bucle while.
Estamos imprimiendo algunos enteros.
Estamos leyendo algunos números enteros. Tenemos un bucle while anidado.
Dentro del ciclo while anidado, verificamos lo
que se ingresó. Y si es mayor que
100, queremos salir de ese bucle interno. Así que lo hacemos.
Luego, en el ciclo exterior, tenemos que hacer otra comprobación. Si es mayor que 100, salimos
de ese bucle exterior.
Si no tuvieras el segundo descanso, nunca saldrías del segundo bucle exterior.
Entonces, en este caso, esto me recuerda a un lugar al que le vendría bien ir.
Imagínese si tuviera 5 anidamientos, 5 capas de anidación, mientras que el bucle dentro de un bucle while
dentro de un bucle while dentro de un bucle while dentro del bucle while.
Si solo usara el salto para intentar saltar fuera
de los bucles, tendría todas estas declaraciones if en cada bucle para saltar.
En lugar de hacer todas esas
declaraciones if, podría intentarlo. Ir a saltaría de todos los bucles de estado de bucle en un solo comando.
Así que ese es un caso de uso para ir a. Pero en este caso, solo estamos
demostrando descansos y nos aseguramos de que comprenda que está saliendo
de ese bucle en el que está dentro.
Y en este caso, estamos saliendo de 2 bucles.
Estos son los 2 ejemplos, las 2 palabras clave en las que esencialmente no puede repetir el
código de lo que espera.
Entonces, si alguna vez ve una interrupción o continúa en el bucle, asegúrese
de comprender lo que está sucediendo porque es
posible que no esté ejecutando cierto código que cree que se va a ejecutar.
Nuevamente, generalmente envuelto dentro de una condición if. Por lo tanto, puede
verlo de esa manera, pero también desea proporcionar buenos comentarios cuando use descanso o continuación.
Espero que esto ayude. En la próxima lección, haremos
un desafío en el que podremos utilizar estos
bucles y demostrará y le ayudará a aprender todo sobre los bucles while for y romper
y continuar. Gracias.