Sentencias condicionales en C: If, Else, If anidado con ejemplo

⚡ Resumen inteligente

En C, las sentencias condicionales controlan el flujo de un programa ejecutando bloques de código solo cuando una condición comprobada se evalúa como verdadera, lo que permite la toma de decisiones mediante estructuras condicionales como if, if-else, anidadas y else-if.

  • 🔤 Si la instrucción: Una instrucción if ejecuta su bloque solo cuando la condición es un valor verdadero distinto de cero, mientras que cero significa falso.
  • 🔀 Si-en caso contrario: La estructura if-else añade una rama falsa, ejecutando un bloque cuando la condición es verdadera y otro cuando es falsa.
  • 🇧🇷 Operadores relacionales: Seis operadores (<, <=, >, >=, ==, !=) construyen las expresiones booleanas que comprueba cada condición.
  • 🪜 Escalera de si no: Una estructura anidada de else-if comprueba varias expresiones de arriba abajo y ejecuta la primera rama verdadera, o una rama else por defecto.
  • Operador ternario: La expresión condicional ?: escribe una estructura if-else compacta que devuelve uno de dos valores en una sola línea.
  • 🤖 Asistencia de IA: GitHub Copilot elabora borradores y revisa la lógica if-else, señala las llaves que faltan y sugiere condiciones más limpias.

Sentencia condicional en C: IF, IF Else e IF Else anidado

¿Qué es una declaración condicional en C?

En la programación en C, las sentencias condicionales se utilizan para tomar decisiones en función de ciertas condiciones. Cuando no hay ninguna condición asociada, las sentencias condicionales se ejecutan secuencialmente. Si se establece una condición para un bloque de sentencias, el flujo de ejecución puede cambiar según el resultado de dicha condición. Este proceso se denomina toma de decisiones en C.

Quitar 'Me gusta' bucles en C ese código repetitivo, las sentencias condicionales eligen un camino.

En la programación en 'C' las declaraciones condicionales son posibles con la ayuda de las dos construcciones siguientes:

  1. Si declaración
  2. Declaración if-else

También se denomina ramificación, ya que un programa decide qué declaración ejecutar en función del resultado de la condición evaluada.

Si declaración

Es una de las poderosas declaraciones condicionales. La declaración If es responsable de modificar el flujo de ejecución de un programa. La declaración If siempre se usa con una condición. La condición se evalúa primero antes de ejecutar cualquier declaración dentro del cuerpo de If. La sintaxis de la declaración if es la siguiente:

 if (condition) 
     instruction;

La condición se evalúa como verdadera o falsa. Verdadero es siempre un valor distinto de cero y falso es un valor que contiene cero. Las instrucciones pueden ser una sola instrucción o un bloque de código encerrado entre llaves { }.

El siguiente programa ilustra el uso de la construcción if en la programación 'C':

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

Salida:

num1 is smaller than num2

El programa anterior ilustra el uso de la construcción if para verificar la igualdad de dos números.

Diagrama de flujo de la instrucción If en C

  1. En el programa anterior, hemos inicializado dos variables con num1, num2 con valor 1, 2 respectivamente.
  2. Luego, hemos usado if con una expresión de prueba para verificar qué número es el más pequeño y qué número es el más grande. Hemos utilizado una expresión relacional en la construcción if. Dado que el valor de num1 es menor que num2, la condición se evaluará como verdadera.
  3. Así imprimirá la declaración dentro del bloque de If. Después de eso, el control saldrá del bloque y el programa finalizará con un resultado exitoso.

Relacional Operatoros

C tiene seis operadores relacionales que se pueden usar para formular una expresión booleana para tomar una decisión y probar condiciones, que devuelve verdadero o falso:

  • < — menos de
  • <= — menor o igual que
  • > — mayor que
  • >= — mayor o igual que
  • == — igual a
  • != — no es igual a

Tenga en cuenta que la prueba de igualdad (==) es diferente del operador de asignación (=) porque es uno de los problemas más comunes que enfrenta un programador al mezclarlos.

