Arreglos en PSeInt

Arreglos y Vectores en PSeInt

Necesitas guardar treinta calificaciones, y no quieres treinta variables distintas. Buscas arreglos en PSeInt, copias un ejemplo y tu programa se detiene con Subíndice fuera de rango, porque el ejemplo empezaba en 1 y el perfil de tu escuela empieza en 0.

Esta página explica los arreglos en PSeInt desde cero. Verás la sintaxis, cómo definir un vector y una matriz, por qué la primera posición puede ser 0 o 1, ejemplos probados en el programa, los errores comunes y cómo llenar y usar un arreglo con un ciclo.

Sintaxis Básica de los Arreglos en PSeInt

Un arreglo, que también se llama array, es un grupo de valores del mismo tipo guardados bajo un solo nombre, y cada valor tiene una posición. Cuando el arreglo tiene una dimensión se llama vector, y cuando tiene dos dimensiones se llama matriz, como una tabla con filas y columnas. La palabra reservada para declarar un arreglo en PSeInt es Dimension, y Dimensionar es la misma palabra. Esta es la sintaxis de los arreglos en PSeInt, y los arrays en PSeInt son lo mismo que los arreglos.

Definir v Como Entero;
Dimension v[5];

Vector en PSeInt con sus posiciones en base 1 y en base 0

Lo que quieresSintaxisSignificado
Definir un vectorDimension v[5];Un vector con 5 posiciones
Definir una matrizDimension m[3,3];Una tabla con 3 filas y 3 columnas
Usar más dimensionesDimension t[2,2,2];Un arreglo con tres dimensiones
Guardar un valorv[2] <- 30;Pone 30 en la posición 2
Leer un valorEscribir v[2];Muestra el valor de la posición 2
Cambiar el tamañoRedimensionar v[8];Le da 8 posiciones al vector y conserva sus valores

El Arreglo Empieza en 0 o en 1

Esta es la pregunta que causa más errores, y la respuesta depende de tu perfil. En el perfil flexible y en el perfil por defecto la primera posición es 1, y en muchos perfiles de escuelas es 0. PSeInt trae 467 perfiles, y 293 de ellos usan 0, como los perfiles de la UNAM, la UANL, Conalep y CBTis, y también el perfil estricto. En los dos casos Dimension v[5] crea 5 posiciones, y solo cambian los números.

PerfilPosiciones de Dimension v[5]
Flexible y por defecto1, 2, 3, 4 y 5
Estricto, UNAM, UANL, Conalep y CBTis0, 1, 2, 3 y 4

Para saber cuál es tu base, escribe un vector de 5 posiciones y usa la posición 5. Si el error dice de 0 a 4, tu perfil empieza en 0, y si dice de 1 a 5, empieza en 1. También puedes ver la opción en el menú Configurar, Opciones del Lenguaje, con el nombre Utilizar índices en arreglos y cadenas en base 0.

Pseint vector indices

Tamaño desde una Variable y Valores por Defecto

Puedes leer el tamaño del usuario, como Leer n; y luego Dimension v[n];, en los perfiles flexible y por defecto. El perfil estricto pide un número constante y da el error Las dimensiones deben ser constantes. En el perfil estricto también necesitas Definir antes de Dimension.

Las posiciones que no llenas tienen un valor por defecto, que es 0 en un vector de Entero, texto vacío en un vector de Caracter y FALSO en un vector de Logico. Los arreglos de texto se declaran igual.

Definir nombres Como Caracter;
Dimension nombres[3];
nombres[1] <- “Ana”;

Matrices en PSeInt

Una matriz usa dos números en cada posición, la fila y luego la columna. Con Dimension m[3,3]; la celda de la segunda fila y la tercera columna es m[2,3]. Matriz en PSeInt con sus filas y columnas

Cómo Usar Arreglos en PSeInt Paso a Paso

Sigue estos cuatro pasos con cualquier arreglo.

  • Declara el tipo con Definir.
  • Da el tamaño con Dimension.
  • Llena cada posición, con un ciclo si son muchas.
  • Recorre el arreglo con otro ciclo para leerlo o para calcular.

Llenar un Vector con Para

Este es el programa base, y llena un vector de 5 posiciones y lo muestra. Fue probado en los perfiles flexible y por defecto, donde la primera posición es 1.

Proceso LlenarVector
    Definir v Como Entero;
    Dimension v[5];
    Definir i Como Entero;
    Para i <- 1 Hasta 5 Hacer
        v[i] <- i * 10;
    FinPara
    Para i <- 1 Hasta 5 Hacer
        Escribir “Posicion “, i, “: “, v[i];
    FinPara
FinProceso

El programa muestra las cinco líneas desde Posicion 1 hasta Posicion 5, y la última tiene el valor 50. Si tu perfil empieza en 0, cambia los dos ciclos para que vayan de 0 a 4.

