Decimos que una estructura condicional es anidada cuando por la rama del verdadero o el falso de una estructura condicional hay otra estructura condicional.

El diagrama de flujo que se presenta contiene dos estructuras condicionales. La principal se trata de una estructura condicional compuesta y la segunda es una estructura condicional simple y esta contenida por la rama del falso de la primer estructura.
Es común que se presenten estructuras condicionales anidadas aún más complejas.
Confeccionar un programa que pida por teclado tres notas de un alumno, calcule el promedio e imprima alguno de estos mensajes:
Si el promedio es >=7 mostrar "Promocionado".
Si el promedio es >=4 y <7 mostrar "Regular".
Si el promedio es <4 mostrar "Reprobado".

Analicemos el siguiente diagrama. Se ingresan tres valores por teclado que representan las notas de un alumno, se obtiene el promedio sumando los tres valores y dividiendo por 3 dicho resultado (Tener en cuenta que si el resultado es un valor real solo se almacena la parte entera)
Primero preguntamos si el promedio es superior o igual a 7, en caso afirmativo va por la rama del verdadero de la estructura condicional mostramos un mensaje que indica "Promocionado" (con comillas indicamos un texto que debe imprimirse en pantalla).
En caso que la condición nos de falso, por la rama del falso aparece otra estructura condicional, porque todavía debemos averiguar si el promedio del alumno es superior o igual a cuatro o inferior a cuatro.
Estamos en presencia de dos estructuras condicionales compuestas.
puts "Ingrese primer nota"
nota1 = gets.to_i
puts "Ingrese segunda nota"
nota2 = gets.to_i
puts "Ingrese tercer nota"
nota3 = gets.to_i
prom = (nota1 + nota2 + nota3) / 3
if prom >= 7
puts "Promocionado"
else
if prom >= 4
puts "Regular"
else
puts "Reprobado"
end
end
Codifiquemos y ejecutemos este programa. Al correr el programa deberá solicitar por teclado la carga de tres notas y mostrarnos un mensaje según el promedio de las mismas.
A la codificación del if anidado podemos observarla por el else del primer if.
La indentación (desplazar a derecha los contenidos que hay en la estructura condicional) del código Ruby nos permite una lectura de un programa, identificar que hay por la rama del verdadero y falso de cada if:
if prom >= 7
puts "Promocionado"
else
if prom >= 4
puts "Regular"
else
puts "Reprobado"
end
end
Todo if tiene su end respectivo.
Nivel máximo: Porcentaje>=90%. Nivel medio: Porcentaje>=75% y <90%. Nivel regular: Porcentaje>=50% y <75%. Fuera de nivel: Porcentaje<50%.
ejercicio014.rb
puts "Ingrese primer valor"
num1 = gets.to_i
puts "Ingrese segunda valor"
num2 = gets.to_i
puts "Ingrese tercer valor"
num3 = gets.to_i
if num1 > num2
if num1 > num3
puts num1
else
puts num3
end
else
if num2 > num3
puts num2
else
puts num3
end
end
ejercicio015.rb
puts "Ingrese un valor"
num = gets.to_i
if num == 0
puts "Se ingreso el cero"
else
if num > 0
puts "Se ingreso un valor positivo"
else
puts "Se ingreso un valor negativo"
end
end
ejercicio016.rb
puts "Ingrese un valor de hasta tres digitos positivo"
num = gets.to_i
if num < 10
puts "Tiene un digito"
else
if num < 100
puts "Tiene dos digitos"
else
if num < 1000
puts "Tiene tres digitos"
else
puts "Error en la entrada de datos."
end
end
end
ejercicio017.rb
puts "Ingrese la cantidad total de preguntas del examen"
total_preguntas = gets.to_i
puts "Ingrese la cantidad total de preguntas contestadas correctamente"
total_correctas = gets.to_i
porcentaje = total_correctas * 100 / total_preguntas
if porcentaje >= 90
puts "Nivel maximo"
else
if porcentaje >= 75
puts "Nivel medio"
else
if porcentaje >= 50
puts "Nivel regular"
else
puts "Fuera de nivel"
end
end
end