Las sentencias selectivas permiten orientar el flujo un programa para la toma de
decisiones en el desarrollo de la solucin de un problema. La toma de decisin se basa en la evolucin de una o ms condiciones que sealan la rama o flujo a seguir. El lenguaje C cuenta con las siguientes sentencias selectivas if, if-else, if else if, ?, y switch las cuales se mencionan a continuacin.
4.1 Sentencia if
La sentencia if es una estructura que nos permite evaluar una o varias condiciones, las cuales se representan por expresiones o trminos que comprueban dos estados:
Primer estado: Verdadero, en C este estado se representa por un valor diferente de cero, generalmente por un uno lgico despus de haber comprobado la condicin. Segundo estado: Falso, en C este estado se representa por un cero lgico despus de haber comprobado la condicin.
El formato general de la estructura if es:
if ( condicin ) { Sentencia; }
Para el caso, si la condicin es verdadera, se ejecuta la sentencia o bloque que se encuentra entre llaves, es decir la sentencia. Ejemplo:
# include <stdio.h> # include <conio.h> void main ( ) { int x; printf( "Introduce un nmero " ); scanf( "%d",&x); if (x>0) { printf( "El nmero es positivo" ); } getch ( ); }
Para el ejemplo, se realiza un programa que indica si el nmero ingresado por el usuario es positivo de lo contrario no ocurre nada. En ocasiones es necesario determinar otra accin respecto a la misma variable, tal es el caso de indicar si el nmero ingresado es positivo o negativo. Comnmente suele emplearse otra estructura if que determine la nueva accin, sin embargo no es correcto en cuyo caso se deber emplear la estructura if else.
4.2 Sentencia if else
Esta estructura permite tomar accin sobre la condicin cuando es verdad y su complemento falso, para el caso if ejecuta su sentencia si la condicin es verdadera y else cuando la condicin es falsa. Particularmente esta estructura se emplea cuando existen dos acciones para la misma variable.
El formato general de la estructura if else es:
if ( condicin ) { Sentencia } else { Sentencia }
Para el caso, si la condicin es verdadera if ejecuta su sentencia o bloque que est entre llaves, si la condicin es falsa else ejecuta su sentencia o bloque que est entre llaves. Ejemplo:
# include <stdio.h> # include <conio.h> void main ( ) { int x; printf( "Introduce un nmero " ); scanf( "%d",&x); if (x>0) { printf( "El nmero es positivo" ); } else { printf( "El nmero es negativo" ); } getch ( ); }
En ocasiones se requiere saber ms cosas sobre la variable, por ejemplo si es positivo, si es negativo, si es par, si es impar, si es cero, etc. lo que implica una gran cantidad de estructuras if. Particularmente cuando se tiene este tipo tareas se recurre a la estructura if else if.
4.3 Sentencia if else if
Esta configuracin denominada escalonador se emplea para evaluar tres o ms expresiones condicionales (de arriba a abajo), si durante la evaluacin se encuentra una condicin verdadera ejecutara la sentencia asociada y saltara el resto de la estructura. Finalmente, si ninguna condicin resulta verdadera se ejecutara si es el caso la sentencia else. La estructura if else if resulta ser ms eficiente que tener una gran cantidad de estructuras if.
El formato general de la estructura if else es:
if ( condicin ) { Sentencia } else if ( condicin ) { Sentencia } else if ( condicin ) { Sentencia } . . else { Sentencia }
La utilizacin del if else if resulta til para programas donde se requiere evaluar tres o ms acciones.
Ejemplo:
# include <stdio.h> # include <conio.h> void main ( ) { int x; printf( "Introduce un nmero " ); scanf( "%d",&x); if (x>0) { printf( "El nmero es positivo" ); } else if (x<0) { printf( "El nmero es negativo" ); } else { printf( "Es neutro" ); } getch ( ); }
4.1.3 Sentencia if anidados
Un if anidado no es ms que un if que tiene como bloque de sentencia a otro if. Esta configuracin permite evaluar mltiples condiciones.
if ( condicin ) { if ( condicin ) { if ( condicin ) { Sentencia } } } else { Sentencia }
4.1.4. Operador condicional: ?
En C hay otra forma de asignar un valor segn se d una condicin o no. Es el operador condicional ? :
Su declaracin se realiza de la siguiente manera:
Variable = (condicin)? valor1: valor2;
y equivale a decir si se cumple la condicin, toma el valor 1; si no, toma el valor 2 .
Ejemplo: Realiza un programa que determine el mayor de dos nmeros introducidos por el usuario.
# include <stdio.h> # include <conio.h> main ( ) { int a, b, mayor; printf ("Escriba un nmero: "); scanf ("%d", &a); printf ("Escriba otro: "); scanf ("%d", &b); mayor = (a>b) ? a : b; printf ("El mayor de los nmeros es %d \n", mayor); }
Ejemplo: Realiza un programa que sume o reste dos nmeros segn sea la opcin. 1.- Resta; cualquier otra opcin: Suma
# include <stdio.h> # include <conio.h> main ( ) { int a, b, resultado; int operacion; printf("Escriba un nmero: "); scanf("%d", &a); printf("Escriba otro: "); scanf("%d", &b); printf("Escriba una operacin (1 = resta; otro = suma): "); scanf("%d", &operacion); resultado = (operacion == 1) ? a-b : a+b; printf("El resultado es %d.\n", resultado); }