Skip to content

Beginner es

Enoch-199811 edited this page Aug 9, 2026 · 1 revision

Principiante — primeros pasos con BioLang

English | 中文 | Русский | Español | Português | 繁體中文 | Deutsch

Esta página enseña los conceptos fundamentales y el flujo de control. No necesitas nada más que un binario bio compilado y un editor de texto.

¿Qué es BioLang?

BioLang es un lenguaje orientado a flujos. En lugar de «todo es un objeto», aquí todo es un flujo — un flujo de solicitudes y respuestas. Cada operación que realizas es una solicitud que puede ser rechazada. Esto convierte el manejo de errores en una parte de primera clase del lenguaje, no en una idea de última hora.

Ejecutar tu primer programa

Compila el intérprete:

make
# → bin/bio

Crea hello.bio:

program main;

Main {
    void exec() {
        CIO::println("Hello, BioLang!");
    }
}

Ejecútalo:

bin/bio hello.bio
# Hello, BioLang!

Todo programa tiene el mismo esqueleto:

  • program main; — declara que este archivo es un programa principal (tiene un punto de entrada).
  • Main { ... } — el flujo del programa principal.
  • void exec() { ... } — el método que se ejecuta cuando arranca el programa.

Tipos base y variables

Cinco tipos base:

Tipo Significado Ejemplo
int entero 42, -7
float número de precisión simple 3.14
double número de doble precisión 3.14159265358979
string texto "hello"
char un solo carácter 'x'

Declaración de variables:

int age = 30;
string name = "BioLang";
double pi = 3.14159;
char grade = 'A';

Una const es una constante de solo lectura a nivel de programa:

const int SPEED = 9;

El modelo de solicitudes: res, ref, get, cause

Cada llamada devuelve un resultado de solicitud que es o bien un éxito (res) o bien un rechazo (ref). Este es el corazón de BioLang.

ALL result = add(3, 4);     // a request result

Usa get para desenvolver un éxito y cause para obtener el motivo del rechazo:

CIO::println(get add(3, 4));        // 7
CIO::println(cause div(1, 0));      // refused: division by zero
  • get x — el valor de una solicitud exitosa.
  • cause x — el motivo por el que una solicitud fue rechazada.
  • ALL x = ... — captura ambos; .res y .cause también funcionan.

Operadores

Aritmética: + - * / %

int a = 7 + 3;      // 10
int b = a * 2;      // 20
int c = b / 7;      // 2  (integer division)
int d = b % 7;      // 6  (remainder)

Incremento y decremento: i++, i--, además de las formas compuestas.

Flujo de control

if / else if / else

if (score >= 90) {
    CIO::println("A");
} else if (score >= 60) {
    CIO::println("B");
} else {
    CIO::println("C");
}

while

int i = 0;
while (i < 5) {
    CIO::println("i =", i);
    i = i + 1;
}

for

for (int i = 0; i < 5; i = i + 1;) {
    CIO::println("square", i, "=", i * i);
}

Observa el ; después de la expresión de actualización — las tres cláusulas se separan con punto y coma y todo el encabezado termina con ;.

break y continue

for (int i = 0; i < 10; i = i + 1;) {
    if (i == 3) continue;    // skip 3
    if (i == 7) break;       // stop at 7
    CIO::println(i);
}

Entrada y salida de consola

CIO::print("Enter your name: ");     // no newline
string name = CIO::getln();          // read a line of text
CIO::println("Hello,", name);        // prints: Hello, <name>

CIO es el flujo de consola: print, println, get, getln, readInt, readNumber.

Poniéndolo todo junto

Un pequeño juego de adivinanzas (usa todo lo anterior):

program main;

Main {
    void exec() {
        const int SECRET = 7;
        CIO::println("Guess the number (1-10)!");

        for (int tries = 0; tries < 3; tries = tries + 1;) {
            int guess = CIO::readInt();
            if (guess == SECRET) {
                CIO::println("Correct! You win.");
                res;                  // success, end the program
            } else if (guess < SECRET) {
                CIO::println("Too low.");
            } else {
                CIO::println("Too high.");
            }
        }
        CIO::println("Out of tries. The answer was", SECRET);
    }
}

Qué sigue

  • Intermedio — flujos, clases, archivos, proyectos, hilos.
  • Avanzado — referencias inteligentes, bibliotecas binarias, empaquetado, compilaciones multiplataforma.
  • Ejemplos en el repositorio — 15 programas ejecutables y profusamente comentados.

Clone this wiki locally