Hasta ahora hemos visto los operadores:
relacionales (>, <, >=, <= , ==, !=) matemáticos (+, -, *, /, %, **)
pero nos están faltando otros operadores imprescindibles:
lógicos (&&, ||).
Estos dos operadores se emplean fundamentalmente en las estructuras condicionales para agrupar varias condiciones simples.

Traducido se lo lee como “Y”. Si la Condición 1 es verdadera Y la condición 2 es verdadera luego ejecutar la rama del verdadero.
Cuando vinculamos dos condiciones con el operador “&&”, las dos condiciones deben ser verdaderas para que el resultado de la condición compuesta de Verdadero y continúe por la rama del verdadero de la estructura condicional.
La utilización de operadores lógicos permiten en muchos casos plantear algoritmos más cortos y comprensibles.
Confeccionar un programa que lea por teclado tres números distintos y nos muestre el mayor.

Este ejercicio está resuelto sin emplear operadores lógicos en un concepto anterior del tutorial.
La primera estructura condicional es una ESTRUCTURA CONDICIONAL COMPUESTA con una CONDICION COMPUESTA.
Podemos leerla de la siguiente forma:
Si el contenido de la variable num1 es mayor al contenido de la variable num2 Y si el contenido de la variable num1 es mayor al contenido de la variable num3 entonces la CONDICION COMPUESTA resulta Verdadera.
Si una de las condiciones simples da falso la CONDICION COMPUESTA da Falso y continua por la rama del falso.
Es decir que se mostrará el contenido de num1 si y sólo si num1 > num2 y num1 > num3.
En caso de ser Falsa la condición, analizamos el contenido de num2 y num3 para ver cual tiene un valor mayor.
En esta segunda estructura condicional no se requieren operadores lógicos al haber una condición simple.
puts "Ingrese primer valor"
num1 = gets.to_i
puts "Ingrese segundo valor"
num2 = gets.to_i
puts "Ingrese tercer valor"
num3 = gets.to_i
puts "Número mayor de los tres ingresados"
if num1 > num2 && num1 > num3
puts num1
else
if num2 > num3
puts num2
else
puts num3
end
end
Como vemos disponemos un if con una condición compuesta y agrupadas por el operador && (y):
if num1 > num2 && num1 > num3

Traducido se lo lee como “O”. Si la condición 1 es Verdadera o la condición 2 es Verdadera, luego ejecutar la rama del Verdadero.
Cuando vinculamos dos o más condiciones con el operador “Or" que en C se escribe con los caracteres ||, con que una de las dos condiciones sea Verdadera alcanza para que el resultado de la condición compuesta sea Verdadero.
Se carga una fecha (día, mes y año) por teclado. Mostrar un mensaje si corresponde al primer trimestre del año (enero, febrero o marzo) Cargar por teclado el valor numérico del día, mes y año.
Ejemplo: dia:10 mes:2 año:2017.

La carga de una fecha se hace por partes, ingresamos las variables dd, mm y aa.
Mostramos el mensaje "Corresponde al primer trimestre" en caso que el mes ingresado por teclado sea igual a 1, 2 ó 3.
En la condición no participan las variables dd y aa.
puts "Ingrese nro de dia" dd = gets.to_i puts "Ingrese nro de mes" mm = gets.to_i puts "Ingrese nro de año" aa = gets.to_i if mm == 1 || mm == 2 || mm == 3 puts "Corresponde al primer trimestre" end
No hay problemas de definir condiciones compuestas con más de dos condiciones simples, en este ejemplo tenemos tres condiciones simples vinculadas con el operador ||
if mm == 1 || mm == 2 || mm == 3
ejercicio020.rb
puts "Ingrese nro de dia"
dd = gets.to_i
puts "Ingrese nro de mes"
mm = gets.to_i
puts "Ingrese nro de año"
aa = gets.to_i
if mm == 12 && dd == 25
puts "La fecha ingresada corresponde a navidad."
end
ejercicio021.rb
puts "Ingrese primer valor"
num1 = gets.to_i
puts "Ingrese segundo valor"
num2 = gets.to_i
puts "Ingrese tercer valor"
num3 = gets.to_i
if num1 == num2 && num1 == num3
suma = num1 + num2
puts "La suma del primero y segundo"
puts suma
producto = suma * num3
puts "La suma del primero y segundo multiplicado por el tercero"
puts producto
end
ejercicio022.rb
puts "Ingrese primer valor"
num1 = gets.to_i
puts "Ingrese segundo valor"
num2 = gets.to_i
puts "Ingrese tercer valor"
num3 = gets.to_i
if num1 < 10 && num2 < 10 && num3 < 10
puts "Todos los números son menores a diez"
end
ejercicio023.rb
puts "Ingrese primer valor"
num1 = gets.to_i
puts "Ingrese segundo valor"
num2 = gets.to_i
puts "Ingrese tercer valor"
num3 = gets.to_i
if num1 < 10 || num2 < 10 || num3 < 10
puts "Alguno de los números es menor a diez"
end
ejercicio024.rb
puts "Ingrese coordenada x"
x = gets.to_i
puts "Ingrese coordenada y"
y = gets.to_i
if x > 0 && y > 0
puts "Se encuentra en el primer cuadrante"
else
if x < 0 && y > 0
puts "Se encuentra en el segundo cuadrante"
else
if x < 0 && y < 0
puts "Se encuentra en el tercer cuadrante"
else
puts "Se encuentra en el cuarto cuadrante"
end
end
end
ejercicio025.rb
puts "Ingrese sueldo del empleado"
sueldo = gets.to_i
puts "Ingrese su antiguedad en años"
antiguedad = gets.to_i
if sueldo < 500 && antiguedad > 10
aumento = sueldo * 0.20
sueldo_total = sueldo + aumento
puts "Sueldo a pagar"
puts sueldo_total
else
if sueldo < 500
aumento = sueldo * 0.05
sueldo_total = sueldo + aumento
puts "Sueldo a pagar"
puts sueldo_total
else
puts "Sueldo a pagar"
puts sueldo
end
end
ejercicio026.rb
puts "Ingrese primer valor"
num1 = gets.to_i
puts "Ingrese segundo valor"
num2 = gets.to_i
puts "Ingrese tercer valor"
num3 = gets.to_i
puts "Rango de variación"
if num1 < num2 && num1 < num3
puts num1
else
if num2 < num3
puts num2
else
puts num3
end
end
if num1 > num2 && num1 > num3
puts num1
else
if num2 > num3
puts num2
else
puts num3
end
end