[Tutorial C] II.4 - Condiciones

Ver el tema anterior Ver el tema siguiente Ir abajo

[Tutorial C] II.4 - Condiciones

Mensaje  HarZe el Lun Dic 07, 2009 9:44 pm

Condiciones

Si queremos que una parte de código solo se ejecute si ocurre algo en concreto, debemos usar condiciones. Y si queremos que se ejecuten distintos códigos según lo que ocurre, debemos dominarlas.
Su esctructura básica es:
Código:
if (valor lógico)
{
    codigo
}
Ya he explicado que és un valor lógico, asi que veamos un ejemplo:
Código:
int i = 5;
if (i > 3)
{
    printf("i es mayor que 3");
}
Declaramos una variable que vale 5, luego comprobamos que es mayor que 3, si lo es, dará un mensaje diciendo eso mismo. Cuando el código interno del if es una sola línea, podemos atajar quitando llaves así:
Código:
if (i<3) printf("i es mayor que 3");
Ahora imaginemos que si no es mayor que 3, y queremos que también nos lo indique, porque hasta ahora si poniamos algo menor que 3, no pasaría nada.
Código:
if (i>3)
{
    printf("i es mayor que 3");
}
else
{
    printf("i es menor o igual que 3");
}
else es: "si no pasa lo del if, pasará esto otro". Aunque no es realmente necesario para programa, ahorra mucho trabajo al procesador, porque este último ejemplo podría funcionar igual así:
Código:
if (i>3)
{
    printf("i es mayor que 3");
}
if (i <= 3)
{
    printf("i es menor o igual que 3");
}
Pero obligarías al ordenador a hacer dos comprobaciones, y con la primera, ya sabes la segunda, asi que es trabajo innecesario, para eso se inventó el else.

Ahora otro problema que se te puede plantear es que quieras que suceda algo cuando varias cosas ocurren, ejemplo:
Código:
int i = 5;
int j = 6;
if (i==5)
{
    if(j==6)
    {
          codigo...
    }
}
Es lo mismo que si haces esto:
Código:
int i = 5;
int j = 6;
if (i==5 && j==6)
{
    codigo...
}
Así solo haces una vez la comprobación. Siempre debes optimizar, contar, como si fueses la maquina, cuantas comprobaciones haces, prueba distintas formas, y decide cuál es mejor.
Código:
int i = 5;
int j = 3;
if (i==5 || j==6)
{
    codigo...
}
En este caso, el código se ejecutaría, porque es una opcion, con que ocurra una de las dos condiciones, se cumple.
Código:
int i = 4;
if ( !(i==5) )
{
    codigo...
}
En este caso, el código también se ejecutaría, porque como la condición es que NO sea i igual a 5...

Esto es práctica, a parte de la base de todo lenguaje de programación.

Un atajo para cuando tengas esa práctica:
Código:
(valor(es) lógico(s)) ? { ...codigo para valor cierto... } : { ...codigo para valor falso... }
No tiene por qué estar todo en la misma línea, ejemplo de muchas de las cosas que podrían pasar con esto:
Código:
int i, k;
i = k = 5;
( i==k && k!=4) ? {
printf("tanto i como k, son iguales y no son 4");
} : {
printf("i y k son distintos, pero no se si k es 4");
}
Hay varias cosas curiosas que comentar. Primero, la segunda línea, aquí se trabaja de derecha a izquierda: 5 es k, por lo que k es 5; k es i, por lo que i es k, si k es 5, i es 5. Si lees los printf, verás que comento en el segundo que no se si k es 4. Si la primera condición no se cumple, la segunda ni se mira, porque da igual, ya va a ser falso.

HarZe
WebMaster & Desarrollador

Cantidad de envíos : 58
Fecha de inscripción : 21/06/2009
Edad : 24

Ver perfil de usuario http://opengl-esp.superforo.net

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.