Lenguaje C - La sentencia if La sentencia if sirve para ejecutar una serie de instrucciones si se cumple una determinada condición. If en inglés significa si (condicional). La forma general de la sentencia if es la siguiente: if (condicion) { sentencia1; sentencia2; ... sentencia n; } siguiente sentencia La condición es una expresión que puede resultar verdadera o falsa. Si la condición es cierta, entonces el procesador ejecutará las sentencias del bloque entre llaves. Si no es cierta, el programa ignora todas las sentencias y continuará por la siguiente sentencia. Para realizar comparaciones es necesario utilizar los operadores lógicos que ya vimos en el tema de las variables Operadores lógicos > Mayor que >= Mayor o igual que < Menor que <= Menor o igual que == Igual que != No igual que && Función lógica Y || Función lógica O ! Función lógica NO Ejemplo 1: int x; x = 10; if (x > 5) { printf ("x es mayor que 5\n"); } El resultado de ejecutar este programa es el mensaje x es mayor que 5. Ejemplo 2: int x; x = 10; if (x > 25) { printf ("x es mayor que 25\n"); } El resultado de ejecutar este programa es que no aparece ningún mensaje, como la condición ahora no se cumple, no ejecuta el printf Ejemplo 3: Hacer un programa que pida al usuario un número del 1 al 10. Si el usuario mete un número mayor que 10 debe aparecer un mensaje de error. Si el usuario mete un número menor que 1, también debe aparecer un mensaje de error. int x; printf ("Introduce un número del 1 al 10"); scanf("%d", &x); 1 if (x > 10) { printf ("Error: has introducido un número mayor que 10\n"); } if (x < 1) { printf ("Error: has introducido un número menor que 1\n"); } printf ("El número introducido es: %d", x); Esta vez es el usuario el que asigna un valor a la variable x utilizando scanf. Funciones lógicas Tabla de verdad de la función lógica O ( II ) El resultado es verdadero cuando alguna condición es verdadera. Tabla de verdad de la función lógica Y ( && ) El resultado es verdadero cuando las dos condiciones son verdaderas Ejemplo 4: Los dos if del ejemplo anterior se pueden simplificar en un sólo if. Basta poner las 2 condiciones en el mismo if con el operador || (O lógico) 2 int x; printf ("Introduce un número del 1 al 10"); scanf("%d", &x); if ( (x > 10) || (x < 1) ) { printf ("Error: has introducido un número no válido. Tiene que estar entre 1 y 1 0\n"); } printf ("El número introducido es: %d\n", x); La condición del if la podríamos "leer" como: Si x es mayor que 10 o x es menor que 1, entonces... Si alguna de las 2 condiciones se cumple, entonces es cierto. El símbolo | está en la tecla del 1. Ejemplo 5: Se le pide a un usuario que introduzca el mes y el día de su nacimiento, si la fecha fue 19 de marzo queremos que aparezca el mensaje "Usted nació el día de San José". int dia; int mes; printf ("Introduce el mes de nacimiento: "); scanf("%d", &mes); printf ("Introduce el dia de nacimiento: "); scanf("%d", &dia); if ( (mes == 3) && (dia == 19) ) { printf ("Usted nació el día de San José\n"); } La condición del if la podríamos leer como: Si el mes es 3 y el día es 19 entonces... La condición del if sóloserá cierta si la primera comparación y la segunda son ciertas. Si alguna de ellas es falsa, no se cumple. La función lógica Y se escribe en C como &&. El símbolo & está en la tecla del número 6. EJERCICIO CATEGORÍAS int edad; printf("Qué edad tienes? "); scanf("%d", &edad); if (edad < 18) { printf("Eres niño"); } if ((edad>=18) && (edad<=30)) { printf("Eres joven"); } if ((edad>=31) && (edad<=60)) { printf("Eres adulto"); } if (edad > 60) { 3 printf("Eres viejo"); } Else A la sentencia if se le puede añadir una parte opcional que es la sentencia else. Else en inglés significa si no. La forma general es if (condicion) { sentencias... } else { sentencias... } Al evaluar la condicion, si es cierta se ejecutan las sentencias, y si es falsa se ejecutan las sentencias del bloque else. Ejemplo 5: Programa que pide dos números y que intenta calcular la división entre ellos. int x; int y; float division; printf ("Introduce el valor de x"); scanf("%d", &x); printf ("Introduce el valor de y"); scanf("%d", &y); if (y != 0) { division = x / y; printf ("La division es %f", division\n); } else { printf ("ERROR: No se puede dividir un número entre 0\n"); } La condición (y != 0) significa (y distinto de 0). Si no se cumple es porque y = 0, no se puede calcular x / y y muestra el mensaje de error. Otros ejemplos Ejemplo1: Se quiere escribir un programa que: 1º) Pida por teclado la nota (dato real) de una asignatura. 2º) Muestre por pantalla: "APROBADO", en el caso de que la nota sea mayor o igual que 5. "SUSPENDIDO", en el caso de que la nota sea menor que 5. 4 #include <stdio.h> int main() { float nota; printf( "\n Introduzca nota (real): " ); scanf( "%f", &nota ); if ( nota >= 5 ) printf( "\n APROBADO" ); else printf( "\n SUSPENDIDO" ); return 0; } Ejemplo2: Que pida un número y diga si es par o impar. #include <stdio.h> #include <stdlib.h> int main(void) { int i; printf("Introduzca número:"); scanf("%d",&i); if (i%2==0) { printf("Es par."); } else { printf("Es impar."); } system("PAUSE"); return 0; } 5