12 — Arreglos


Concepto clave

Un arreglo es una variable que almacena múltiples valores del mismo tipo bajo un solo nombre, accediendo a cada valor mediante un índice. Los arreglos pueden ser de una dimensión (vectores) o de múltiples dimensiones (matrices).


Declaración — Dimension

Dimension <identificador>(<max1>);                    // vector
Dimension <identificador>(<max1>, <max2>);            // matriz
Dimension <id1>(<max1>), <id2>(<max2>);              // múltiples arreglos
// Vector de 10 elementos
Dimension notas(10);

// Matriz de 3 filas y 4 columnas
Dimension tabla(3, 4);

// Tres arreglos en una línea
Dimension nombres(5), edades(5), promedios(5);

Reglas de Dimension

  • Los arreglos deben declararse antes de usarlos
  • Los índices comienzan en 1 (perfil estándar) o 0 (según el perfil — ver 17 - Perfiles de Lenguaje)
  • El tamaño debe ser una expresión numérica positiva
  • El tipo del arreglo se determina por los valores que se le asignan (como las variables normales — ver 03 - Tipos de Datos)

Acceso a elementos

// Asignar un valor
notas(1) <- 8.5;
tabla(2, 3) <- 100;

// Leer desde teclado hacia una posición
Leer notas(1);

// Escribir el valor de una posición
Escribir notas(1);
Escribir tabla(2, 3);

// Usar en una expresión
suma <- notas(1) + notas(2) + notas(3);

Vectores — 1 dimensión

Un vector es un arreglo de una sola dimensión, como una lista lineal.

Proceso EjemploVector
    Definir i Como Entero;
    Dimension datos(5);

    // Cargar con Para
    Para i <- 1 Hasta 5 Hacer
        Escribir Sin Saltar "Dato ", i, ": ";
        Leer datos(i);
    FinPara;

    // Mostrar
    Para i <- 1 Hasta 5 Hacer
        Escribir "datos(", i, ") = ", datos(i);
    FinPara;
FinProceso

Matrices — 2 dimensiones

Una matriz organiza los datos en filas y columnas.

Proceso EjemploMatriz
    Definir i, j Como Entero;
    Dimension mat(3, 3);

    // Cargar
    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir Sin Saltar "mat(", i, ",", j, ")= ";
            Leer mat(i, j);
        FinPara;
    FinPara;

    // Mostrar como tabla
    Para i <- 1 Hasta 3 Hacer
        Para j <- 1 Hasta 3 Hacer
            Escribir Sin Saltar mat(i, j), "  ";
        FinPara;
        Escribir "";
    FinPara;
FinProceso

Ejemplo completo — Promedio y mayor nota

Proceso AnalisisNotas
    Definir notas(10) Como Real;
    Definir n, i Como Entero;
    Definir suma, promedio, mayor Como Real;

    Escribir "¿Cuántas notas? (máx 10): ";
    Leer n;

    // Cargar
    Para i <- 1 Hasta n Hacer
        Escribir Sin Saltar "Nota ", i, ": ";
        Leer notas(i);
    FinPara;

    // Calcular promedio y mayor
    suma <- 0;
    mayor <- notas(1);
    Para i <- 1 Hasta n Hacer
        suma <- suma + notas(i);
        Si notas(i) > mayor Entonces
            mayor <- notas(i);
        FinSi;
    FinPara;

    promedio <- suma / n;
    Escribir "Promedio: ", promedio;
    Escribir "Mayor nota: ", mayor;
FinProceso

Arreglos en SubProcesos

Los arreglos se pasan por referencia a los SubProcesos por defecto. Esto significa que la función puede modificar el arreglo original:

// Subproceso que recibe un arreglo
SubProceso resultado <- Promedio(datos, n)
    Definir i Como Entero;
    Definir suma Como Real;
    suma <- 0;
    Para i <- 1 Hasta n Hacer
        suma <- suma + datos(i);
    FinPara;
    resultado <- suma / n;
FinSubProceso

Proceso Principal
    Dimension mis_datos(5);
    Definir i Como Entero;
    Para i <- 1 Hasta 5 Hacer
        Leer mis_datos(i);
    FinPara;
    Escribir "Promedio: ", Promedio(mis_datos, 5);
FinProceso

Ordenamiento — Burbuja

Ejemplo clásico de algoritmo sobre arreglos:

Proceso OrdenarBurbuja
    Definir arr(10) Como Entero;
    Definir n, i, j, temp Como Entero;
    Leer n;
    Para i <- 1 Hasta n Hacer
        Leer arr(i);
    FinPara;

    // Ordenar
    Para i <- 1 Hasta n-1 Hacer
        Para j <- 1 Hasta n-i Hacer
            Si arr(j) > arr(j+1) Entonces
                temp <- arr(j);
                arr(j) <- arr(j+1);
                arr(j+1) <- temp;
            FinSi;
        FinPara;
    FinPara;

    Para i <- 1 Hasta n Hacer
        Escribir arr(i);
    FinPara;
FinProceso

Resumen de sintaxis

OperaciónSintaxis
Declarar vectorDimension arr(n);
Declarar matrizDimension mat(f, c);
Asignar a posiciónarr(i) <- valor;
Leer en posiciónLeer arr(i);
Escribir posiciónEscribir arr(i);
Recorrer vectorPara i <- 1 Hasta n Hacer
Recorrer matrizPara i <- 1 Hasta f Hacer + Para j <- 1 Hasta c Hacer

Relación con otros temas


| Contribución: Alexis Carrillo | Círculo Interno • EvoClub | Creado con Quartz v4.5.2 © 2026