Selección múltiple
Mini calculadora
En algunas ocasiones durante la ejecución de un programa será necesario escoger entre mas de dos opciones, es decir que la condición no será un valor booleano (Falso o Verdadero) sino que podrá tener diferentes valores.
Para mostrar como solucionan esto los diferentes lenguajes realizaremos el siguiente ejercicio

Ejercicio:
Mini calculadora
Se le pide al usuario que ingrese dos números enteros y un operador (+, -, * o /) y el programa realizará la operación correspondiente.
En Java
Declararemos 3 variables tipo float para almacenar los datos ingresados y el resultado:
float num1, num2, resultado = 0;
Declararemos una variable tipo char para almacenar el operador
char operacion;
Creamos el objeto “dato” de la clase “Scanner”
Scanner dato = new Scanner(System.in);
Solicitamos los números
System.out.println(“Ingresa número entero”);
Solicitamos el operador
System.out.println(“Ingresa operador”);
Capturamos datos desde el teclado y almacenamos en las variables correspondientes
num1 = dato.nextFloat();
num2 = dato.nextFloat();
operacion = dato.next().charAt(0);
En este momento ya tenemos el operador con el cual seleccionaremos una de cuatro operaciones a realizar (+, -, * o /). Para poder escojer entre estás cuatro opciones Java tiene una estructura llamada “switch” que se escribe de la siguiente forma:
switch(valor){
case ‘valor_1’: Instruciones para valor_1…
break;
case ‘valor_2’: Instruciones para valor_2…
break;
case ‘valor_3’: Instruciones para valor_3…
break;
. .
. .
. .
case ‘valor_n’: Instruciones para valor_n…
break;
default : Instruciones si no corresponde con ninguno de los anteriores….
}
Esta estructura evalúa si el valor de una variable que coloquemos dentro de los parantecis se corresponde con alguno de los “case” (solo podrá corresponder a uno de ellos) y ejecutará las instrucciones respectivas, luego de ello encontrará un “break” que hará que el programa se salga de los corchetes y terminará la ejecución del “switch”. Si el “valor” no corresponde a ninguno de los “case” ejecutará las instrucciones programadas en “default”.
En nuestro caso la variable a evaluar será “operacion” que es un dato tipo char y los posibles valores que puede tomar (“case”) serán los caracteres de las operciones +, -, * y / realizando la operación respectiva y almacenando el resultado en la variable “resultado”; como son caracteres deberán estar entre comilla senclla. Si la “operación” no contiene ninguno de estos caracteres el programa mostrará el mensaje “Operador no valido”
switch(operacion){
case ‘+’: resultado = num1 + num2;
break;
case ‘-‘: resultado = num1 – num2;
break;
case ‘*’: resultado = num1 * num2;
break;
case ‘/’: resultado = num1 / num2;
break;
default : System.out.println(“Operador no valido”);
}
Después de finalizar el “switch” mostrará un mensaje con el resultado
System.out.println(num1+” “+operacion+” “+num2+” = “+resultado);
El código quedará:
package minicalculadora;
import java.util.Scanner;
public class Minicalculadora {
public static void main(String[] args) {
float num1, num2, resultado = 0;
char operacion;
Scanner dato = new Scanner(System.in);
System.out.println(“Ingresa número entero”);
num1 = dato.nextFloat();
System.out.println(“Ingresa operador”);
operacion = dato.next().charAt(0);
System.out.println(“Ingresa número entero”);
num2 = dato.nextFloat();
switch(operacion){
case ‘+’: resultado = num1 + num2;
break;
case ‘-‘: resultado = num1 – num2;
break;
case ‘*’: resultado = num1 * num2;
break;
case ‘/’: resultado = num1 / num2;
break;
default : System.out.println(“Operador no valido”);
}
System.out.println(num1+” “+operacion+” “+num2+” = “+resultado);
}
}
En Python
Mostramos mensaje para ingresar datos, capturamos el dato del teclado y lo almacenamos en una variable
num1=int(input(“ingresa un número\t”))
Hacemos lo mismo para el ingreso del operador
ope=input(“ingresa un operador\t”)
En este momento ya tenemos el operador con el cual seleccionaremos una de cuatro operaciones a realizar (+, -, * o /). Para poder escojer entre estás cuatro opciones Python tiene una estructura llamada “elif” que se escribe de la siguiente forma:
if condición_1 :
Instruciones a realizar
si se cumple la condición_1
elif condición_2 :
Instruciones a realizar
si se cumple la condición_2
elif condición_3 :
Instruciones a realizar
si se cumple la condición_3
.
.
.
.
elif condición_n :
Instruciones a realizar
si se cumple la condición_n
else:
Instruciones a realizar
si no se cumple ninguna de las condiciones anteriores
Es posible que de todas las condiciones anteriores hallan varias verdaderas, pero solo se ejecutará la primera. Else solo se ejecutará si ninguna es verdadera.
En nuestro caso tendremos cuatro condiciones a evaluar, es decir que la variable “ope” corresponda a uno de los caracteres ‘+’, ‘-‘, ‘*’, o ‘/’ y realizará la operación correspondiente mostrando el resultado.
Si “ope” no contiene ninguno de estos caracteres el programa ejecutará “else” mostrando el mensaje “Operador no valido“
if ope == ‘+’ :
print(num1,” “,ope,” “,num2,” = “,num1+num2)
elif ope == ‘-‘ :
print(num1,” “,ope,” “,num2,” = “,num1-num2)
elif ope == ‘*’ :
print(num1,” “,ope,” “,num2,” = “,num1*num2)
elif ope == ‘/’ :
print(num1,” “,ope,” “,num2,” = “,num1/num2)
else:
print(“operador no valido”)
El código quedará:
num1=int(input(“ingresa un número\t”))
ope=input(“ingresa un operador\t”)
num2=int(input(“ingresa otro número\t”))
if ope == ‘+’ :
print(num1,” “,ope,” “,num2,” = “,num1+num2)
elif ope == ‘-‘ :
print(num1,” “,ope,” “,num2,” = “,num1-num2)
elif ope == ‘*’ :
print(num1,” “,ope,” “,num2,” = “,num1*num2)
elif ope == ‘/’ :
print(num1,” “,ope,” “,num2,” = “,num1/num2)
else:
print(“operador no valido”)
Recordemos que para ejecutar este código debemos guardarlo con extensión .py y luego ejecutarlo desde consola con
python minicalculadora.py
En C++
Declararemos 3 variables tipo float para almacenar los datos ingresados y el resultado:
float num1, num2, resultado;
Declararemos una variable tipo char para almacenar el operador
char ope;
Solicitamos los números
cout<<“Ingresa un numero\t”;
Solicitamos el operador
cout<<“Ingresa el operador\t”;
Capturamos datos desde el teclado y almacenamos en las variables correspondientes
cin>>num1;
cin>>ope;
cin>>num2;
En este momento ya tenemos el operador con el cual seleccionaremos una de cuatro operaciones a realizar (+, -, * o /). Para poder escojer entre estás cuatro opciones C++ tiene una estructura llamada “switch” que se escribe de la siguiente forma:
switch(valor){
case ‘valor_1’: Instruciones para valor_1…
break;
case ‘valor_2’: Instruciones para valor_2…
break;
case ‘valor_3’: Instruciones para valor_3…
break;
. .
. .
. .
case ‘valor_n’: Instruciones para valor_n…
break;
default : Instruciones si no corresponde con ninguno de los anteriores….
}
Esta estructura evalúa si el valor de una variable que coloquemos dentro de los parantecis se corresponde con alguno de los “case” (solo podrá corresponder a uno de ellos) y ejecutará las instrucciones respectivas, luego de ello encontrará un “break” que hará que el programa se salga de los corchetes y terminará la ejecución del “switch”. Si el “valor” no corresponde a ninguno de los “case” ejecutará las instrucciones programadas en “default“.
En nuestro caso la variable a evaluar será “ope” que es un dato tipo char y los posibles valores que puede tomar (“case”) serán los caracteres de las operciones +, -, * y / realizando la operación respectiva y almacenando el resultado en la variable “resultado“; como son caracteres deberán estar entre comilla sencilla. Si la variable “ope” no contiene ninguno de estos caracteres el programa mostrará el mensaje “Operador no valido“
switch(ope){
case ‘+’: resultado = num1 + num2;
break;
case ‘-‘: resultado = num1 – num2;
break;
case ‘*’: resultado = num1 * num2;
break;
case ‘/’: resultado = num1 / num2;
break;
default : cout<<“Operador no valido\t”;
}
Después de finalizar el “switch” mostrará un mensaje con el resultado
cout<<num1<<” “<<ope<<” “<<num2<<” = “<<resultado;
El Código será:
#include <iostream>
using namespace std;
int main(){
float num1, num2, resultado;
char ope;
cout<<“Ingresa un numero\t”;
cin>>num1;
cout<<“Ingresa el operador\t”;
cin>>ope;
cout<<“Ingresa un numero\t”;
cin>>num2;
switch (ope){
case ‘+’: resultado = num1 + num2;
break;
case ‘-‘: resultado = num1 – num2;
break;
case ‘*’: resultado = num1 * num2;
break;
case ‘/’: resultado = num1 / num2;
break;
default : cout<<“Operador no valido\t”;
}
cout<<num1<<” “<<ope<<” “<<num2<<” = “<<resultado;
}
En Ruby
Mostramos mensaje para ingresar datos,
puts “Ingresa un número”
capturamos el dato del teclado y lo almacenamos en una variable
num1 = gets.to_i
Hacemos lo mismo para el ingreso del operador
puts “Ingresa un operador”
capturamos con chomp para que tome el caracter sin el salto de línea
ope = gets.chomp
En este momento ya tenemos el operador con el cual seleccionaremos una de cuatro operaciones a realizar (+, -, * o /). Para poder escojer entre estás cuatro opciones Ruby tiene una estructura llamada “case” que se escribe de la siguiente forma:
case variable
when condición_1
Instrucciones si se
cumple esta condición
when condición_2
Instrucciones si se
cumple esta condición
when condición_3
Instrucciones si se
cumple esta condición
.
.
.
when condición_n
Instrucciones si se
cumple esta condición
else
Instrucciones si no se
cumple ninguna condición
end
Solo se ejecutará una condición y else solo se ejecutará si ninguna es verdadera.
En nuestro caso tendremos cuatro condiciones a evaluar, es decir que la variable “ope” corresponda a uno de los caracteres ‘+’, ‘-‘, ‘*’, o ‘/’ y realizará la operación correspondiente mostrando el resultado.
Si “ope” no contiene ninguno de estos caracteres el programa ejecutará “else” mostrando el mensaje “Operador no valido“
case ope
when “+”
puts “#{num1} #{ope} #{num2} = #{num1 + num2}”
when “-“
puts “#{num1} #{ope} #{num2} = #{num1 – num2}”
when “*”
puts “#{num1} #{ope} #{num2} = #{num1 * num2}”
when “/”
puts “#{num1} #{ope} #{num2} = #{num1.to_f / num2.to_f}”
else
puts “operador no valido”
end
Debemos tener en cuenta que para la división convertiremos los números a float (usando .to_f) para que el resultado me muestre los puntos decimales.
El Código será:
puts “Ingresa un número”
num1 = gets.to_i
puts “Ingresa un operador”
ope = gets.chomp
puts “Ingresa otro número”
num2 = gets.to_i
case ope
when “+”
puts “#{num1} #{ope} #{num2} = #{num1 + num2}”
when “-“
puts “#{num1} #{ope} #{num2} = #{num1 – num2}”
when “*”
puts “#{num1} #{ope} #{num2} = #{num1 * num2}”
when “/”
puts “#{num1} #{ope} #{num2} = #{num1.to_f / num2.to_f}”
else
puts “operador no valido”
end
En C#
Declararemos 2 variables tipo float para almacenar los datos ingresados:
float num1, num2;
Declararemos una variable tipo char para almacenar el operador
char ope;
Solicitamos los números
Console.WriteLine(“Ingrese un número”);
Solicitamos el operador
Console.WriteLine(“Ingrese un operador”);
Capturamos datos desde el teclado y almacenamos en las variables correspondientes
num1 = float.Parse(Console.ReadLine());
ope = Console.ReadLine().ToCharArray()[0];
Console.WriteLine(“Ingrese otro número”);
En este momento ya tenemos el operador con el cual seleccionaremos una de cuatro operaciones a realizar (+, -, * o /). Para poder escojer entre estás cuatro opciones C# tiene una estructura llamada “switch” que se escribe de la siguiente forma:
switch(variables){
case ‘valor_1’: Instruciones para valor_1…
break;
case ‘valor_2’: Instruciones para valor_2…
break;
case ‘valor_3’: Instruciones para valor_3…
break;
. .
. .
. .
case ‘valor_n’: Instruciones para valor_n…
break;
default : Instruciones si no corresponde
con ninguno de los anteriores….
}
Esta estructura evalúa si el valor de una variable que coloquemos dentro de los paréntesis corresponde alguno de los “case” (solo podrá corresponder a uno de ellos) y ejecutará las instrucciones respectivas, luego de ello encontrará un “break” que hará que el programa se salga de los corchetes y terminará la ejecución del “switch”. Si el “valor” no corresponde a ninguno de los “case” ejecutará las instrucciones programadas en “default“.
En nuestro caso la variable a evaluar será “ope” que es un dato tipo char y los posibles valores que puede tomar (“case”) serán los caracteres de las operciones +, -, * y / realizando la operación respectiva y almacenando el resultado en la variable “resultado”; como son caracteres deberán estar entre comilla senclla. Si la variable “ope” no contiene ninguno de estos caracteres el programa mostrará el mensaje “Operador no valido“
switch (ope)
{
case ‘+’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 + num2} “);
break;
case ‘-‘:
Console.WriteLine($”{num1} {ope} {num2} = {num1 – num2} “);
break;
case ‘*’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 * num2} “);
break;
case ‘/’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 / num2} “);
break;
default: Console.WriteLine(“Operadpr no valido”);
break;
}
El Código será:
namespace minicalculadoraCs
{
class Program
{
static void Main(string[] args)
{
float num1, num2;
char ope;
Console.WriteLine(“Ingrese un número”);
num1 = float.Parse(Console.ReadLine());
Console.WriteLine(“Ingrese un operador”);
ope = Console.ReadLine().ToCharArray()[0];
Console.WriteLine(“Ingrese otro número”);
num2 = float.Parse(Console.ReadLine());
switch (ope)
{
case ‘+’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 + num2} “);
break;
case ‘-‘:
Console.WriteLine($”{num1} {ope} {num2} = {num1 – num2} “);
break;
case ‘*’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 * num2} “);
break;
case ‘/’:
Console.WriteLine($”{num1} {ope} {num2} = {num1 / num2} “);
break;
default: Console.WriteLine(“Operadpr no valido”);
break;
}
}
}
}