:.Ciclos en C.:

Los Ciclos, también llamados Bucles, son unas sentencias de control -que nos permiten manipular el flujo del programas- utilizadas para la ejecución repetitiva de instrucciones; para ello se valen de una “Condición de parada” y, de acuerdo a nuestras necesidades, podemos utilizar una u otra, muchas veces, en instrucciones sencillas, no importa demasiado, pero en programas más amplios es necesario escogerlas con cuidado.

Ciclo While

Como su traducción literal lo indica, la utilizamos para repetir acciones “mientras” la condición que le indiquemos sea verdadera -que nos de un ‘1’ por la operación lógica-, si la condición se cumple, se entra al ciclo, y este se repetirá mientras la condición sea verdadera, si durante el ciclo -por operaciones y demás- la condición deja de ser verdadera o se encuentra con un “break;” -como el del switch-, se sale del ciclo y el código que sigue fuera de él se ejecutará normalmente, su sintaxis es:

while(condición){Sentencias;}

Cabe mencionar que los corchetes son opcionales, si no se usan, significa que el while abarca “una línea”, esto es, únicamente busca “sentencia;”, no importando si está al lado, abajo o veinte líneas en blanco abajo en nuestro código porque el complador borá todo eso y lo que le importa es que el fin de línea que significa una sentencia se dé con “;”, por eso es tan imporante. Los corchetes nos permiten hacer “un bloque” de código, un “ámbito“, por eso TODO lo de main va entre corchetes y cuando hagamos funciones, también los usaremos.

Picture 2012-01-01 13 49 06

Click en la Imagen para Ampliar

Picture 2012-01-01 13 49 15

Click en la Imagen para Ampliar

Analizemos, mientras que i sea igual a 0 se ejecuta la siguiente línea, o sea, el print en la línea 6, la línea 7 es también para el compilador otra sentencia, escribirlo así es para que nosotros lo leamos mejor, por eso ya no se ejecuta, el programa no necesita getch porque jamás se va a detener, como a i no le estamos haciendo nada, siempre va a valer 0, y la expresión “i==0” siempre nos dará un true -1-, es equivalente a escribir:
while(1){Sentencias;}//while(true) lo leo yo por comodidad, pero TRUE -mayúsculas- es una constante “definida” en stdio, me parece, también el while(1) se puede cambiar por while(TRUE)

Do-While

El primo de While, o su prima libertina -XD-. Al igual que while, requiere una condición, pero permite entrar al ámbito del ciclo aún si no se ha complido dicha condición. Primero entra, ejecuta todo el código en el ámbito del do-while, después checa la condición lógica y si es cierta, sigue ejecutando el código hasta que ésta sea falsa y por ende se detenga. Veamos:

Picture 2012-01-01 14 29 02

Click en la Imagen para Ampliar

Nos entrega:

Picture 2012-01-01 14 29 11

Click en la Imagen para Ampliar

Ahí se ve lo que ocurre con el do-while, primero entra, imprime, aumenta 10 al valor de i, después verifica la condición y decide si se ejecuta de nuevo o no. Al principio, i vale 10, se imprime, se aumenta y cuando checa la condición, ve que i<100 es cierta y lo hace de nuevo, ¿por qué solo imprime del 10 al 90? Porque primero se imprime y luego se hace el aumento, entonces, i va cambiando así:

Ciclo|valor de i al acabar
1|20
2|30
3|40
4|50
5|60
6|70
7|80
8|90
9|100

Ya se llegó a que i valga 100, pero eso se imprimiría en la siguiente instrucción, i ya lo vale, sale del ciclo y, como corroboramos, su valor es de 100. Ahora, ejecutamos las mismas instrucciones -pff se ahorra tiempo con funciones-, exáctamente las mismas, se imprime 100, se checa la condición y… momento ¿por qué se imprimió si el ciclo anterior había dicho que ya no podía ejecutarse el código y decidió parar? Porque, al contrario del While, el do-while permite que se entre al menos una vez al bloque de código y después verifica si se ha de ejecutar una siguiente vez. Usar while y do-while es una desición que se debe tomar con cuidado.

