Índice

Operaciones y expresiones

Aritmética

Nyx soporta las operaciones matemáticas estándar:

fn main() {
    let a: int = 10
    let b: int = 3

    print(a + b)    // 13   suma
    print(a - b)    // 7    resta
    print(a * b)    // 30   multiplicación
    print(a / b)    // 3    división (entera — sin decimales)
    print(a % b)    // 1    resto (módulo)
}

Al dividir dos enteros, el resultado es un entero — la parte decimal se descarta, no se redondea. 10 / 3 da 3, no 3.33.

Para división decimal, usa floats:

fn main() {
    let a: float = 10.0
    let b: float = 3.0
    print(a / b)    // 3.333...
}

Asignación compuesta

Cuando quieres actualizar una variable usando su valor actual, puedes usar operadores abreviados:

fn main() {
    var x: int = 10

    x += 5     // igual que: x = x + 5    → 15
    x -= 3     // igual que: x = x - 3    → 12
    x *= 2     // igual que: x = x * 2    → 24
    x /= 4     // igual que: x = x / 4    → 6
    x %= 5     // igual que: x = x % 5    → 1

    print(x)   // 1
}

Operadores de comparación

Las comparaciones producen un valor booltrue o false:

fn main() {
    let a: int = 10
    let b: int = 20

    print(a == b)    // false   igual a
    print(a != b)    // true    diferente de
    print(a < b)     // true    menor que
    print(a > b)     // false   mayor que
    print(a <= b)    // true    menor o igual
    print(a >= b)    // false   mayor o igual
}

Operadores lógicos

Los operadores lógicos combinan valores booleanos:

fn main() {
    let soleado: bool = true
    let calido: bool = false

    print(soleado and calido)     // false  (ambos deben ser true)
    print(soleado or calido)      // true   (al menos uno es true)
    print(not soleado)            // false  (invierte el valor)
}

Concatenación de strings

El operador + une strings:

fn main() {
    let primero: String = "Hola"
    let segundo: String = "Mundo"
    let resultado: String = primero + ", " + segundo + "!"

    print(resultado)    // Hola, Mundo!
}

Recuerda: no puedes sumar un string y un número directamente. Convierte el número primero:

fn main() {
    let nombre: String = "Alicia"
    let edad: int = 25
    print(nombre + " tiene " + int_to_string(edad) + " años")
}

Orden de operaciones

Nyx sigue la precedencia matemática estándar:

  1. Paréntesis () — se evalúan primero
  2. Multiplicación *, división /, módulo %
  3. Suma +, resta -
  4. Comparaciones ==, !=, <, >, <=, >=
  5. Lógicos not, luego and, luego or
fn main() {
    print(2 + 3 * 4)       // 14, no 20 (multiplicación primero)
    print((2 + 3) * 4)     // 20 (paréntesis primero)
}

Cuando tengas duda, usa paréntesis. Hacen tu intención clara.

Ejercicios

  1. Escribe un programa que calcule el área de un rectángulo de ancho 7 y alto 12.
  2. Una tienda tiene un artículo a 29.99 con 15% de descuento. Calcula el precio final.
  3. Convierte una temperatura de Celsius a Fahrenheit: F = C * 9 / 5 + 32. Prueba con 0°C, 100°C y 37°C.
  4. Dados a = 5, b = 10, c = 3, ¿cuál es el resultado de a + b c? ¿Y (a + b) c?

Resumen

Siguiente capítulo: Control de flujo →

← Anterior: Variables y tipos Siguiente: Control de flujo →