DocumentaciónVectores y Matrices

Vectores y Matrices

Los vectores y las matrices son estructuras fundamentales en BLOX para trabajar con colecciones numéricas y datos organizados por posición.

Se usan para:

  • almacenar series de valores
  • representar listas ordenadas
  • modelar tablas numéricas
  • trabajar con álgebra lineal
  • resolver problemas de estadística, gráficos, física e ingeniería

Vectores

Un vector es una colección unidimensional de elementos del mismo tipo, accesibles por índice.

En BLOX, los vectores se usan principalmente para:

  • listas de números
  • listas de cadenas
  • coordenadas
  • series temporales
  • resultados intermedios de cálculo

Declarar vectores

En este documento nos centraremos en vectores numéricos.

Vector numérico

ejemplo.blox
VECTOR xs[5]

Esto crea un vector numérico de dimensión 5.

Asignar valores a un vector

Forma elemento a elemento

ejemplo.blox
VECTOR xs[5]

xs[0] = 10
xs[1] = 20
xs[2] = 30
xs[3] = 40
xs[4] = 50

Forma literal

ejemplo.blox
VECTOR xs[5]

xs = [10, 20, 30, 40, 50]

En BLOX, los vectores usan índices base 0.

Tip: Si un vector fue declarado con dimensión n, sus índices válidos van desde 0 hasta n - 1.

Leer valores de un vector

ejemplo.blox
VECTOR xs[5]
NUMERICO a

a = xs[2]

Recorrer un vector

ejemplo.blox
VECTOR xs[5]
NUMERICO i

PARA i = 0 HASTA xs.dim - 1 HACER
    IMPRIMIR(xs[i])
FIN_PARA

Propiedad .dim

La propiedad .dim indica la cantidad de elementos del vector.

ejemplo.blox
VECTOR xs[10]
NUMERICO n

n = xs.dim

Acceso dinámico y uso típico

Los vectores son especialmente útiles cuando necesitas generar datos punto a punto.

ejemplo.blox
VECTOR xs[5], ys[5]
NUMERICO i

PARA i = 0 HASTA 4 HACER
    xs[i] = i
    ys[i] = xs[i]^2
FIN_PARA

Esto produce una pequeña serie de pares:

  • x = 0, y = 0
  • x = 1, y = 1
  • x = 2, y = 4
  • x = 3, y = 9
  • x = 4, y = 16

Funciones frecuentes con vectores

Dependiendo de las APIs incluidas, BLOX puede trabajar con funciones como:

  • búsqueda
  • ordenamiento
  • reversa
  • inserción
  • eliminación
  • concatenación
  • impresión

Un patrón muy común es:

ejemplo.blox
INCLUIR "vectores.api"

y luego usar funciones auxiliares sobre VECTOR.

Buenas prácticas con vectores

  • Recorre vectores numéricos desde 0 hasta dim - 1.
  • Asegúrate de no acceder a posiciones fuera de rango.
  • Usa nombres claros como xs, ys, datos, valores, indices.
  • Si dos vectores representan pares ordenados, mantén siempre la misma dimensión.

Errores frecuentes con vectores

1. Confundir índices base 0 con base 1

Esto es incorrecto para vectores:

ejemplo.blox
PARA i = 1 HASTA xs.dim HACER
    IMPRIMIR(xs[i])
FIN_PARA

La forma correcta suele ser:

ejemplo.blox
PARA i = 0 HASTA xs.dim - 1 HACER
    IMPRIMIR(xs[i])
FIN_PARA

2. Usar índices fuera de rango

ejemplo.blox
VECTOR xs[5]
xs[5] = 100

Eso intenta escribir fuera del vector, porque el último índice válido es 4.

3. Asumir que todos los contenedores usan la misma base

En BLOX:

  • los vectores suelen indexarse desde 0
  • las tablas usan registros desde 1

Conviene no mezclar ambas convenciones.


Matrices

Una matriz es una estructura bidimensional de valores numéricos organizada en filas y columnas.

Se usa para:

  • álgebra lineal
  • sistemas de ecuaciones
  • transformaciones geométricas
  • procesamiento numérico
  • imágenes y convoluciones
  • aprendizaje automático

Declarar matrices

ejemplo.blox
MATRIZ A[3, 4]

Esto crea una matriz de:

  • 3 filas
  • 4 columnas

Acceder a elementos de una matriz

Sintaxis con coma

ejemplo.blox
MATRIZ A[3, 3]

A[0,0] = 10
A[0,1] = 20
A[1,2] = 50

Sintaxis encadenada

ejemplo.blox
MATRIZ A[3, 3]

A[0][0] = 10
A[0][1] = 20
A[1][2] = 50

En BLOX, las matrices usan índices base 0.

Tip: Si una matriz tiene dimensión m x n, sus índices válidos van desde 0 hasta m - 1 en filas, y desde 0 hasta n - 1 en columnas.

Leer valores de una matriz

Sintaxis con coma

ejemplo.blox
MATRIZ A[3, 3]
NUMERICO x

x = A[1,2]

Sintaxis encadenada

ejemplo.blox
MATRIZ A[3, 3]
NUMERICO x

x = A[1][2]

Recorrer una matriz

ejemplo.blox
MATRIZ A[3, 3]
NUMERICO i, j

PARA i = 0 HASTA A.filas - 1 HACER
    PARA j = 0 HASTA A.columnas - 1 HACER
        IMPRIMIR(A[i,j])
    FIN_PARA
FIN_PARA

Propiedades frecuentes

Según el contexto y las APIs disponibles, una matriz suele trabajarse con:

  • cantidad de filas
  • cantidad de columnas
  • dimensión

Un patrón típico es:

ejemplo.blox
NUMERICO m, n

m = A.filas
n = A.columnas

Asignar valores a una matriz

Forma elemento a elemento

ejemplo.blox
MATRIZ A[2,2]

A[0,0] = 1
A[0,1] = 2
A[1,0] = 3
A[1,1] = 4

Forma literal

ejemplo.blox
MATRIZ A[2,2]

A = [[1, 2], [3, 4]]

Crear una matriz identidad

ejemplo.blox
MATRIZ I[3,3]
NUMERICO i, j

PARA i = 0 HASTA 2 HACER
    PARA j = 0 HASTA 2 HACER
        SI (i == j) ENTONCES
            I[i,j] = 1
        SINO
            I[i,j] = 0
        FIN_SI
    FIN_PARA
FIN_PARA

Operaciones frecuentes con matrices

En BLOX es común trabajar con funciones como:

  • suma
  • resta
  • multiplicación
  • transpuesta
  • determinante
  • inversa
  • diagonales
  • rotaciones
  • convolución

Muchas de estas operaciones viven en:

ejemplo.blox
INCLUIR "matrices.api"

Ejemplo simple de carga manual

ejemplo.blox
MATRIZ A[2,2]

A[0,0] = 1
A[0,1] = 2
A[1,0] = 3
A[1,1] = 4

Ejemplo conceptual de transpuesta

Si:

A=[1234]A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}

entonces su transpuesta es:

AT=[1324]A^T = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix}

En una transpuesta, filas y columnas se intercambian.

Ejemplo conceptual de rotación 180°

Rotar una matriz 180° equivale a invertir el orden de sus filas y columnas.

Si:

A=[1234]A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}

entonces:

R180(A)=[4321]R_{180}(A) = \begin{bmatrix} 4 & 3 \\ 2 & 1 \end{bmatrix}

Filas y columnas

Muchas funciones de matrices trabajan específicamente sobre:

  • una fila
  • una columna
  • la diagonal principal
  • la diagonal secundaria

Por ejemplo:

  • mínimo en una columna
  • máximo en una fila
  • suma de una diagonal
  • extracción de submatrices

Matrices y gráficos

Las matrices también pueden servir para:

  • representar imágenes en escala de grises
  • aplicar filtros
  • almacenar kernels de convolución
  • describir transformaciones geométricas

Matrices y redes neuronales

En BLOX, las matrices aparecen con frecuencia en:

  • multiplicación entre capas
  • suma de bias
  • funciones de activación aplicadas elemento a elemento
  • propagación hacia adelante

Buenas prácticas con matrices

  • Recorre matrices usando dos índices: fila y columna.
  • Recuerda que las matrices en BLOX usan base 0.
  • Verifica compatibilidad de dimensiones antes de sumar o multiplicar.
  • Usa nombres expresivos como A, B, W, X, Y, kernel.

Errores frecuentes con matrices

1. Confundir los límites válidos

Si una matriz es A[3,3], sus índices válidos van de 0 a 2.

Esto es incorrecto:

ejemplo.blox
A[3,3] = 1

Una forma válida sería:

ejemplo.blox
A[2,2] = 1

2. Confundir filas con columnas

En:

ejemplo.blox
A[i,j]
  • i representa la fila
  • j representa la columna

3. Multiplicar matrices incompatibles

Si A es de dimensión m x n y B es de dimensión p x q, solo puedes calcular A * B cuando:

n=pn = p

4. Mezclar las convenciones de índices

En BLOX conviven varias estructuras:

  • VECTOR suele usar base 0
  • MATRIZ usa base 0
  • TABLA usa registros desde 1

Conviene tener esto muy presente cuando conviertes datos entre unas y otras.

Ejemplo completo

ejemplo.blox
VECTOR xs[5]
MATRIZ A[2,2]
NUMERICO i

PARA i = 0 HASTA xs.dim - 1 HACER
    xs[i] = i^2
FIN_PARA

// También podría escribirse:
// xs = [0, 1, 4, 9, 16]

A = [[1, 2], [3, 4]]

IMPRIMIR(xs[3])
IMPRIMIR(A[1,0])
IMPRIMIR(A[1][0])

Resumen

En BLOX:

  • un vector es una estructura unidimensional
  • una matriz es una estructura bidimensional
  • los vectores se recorren con índices base 0
  • las matrices se recorren con índices base 0

Ambas estructuras son esenciales para:

  • cálculo numérico
  • estadística
  • gráficos
  • física
  • procesamiento de datos
  • inteligencia artificial