Ciclo For

El favorito de muchos, este ciclo es tremendamente utilizado para lo que tiene que ver con Arreglos, especialmente matrices, pues anidarlo -usar uno dentro de otro, como vimos con los ifs- es más sencillo de entender que anidar whiles o do-whiles para ese tipo de acciones. Lo que hace el for es tener una variable “contadora” que es la que nos indica la condición de parada, también se pueden ocupar 2 -no sé si más-, pero eso lo veremos luego con ejemplos. Su sintaxis es:

for(contador;condición(es);acciones al finalizar el ciclo){Sentencias}

Las condiciones al finalizar el ciclo suelen ser incrementos o decrementos. Muchos se preguntan el por qué se coloca casi de cajón una variable llamada ‘i’ como contador, en toda la web y hasta en mis ejemplos, ocupamos mucho la i para ciclos, no lo sé a ciencia cierta, pero creo que tiene que ver con que cada ciclo es también llamado “iteración”, y se toma su inicial, recordemos que C es un lenguaje imperativo, que se basa en la utilización de sentencias de control de flujo y ciclos iterativos -entre otras cosas- para resolver sus problemas.

En algunos lenguajes es posible declarar nuestro contador dentro del ciclo:
for(int i = 0;i<100,i+=10) //Ejemplo que no se puede en C
Nosotros debemos declarar en el mismo ámbito la variable que deseamos usar como contador y ya que estemos dentro del ciclo, darle un valor inicial:
int i = 0;
for(i=0;i<100;i++) //Esto sí se puede hacer 🙂

Vamos con un ejemplo, escribiremos los números del 1 al 10 con un ciclo for:

Picture 2012-01-01 15 00 52

Click en la Imagen para Ampliar

Nos entrega:

Picture 2012-01-01 15 01 07

Click en la Imagen para Ampliar

Siempre hay muchas formas de hacer lo mismo, unas más eficientes que otras, algunas más cómodas, otras más sencillas de leer, es un ejemplo de cómo podemos explotar nuestra imaginación, tal vez pongo mucho de mi idiosincracia en cómo estoy haciendo el tutorial, casi siempre hago los códigos como yo sé hacerlos, siempre con corchetes en los cilclos for aunque sean de una línea y cosas así, pero trataré de explorar las diferentes formas que sé de ahora en adelante.

Muy común es lo que vimos cuando usé j, necesitamos decir “Iteración [1]: ” y cosas así, ocupamos un entero, pero bien puede ser que si i es nuestro contador, en lugar de ir ‘de 0 a 9’ o algo así, que vaya de 100 a 40, no sé, que en lugar de decirle en la condición i<número le digamos i<variable, muchas cosas podemos hacer con ello, luego mostraré como incluír a j dentro de las instrucciones del diclo para ahorrarnos unas líneas y que el código sea más bonito y cómodo; así como funciona el for para una línea puede funcionar el while, para que quien lo desee, practique. También, se pueden poner más de una condición, con && y ||, los and y or lógicos que ya hemos visto antes, esto es especialmente útil para métodos numéricos, por ejemplo, y otro tipo de problemas que requieren este tipo de condiciones:
while(temperatura<maxima&&capacidad>almacenado){
sentencias;sentencias;sentencias;}

Espero no haberme explayado demasiado escribiendo cosas que no son de interés para quien lea esto, varios días no escribí, pero así es la cosa, a veces no dan tantas ganas, de momento es todo, ya casi se acaba lo más básico de C, faltan Funciones, Arreglos, Punteros-aunque eso ya es más avanzado- y ps si C es lenguaje estructurado es porque podemos hacer Estructuras, pero eso se entenderá a su tiempo. Saludos

Anuncios

~ por wkats en enero 1, 2012.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: