Sacado del tema 5 “SENTENCIAS CONDICIONALES Y BUCLES” (pgs 19-21) de José María Bea.
Un poco de inglés:
En los flujogramas, las condiciones se expresan con rombos:
La primera sentencia, y la más utilizada es if, que significa si (condicional, sin acento) en inglés. Así se haría el programa anterior:
#include <stdio.h> float nota= 0; int main(void) { printf("Dame tu nota: "); scanf("%f", ¬a); // Acuérdate del & en la variable if(nota<5) printf("Estas SUSPENSO"); else printf("Estas APROBADO"); }
La sentencia if ejecuta lo que hay a continuación sólo si la condición que está entre paréntesis se cumple.
Cuando no se cumple la condición del “if”, se realiza lo que indique el else (en inglés significa “si no”).
#include <stdio.h> float nota= 0; int main(void) { printf("Dame tu nota: "); scanf("%f", ¬a); // Acuérdate del & en la variable if(nota<5) { printf("Estas SUSPENSO"); printf("\nÁnimo."); } else { printf("Estas APROBADO"); printf("\n¡No te descuides, sigue!"); } }
Fíjate que cada sentencia tiene dos zonas:
Pues de momento no lo uses. Usa sólo “if”:
#include <stdio.h> float nota= 0; int main(void) { printf("Dame tu nota: "); scanf("%f", ¬a); // Acuérdate del & en la variable if(nota<5) printf("Estas SUSPENSO"); if(nota>=5) printf("Estas APROBADO"); }
Que en organigrama sería mucho más chapucero:
Tú primero haz que funcione el programa, luego ya lo pondrás bonito.
Anidar un bucle o una sentencia significa meter unos dentro de otros. Mira el siguiente ejemplo sacado de los apuntes de José María Bea:
#include <stdio.h> int main() { int a; printf("Introduce un número entero positivo: "); scanf("%i", &a); if (a < 10) { printf("El número introducido era menor de 10.\n"); } else if(a > 10 && a < 100) { printf ("El número está entre 10 y 100\n"); } else if(a > 100) { printf("El número es mayor que 100\n"); } else printf("El valor 10 o 100"); printf("Fin del programa\n"); }
Hacer organigrama en clase.
Este ejercicio lo hicimos en clase con organigrama y todo. Os lo paso resuelto:
#include <stdio.h> float nota = 0; int main() { printf("Introduce nota: "); scanf("%f", ¬a); if (nota < 5 && nota >= 0) // CONSULTA { printf("\nSUSPENSO");// SI SÍ } else // SI NO { if (nota >=5 && nota < 6) { printf("\nAPROBADO"); } else { if (nota >= 6 && nota <7) { printf("\nBIEN"); } else { if (nota >= 7 && nota <9) { printf("\nNOTABLE"); } else { if (nota >= 9 && nota <= 10) { printf("\nSOBRESALIENTE"); } else { printf("\nERROR. Nota no válida."); } } } } } }
Date cuenta de que el programa se entiende gracias a que está bien sangrado. De todas formas, a veces es mejor usar la sentencia switch() … case(){}
Hace que la programación sea muy limpia y ordenada. Problema: no soporta operadores >, <. Aquí no hay condición entre paréntesis, la condición es siempre “==“ a la variable que vaya en el switch.
#include <stdio.h> int main() { int nota; printf("Introduce una nota sin decimales: "); scanf("%i", ¬a); switch(nota) { case 0: //lo de después del case: con comillas simples si es CHAR, sin nada si es INT printf("Suspenso. \n"); break; case 1: printf("Suspenso. \n"); break; case 2: printf("Suspenso. \n"); break; case 5: printf("Aprobado. \n"); break; case 6: printf("Bien. \n"); break; case 7: printf("Notable bajo. \n"); break; case 8: printf("Notable alto. \n"); break; case 9: printf("Sobresaliente. \n"); break; case 10: printf("Matrícula de honor. \n"); break; default: printf("NÚMERO NO VÁLIDO.\n"); //El caso default es opcional. break; } printf("Fin del programa\n"); }
No sirve siempre, pero a veces acorta mucho programas que se hacen con if anidados
También ahorra trabajo al procesador. Se usa mucho en menús:
int main() { int opcion = 0; printf("MENÚ DE OPCIONES\n"); printf("1.-Bienvenida al programa\n"); printf("2.-Saludo\n"); printf("3.-Despedir\n"); printf("4.-Salir\n"); scanf("%i", &opcion); switch(opcion) { case 1: printf("Bienvenido");//qué hacer si opcion == 1 break; case 2: printf("HOLA"); break; case 3: printf("ADIOS"); break; case 4: printf("Has salido del programa"); break; default: printf("No existe esa opción"); break; } }
El programa anterior es de José María Bea.
Haz los ejercicios del 1 al 8 de la página 25 de los apuntes de José María Bea. El 2 no lo hagas.
Imagen sacada de aquí.