Por ejemplo:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

salida:

 You succeed

Tenga en cuenta que una condición que se evalúa como un valor distinto de cero se considera verdadera.

Por ejemplo:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

Salida:

There is someone present in the classroom

La sentencia If-Else

Diagrama de flujo de la instrucción If-Else en C

La instrucción if-else es una versión extendida de If. La forma general de if-else es la siguiente:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

En este tipo de estructura, si el valor de la expresión de prueba es verdadero, se ejecutará el bloque de instrucciones verdadero. Si el valor de la expresión de prueba es falso, se ejecutará el bloque de instrucciones falso. En cualquier caso, tras la ejecución, el control se transferirá automáticamente a las instrucciones que aparecen fuera del bloque If.

Los siguientes programas ilustran el uso de la construcción if-else:

Inicializaremos una variable con algún valor y escribiremos un programa para determinar si el valor es menor que diez o mayor que diez.

Empecemos.

#include<stdio.h>
int main()
{
	int num=19;
	if(num<10)
	{
		printf("The value is less than 10");
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

Salida:

The value is greater than 10

Ejemplo de salida de una instrucción If-Else en C

  1. Hemos inicializado una variable con valor 19. Tenemos que averiguar si el número es mayor o menor que 10 usando un programa 'C'. Para hacer esto, hemos utilizado la construcción if-else.
  2. Aquí proporcionamos una condición número <10 porque tenemos que comparar nuestro valor con 10.
  3. Como puede ver, el primer bloque es siempre un bloque verdadero, lo que significa que, si el valor de la expresión de prueba es verdadero, se ejecutará el primer bloque, que es If.
  4. El segundo bloque es un bloque else. Este bloque contiene las declaraciones que se ejecutarán si el valor de la expresión de prueba se vuelve falso. En nuestro programa, el valor de num es mayor que diez, por lo que la condición de prueba se vuelve falsa y de lo contrario se ejecuta el bloque. Por lo tanto, nuestra salida será de un bloque else que es "El valor es mayor que 10". Después de if-else, el programa finalizará con un resultado exitoso.

En la programación 'C' podemos usar múltiples construcciones if-else entre sí, lo que se conoce como anidamiento de declaraciones if-else.

Expresiones condicionales

Otra forma de expresar una sentencia if-else es mediante el operador ?:. En una expresión condicional, el operador ?: tiene una única sentencia asociada tanto al if como al else.

Por ejemplo:

#include <stdio.h>
int main() {
  int y;
  int x = 2;
   y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */
   printf("y =%d ",y);
  return 0;}

Salida:

y =2

Declaraciones anidadas If-else

Cuando se requiere una serie de decisiones, se utiliza if-else anidado. Anidar significa usar una construcción if-else dentro de otra.

Escribamos un programa para ilustrar el uso de if-else anidado.

#include<stdio.h>
int main()
{
	int num=1;
	if(num<10)
	{
		if(num==1)
		{
			printf("The value is:%d\n",num);
		}
		else
		{
			printf("The value is greater than 1");
		}
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

Salida:

The value is:1

El programa anterior verifica si un número es menor o mayor que 10 e imprime el resultado usando la construcción if-else anidada.

Sentencia if-else anidada en C

  1. En primer lugar, hemos declarado una variable num con valor 1. Luego hemos utilizado la construcción if-else.
  2. En la estructura if-else externa, la condición proporcionada verifica si un número es menor que 10. Si la condición es verdadera, solo entonces se ejecutará el bloque interno. En este caso, la condición es verdadera, por lo que se procesa el bloque interno.
  3. En el bloque interno, tenemos una condición que verifica si nuestra variable contiene el valor 1 o no. Si la condición es verdadera, se ejecuta el bloque If; de lo contrario, se ejecuta el bloque else. En este caso, la condición es verdadera, por lo que se ejecuta el bloque If y el valor se muestra en la pantalla de salida.
  4. El programa anterior imprimirá el valor de una variable y finalizará con éxito.

Intenta cambiar el valor de variable Observa cómo se comporta el programa.

NOTA: En las estructuras if-else anidadas, debemos prestar atención a la indentación, ya que intervienen varias estructuras if-else, lo que dificulta la identificación de cada una. Una indentación adecuada facilita la lectura del programa.

Declaraciones anidadas Else-if

Estructura anidada Else-if en C

El else-if anidado se utiliza cuando se requieren decisiones de rutas múltiples.

La sintaxis general de cómo se construyen las escaleras en programación 'C' es la siguiente:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

Este tipo de estructura se conoce como escalera else-if. Esta cadena generalmente se asemeja a una escalera, por lo que también se la denomina escalera else-if. Las expresiones de prueba se evalúan de arriba hacia abajo. Cuando se encuentra una expresión de prueba verdadera, se ejecuta la instrucción asociada. Cuando todas las n expresiones de prueba se vuelven falsas, se ejecuta la instrucción else predeterminada.

Veamos el funcionamiento real con la ayuda de un programa.

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

Salida:

First class

El programa anterior imprime la calificación según las calificaciones obtenidas en una prueba. Hemos utilizado la construcción de escalera else-if en el programa anterior.

  1. Hemos inicializado una variable con marcas. En la estructura de escalera else-if, hemos proporcionado varias condiciones.
  2. El valor de las marcas variables se comparará con la primera condición, ya que si es verdadera, la declaración asociada a ella se imprimirá en la pantalla de salida.
  3. Si la primera condición de prueba resulta falsa, se compara con la segunda condición.
  4. Este proceso continuará hasta que se evalúen todas las expresiones; de lo contrario, se saldrá del bucle else-if y se imprimirá la instrucción predeterminada.

Intente modificar el valor y observe el cambio en la salida.

Preguntas Frecuentes

Una estructura if-else prueba cualquier expresión booleana, incluyendo rangos y comprobaciones relacionales. interruptor…caso Compara una variable con valores constantes fijos y, a menudo, genera una tabla de saltos más rápida en muchos casos.

El problema del else colgante radica en la ambigüedad sobre a qué if pertenece un else cuando las sentencias if se anidan sin llaves. En C, un else siempre se empareja con el if no coincidente más cercano. Agregar llaves elimina la confusión.

Sí. Los operadores lógicos combinan condiciones: && requiere que ambos lados sean verdaderos, || necesita al menos uno verdadero y ! invierte un resultado. Por ejemplo, if (edad > 18 && ciudadano) evalúa dos condiciones juntas en un solo if.

Las llaves son opcionales cuando el cuerpo de la instrucción es una sola, por lo que C solo ejecuta la siguiente línea. Para dos o más instrucciones, se requieren llaves para agruparlas. Usar llaves siempre es una buena práctica que previene errores de lógica.

La evaluación por cortocircuito se detiene en cuanto se conoce el resultado. Con &&, un falso lado izquierdo omite el lado derecho. Con ||, un verdadero lado izquierdo omite el derecho. Esto evita trabajo innecesario y operaciones inseguras.

Sí. Una estructura condicional else-if se evalúa de arriba abajo y se detiene en la primera condición verdadera. Colocar las condiciones generales antes que las específicas puede ocultar los casos específicos, por lo que conviene ordenar las pruebas de la más específica a la más general.

Sí. Los asistentes de codificación de IA crean bloques condicionales a partir de un comentario, convierten largas cadenas de if-else en estructuras más limpias e identifican posibles errores, como usar = en lugar de ==. Siempre prueba la lógica generada antes de confiar en ella.

Copiloto de GitHub Completa automáticamente las condiciones if, else-if y anidadas a partir de tus comentarios o del código circundante. Sugiere expresiones relacionales y lógicas, y puede añadir llaves que falten, aunque debes revisar cada sugerencia.

Resumir este post con: