If - Else anidados
Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 28 de 75.
Podemos anidar sentencias if-elif-else unas dentro de otras. Esto nos permite crear estructuras jerárquicas de toma de decisiones.
Por ejemplo:
if age > 18 {
if hasLicense {
println!("You can drive");
} else {
println!("Get a license first");
}
} else {
println!("Too young to drive");
}Puede estar anidado infinitamente:
if condition1 {
if condition2 {
if condition3 {
// si condition1, condition2 y condition3 son verdaderas
...
}
}
}Desafío
PrincipianteCrea un programa que verifique si alguien puede subir a una montaña rusa. Los requisitos son:
- Debe tener al menos 12 años
- Debe medir más de 150 cm
- Si cumple ambos requisitos pero es menor de 15 años, necesita supervisión de un adulto
Imprime exactamente estos mensajes para cada caso:
- Si es demasiado joven:
Sorry, you're too young - Si no es lo suficientemente alto:
Sorry, you're not tall enough - Si es menor de 15 y no hay un adulto:
Sorry, you need an adult with you - Si es menor de 15 con un adulto:
You can ride with adult supervision! - Si tiene 15 años o más y es lo suficientemente alto:
You can ride by yourself!
Hoja de referencia
Puedes anidar sentencias if-elif-else unas dentro de otras para crear estructuras de toma de decisiones jerárquicas:
if age > 18 {
if hasLicense {
println!("You can drive");
} else {
println!("Get a license first");
}
} else {
println!("Too young to drive");
}El anidamiento se puede realizar de forma infinita:
if condition1 {
if condition2 {
if condition3 {
// si condition1, condition2 y condition3 son verdaderas
...
}
}
}Pruébalo tú mismo
use std::io;
fn main() {
let mut age_input = String::new();
let mut height_input = String::new();
let mut adult_input = String::new();
io::stdin().read_line(&mut age_input).unwrap();
io::stdin().read_line(&mut height_input).unwrap();
io::stdin().read_line(&mut adult_input).unwrap();
let age: i32 = age_input.trim().parse().unwrap();
let height: i32 = height_input.trim().parse().unwrap();
let has_adult: bool = adult_input.trim().parse().unwrap();
// Escribe tu código debajo
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámica