Ejemplo de lenguaje C - Calificar según nota
Si en lenguaje C se quiere escribir un programa que:
1º) Pida por teclado la nota (real) de una asignatura.
2º) Muestre por pantalla:
- "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.
Viéndose en pantalla, por ejemplo:
Al introducir una nota menor que cero o mayor que diez, se verá:
Varias soluciones: anidando un if dentro de otro if
Una posible solución al problema es:
/* Programa: Calificar según nota (Solución 1) */
#include <conio.h>
#include <stdio.h>
int main()
{
float nota;
printf( "\n Introduzca nota (real): " );
scanf( "%f", ¬a );
if ( nota >= 5 && nota <= 10 )
printf( "\n APTO" );
else
/* Inicio del anidamiento */
if ( nota >= 0 && nota < 5 )
printf( "\n NO APTO" );
else
printf( "\n ERROR: Nota incorrecta." );
/* Fin del anidamiento */
getch(); /* Pausa */
return 0;
}
Véase en el código fuente del programa que, la segunda instrucción if, ha sido anidada dentro de la primera. Por otro lado, otra posible solución es:
/* Programa: Calificar según nota (Solución 2) */
#include <conio.h>
#include <stdio.h>
int main()
{
float nota;
printf( "\n Introduzca nota (real): " );
scanf( "%f", ¬a );
if ( nota < 0 || nota > 10 )
printf( "\n ERROR: Nota incorrecta." );
else
/* Inicio del anidamiento */
if ( nota < 5 )
printf( "\n NO APTO" );
else
printf( "\n APTO" );
/* Fin del anidamiento */
getch(); /* Pausa */
return 0;
}
Una tercera solución es:
/* Programa: Calificar según nota (Solución 3) */
#include <conio.h>
#include <stdio.h>
int main()
{
float nota;
printf( "\n Introduzca nota (real): " );
scanf( "%f", ¬a );
if ( nota >= 0 && nota <= 10 )
/* Inicio del anidamiento */
if ( nota >= 5 )
printf( "\n APTO" );
else
printf( "\n NO APTO" );
/* Fin del anidamiento */
else
printf( "\n ERROR: Nota incorrecta." );
getch(); /* Pausa */
return 0;
}
Como se puede observar, el anidamiento de instrucciones if permite ir descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.