Ciclos — Errores de compilación en C

Cuando programamos, hay veces que es necesario que una acción se ejecute más de una vez, es ahí en donde ocupamos los ciclos..

Hay 3 tipos de ciclos en C, con los tres podemos obtener el mismo resultado, pero siempre va a haber uno que se amolde más a nuestra necesidad y que haga el proceso de manera más sencilla.

Ciclo For

Es el de estructura condicional más definida, este tipo de ciclo es de gran utilidad cuando ya tenemos un número de repeticiones definidas, cuando sabemos que independientemente lo que se obtenga.

Su sintaxis es:

for (valor inicial ; condición ; aumento o disminución) { instrucciones a ejecutar}

Todo va con respecto a una misma variable

for (ï=0;i<3;i++){
// Dentro de las llaves va todo el procedimiento que queramos que se repita
}

Ésto se lee como “para i igual con cero, mientras i sea menor que 3, i aumenta en uno” lo cual quiere decir que cada vez que el proceso se repita, i va a valer 1 más de lo que ya valía y que el código dentro del for se va a ejecutar 3 veces, pues los valores de i van a ir del 0 al 2 (para i menor que 3).

Ciclo While

Éste tipo de ciclo nos ofrece más libertad para programar, pues no cuenta con una estructura tan definida como el for, con while es suficiente poner la condición.

while (condición){

//código a ejecutar

}

while (i<5) {
y=y-1;
i=i+1;
}

Ésto se lee como: mientras i sea menor que 5 el valor de y va a disminuir en uno y una vez que esto se ejecute i va a aumentar en 1.

Una ventaja de este ciclo es el uso de banderas, nosotros dentro de este podemos condicionar su resultado y en lugar que se repita 5 veces que sería el curso normal, hacer que se repita solo dos bajo cierta condición.

#include<stdio.h>
#include<stdlib.h>
int main(){
int y=0;
int contador=0;
while (contador==0){
y=y+1;
printf("%i", y);
if (y==10){
contador=1;
}
}
}

Por ejemplo, en este ciclo tenemos inicializado la variable contador y la variable y en cero. La condición es que mientras contador sea igual con cero el valor de y va a aumentar en 1 y se va a imprimir… A simple vista tenemos un ciclo que se va a repetir de manera infinita, pero no. Sólo basta con que y, que inicialmente valía cero, llegué a 10 para que el valor de contador cambie a uno y no vuelva a entrar al ciclo.

Ciclo Do While

Es parecido al While sólo que éste se ejecuta al menos 1 vez sin importar cuál sea la condición, pues esta se encuentra al final de la estructura. Un uso común para los ciclos pueden ser los menús de opciones.

do{

//instrucciones a ejecutarse

}while (condición);

Otra diferencia con respecto a los dos ciclos anteriores, es que es la única estructura de ciclo que lleva punto y coma (;) después de la condición.

do {
printf(" 1.Suma/n 2.Resta/n 3. Salir");
scanf("%i%*c", &opcion);
switch (opcion){
case 1:
suma();
break;
case 2:
resta():
break;
}while(opcion!=3);
Errores comunes — Ciclo infinito

Es muy fácil confundir la condición, por eso es necesario recordar que se lee como “mientras que” en lugar de “hasta que”.

#include<stdio.h>
#include<stdlib.h>
int main(){
int y=0;
int contador;
for (contador=1;contador>=0;contador++){
y=y+2;
printf("%i", y);
}
}

Podemos observar que tenemos para contador igual con 1, mientras que contador sea mayor que 0, contador va a aumentar en 1. Así que contador siempre entrará como verdadero en la condición, provocando que se impriman número pares infinitos.

Asignar en lugar de comparar o viceversa

Si programamos ésto y lo corremos, no nos saldrá un error como tal, pero si ignorará toda nuestra estructura, pues no está comparando nada.

Sólo le está asignando el valor de cero dos veces a la variable contador.

#include<stdio.h>
#include<stdlib.h>
int main(){
int y=0;
int contador;
for (contador=0;contador=0;contador++){
y=y+2;
printf("%i", y);
}
}

En el siguiente código sólo estamos comparando doble

#include<stdio.h>
#include<stdlib.h>
int main(){
int y=0;
int contador;
for (contador==0;contador==0;contador++){
y=y+2;
printf("%i", y);
}
}

Y obtenemos el mismo resultado, no se ejecuta el ciclo.

Punto y coma después de la condición

Cabe aclarar que este error sólo es válido para la el for y el while, pues como se mencionó anteriormente el do while si lleva punto y coma (;) en su sintaxis.

#include<stdio.h>
#include<stdlib.h>
int main(){
int y=0;
int contador;
for (contador=0;contador<10;contador++);{
y=y+2;
printf("%i", y);
}
}

Recordando un poco, obtendremos el mismo resultado de ponerle un punto y coma a un if o un switch, se ignorará el ciclo pues lo que hace el compilador es que toma como instrucción lo que está entre la condición y el punto y coma.

Omitir punto y coma en el do while

Así como poner un punto y coma después de la condición en un for y/o while es un error, también lo es omitirlo después de la condición de un do While.

#include<stdio.h>
#include<stdlib.h>
int main(){
int opcion;
int n1=5;
int n2=3;
do {
printf(" 1.Suma/n 2.Resta/n 3. Salir");
scanf("%i%*c", &opcion);
switch (opcion){
case 1:
printf("%i",n1+n2);
break;
case 2:
printf("%i",n1+n2);
break;
}while(opcion!=3)
}
}
Like what you read? Give Samantha Hdez a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.