DocumentaciónTipos Avanzados

Estructuras Avanzadas: Sockets y Archivos

BLOX no se limita al cálculo numérico ni a los algoritmos clásicos.
También incorpora estructuras avanzadas que permiten interactuar con el mundo exterior: redes y archivos.

Con ellas, un programa BLOX puede:

  • comunicarse con otros procesos
  • leer y escribir información persistente
  • automatizar tareas del sistema
  • conectarse a servicios externos
  • construir prototipos de herramientas distribuidas

Estas capacidades amplían el lenguaje desde el terreno académico hacia problemas reales de integración, automatización y comunicación.

Ademas, BLOX ya incorpora una capacidad avanzada adicional de persistencia estructurada: bases de datos SQLite.

Con el tipo SQLITE y la API sqlite.api, un programa puede:

  • abrir o crear una base de datos
  • ejecutar sentencias SQL
  • consultar datos y recibirlos como TABLA
  • persistir tablas planas entre ejecuciones

Para una explicacion completa, consulta el documento Bases de Datos.

Sockets TCP/IP

Comunicación entre programas

Un socket es un extremo de comunicación que permite a dos programas intercambiar datos a través de una red, normalmente usando el protocolo TCP/IP.

Gracias a los sockets, BLOX puede actuar como:

  • cliente, conectándose a otro proceso
  • servidor, esperando conexiones entrantes

Esto permite construir programas que dialogan en tiempo real con otras aplicaciones, servicios locales o sistemas remotos.

Declaración y uso básico

ejemplo.blox
SOCKET s

s.ip = "127.0.0.1"
s.port = 5555

CONECTAR(s)

En este ejemplo:

  • s.ip define la dirección IP destino
  • s.port define el puerto de comunicación
  • CONECTAR(s) intenta establecer la conexión

La variable s de tipo SOCKET actúa como una estructura viva de comunicación, capaz de almacenar tanto el estado de la conexión como los datos recibidos.

Funciones principales de sockets

FunciónDescripción
CONECTAR(s)Conecta el socket a una IP y puerto determinados
ESCUCHAR(s)Prepara un socket para recibir conexiones entrantes
ACEPTAR(s)Acepta una conexión y retorna un nuevo socket conectado
ENVIAR(s, x)Envía datos a través del socket
RECIBIR(s)Recibe datos y los deja disponibles en el socket
DESCONECTAR(s)Cierra la conexión y libera recursos

Idea general de uso

En modo cliente, un flujo típico sería:

ejemplo.blox
SOCKET s

s.ip = "127.0.0.1"
s.port = 5555

CONECTAR(s)
ENVIAR(s, "Hola mundo")
RECIBIR(s)
DESCONECTAR(s)

Con esto, BLOX puede integrarse con servidores, APIs locales, herramientas auxiliares o procesos escritos en otros lenguajes.


Archivos

Trabajo con información persistente

BLOX también permite manipular archivos de texto de forma sencilla y directa.

Esto hace posible:

  • guardar resultados
  • cargar configuraciones
  • procesar datos externos
  • generar reportes
  • automatizar tareas de lectura y escritura

En muchos programas, el archivo es la memoria persistente del sistema.
Mientras las variables viven durante la ejecución, los archivos permiten conservar información más allá del programa.

Tipo de dato ARCHIVO

Una variable de tipo ARCHIVO representa un manejador o referencia a un archivo abierto.

Su valor normalmente se obtiene con la función ABRIR().

ejemplo.blox
ARCHIVO f

f = ABRIR("datos.txt", "r")

Si la apertura se realiza correctamente, f tendrá un valor válido.
Si falla, por ejemplo porque el archivo no existe en modo lectura, entonces f valdrá -1.

Modos de apertura

  • "r": lectura
  • "w": escritura
  • "a": agregado al final

Significado práctico

  • "r" abre un archivo existente para leerlo
  • "w" crea un archivo nuevo o sobrescribe uno existente
  • "a" conserva el contenido existente y agrega nuevas líneas al final

Funciones principales de archivos

FunciónDescripciónEjemplo
ABRIR()Abre un archivof = ABRIR("test.txt", "w")
ESCRIBIR_LINEA()Escribe texto en un archivoESCRIBIR_LINEA(f, "texto")
LEER_LINEA()Lee una línealinea = LEER_LINEA(f)
CERRAR()Cierra el archivoCERRAR(f)
FIN_ARCHIVO()Indica si se alcanzó el finalSI (!FIN_ARCHIVO(f)) ...
ARCHIVO_EXISTE()Verifica existenciaexiste = ARCHIVO_EXISTE("test.txt")
BORRAR()Elimina un archivoBORRAR("test.txt")
LISTAR_ARCHIVOS()Lista archivos por patróncant = LISTAR_ARCHIVOS("*.dat", archivos)

Ejemplo básico de escritura

ejemplo.blox
ARCHIVO f
LOGICO ok

f = ABRIR("salida.txt", "w")

SI (f == -1) ENTONCES
    ERROR("No se pudo abrir el archivo.")
FIN_SI

ok = ESCRIBIR_LINEA(f, "Hola desde BLOX")
CERRAR(f)

Ejemplo básico de lectura

ejemplo.blox
ARCHIVO f
STRING linea

f = ABRIR("datos.txt", "r")

SI (f == -1) ENTONCES
    ERROR("No se pudo abrir el archivo.")
FIN_SI

MIENTRAS (!FIN_ARCHIVO(f)) HACER
    linea = LEER_LINEA(f)
    IMPRIMIR(linea)
FIN_MIENTRAS

CERRAR(f)

Una visión práctica

Con sockets, BLOX puede conversar con otros programas.
Con archivos, puede conservar y recuperar información.

Juntas, estas dos capacidades convierten al lenguaje en una herramienta mucho más abierta al entorno real:

  • procesa datos
  • guarda resultados
  • intercambia mensajes
  • se conecta a otros sistemas
  • automatiza tareas concretas

En otras palabras, BLOX no solo calcula: también lee, escribe y se comunica.