Mostrando entradas con la etiqueta Bucles y Ciclos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bucles y Ciclos. Mostrar todas las entradas
En ciertas circunstancias hay dos sentencias que pueden ser muy útiles cuando nos encontramos dentro de un ciclo.

"continue" : pasa directamente a la siguiente iteración sin ejecutar las líneas de código que estén por debajo de esta orden.

"break" : rompe el ciclo.

Veamos un ejemplo de "continue" y la salida que origina:



En este caso, cuando se ejecute la sentencia "continue" se pasará directamente a la siguiente iteración, por lo que no se imprimirá "5":



Ahora veamos un ejemplo de "break":



En este caso, cuando se ejecute la sentencia "break" se saldrá totalmente del ciclo. Obtendremos la siguiente salida:


Ciclos "for":

Los ciclos "for" son otro tipo de instrucciones que permiten repetir un proceso determinado número de veces. Veamos cuál es su formato:

for (valor inicial; condición; variación del valor inicial)

Valor inicial: Es el índice del ciclo, será el valor a partir del cuál se itera.
Condición: Será la condicón necesaria para continuar el ciclo; cuando no se cumpla, este terminará.
Variación: Forma en que varía el "valor inicial" durante el ciclo.

OJO: el valor inicial TIENE que variar, o entraríamos a un ciclo infinito.

Veamos un ejemplo de un ciclo "for" que devuelve el alfabeto (excepto la 'z'):



Analicemos ahora el proceso. Hemos hecho un ciclo cuya orden podría traducirse de la siguiente manera: "para toda i, con i que comienza en la 'a', si i es menor que 'z', entra al ciclo y aumenta i cuando termines la iteración". Esto quiere decir que, como 'a' es menor que 'z', la condición se cumple, en ese caso se entrará al ciclo, se imprimirá 'a' y se aumentará la variable i, cuyo valor pasará a ser 'b'. Como 'b' también es menor que 'z', se repetirá el mismo proceso. La condición dejará de cumplirse cuando i sea igual a 'z', en cuyo caso, como 'z' no es menor estricto que 'z', el ciclo de romperá. Para que este ciclo imprima 'z' también, solamente necesitamos hacer un pequeño cambio en la condición de parada, que ahora sería " i <= 'z' ".

Los ciclos "for" pueden estar anidados. Esto significa que puede haber un ciclo "for" dentro de otro.

Veamos un ejemplo. Supongamos que queremos un programa que imprima las tablas de multiplicar del 1 al 5. Cómo lo haríamos.

Primero tomaríamos un 1 y lo multiplicaríamos por todos los números del 1 al 10. Luego tomaríamos el 2 y haríamos los mismo... así hasta el 5. Así que, traduciendo esto, lo que debemos decirle a nuestro programa es:

{
"Para (los numeros que empiezan en 1; que son <= 5; que van en aumento)"
      { "Para(los numeros que empiezan en 1; que son <= 10, que van en aumento)"
              "imprime el producto"
      }
}

La instrucciones de los ciclos "for" anidados funcionan de la siguiente manera: "para cada valor del ciclo externo se ejecutará completamente el ciclo interno". Así, nuestra instrucción funcionará del siguiente modo: El primer valor del ciclo externo es 1, se entrará al ciclo interno que itera por los valores del 1 al 10 y se irá multiplicando 1*1, 1*2.... 1*10 y se romperá el ciclo interno; entonces entraremos en la 2da iteración del ciclo externo, su segundo valor es 2, volvemos a entrar al ciclo interno: 2*1, 2*2.... Y así. El código para este ejmplo quedaría del siguiente modo:



Ahora, hagamos una pequeña modificación aprovechando la expresividad de los valores de los índices. Copien este código y vean lo que pasa!



A partir de estos ejemplos les propongo los siguientes ejercicios:

-Crear un programa que escriba en la pantalla los numeros del 1 al 50 que son multiplos de 4 (pista: puedes hacerlo iterando de 4 en 4, o agregando una condicional dentro del ciclo).

- Crear un programa que escriba en pantalla los números del 20 al 0, en orden decreciente (pista: en vez de aumentar la variación, hay que disminuirla).
Vamos a ver ahora los Bucles o Ciclos de repetición. Este tipo de instrucciones nos permitirá realizar cierta acción mientras se cumpla una condición determinada.
Veamos un ejemplo simple:

Supongamos que deseamos pedirle al usuario que teclee su nueva contraseña. La contraseña es "fresas". Pero el usuario puede equivocarse escribiendola y, sin darse cuenta, su contraseña ahora podría ser "frezas" por ejemplo. Para eso, le pedimos al usuario que teclee nuevamente su contraseña, si las dos contraseñas no son iguales, simplemente le pediremos que repita el mismo proceso.

Sentencias condicionales:

while(condicion) {hacer esto} - ejecutará "hacer esto" mientras se cumpla la condición.

do {esto} while(condicion); - ejecutará "esto" mientras se cumpla la condición.

Veamos el ejemplo del principio:


Al ejecutar este código obtendremos un programa que nos pedirá nuestro nombre hasta que no lo escribamos sin errores.

Vamos a ver como funciona:

Al principio hemos declarado las variables "nombre" y "nombre2". Luego llegamos a la sentencia do
, dentro de ella se nos pregunta nuestro nombre y lo que escribamos se guarda en la variable "nombre", luego se nos pregunta de nuevo y lo que escribamos se guarda en la variable "nombre2". Luego se llega a la sentencia while que nos dice que, si la variable "nombre"es distinta de la variable "nombre2" debemos volver al do y volver a preguntar el nombre.... Y así, hasta que no se cumpla la condición, o sea, que teclees bien tu nombre y "nombre" sea igual a "nombre2".


Ahora veamos un ejemplo utilizando while de un programa que imprimirá números mientras que estos sean menores que 50:




La sentencia "numero = numero + 1" indica que, por cada iteración dentro del ciclo, la variable numero aumentará en una unidad. También es válido escribir "numero++;"

Veamos cómo funciona este código:

Declaramos la variable "numero" con valor inicial 1. Vamos a la condición del ciclo. Es "numero" menor que 50? Como el valor de "numero" es 1, si, es menor que 50. Asi que entramos en el ciclo. Lo primero que hace este ciclo es imprimir el valor actual de "numero", así que imprimirá "1". Luego, nos dice que la variable "numero" ahora tendrá su valor actual aumentado en 1, como su valor es 1, 1+1= 2 y ahora "numero" vale 2. Hemos terminado esta iteración y regresamos a la condición: es "numero" menor que 50? Como el valor de "numero" ahora es 2, sigue siendo menor que 50.... y así, hasta que el valor de "numero" sea 49, entonces entraremos al ciclo, lo imprimiremos, pero al aumentarlo en 1, en la proxima iteración el valor de "numero" sera 50, y como 50 no es menor que 50, se romperá el ciclo, porque no se cumple la condición. Prueben este código, que debe imprimir los números desde el 1 hasta el 49.