Codificación aprenderaprogramar.com: CU00529F
CONDICIONALES IF THEN ELSE EN C
La sintaxis a emplear con C es muy similar a la que vimos al hablar de pseudocódigo, con la sustitución del Si por If, del Entonces por un símbolo de apertura de llave, { , del SiNo por else y del Finsi por un símbolo de cierre de llaves, }. La única salvedad a tener en cuenta es que C permite además de la escritura en bloques la escritura en línea sin uso de llaves.
Sintaxis en bloque:
if (condición) { Instrucción 1; Instrucción 2; . . . Instrucción n; } else { Instrucción A; Instrucción B; . . . Instrucción Z; } |
Sintaxis en línea:
If (condición) Instrucción 1; else Instrucción A; |
A pesar de que la sintaxis en línea está permitida y es legal, recomendamos usar siempre las llaves porque genera un código más legible y más fácil de mantener, quedando bien delimitada la intención del programador.
La instrucción if es anidable dentro de sí misma, siendo siempre preferible el formato de bloque (usando llaves) cuando se vayan a generar anidamientos. Ten en cuenta que la claridad y legibilidad del código forman parte de lo que se denominan “buenas prácticas de programación” y suelen ser valoradas positivamente. Aunque no afecten a la ejecución de los programas, sí afectan a su mantenimiento.
Ejemplo:
if (A>7 && B<5) { printf("A es mayor que 7 y B menor que 5\n"); } |
También válido es:
if (A>7 && B<5) printf("A es mayor que 7 y B menor que 5\n"); |
Si introducimos una cláusula else el modelo es:
if (A>7 && B<5) { printf("A es mayor que 7 y B menor que 5\n"); } else { printf("A no es mayor que 7 ó B no es menor que 5\n"); } |
También válido:
if (A>7 && B<5) printf("A es mayor que 7 y B menor que 5\n"); else printf("A no es mayor que 7 ó B no es menor que 5\n"); |
Una cuestión a tener en cuenta es que cuando la condición indicada por un if en bloque no se cumple, se produce el salto a la siguiente instrucción inmediatamente posterior a la llave de cierre. Igualmente, cuando la condición indicada por un if en línea no se cumple, se produce el salto a la siguiente instrucción incluso si esta se encuentra en la misma línea que el if. Veámoslo con un ejemplo. Ejecuta estas dos versiones de código:
Versión 1:
#include <stdio.h>
|
Versión 2:
#include <stdio.h> #include <stdlib.h>
int main() { int a; a=3; if (a==5 ) printf("Se cumple que a vale 5\n"); a=25; printf("El valor actual de a es %d\n", a); return 0; //Ejemplo aprenderaprogramar.com }
|
En el caso 1 y en el caso 2 el resultado es que se muestra en pantalla es el mismo: "El valor actual de a es 25". En algún momento se podría pensar que en la versión 2 el valor de a seguiría siendo 3 al no cumplirse la condición del if, sin embargo al no existir llaves delimitadoras el compilador trata la siguiente instrucción a continuación del if como si estuviera en una línea diferente. En un if sin llaves delimitadoras la única instrucción que se ve afectada por el condicional es la instrucción inmediata al if, en este ejemplo printf("Se cumple que a vale 5\n");. La mejor forma de dejar claro qué es lo que queremos hacer es utilizar las llaves de apertura y cierre, con lo cual evitamos posibles confusiones.
EJERCICIO
Crea un programa que declare tres variables de tipo entero con valores A = 5, B = 3, C = -12 y muestre si se cumplen o no las siguientes condiciones usando if else:
a) A > 3 b) A > C c) B != C d) A == 3
e) A * B == 15 f) C / B < A g) C / B == -10
h) A + B + C == 5
i) (A+B == 8) && (A-B == 2)
j) (A+B == 8) || (A-B == 6)
o) A > 3 && B > 3 && C < 3
Ejemplo. Hay que evaluar si A es mayor que tres. Si se cumple esa condición debe mostrarse el mensaje “A es mayor que 3” y en caso contrario debe mostrarse el mensaje “A no es mayor que 3”. Proceder de la misma manera con el resto de condiciones.
Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.
Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.