Para i <- 0 Hasta 4 Hacer
    v[i] <- i * 10;
FinPara

En un perfil con base 0 el programa muestra las cinco líneas desde Posicion 0 hasta Posicion 4, y la última tiene el valor 40.

Llenar un Vector con Leer

Para pedirle los valores al usuario, usa Leer dentro del ciclo. Este programa pide la cantidad de calificaciones, llena el vector y calcula el promedio, la mayor y la menor.

Proceso LeerNotas
    Definir notas Como Real;
    Definir n, i Como Entero;
    Definir suma, mayor, menor Como Real;
    Escribir “Cuantas notas vas a escribir”;
    Leer n;
    Dimension notas[n];
    suma <- 0;
    Para i <- 1 Hasta n Hacer
        Escribir “Escribe la nota “, i;
        Leer notas[i];
        suma <- suma + notas[i];
    FinPara
    mayor <- notas[1];
    menor <- notas[1];
    Para i <- 2 Hasta n Hacer
        Si notas[i] > mayor Entonces
            mayor <- notas[i];
        FinSi
        Si notas[i] < menor Entonces
            menor <- notas[i];
        FinSi
    FinPara
    Escribir “Promedio “, suma / n;
    Escribir “Mayor “, mayor, ” y menor “, menor;
FinProceso

Con 4 calificaciones, 8, 6, 9 y 7, el programa muestra Promedio 7.5 y Mayor 9 y menor 6.

Recorrer un Arreglo con Para Cada

Para Cada visita cada elemento y no le importa la base, así que el mismo código funciona en todos los perfiles.

Proceso SumaConParaCada
    Definir v Como Entero;
    Definir e, suma Como Entero;
    Dimension v[4];
    v[1] <- 4;
    v[2] <- 9;
    v[3] <- 1;
    v[4] <- 6;
    suma <- 0;
    Para Cada e De v Hacer
        suma <- suma + e;
    FinPara
    Escribir “La suma es “, suma;
FinProceso

El programa muestra La suma es 20. En un perfil con base 0 solo cambian las cuatro líneas que guardan los valores, de v[0] a v[3].

Ejemplos de Arreglos en PSeInt

Estos ejercicios son los más comunes en clase, y cada programa fue probado.

Buscar un Número en un Vector

Proceso BuscarNumero
    Definir v Como Entero;
    Dimension v[5];
    Definir i, buscado, posicion Como Entero;
    v[1] <- 7;
    v[2] <- 3;
    v[3] <- 9;
    v[4] <- 3;
    v[5] <- 1;
    Escribir “Que numero buscas”;
    Leer buscado;
    posicion <- 0;
    Para i <- 1 Hasta 5 Hacer
        Si v[i] = buscado Y posicion = 0 Entonces
            posicion <- i;
        FinSi
    FinPara
    Si posicion > 0 Entonces
        Escribir “Esta en la posicion “, posicion;
    SiNo
        Escribir “No esta en el arreglo”;
    FinSi
FinProceso

Con 9 el programa dice que está en la posición 3, con 3 dice la posición 2, que es la primera, y con 8 dice que no está en el arreglo.

Mostrar un Vector al Revés

Proceso InvertirVector
    Definir v Como Entero;
    Dimension v[5];
    Definir i Como Entero;
    Para i <- 1 Hasta 5 Hacer
        v[i] <- i;
    FinPara
    Para i <- 5 Hasta 1 Con Paso -1 Hacer
        Escribir Sin Saltar v[i], ” “;
    FinPara
    Escribir “”;
FinProceso

El programa muestra 5 4 3 2 1.

Ordenar un Vector

Este es el método de la burbuja, que compara cada par de vecinos y cambia sus lugares cuando están en el orden incorrecto. La primera versión es para base 1.

Proceso OrdenarLista
    Definir v Como Entero;
    Dimension v[5];
    Definir i, j, aux Como Entero;
    v[1] <- 40;
    v[2] <- 10;
    v[3] <- 50;
    v[4] <- 20;
    v[5] <- 30;
    Para i <- 1 Hasta 4 Hacer
        Para j <- 1 Hasta 5 – i Hacer
            Si v[j] > v[j + 1] Entonces
                aux <- v[j];
                v[j] <- v[j + 1];
                v[j + 1] <- aux;
            FinSi
        FinPara
    FinPara
    Para i <- 1 Hasta 5 Hacer
        Escribir Sin Saltar v[i], ” “;
    FinPara
    Escribir “”;
FinProceso

El programa muestra 10 20 30 40 50. Este es el mismo programa para un perfil con base 0.

