################################################################# # Ejemplos de las estructuras de control (4) # # CASE # ################################################################# # Hacemos que nuestro archivo use Ruby require 'rubygems' ################################################################# # Ejemplos de la estructura: # # CASE # # # # case expresion # # when condicion1 # # when condicion2 # # when condicion... # # else # # end # ################################################################# # En anteriores ejemplos hemos visto que podemos manejar cadenas # de texto, y hacer comparaciones de texto y números, ahora vamos # a ver como podemos repetir algo que queremos con este otro bucle. # RECORDATORIO # Tenemos que saber que existen lo que se llaman operadores de # comparación, que son: # x < y # Comprueba si 'x' es menor que 'y' # x <= y # Comprueba si 'x' es menor o igual que 'y' # x > y # Comprueba si 'x' es mayor que 'y' # x >= y # Comprueba si 'x' es mayor o igual que 'y' # x == y # Comprueba si 'x' es igual que 'y' # x != y # Comprueba si 'x' es distinto que 'y' # Esta nueva estructura de control, es parecida a la primera que vimos # la estructura IF ya que comprueba que una expresión y según el caso # hace una cosa u otra. # Por ejemplo, nos serviría para construir las acciones de un menu. # Veamos un ejemplo. opcion=-1 while opcion!=0 do system("clear") # Borramos la pantalla puts "MI CALCULADORA" puts "1 -> Sumar dos números." puts "2 -> Restar dos números" puts "3 -> Multiplicar dos números" puts "4 -> Dividir dos números" puts "0 -> Salir" print "Elige una opción: " opcion = gets.chomp.to_i system("clear")# Borramos la pantalla case opcion when 1 print "Introduce el primer numero: " x = gets.chomp.to_i print "Introduce el segundo numero: " y = gets.chomp.to_i puts "La suma de #{x} y #{y} vale #{x+y}" when 2 print "Introduce el primer numero: " x = gets.chomp.to_i print "Introduce el segundo numero: " y = gets.chomp.to_i puts "La resta de #{x} y #{y} vale #{x-y}" when 3 print "Introduce el primer numero: " x = gets.chomp.to_i print "Introduce el segundo numero: " y = gets.chomp.to_i puts "La multiplicación de #{x} y #{y} vale #{x*y}" when 4 print "Introduce el primer numero: " x = gets.chomp.to_i print "Introduce el segundo numero: " y = gets.chomp.to_i if y != 0 puts "La división de #{x} y #{y} vale #{x/y}" else puts "No se puede dividir por cero" end else puts "Has decidido continuar con el ejercicio" end system("sleep 2") # Nos esperamos 2 segundos para continuar end # También esta estructura la podemos usar para hacer comprobaciones de # un valor, si está en un rango. Por ejemplo system("clear") print "Introduce un número:" numero = gets.chomp.to_i case numero when numero<0 puts "El numero es negativo" when 0..5 puts "El numero está entre 0 y 5" when numero>5 puts "El numero es mayor que 5" end system("sleep 1") ################################################################# # EJERCICIOS # ################################################################# # Así que ahora, haced estos ejercicios que están a continuación: # # 1.- Haced un menu que tenga como opciones: # · Sumar 2 números # · Restar 2 números # · Ver los resultados anteriores y si ha sido una suma o una resta # Y que al menos se repita unas 4 veces mediante un WHILE o un FOR # PISTA: para la última opción podéis usar los arrays tal que almacenen: # [operacion,[numero1, numero2], resultado, operacion,[numero1, numero2], resultado, ...] # Por ejemplo: ["Suma", [2,3],5, "Suma", [1,1],2, "Resta",[1,1], 0, ....] ################################################################# # # # FIN # # # ################################################################# ############################################################################## # Copyright (c) 2011 - Serafín Vélez Barrera - Oficina de Software Libre # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ##############################################################################