El siguiente programa muestra por pantalla un 1 si un entero entrado por teclado es positivo (incluyendo el 0) y muestra un 0 si es negativo:
#include <iostream> using namespace std; int main() { int n; cout << "Entero? "; cin >> n; cout << (n >= 0) << endl; }
El problema que tenemos es que el mensaje que se muestra por pantalla es muy pobre (tal como nos pasaba con Expresiones Booleanas (AND)).
Lo que estaría bien, almenos, es mostrar positivo o negativo en vez de 0 o 1. Pero para hacer esto, habrá dos instrucciones del programa que son excluyentes entre sí, es decir, que si se ejecuta una no se ejecuta la otra.
Para indicar esto también se utiliza el if, pero se añade un else detrás. Si escribimos
if (n >= 0) { cout << "positivo" << endl; }
Se mostrará positivo cuando el número sea mayor o igual que 0, pero no se mostrará nada cuando sea negativo. Lo que haremos es añadir otro bloque prefijado con un else así
if (n >= 0) { cout << "positivo" << endl; } else { cout << "negativo" << endl; }
Lo que hemos añadido es
else { cout << "negativo" << endl; }
que cuando va a continuación de un if indica qué instrucciones hay que ejecutar en caso que el if dé false. Es como decir "si n es mayor o igual a 0 muestras positivo y si no muestras negativo". Estamos dando una alternativa al primer bloque.
El programa entero es este
int main() { int n; cout << "Entero? "; cin >> n; if (n >= 0) { cout << "positivo" << endl; } else { cout << "negativo" << endl; } }
En realidad, el endl que aparece al final de las 2 instrucciones alternativas es común, de manera que se puede poner después del if-else:
int main() { int n; cout << "Entero? "; cin >> n; if (n >= 0) { cout << "positivo"; } else { cout << "negativo"; } cout << endl; }
Para apreciar mejor su funcionamiento se puede hacer un diagrama como el que vimos en el If
Al llegar el rombo, se decide qué camino seguir en función del valor Booleano que dé la expresión que controla el if. El else sirve para proporcionar un bloque específico de instrucciones para el caso false, ya que si no se pone else no se hace nada.
Haz un programa que pide dos números enteros y muestra por pantalla el máximo de los dos. Si los números son 3 y 5 el mensaje por pantalla debe ser:
El maximo es 5
Haz una versión donde utilices if-else y otra solo con if.
Si un inglés intenta hacer el programa que muesta par o impar se encontrará que con un solo if no le basta ya que en inglés par es "even" y impar es "odd". Haz un programa que muestra "odd" o "even" si un número es par o impar.
Haz un programa que te pide una letra y luego te dice vocal o consonante en función de la letra que hayas puesto.
Haz un programa que pide 3 números reales y muestra el máximo.
Haz un programa que pide 3 números y luego muestra el número central. Por ejemplo, con 1, 2 y 3, el central es 2.
Haz un programa que pide un mes (un número entre 1 y 12) y te dice cuántos días tiene ese mes. No tengas en cuenta los años bisiestos (supón que febrero tiene siempre 28 días).
Una vez te funcione el programa, intenta hacer la versión más corta posible.
Haz un programa que pida un año y luego diga si es un año bisiesto o no. Después de pedir el año, debe mostrar Bisiesto! o Normal por pantalla.
Haz un programa que pide un mes (entre 1 y 12) y un año y te dice cuántos días tiene ese mes, teniendo en cuenta los años bisiestos.
Haz un programa que te pida una casilla de un tablero de ajedrez (indicando fila y columna, las dos entre 1 y 8) y el programa diga si la casilla es blanca o negra. Piensa bien la expresión que utilizarás primero.
Haz un programa que pida tres enteros y luego diga si alguno de los tres es la suma de los otros dos. Si los tres enteros son 4 10 6, se debe mostrar un mensaje como
10 es la suma de 4 y 6
Si los enteros son 2 3 5 hay que mostrar
5 es la suma de 2 y 3
En preparación