martes, 2 de octubre de 2012

Estructuras Alternativas en C: "if" y "else"


En programación, tipo de estructura de selección empleada en la programación de algoritmos.

IF significa SI (condicional) en español. Su funcionamiento es simple. Se evalúa una condición, si es verdadera ejecuta un código, si es falsa, ejecuta otro código (o continúa con la ejecución del programa).
 
Ejemplo:


#include int main() { int numero; printf("Escribe un numero: "); scanf("%d", &numero); if (numero>0) printf("El numero es positivo.\n"); return 0; }
 
Nota: para comprobar si un valor numérico es mayor que otro, usamos el símbolo “>”, como se ve en este ejemplo. Para ver si dos valores son iguales, usaremos dos símbolos de “igual”: if (numero==0). Las demás posibilidades las veremos algo más adelante. En todos los casos, la condición que queremos comprobar deberá indicarse entre paréntesis.

-if y sentencias compuestas

La "sentencia" que se ejecuta si se cumple la condición puede ser una sentencia simple o una compuesta. Las sentencias compuestas se forman agrupando varias sentencias simples entre llaves ( { y } ):


#include int main() { int numero; printf("Escribe un numero: "); scanf("%d", &numero); if (numero>0) { printf("El numero es positivo.\n"); printf("Recuerde que tambien puede usar negativos.\n"); } /* Aqui acaba el "if" */ return 0; } /* Aqui acaba el cuerpo del programa */
 
En este caso, si el número es negativo, se hacen dos cosas: escribir un texto y luego... ¡escribir otro! (Claramente, en este ejemplo, esos dos “printf” podrían ser uno solo; más adelante iremos encontrando casos en lo que necesitemos hacer cosas “más serias” dentro de una sentencia compuesta).
Se pueden incluir siempre las llaves después de un "if", como medida de seguridad: un fallo frecuente es escribir una única sentencia tras "if", sin llaves, luego añadir una segunda sentencia y olvidar las llaves... de modo que la segunda orden no se ejecutará si se cumple la condición, sino siempre, como en este ejemplo:
 

#include int main() { int numero; printf("Escribe un numero: "); scanf("%d", &numero); if (numero>0) { printf("El numero es positivo.\n"); printf("Recuerde que tambien puede usar negativos.\n"); } /* Aqui acaba el "if" */ return 0; } /* Aqui acaba el cuerpo del programa */

En este caso, siempre se nos dirá "Recuerde que también puede usar negativos", incluso cuando hemos tecleado un número negativo. En un vistazo rápido, vemos las dos sentencias tabuladas a la derecha y tendemos a pensar que las dos dependen del "if", pero no es así. Se trata de un error difícil de detectar. Por eso, muchos autores recomiendan incluir siempre las llaves tras un "if", e incluso algún lenguaje de programación posterior a C obliga a que siempre sea así.

-Operadores relacionales: <, <=, >, >=, ==, !=

Hemos visto que el símbolo “>” es el que se usa para comprobar si un número es mayor que otro. El símbolo de “menor que” también es sencillo, pero los demás son un poco menos evidentes, así que vamos a verlos:
Operador
Operación
<
Menor que
>
Mayor que
<=
Menor o igual que
>=
Mayor o igual que
==
Igual a
!=
No igual a (distinto de)
Y un ejemplo:

#include int main() { int numero; printf("Escribe un numero: "); scanf("%d", &amp;numero); if (numero!=0) printf("El numero no es cero.\n"); return 0; }
 
Los operadores sólo se pueden usar tal y como aparecen en esa tabla. Por ejemplo, no es un operador válido “!<” para expresar que un número no es menor que otro.

-IF-ELSE

Podemos indicar lo que queremos que ocurra en caso de que no se cumpla la condición, usando la orden “else” (en caso contrario), así:
 

#include int main() { int numero; printf("Escribe un numero: "); scanf("%d", &amp;numero); if (numero&gt;0) printf("El numero es positivo.\n"); else printf("El numero es cero o negativo.\n"); return 0; }
 
Podríamos intentar evitar el uso de “else” si utilizamos un “if” a continuación de otro, así:
 

#include int main() { int numero; printf("Escribe un numero: "); scanf("%d", &amp;numero); if (numero&gt;0) printf("El numero es positivo.\n"); if (numero&lt;=0) printf("El numero es cero o negativo.\n"); return 0; }
 
Pero el comportamiento no es el mismo: en el primer caso (ejemplo 17) se mira si el valor es positivo; si no lo es, se pasa a la segunda orden, pero si lo es, el programa ya ha terminado. En el segundo caso (ejemplo 18), aunque el número sea positivo, se vuelve a realizar la segunda comprobación para ver si es negativo o cero, por lo que el programa es algo más lento.
Podemos enlazar los “if” usando “else”, para decir “si no se cumple esta condición, mira a ver si se cumple esta otra”:
 

#include int main() { int numero; printf("Escriba un numero: "); scanf("%d", &amp;numero); if (numero &lt; 0) printf("El numero es negativo.\n"); else if (numero == 0) printf("El numero es cero.\n"); else printf("El numero es positivo.\n"); return 0; }

Fuentes:

-Definición de IF

-Curso de Programación en C por Nacho Cabanes

0 comentarios :

Publicar un comentario