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 bool — true 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:
- Paréntesis
()— se evalúan primero - Multiplicación
*, división/, módulo% - Suma
+, resta- - Comparaciones
==,!=,<,>,<=,>= - Lógicos
not, luegoand, luegoor
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
- Escribe un programa que calcule el área de un rectángulo de ancho 7 y alto 12.
- Una tienda tiene un artículo a 29.99 con 15% de descuento. Calcula el precio final.
- Convierte una temperatura de Celsius a Fahrenheit:
F = C * 9 / 5 + 32. Prueba con 0°C, 100°C y 37°C. - Dados
a = 5,b = 10,c = 3, ¿cuál es el resultado dea + b c? ¿Y(a + b) c?
Resumen
- Aritmética:
+,-,*,/,% - Asignación compuesta:
+=,-=,*=,/=,%= - Comparación:
==,!=,<,>,<=,>= - Lógicos:
and,or,not - Concatenación de strings:
+ - La división entera descarta decimales; usa floats para resultados decimales.
Siguiente capítulo: Control de flujo →