Proceso OrdenarLista
    Definir v Como Entero;
    Dimension v[5];
    Definir i, j, aux Como Entero;
    v[0] <- 40;
    v[1] <- 10;
    v[2] <- 50;
    v[3] <- 20;
    v[4] <- 30;
    Para i <- 0 Hasta 3 Hacer
        Para j <- 0 Hasta 3 – i Hacer
            Si v[j] > v[j + 1] Entonces
                aux <- v[j];
                v[j] <- v[j + 1];
                v[j + 1] <- aux;
            FinSi
        FinPara
    FinPara
    Para i <- 0 Hasta 4 Hacer
        Escribir Sin Saltar v[i], ” “;
    FinPara
    Escribir “”;
FinProceso

Llenar y Mostrar una Matriz

Dos ciclos, uno dentro del otro, recorren las filas y las columnas. Este programa llena una matriz de 3 por 3 con el producto de la fila y la columna, la muestra y suma el total y la diagonal.

Pseint matriz 3x3

Proceso Matriz3x3
    Definir m Como Entero;
    Dimension m[3,3];
    Definir f, c, diag, total Como Entero;
    diag <- 0;
    total <- 0;
    Para f <- 1 Hasta 3 Hacer
        Para c <- 1 Hasta 3 Hacer
            m[f,c] <- f * c;
            total <- total + m[f,c];
        FinPara
        diag <- diag + m[f,f];
    FinPara
    Para f <- 1 Hasta 3 Hacer
        Escribir m[f,1], ” “, m[f,2], ” “, m[f,3];
    FinPara
    Escribir “Suma total “, total, ” y diagonal “, diag;
FinProceso

El programa muestra las filas 1 2 3, 2 4 6 y 3 6 9, y luego Suma total 36 y diagonal 14.

Errores Comunes con Arreglos en PSeInt

Cada mensaje te dice la causa, y estos son los que más verás, probados en el programa.

MensajeCausaSolución
Subindice fuera de rango, con el rangoUna posición que no existe, como v[0] en base 1, o v[5] en base 0Lee el rango del mensaje, y revisa la base de tu perfil
Faltan subindices para el arregloSe usó el arreglo sin posición, como Escribir v;Escribe la posición, como v[i], o usa un ciclo
Cantidad de indices incorrecta para el arregloUna matriz usada con una sola posiciónUsa dos, como m[f,c]
No coinciden los tiposUn valor de otro tipo, como texto en un vector de EnteroUsa valores del mismo tipo del arreglo
Identificador en usoDimension usado dos veces con el mismo nombreUsa otro nombre, o Redimensionar
Las dimensiones deben ser numeros enterosUn tamaño con decimales, como v[2.5]Usa un entero
Las dimensiones deben ser constantesUn tamaño desde una variable en el perfil estrictoUsa un número, o cambia el perfil

Ejercicios de Arreglos en PSeInt para Practicar

Practica con estas ideas, y prueba cada una en tu perfil.

  • Lee 10 números y muestra cuántos son pares.
  • Lee 5 nombres y muéstralos en orden inverso.
  • Calcula la suma de las posiciones con un número par en un vector de 8 valores.
  • Llena una matriz de 4 por 4 y muestra su diagonal principal.
  • Lee las ventas de 7 días y muestra el mejor día.

Preguntas Frecuentes

Declara el tipo con Definir y el tamaño con Dimension, como Definir v Como Entero; y Dimension v[5];. La palabra que declara un arreglo en PSeInt es Dimension, y así es como se usa Dimension en PSeInt.

Definir un vector es lo mismo que declararlo, y un vector es un arreglo de una dimensión, así que lo defines con un solo tamaño, como Dimension v[5];. Con dos tamaños, como Dimension m[3,3];, obtienes una matriz.

Depende de tu perfil. Los perfiles flexible y por defecto empiezan en 1, y el perfil estricto y muchos perfiles de escuelas, como UNAM, UANL, Conalep y CBTis, empiezan en 0.

Usa un ciclo con Para, y dentro escribe Leer v[i]; para pedir cada valor, o v[i] <- expresion; para calcularlo.

Puedes guardar esta página como PDF desde tu navegador, con Control y P y Guardar como PDF. Nuestra guía rápida en PDF también tiene el comando Dimension y los errores más comunes.

Las dimensiones son la cantidad de tamaños de un arreglo. Un tamaño hace un vector, dos hacen una matriz y tres hacen un cubo, y todos se declaran con Dimension.

Conclusión

Ahora sabes cómo definir y usar arreglos en PSeInt, por qué la primera posición cambia con tu perfil y cómo evitar el error del subíndice. El siguiente paso es combinarlos con ciclos y decisiones, y puedes ver todas las instrucciones en nuestra página de comandos de PSeInt. Si necesitas repasar primero los tipos de datos, lee nuestra página sobre variables y tipos de datos.

Entradas similares

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *