Una de las características de un lenguaje de programación es el uso de instrucciones condicionales. Veamos diferentes tipos de instrucciones condicionales a través de ejemplos en lenguaje C.
Instrucciones condicionales
Sentencia if…else
La utilizamos cuando tenemos una condición que nos arroja dos resultados: Verdadero o Falso.
Por ejemplo: Escribir un programa en C que lea una edad e indique si la persona puede votar o no.
#include "stdio.h" int main(){ int edad; printf("Escriba su edad: "); scanf("%d", &edad); if (edad >= 18){ printf("Ya puedes votar"); } else{ printf("Todavia eres un niño"); } }
La instrucción if abre un paréntesis que dentro lleva una condición: edad >= 18. No lleva punto y coma. Si colocaras el punto y coma, el error lo encontraría hasta la sentencia else.
Justo después de la condición que está entre paréntesis, se abre una llave {, todo lo que siga a partir de aquí y hasta que se cierre la llave, son las instrucciones que se ejecutarán si la condición es verdadera.
Después del cierre de la llave } , encontramos la sentencia else, que no lleva condición. Else abre una llave y todo lo que siga a partir de esta llave y hasta su cierre }, son las instrucciones que se ejecutarán si la condición es falsa.
Operadores condicionales
Las condiciones que van dentro de los paréntesis usan operadores condicionales, que son los siguientes: <, >, <=, >=, ==, !=. (Menor, mayor, menor-igual, mayor-igual, igual, diferente)
En el siguiente ejemplo utilizamos una instrucción if…else y un operador menor-igual <=
Ejemplo: Realizar programa que utilice un saldo lea un deposito, agrege el deposito al saldo, lea un retiro, verifique que hay suficiente saldo. Si hay suficiente saldo, realiza la operacion.
#include "stdio.h" int main(){ float saldo, deposito, retiro; saldo = 300; printf("Cuanto deposita: "); scanf("%f", &deposito); saldo = saldo + deposito; printf("Cuanto retira: "); scanf("%f", &retiro); if (retiro <= saldo){ saldo = saldo - retiro; printf ("Su nuevo saldo es: %.2f", round(saldo)); } else{ printf("No hay suficiente saldo"); } }
Ifs anidados
Los if pueden contener cualquier tipo de instrucción, incluidos otros if.
En el siguiente ejemplo utilizaremos dos if. Uno va dentro de la parte del else (cuando da falso la condición).
Consiste en identificar cuando un número es nulo, positivo o negativo.
#include "stdio.h" int main(){ int n; printf("Escriba un numero"); scanf("%d", &n); if (n==0){ printf("Es nulo"); } else{ if (n<0){ printf("Es negativo"); } else{ printf("Es positivo"); } } }
El primer if utiliza un operador igual == para determinar si el número es cero. (Tiene que escribir ==, si escribe un solo signo = está indicando una operación de asignación, no de comparación).
Cuando no es cero (la parte else) quiere decir que es positivo o negativo. Para saber si es positivo o negativo usamos otro if. En este segundo if solo tenemos que preguntar si es menor que cero (n<0), la parte else por lógica indica que el número es positivo.
Operadores lógicos
Los operadores lógicos son Y, O, y NO (AND, OR y NOT). En lenguaje C se utilizan estos símbolos: &&, || y !
Se utilizan para que evaluar dos o más condiciones en un solo if.
Vea el siguiente ejemplo:
Hacer un programa que realice descuentos en base a lo siguiente:
- Si la compra es menor a 500 no hay descuento
- Si es entre 500 y 1000, 10% de descuento
- Si es entre 1000 y 2000, 20% de descuento
- Si es mayor a 2000, 30% de descuento
#include "stdio.h" int main(){ float compra, descuento, total; printf("Monto de la compra: "); scanf("%f",&compra); if (compra < 500){ descuento = 0; } if (compra >= 500 && compra < 1000){ descuento= compra * .10; } if (compra >= 1000 && compra < 2000){ descuento = compra * .20; } if (compra >= 2000){ descuento = compra * .30; } total = compra - descuento; printf("Su descuento es: %.2f", descuento); printf("\nEl total a pagar es: %.2f", total); }
Usamos 4 if, uno por cada descuento del programa. Estos if no utilizan la sentencia else, por lo que se evalúan siempre los 4.
El segundo if utiliza el operador lógico && (and), para unir dos condiciones: ¿compra es mayor-igual a 500 Y compra es menor que 1000?
Si el usuario introdujera en compra el valor de 800, el if cumple las dos condiciones (es mayor-igual a 500 y al mismo tiempo menor que 1000), por lo que se ejecutarían las instrucciones que están entre sus llaves. De lo contrario continúa en la siguiente línea después del cierre de la llave }
El tercer if hace algo parecido.
Operador AND
Tabla de verdad
V && V = V
V && F = F
F&& V =F
F && F= F
Si el usuario introdujera el valor de compra de 1200, y la instrucción fuese:
if (compra >= 500 && compra < 1000)
la primera condición sí da verdadero (compra es mayor que 500), pero la segunda da falso (compra no es menor que 1000), por lo que la sentencia completa da falso y no se ejecutaría la sección de código correspondiente.
Comparación de cadenas en C
En los ejemplos anteriores hemos utilizado comparación de números. Si deseamos utilizar cadenas de caracteres, necesitamos algunas instrucciones adicionales.
Vea el siguiente ejemplo:
Cree un programa que lea una clave.
Si la clave es itsa es correcta, si no, es incorrecta.
#include "stdio.h" #include "string.h" main(){ char clave[10]; printf("Escriba su clave: "); scanf("%9s", clave); // Solo admitira 9 caracteres if (strcmp(clave, "itsa")==0){ printf("La clave es correcta"); } else{ printf("La clave es incorrecta"); } }
Utilizamos una nueva biblioteca llamada string.h. También utilizamos la instrucción strcmp que nos sirve para comparar cadenas. Se utiliza así
if (strcmp(clave, “itsa”)==0){
se escribe strcmp y entre paréntesis se anotan las dos cadenas que deseamos comprar, en este ejemplo, la clave que el usuario introdujo y la cadena “itsa”; si el resultado de esta comparación es 0, quiere decir que no hay diferencias.
Operador OR ||
Supongamos que deseamos utilizar dos claves distintas. La instrucción completa quedaría así
if (strcmp(clave, “itsa”)==0 || strcmp(clave,”1234”)==0{
Observe que utilizamos el operador lógico or ||, que evalúa dos condiciones. El operador or nos permite que con que una sola de las dos instrucciones de verdadero, la sentencia completa se evalúa como verdadera.
Tabla de verdad
V || V = V
V || F = V
F || V = V
F || F = F
Si el usuario escribe como clave 1234, la primera condición se evalúa a falso, pues clave no es igual a “itsa”, pero la segunda condición sí se evalúa a verdadero, porque clave es igual a 1234, por lo que toda la condición es verdadera y se ejecutan las instrucciones que siguen a la llave.
Tu comentario
opiniones