Documentos de Académico
Documentos de Profesional
Documentos de Cultura
existen en C?
Instrucciones de control alternativas que se pueden utilizar en lenguaje
C: doble (if else), simple (if) y múltiple (switch).
if ( <expresión_lógica> )
{
<bloque_de_instrucciones_1>
}
else
{
<bloque_de_instrucciones_2>
}
En resumen, en C una instrucción if else (alternativa doble) permite seleccionar, por medio
de una condición, el siguiente bloque de instrucciones a ejecutar, de entre dos posibles.
APROBADO
Otra posibilidad es:
SUSPENDIDO
Cuando un bloque de instrucciones sólo contiene una instrucción, los caracteres abrir llave
({) y cerrar llave (}) son opcionales. Por tanto, en lenguaje C, para resolver el problema del
ejemplo se puede escribir:
#include <stdio.h>
int main()
{
float nota;
if ( nota >= 5 )
printf( "\n APROBADO" );
else
printf( "\n SUSPENDIDO" );
return 0;
}
Cuando en el código fuente de un programa existe una condición de la cual depende que a
continuación se ejecuten unas instrucciones u otras, se dice que existe una bifurcación.
Ejercicios Resueltos con la instrucción if else
Resolver con la Instrucción if else
En pantalla:
Introduzca primer número (entero): 14
Introduzca segundo número (entero): -17
LA SUMA NO ES MAYOR QUE CERO.
int main()
{
int a, b, suma;
suma = a + b;
if ( suma > 0 )
printf( "LA SUMA SI ES MAYOR QUE CERO." );
else
printf( "LA SUMA NO ES MAYOR QUE CERO." );
return 0;
}
Una segunda solución es:
#include <stdio.h>
int main()
{
int a, b;
if ( a + b > 0 )
printf( "LA SUMA SI ES MAYOR QUE CERO." );
else
printf( "LA SUMA NO ES MAYOR QUE CERO." );
return 0;
}
1º) Pida por teclado tres números (datos enteros): <numero1>, <numero2> y <numero3>.
2º) Muestre por pantalla:
En pantalla:
Introduzca primer número (entero): 6
Introduzca segundo número (entero): 9
Introduzca tercer número (entero): 22
9 SÍ ES MENOR QUE 22 Y MAYOR QUE 6
#include <stdio.h>
int main()
{
int n1, n2, n3;
return 0;
}
Otra solución es:
#include <stdio.h>
int main()
{
int n1, n2, n3;
printf( "%d", n2 );
return 0;
}
¿Para qué sirve la instrucción alternativa simple (if) en C?
Una instrucción alternativa simple (if) es una variante (más sencilla) de una instrucción
alternativa doble (if else). En lenguaje C, para escribir una instrucción if se utiliza la
sintaxis:
if ( <expresión_lógica> )
{
<bloque_de_instrucciones>
}
APROBADO
int main()
{
float nota;
if ( nota >= 5 )
printf( "\n APROBADO" );
return 0;
}
Resolver con la Instrucción if
Escribir un programa, en lenguaje C, que:
En pantalla:
#include <stdio.h>
int main()
{
float numero;
if ( numero < 0 )
printf( "%f", -numero );
return 0;
}
Resolver con la Instrucción if
En pantalla:
Introduzca primer número (entero): 7
Introduzca segundo número (entero): 10
8.5
#include <stdio.h>
int main()
{
int a, b;
return 0;
}
¿Para qué sirve la instrucción alternativa múltiple
(switch) en C?
Una instrucción switch (alternativa múltiple) permite seleccionar, por medio de una
expresión, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. En
lenguaje C, para escribir una instrucción alternativa múltiple (switch) se utiliza la sintaxis:
switch ( <expresión> )
{
case <expresión_1> : [ <bloque_de_instrucciones_1> ]
[ break; ]
case <expresión_2> : [ <bloque_de_instrucciones_2> ]
[ break; ]
...
case <expresión_n> : [ <bloque_de_instrucciones_n> ]
[ break; ]
[ default : <bloque_de_instrucciones_n+1> ]
}
Martes
O también:
Solución propuesta:
#include <stdio.h>
int main()
{
int dia;
switch ( dia )
{
case 1 : printf( "\n Lunes" );
break;
case 2 : printf( "\n Martes" );
break;
case 3 : printf( "\n Miercoles" );
break;
case 4 : printf( "\n Jueves" );
break;
case 5 : printf( "\n Viernes" );
break;
case 6 : printf( "\n Sabado" );
break;
case 7 : printf( "\n Domingo" );
break;
default : printf( "\n ERROR: Dia incorrecto." );
}
return 0;
}
En la sintaxis de una instrucción alternativa múltiple, obsérvese que, después de cada
bloque de instrucciones se puede escribir, opcionalmente, la instrucción break.
Dicha instrucción no se va a estudiar con detenimiento en este apartado, ya que, de
momento, basta con saber que en una instrucción switch, la escribiremos, casi siempre,
después de cada bloque de instrucciones, a excepción del último.
Para comprender su funcionamiento, pruebe a ver qué ocurre si omite algún break en el
código del programa del ejemplo 1.
Ejemplo 2: En la siguiente tabla se muestran las categorías a las que pertenecen los signos
del zodíaco:
1º) Muestre el listado de los signos del zodíaco, con sus números asociados.
2º) Pida por teclado un número (dato entero) asociado a un signo del zodíaco.
3º) Muestre la categoría a la que pertenece el signo del zodíaco seleccionado.
Nota: Si el número introducido por el usuario, no está asociado a ningún signo del zodíaco,
se mostrará el mensaje: "ERROR: <número> no está asociado a ningún signo.".
En pantalla veremos:
Listado de signos del zodiaco:
1. Aries
2. Tauro
3. Geminis
4. Cancer
5. Leo
6. Virgo
7. Libra
8. Escorpio
9. Sagitario
10. Capricornio
12. Acuario
13. Piscis
Es un signo de Aire.
O también:
Listado de signos del zodiaco:
1. Aries
2. Tauro
3. Geminis
4. Cancer
5. Leo
6. Virgo
7. Libra
8. Escorpio
9. Sagitario
10. Capricornio
12. Acuario
13. Piscis
#include <stdio.h>
int main()
{
int numero;
switch ( numero )
{
case 1 :
case 5 :
case 9 : printf( "\n Es un signo de Fuego." );
break;
case 2 :
case 6 :
case 10 : printf( "\n Es un signo de Tierra." );
break;
case 3 :
case 7 :
case 11 : printf( "\n Es un signo de Aire." );
break;
case 4 :
case 8 :
case 12 : printf( "\n Es un signo de Agua." );
break;
default : printf( "\n ERROR: %d no esta asociado a ningun signo.",
numero );
}
return 0;
}
int main()
{
int numero;
char categoria[7];
switch ( numero % 4 )
{
case 1 : strcpy( categoria, "Fuego" );
break;
case 2 : strcpy( categoria, "Tierra" );
break;
case 3 : strcpy( categoria, "Aire" );
break;
case 0 : strcpy( categoria, "Agua" );
}
return 0;
}
En esta segunda solución existen las siguientes diferencias importantes con respecto a la
solución anterior:
En el código se utiliza una alternativa doble (if else), además de una alternativa
múltiple (switch).
En la alternativa múltiple no se escribe el <bloque_de_instrucciones_n+1>.
La <expresión> de la alternativa múltiple es diferente.
La expresión "\n Es un signo de " sólo se escribe una vez.
Se ha utilizado una variable más (un array de caracteres): categoria.
Se ha empleado la función strcpy, que, como ya vimos en el apartado de Operadores
y expresiones, está disponible en la biblioteca estándar de C.
1º) Pida por teclado el resultado (dato entero) obtenido al lanzar un dado de seis caras.
2º) Muestre por pantalla el número en letras (dato cadena) de la cara opuesta al resultado
obtenido.
Nota 1: En las caras opuestas de un dado de seis caras están los números: 1-6, 2-5 y 3-4.
Nota 2: Si el número del dado introducido es menor que 1 ó mayor que 6, se mostrará el
mensaje: "ERROR: Número incorrecto.".
En pantalla:
#include <stdio.h>
int main()
{
int numero;
switch ( numero )
{
case 1 : printf( "En la cara opuesta esta el \"seis\"." );
break;
case 2 : printf( "En la cara opuesta esta el \"cinco\"." );
break;
case 3 : printf( "En la cara opuesta esta el \"cuatro\"." );
break;
case 4 : printf( "En la cara opuesta esta el \"tres\"." );
break;
case 5 : printf( "En la cara opuesta esta el \"dos\"." );
break;
case 6 : printf( "En la cara opuesta esta el \"uno\"." );
break;
default : printf( "ERROR: Numero incorrecto." );
}
return 0;
}
Una segunda solución es:
#include <stdio.h>
#include <string.h>
int main()
{
char letras[7];
int numero;
switch ( numero )
{
case 1 : strcpy( letras, "seis" );
break;
case 2 : strcpy( letras, "cinco" );
break;
case 3 : strcpy( letras, "cuatro" );
break;
case 4 : strcpy( letras, "tres" );
break;
case 5 : strcpy( letras, "dos" );
break;
case 6 : strcpy( letras, "uno" );
}
return 0;
}
Ejercicio - Habitaciones de una Casa Rural (en C)
En pantalla:
Listado de habitaciones:
1. Azul
2. Roja
3. Verde
4. Rosa
5. Gris
Listado de habitaciones:
1. Azul
2. Roja
3. Verde
4. Rosa
5. Gris
#include <stdio.h>
int main()
{
int numero;
switch ( numero )
{
case 1 : printf( "La Azul tiene 2 cama/s y esta en la primera
planta." );
break;
case 2 : printf( "La Roja tiene 1 cama/s y esta en la primera
planta." );
break;
case 3 : printf( "La Verde tiene 3 cama/s y esta en la segunda
planta." );
break;
case 4 : printf( "La Rosa tiene 2 cama/s y esta en la segunda
planta." );
break;
case 5 : printf( "La Gris tiene 1 cama/s y esta en la tercera planta." );
break;
default : printf( "ERROR: %d no esta asociado a ninguna
habitacion.", numero );
}
return 0;
}
#include <string.h>
#include <stdio.h>
int main()
{
char nombre[6], planta[8];
int numero, camas;
switch ( numero )
{
case 1 : strcpy( nombre, "Azul" );
camas = 2;
strcpy( planta, "primera" );
break;
case 2 : strcpy( nombre, "Roja" );
camas = 1;
strcpy( planta, "primera" );
break;
case 3 : strcpy( nombre, "Verde" );
camas = 3;
strcpy( planta, "segunda" );
break;
case 4 : strcpy( nombre, "Rosa" );
camas = 2;
strcpy( planta, "segunda" );
break;
case 5 : strcpy( nombre, "Gris" );
camas = 1;
strcpy( planta, "tercera" );
}
return 0;
}
if ( <expresión_lógica_1> )
{
}
else
{
<bloque_de_instrucciones_3>
}
O también:
if ( <expresión_lógica_1> )
{
<bloque_de_instrucciones_1>
{
else
{
"APTO", en el caso de que la nota sea mayor o igual que 5 y menor o igual que 10.
"NO APTO", en el caso de que la nota sea mayor o igual que 0 y menor que 5.
"ERROR: Nota incorrecta.", en el caso de que la nota sea menor que 0 o mayor que
10.
APTO
O por ejemplo:
#include <stdio.h>
int main()
{
float nota;
return 0;
}
Fíjese que, en este caso, se puede prescindir de los caracteres abrir llave ({) y cerrar llave
(}) de la sintaxis, ya que, los bloques de instrucciones sólo contienen una instrucción.
}
else
{
<bloque_de_instrucciones_n+2>
}
Ejemplo: Así por ejemplo, el primer ejemplo del apartado Instrucción switch en C, también
se puede resolver anidando una instrucción switch (alternativa múltiple) en una instrucción
if else (alternativa doble), como se muestra a continuación:
#include <stdio.h>
int main()
{
int dia;
else
printf( "\n ERROR: Dia incorrecto." );
return 0;
}
¿Cómo anidar instrucción switch dentro de if else en C?
}
else
{
<bloque_de_instrucciones_n+2>
}
Ejemplo: Así por ejemplo, el primer ejemplo del apartado Instrucción switch en C, también
se puede resolver anidando una instrucción switch (alternativa múltiple) en una instrucción
if else (alternativa doble), como se muestra a continuación:
#include <stdio.h>
int main()
{
int dia;
else
printf( "\n ERROR: Dia incorrecto." );
return 0;
}
}
else
{
<bloque_de_instrucciones_n+2>
}
Ejemplo: Así por ejemplo, el primer ejemplo del apartado Instrucción switch en C, también
se puede resolver anidando una instrucción switch (alternativa múltiple) en una instrucción
if else (alternativa doble), como se muestra a continuación:
#include <stdio.h>
int main()
{
int dia;
else
printf( "\n ERROR: Dia incorrecto." );
return 0;
}
"La suma es mayor.", en caso de que sea mayor que la multiplicación de ambos
números.
"La multpilicación es mayor.", en caso de que sea mayor que la suma de ambos
números.
"La suma y multiplicación son iguales.", en caso de que así sea.
En pantalla:
Introduzca primer número (entero): -2
Introduzca segundo número (entero): 3
La suma es mayor.
#include <stdio.h>
int main()
{
int a, b, suma, multiplicacion;
suma = a + b;
multiplicacion = a * b;
return 0;
}
Una segunda solución es:
#include <stdio.h>
int main()
{
int a, b;
if ( a + b > a * b )
printf( "La suma es mayor." );
else
return 0;
}
Ejercicio - Número del Dado (en C)
Escribir un programa, en lenguaje C, que resuelva el problema del ejercicio Número del
Dado con switch, anidando una alternativa múltiple (switch) en una alternativa doble (if).
#include <stdio.h>
int main()
{
int numero;
else
printf( "ERROR: Numero incorrecto." );
return 0;
}
#include <string.h>
#include <stdio.h>
int main()
{
char letras[7];
int numero;
return 0;
}