Ejemplos completos
Todos los ejemplos están en la carpeta examples/ y se ejecutan con:
⚡ Ejecutar un ejemplo
cargo run --release --bin forja -- run examples/.fa 1. Hola Mundo
El clásico de clásicos. Tu primer programa en Forja:
📄 examples/01_hola.fa
// Programa Hola Mundo en Forja
escribir("¡Hola, mundo desde Forja!") 💡 Output:
¡Hola, mundo desde Forja!2. Variables y constantes
📄 examples/02_variables.fa
variable nombre = "Gaucho"
variable edad = 30
constante altura = 1.85
escribir("Nombre: " + nombre)
escribir("Edad: " + edad)
edad = 31
escribir("Nueva edad: " + edad)
// altura = 2.0 // ❌ ErrorDePropiedad (es constante) 3. Tipos explícitos
📄 examples/03_tipos.fa
variable nombre: Texto = "Gaucho"
variable edad: Entero = 30
variable altura: Decimal = 1.85
constante activo: Booleano = verdadero
// Sin tipo (inferido automáticamente)
variable ciudad = "Buenos Aires"
escribir("Edad: " + edad)
escribir("Altura: " + altura) 4. Funciones
📄 examples/07_funciones.fa
funcion suma(a, b) {
retornar a + b
}
variable resultado = suma(3, 4)
escribir("Suma: " + resultado)
funcion saludo(nombre) {
escribir("Hola, " + nombre + "!")
}
saludo("Mundo")
saludo("Forja") 5. Condicionales
📄 examples/05_condicionales.fa
variable x = 10
variable y = 5
si (x > y) {
escribir("x es mayor que y")
} sino {
escribir("x no es mayor que y")
}
// Anidados
variable nota = 85
si (nota >= 90) {
escribir("Excelente!")
} sino {
si (nota >= 70) {
escribir("Buen trabajo!")
} sino {
escribir("Sigue intentando!")
}
} 6. Bucles
📄 examples/06_bucles.fa
// Mientras
variable contador = 0
mientras (contador < 5) {
escribir("Contador: " + contador)
contador = contador + 1
}
// Para
para (variable i = 0; i < 3; i = i + 1) {
escribir("i = " + i)
}
// Repetir
repetir (4) {
escribir("Esto se repite 4 veces")
} 7. Clases y POO
📄 examples/10_clases.fa
clase Estudiante {
nombre
edad
constructor(n, e) {
este.nombre = n
este.edad = e
}
funcion presentarse() {
escribir("Hola, soy " + este.nombre +
" y tengo " + este.edad + " años")
}
funcion esMayorDeEdad() -> Booleano {
retornar este.edad >= 18
}
}
variable alumno = nuevo Estudiante("Ana", 20)
alumno.presentarse()
si (alumno.esMayorDeEdad()) {
escribir("Es mayor de edad")
} sino {
escribir("Es menor de edad")
} 8. Pattern Matching
📄 examples/112_match_exhaustivo.fa
variable dia = 3
coincidir (dia) {
caso 1 → {
escribir("Lunes")
}
caso 2 → {
escribir("Martes")
}
caso 3 → {
escribir("Miércoles")
}
caso _ → {
escribir("Otro día")
}
} 9. Tipos algebraicos (enums)
📄 examples/111_match_enum.fa
tipo Resultado = Exito(Entero) | Error(Texto)
funcion dividir(a, b) {
si (b == 0) {
retornar Error("No se puede dividir por cero")
} sino {
retornar Exito(a / b)
}
}
variable res = dividir(10, 2)
coincidir (res) {
caso Exito(valor) → {
escribir("Resultado: " + valor)
}
caso Error(msg) → {
escribir("Error: " + msg)
}
}
// → Resultado: 5 10. Módulos (importar)
📄 main + modulos/utilidades.fa
// main.fa
importar "modulos/utilidades"
escribir(sumar(5, 3))
escribir(restar(10, 4)) 📄 modulos/utilidades.fa
funcion sumar(a, b) {
retornar a + b
}
funcion restar(a, b) {
retornar a - b
} 11. Arreglos
📄 examples/08_arrays.fa
variable numeros = [10, 20, 30, 40, 50]
escribir("Primer elemento: " + numeros[0])
escribir("Cantidad: " + numeros.length())
// Modificar elementos
numeros[2] = 99
escribir("Elemento modificado: " + numeros[2]) 12. Strings
📄 examples/09_strings.fa
// Concatenación
variable saludo = "Hola"
variable nombre = "Mundo"
escribir(saludo + ", " + nombre + "!")
// Strings con números
variable edad = 25
escribir("Tengo " + edad + " años") 13. Mapas (diccionarios)
📄 examples/11_mapas.fa
variable persona = {"nombre": "Ana", "edad": 30}
escribir("Nombre: " + persona["nombre"])
escribir("Edad: " + persona["edad"])
// Modificar valores
persona["edad"] = 31
escribir("Nueva edad: " + persona["edad"]) 14. Entrada de usuario
📄 examples/12_input.fa
escribir("¿Cómo te llamás?")
variable nombre = leer()
escribir("Hola, " + nombre + "!") 15. Juego: Adivina el número
📄 examples/14_adivina.fa
// Juego completo: adiviná el número secreto
escribir("🎯 Adiviná el número (1-100)")
variable secreto = 42
variable intento = 0
variable adivinado = falso
mientras (!adivinado) {
escribir("Tu intento: ")
variable guess = leer()
intento = intento + 1
si (guess < secreto) {
escribir("📈 Más alto")
} sino si (guess > secreto) {
escribir("📉 Más bajo")
} sino {
escribir("🎉 Correcto! Lo lograste en " + intento + " intentos")
adivinado = verdadero
}
} 16. Traits y polimorfismo
📄 examples/91_trait_simple.fa
trait Volador {
funcion volar() → Texto
}
clase Pajaro {
nombre
constructor(n) { este.nombre = n }
}
implementa Volador para Pajaro {
funcion volar() → Texto {
retornar "este.nombre está volando"
}
} 17. Concurrencia
📄 examples/70_concurrencia.fa
variable tx, rx = canal()
hilo {
tx.enviar("Hola desde el hilo")
}
variable msg = rx.recibir()
escribir(msg) // → Hola desde el hilo 18. GUI nativa
📄 examples/204_login_final.fa
importar "gui"
funcion login() {
si (usuario && clave) {
escribir("Ingresando...")
}
}
funcion main() {
columna(
etiqueta("Iniciar sesión"),
entrada_texto("usuario"),
entrada_texto("clave"),
boton("Ingresar", &login)
)
} Probarlos todos
Ejecutá cualquiera de estos ejemplos con:
⚡ Lista de ejemplos disponibles
# Básicos (01-09)
forja run examples/01_hola.fa
forja run examples/02_variables.fa
forja run examples/03_tipos.fa
forja run examples/04_operaciones.fa
forja run examples/05_condicionales.fa
forja run examples/06_bucles.fa
forja run examples/07_funciones.fa
forja run examples/08_arrays.fa
forja run examples/09_strings.fa
# Intermedios (10-14)
forja run examples/10_clases.fa
forja run examples/11_mapas.fa
forja run examples/12_input.fa
forja run examples/13_errores.fa
forja run examples/14_adivina.fa
# Avanzados (traits, concurrencia, GUI)
forja run examples/91_trait_simple.fa
forja run examples/70_concurrencia.fa
cargo run --features gui --bin forja -- run --native examples/204_login_final.fa