En este capítulo empezaremos a usar dos herramientas básicas en lenguaje C, los condicionales y los bucles.
| Es habitual encontrar tutoriales donde se aprenden antes las funciones, no obstante, eso invita a perder la perspectiva. |
Contenido |
Desde que se creo el álgebra booleana, ha sido el paradigma del ámbito digital, pues ambos pueden explicarse el uno del otro.
La variables booleanas no son más que variables que pueden tomar únicamente dos valores, verdadero o falso.
En lenguaje C++, las variables booleanas se declaran con bool, y los valores que pueden tomar son false (Que será lo mismo que 0), o true (Que será lo mismo que un valor distinto de cero, típicamente el 1).
|
El tipo de variable bool es de C++, no de C |
Las variables booleanas como tal son hasta cierto punto difíciles de ver, no obstante son un subproducto de las dos herramientas que venimos buscando, los condicionales, y los bucles.
Por poner un ejemplo, un código de creación de una variable booleana sería:
bool Flag=false;
| Como se ve en el código anterior, las variables pueden tomar un valor (por defecto se suele llamar) en el momento de su declaración. |
Los condicionales son órdenes que establecen si sus dependientes (órdenes contenidas entre las llaves) se ejecutan o no.
Es decir, si el argumento que recibe el condicional es cierto, se ejecutará todo el código incluido en las llaves, en otro caso no.
En C, el condicional base es if, y su contrapartida (se ejecutará si no es cierto) else.
Pongamos un ejemplo...
El código es el siguiente:
#include <stdio.h>
int main()
{
// Declaracion de variables
int KK=0;
// Pedimos los datos
printf("dame un entero:\n");
scanf("%d",&KK);
// Probamos algunos condicionales
if(KK < 10)
{
printf("El numero es menor que 10\n");
}
else if(KK == 10)
{
printf("El numero es exactamente 10\n");
}
else
{
printf("El numero es mayor que 10\n");
}
// Salimos del programa sin errores
return 0;
}
Analicemos los condicionales.
if(KK < 10)
Nos fijamos primero en los que está dentro de los paréntesis (argumento de la función if), KK < 10. En C, +-*/<>= y bastantes más son lo que se conoce como operadores. Los operadores condicionales son:
Conviene darse cuenta que es lo mismo escribir a != b que !(a == b).
Así pues, si el valor que hemos introducido es menor que 10, la orden if(KK < 10) sería igual que haber escrito if(true), y por tanto, el condicional será cierto, y se ejecutará el código (imprimirá que el número es menor que diez).
Sigamos por los condicionales... Si se cumple el primer condicional, el códgio ya desecha todos los demás, pues tienen un else que les precede. En ese sentido, si cambiáramos else if(KK == 10) por else if(KK <= 10), el código no cambiaría lo más mínimo, pues si KK es menor que diez, entrará en el primer condicional, y a pesar de ser cierto el segundo, rechazaría toda acción por precederle un else.
Si no se cumple el primer condicional, el código analiza el segundo, para ver si es que el número es igual a diez, y sólo en el caso de que el segundo condicional tampoco se cumpla, ejecutará la tercera orden sea cual sea el número.
| Aún existe otro tipo de condicional, el switch, pero de momento no lo estudiaremos. |
Los bucles son la extensión natural de los condicionales. Los bucles son funciones que ejecutan todas las órdenes dependientes (las incluidas entre las llaves), mientras se cumpla una determinada condición.
En C existen dos tipos de bucles, los while y los for.
El bucle básico es el while, que repetirá las órdenes dependientes mientras su argumento sea cierto. Pongamos un ejemplo:
Creamos un nuevo proyecto en el capítulo 003, con el nombre Bucles-001
#include <stdio.h>
int main()
{
// Declaracion de variables
int count=0;
// Hacemos un bucle
while(count < 10)
{
// Incrementamos el paso una unidad
count++;
// Lo imprimimos por pantalla
printf("Paso numero %d\n", count);
}
// Imprimimos un mensaje de que se ha acabado el bucle
printf("---Se acabo el bucle---");
// Salimos del programa sin errores
return 0;
}
Es bastante simple, por tanto huelga un análisis detallado, pero si que es interesante jugar con él.
Podemos empezar modificándolo para que no tenga salida (mala programación). Veremos que el código no termina nunca, y por tanto deberemos pararlo pulsando Ctrl+c. Un posible ejemplo (en un proyecto llamado Bucles-002), en el que cambiamos el argumento del condicional:
#include <stdio.h>
int main()
{
// Declaracion de variables
int count=0;
// Hacemos un bucle
while(count >= 0)
{
// Incrementamos el paso una unidad
count++;
// Lo imprimimos por pantalla
printf("Paso numero %d\n", count);
}
// Imprimimos un mensaje de que se ha acabado el bucle
printf("---Se acabo el bucle---");
// Salimos del programa sin errores
return 0;
}
El otro tipo de bucle es el for, al que en vez de pasarle un argumento, se le pasan tres órdenes, de la forma:
for(Inicializacion;Condicion;Incremento)
Así, por ejemplo, el código equivalente de Bucle-001 sería (crearlo en un Bucle-003):
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Declaracion de variables
int i;
// Hacemos un bucle
for(i=1;i<=10;i++)
{
// Lo imprimimos por pantalla
printf("Paso numero %d\n", i);
}
// Imprimimos un mensaje de que se ha acabado el bucle
printf("---Se acabo el bucle---");
// Salimos del programa sin errores
return 0;
}
Es decir, iniciará i con el valor 1, y a cada vuelta incrementará su valor en una unidad (i++), y comprobará si es menor o igual que diez (i<=10).
| Nótese que podemos variar el valor de i, lo que variará el orden normal del bucle. Normalmente esto se debe evitar, pero si se sabe lo que se está haciendo, puede ser de mucha utilidad |
El operador módulo es una operación muy común, y se denota como %. El operador módulo devuelve el resto de una división, así por ejemplo:
5/2 = 2.5 (no es exacta) 5 = 2*2 + 1 (resto 1) 5%2 = 1
Es decir, es muy útil para ver si una división es exacta, ya que si es así, el módulo valdrá cero. O lo que es lo mismo, es muy útil para ver si un número es múltiplo de otro.
1.- Crear un programa que pida tres números y los ordene de menor a mayor.
2.- Crear un programa que cuente el número de ceros de un número de 4 cifras (del 1000 al 9999)
1.- Crear un programa que devuelva la suma de los diez primeros números enteros (1+2+3+4+5+6+7+8+9+10).
2.- Crear un programa que cuente el número de ceros en un número de teóricamente cuantas cifras se quiera.
3.- Crear un programa que devuelva los números primos del uno al cien.
4.- Crear un programa que calcule la raíz cuadrada de un número.
5.- Crear un programa que pida diez veces un número menor que diez usando while. Es decir, que no pare hasta haber recibido 10 veces un número menor que 10.
5.- Crear un programa que pida diez veces un número menor que diez usando for. Es decir, que no pare hasta haber recibido 10 veces un número menor que 10.
[[Página oficial del compilador gcc]]
[[Página oficial de la IDE Code::Blocks]]
| TallerC-Cpp: Capítulo 2.- Aventurándonos en los dominios de C | Taller de Programción C-Cpp | TallerC-Cpp: Capítulo 4.- Funciones (las incomprensibles cajas negras) |