Lección 3

Variables, funciones y control de flujo

Aprende a guardar valores, transformar datos, elegir caminos y repetir acciones con Rust.

Nivel
Introducción
Duración
18 min
Actualizada

Cuatro piezas para dar instrucciones

Un programa útil necesita recordar datos, aplicar reglas, tomar decisiones y repetir trabajo. Antes de ver la sintaxis de Rust, podemos ordenar esas tareas en cuatro piezas:

  1. 01 · VariableGuardauna cantidad de energía
  2. 02 · FunciónCalculacómo transformarla
  3. 03 · CondiciónDecidesi queda energía
  4. 04 · BucleRepitela operación durante varios turnos

Rust expresa esas cuatro ideas con variables, funciones, if y bucles. No necesitas saber cómo se guarda cada valor en memoria todavía: aquí nos importa aprender a leer el recorrido del programa.

Estado del taller

  • ESTADO · energyvalor inicial: 4
  • REGLA · let mutel cambio queda declarado
  • RESULTADO · variable preparadapuede actualizarse después
01 / 04LET · INMUTABLE POR DEFECTO

Inferencia y anotaciones

Rust necesita conocer el tipo de cada valor, pero muchas veces puede inferirlo:

Código Tipo que reconoce Qué representa
let energy = 4; entero, normalmente i32 un número sin decimales
let temperatura = 18.5; decimal, normalmente f64 un número con decimales
let activo = true; bool verdadero o falso
let simbolo = 'R'; char un carácter Unicode

Puedes escribir let energy: i32 = 4; cuando la elección de tipo importe o cuando quieras hacerla visible. No es necesario anotar cada variable.

Qué bucle elegir

Forma Úsala cuando… Idea clave
for tienes una secuencia o un rango que recorrer avanza automáticamente por cada elemento
while debes repetir mientras una condición sea verdadera comprueba la condición antes de cada vuelta
loop quieres repetir hasta decidir salir con break no tiene condición de salida implícita

En esta introducción practicarás for, la opción más directa cuando el número de pasos está descrito por un rango. El Módulo 1 profundizará en while, loop, break, continue y las etiquetas de bucle.

Antes de ejecutar: predice

Para remaining_energy(3, 2), la variable empieza en 3. El rango 0..2 produce dos vueltas: después de la primera queda 2 y después de la segunda queda 1. Para remaining_energy(2, 5), las tres vueltas finales siguen comprobando la condición, pero ya no restan porque la energía ha llegado a 0. El ejercicio trabaja con energía inicial y turnos no negativos.

Predecir el estado vuelta a vuelta es una forma sencilla de revisar un bucle antes de pedir al compilador que lo ejecute.

Ejercicio 01 · Taller de energía

Haz que la energía dure todos los turnos posibles.

El starter ya conecta las cuatro piezas de la lección: una variable mutable, un bucle for, una condición y un valor de retorno. Completa la actualización que falta.

0/1correcta

Completa remaining_energy para entradas no negativas. Cada turno consume una unidad mientras quede energía. El resultado no puede bajar de cero y cero turnos debe conservar la energía inicial.

01

Implementa

Sustituye `todo!` por `energy -= 1;`.

Función 01

Calcular la energía restante

Sin cambios

Completa el cuerpo ya estructurado: descuenta una unidad cuando la condición permite entrar.

/// Calculates the energy remaining after several turns.
pub fn remaining_energy(initial_energy: i32, turns: i32) -> i32 {
    let mut energy = initial_energy;
    for _turn in 0..turns {
        if energy > 0 {
            todo!("subtract one unit of energy");
        }
    }
    energy
}
02

Comprueba

Ejecuta tres casos visibles y usa el diagnóstico para corregir el código.

descuenta, se detiene en cero y admite cero turnos
Compilador

Modifica el código antes de ejecutar las pruebas.

03

Ayuda

Consulta pistas progresivas o compara con la solución.

Ejecuta un intento para desbloquear la solución.

Resumen

  • let crea variables inmutables por defecto; let mut permite cambios explícitos.
  • Rust puede inferir tipos básicos, aunque una anotación como : i32 permite fijarlos.
  • Una función declara tipos para sus parámetros y retorno; su expresión final devuelve el valor.
  • if exige una condición booleana y ejecuta exactamente una de sus ramas.
  • for recorre secuencias y rangos; .. excluye el final y ..= lo incluye.
  • while repite según una condición y loop continúa hasta un break; se estudiarán en profundidad más adelante.

Fuentes