Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIDAD V:
ARREGLOS
1.1 GENERALIDADES:
En los temas anteriores se ha manejado el concepto de variable como todo campo que permite
que el contenido que se encuentra almacenado en el espacio de memoria asignado a dicho
campo, pueda ser alterado en el transcurso de la ejecución del pseudocódigo. Debemos
comprender que a una variable se le asigna un espacio en memoria donde se puede guardar
de forma temporal un único valor, bien sea numérico, carácter o lógico.
Frecuentemente tenemos la necesidad de almacenar una colección de datos del mismo tipo.
Por ejemplo, cuando se leen las notas de los estudiantes de un curso en particular. Los datos
siempre que estén relacionados se pueden organizar en estructuras, de tal manera que
podemos tener un conjunto de datos numéricos, lógicos, o caracteres manejados a través de
un mismo nombre. Una estructura de datos es la organización que reciben los datos para que
sean tratados como una unidad, esta unidad recibe el nombre de arreglo (array).
Un arreglo es un conjunto finito de componentes del mismo tipo, los cuales se diferencian
o relacionan a través de un subíndice.
Los arreglos son estructuras de datos homogéneas (todos sus datos son del mismo tipo) que
permiten almacenar un determinado número de datos bajo un mismo identificador, para
luego referirse a los mismos utilizando uno o más subíndices. Los arreglos pueden pensarse
como vectores, matrices, etc. Para poder utilizar un arreglo, primero es obligatorio su
dimensionamiento; es decir, declarar los rangos de sus subíndices, lo cual determina cuantos
elementos se almacenarán y como se accederá a los mismos.
Cada ítem del arreglo se denomina elemento. Los elementos de un arreglo se numeran
consecutivamente 0, 1, 2, 3... Estos números se denominan valores índice o subíndice del
array. El término “subíndice” se utiliza ya que se especifica igual que en matemáticas, como
una secuencia a0, a1, a2, a3… Estos números localizan la posición del elemento dentro del
arreglo, proporcionando acceso directo al array.
2
Unidad V: Arreglos Unidimensionales y Bidimensionales
Si el nombre del array es "a", entonces a[0] es el nombre (valor) del elemento que está en la
posición 0, a[1] es el nombre (valor) del elemento que está en la posición 1, etc. En general, el
elemento i-ésimo está en la posición i-1. De modo que si el array tiene n elementos, sus
nombres son a[0], a[1], a[2], …., a[n-1].
Se pueden declarar más de un arreglo en una misma instrucción, separándolos con una
coma (,).
Dimension <ident1> (<max11>,...,<max1N>),..., <identM> (<maxM1>,...,<maxMN>)
El array tiene 6 elementos: a[0] contiene 5, a[1] contiene 8, a[2] contiene 6, a[3] contiene 10,
a[4] contiene 9, a[5] contiene 4. En un array sus elementos se almacenan siempre en una
secuencia de posiciones de memoria contiguas.
3
Unidad V: Arreglos Unidimensionales y Bidimensionales
Para empezar a diseñar algoritmos con arreglos en base cero, vamos al menú Configurar y
escogemos Opciones del lenguaje (perfiles), se mostrar un cuadro como este:
Se deben asignar valores a los elementos del arreglo antes de utilizarlos, tal como se asignan
valores a variables. Para asignar valores a cada elemento del arreglo de enteros “edades”, se
puede escribir:
edades [0] <- 15;
edades [1] <- 25;
edades [3] <- 30;
edades [4] <- 35;
La primera sentencia fija edades[0] al valor 15, edades[1] al valor 25, etc. Sin embargo, este
método no es práctico cuando el array contiene muchos elementos. El método utilizado,
normalmente, es inicializar el array completo en una sola sentencia.
Ejemplo #1: Pseudocódigo para inicializar un arreglo de 10 elementos a 0.
Solución #1:
Proceso inicializar
Definir datos, i como entero;
Dimension datos[10];
Escribir Sin Saltar "|";
Para i<-0 Hasta 9 Con Paso 1 Hacer
datos[i] <- 0;
Escribir Sin Saltar " ", datos[i], " |";
FinPara
Escribir ""; //Salto de linea
FinProceso
4
Unidad V: Arreglos Unidimensionales y Bidimensionales
Dos operaciones básicas pueden ser llevadas a cabo sobre los elementos de un arreglo, estas
son:
Esta operación nos permite almacenar un valor en la posición que se indique por medio del
índice, por ejemplo: si tenemos un arreglo llamado mis_datos con un tamaño de tres
elementos y queremos almacenar en la posición 1 el valor 10, la sentencia sería:
5
Unidad V: Arreglos Unidimensionales y Bidimensionales
Esta operación permite acceder al valor que se encuentre en la posición indicada por medio
del índice y devuelve ese valor a una variable, por ejemplo: si lo que deseamos es recuperar
valores desde una posición del arreglo podemos proceder como se indica en el siguiente
ejemplo:
var<- mis_datos[1];
Ejemplo #2: Pseudocódigo que declara e inicializa un arreglo de N datos, de modo que
los elementos de índice par valgan 0 y los de índice impar valgan 1.
Solución #2:
Proceso posiciones_array
Definir datos_array, v, ndatos Como Entero;
Dimension datos_array[100];
v <- 0;
Escribir "Cuantos datos desea en el arreglo?";
Leer ndatos;
Mientras v < ndatos-1 Hacer
Si (v % 2) = 0 Entonces
datos_array[v]<-0;
Sino
datos_array[v]<-1;
FinSi
Escribir "Dato[",v,"]=",datos_array[v];
FinMientras
FinProceso
6
Unidad V: Arreglos Unidimensionales y Bidimensionales
La mayor nota.
La menor nota.
El porcentaje de alumnos que aprobaron el parcial con notas superiores a 60
pts.
El promedio de las notas.
7
Unidad V: Arreglos Unidimensionales y Bidimensionales
Solución #3:
Proceso Estadisticas
Definir notas,nalumnos,a,sum_notas, apro como entero;
Definir maynota, mennota, posmen, porapro, prom_notas como entero;
Dimension notas[100];
a<-0;
sum_notas<-0;
maynota<-0;
mennota<-101;
apro<-0;
Escribir Sin Saltar "Numero de alumnos es:";
Leer nalumnos;
Repetir
Escribir Sin Saltar "Calificacion[",a+1,"]:";
Leer notas[a];
sum_notas<-sum_notas+notas[a];
Si notas[a] >maynota entonces
maynota<-notas[a];
FinSi
si notas[a]<mennota Entonces
mennota<-notas[a];
FinSi
Si notas[a]>=60 entonces
apro<-apro+1;
FinSi
a<-a+1;
Hasta Que a>=nalumnos
porapro<-apro*100/nalumnos;
prom_notas<-redon(sum_notas/nalumnos);
Escribir "La calificacion mayor del grupo fue de: ",maynota," puntos.";
Escribir "La calificacion menor del grupo fue de: ",mennota," puntos.";
Escribir "El porcentaje de aprobados fue del: ",porapro,"%.";
Escribir "El promedio de notas es: ",prom_notas;
FinProceso
8
Unidad V: Arreglos Unidimensionales y Bidimensionales
9
Unidad V: Arreglos Unidimensionales y Bidimensionales
Solución #4:
Proceso numeros_azar
Definir n,azarnum, numg, nazar como entero;
Dimension nazar[20];
10
Unidad V: Arreglos Unidimensionales y Bidimensionales
Ejemplo #5: Pseudocódigo que permita al Director del Consejo Supremo Electoral
encontrar el número y porcentaje de votos obtenidos por cada uno de los 4 candidatos
de la contienda electoral en relación a los votantes que asistieron a las urnas a
depositar su voto. Lea en un arreglo la intención de voto de cada una de las personas.
Proceso elecciones
Definir nvotos, v, c1, c2, c3, c4, nulos, nv Como Entero;
Definir pc1, pc2, pc3, pc4, pcnul Como Real;
Definir resp Como Caracter;
c1 <- 0;
c2 <- 0;
c3 <- 0;
c4 <- 0;
nulos <- 0;
Dimension nvotos[100];
nv<-0;
Repetir
Escribir sin saltar "Su voto es por el candidato (1-2-3-4):";
Leer nvotos[nv];
Segun nvotos[nv] Hacer
1:
c1<-c1+1; //c1: candidato 1
2:
c2<-c2+1; //c2: candidato 2
3:
c3<-c3+1; //c3: candidato 3
4:
c4<-c4+1; //c4: candidato 4
De Otro Modo:
Escribir "Voto Nulo";
nulos<-nulos+1;
FinSegun
nv<-nv+1;
Escribir "Hay otro votante: ";
Leer resp;
Hasta Que Mayusculas(resp) = 'N'
pc1<- Redon((c1*100)/nv);
pc2<-Redon((c2*100)/nv);
pc3<-Redon((c3*100)/nv);
pc4<-Redon((c4*100)/nv);
pcnul<-Redon((nulos*100)/nv);
Escribir "******RESULTADOS FINALES******";
Escribir "En las elecciones votaron: ",nv," personas";
Escribir "El candidato 1 obtuvo: ",c1," votos -- Porcentaje: ",pc1, " %";
Escribir "El candidato 2 obtuvo: ",c2," votos -- Porcentaje: ",pc2, " %";
Escribir "El candidato 3 obtuvo: ",c3," votos -- Porcentaje: ",pc3, " %";
Escribir "El candidato 4 obtuvo: ",c4," votos -- Porcentaje: ",pc4, " %";
Escribir "Hubieron ",nulos," votos nulos -- Porcentaje: ",pcnul, " %";
FinProceso
11
Unidad V: Arreglos Unidimensionales y Bidimensionales
12
Unidad V: Arreglos Unidimensionales y Bidimensionales
EJERCICIOS PROPUESTOS:
2. Realice un pseudocódigo que permita sumar los elementos de dos arreglos y guarde el
resultado en otro arreglo. Deberá imprimir el arreglo resultante, el tamaño del arreglo
será introducido por el usuario, se debe comprobar que el tamaño del arreglo sea
válido, es decir, no permitir valores negativos y que sea mayor que 2. (Mezcle las
estructuras repetitivas vistas anteriormente)
3. Realice un pseudocódigo que lea un arreglo de N datos y asigne a sus elementos los
valores 1, 4, 9, 16........etc. ( 12, 22, 32...). (Utilice el ciclo Mientras - Hacer)
4. Realice un pseudocódigo que lea en un arreglo las marcas obtenidas por 10 corredores
en una carrera e imprimir cuántos tienen una marca mayor y cuántos tienen una
marca menor que el promedio.
5. Realice un pseudocódigo que lea N elementos y que imprima el número que se repite
más veces dentro del arreglo.
13
Unidad V: Arreglos Unidimensionales y Bidimensionales
ARREGLOS BIDIMENSIONALES
A los arreglos de dos dimensiones (bidimensionales) se les conoce como matrices y son
estructuras de datos que organizan su información en forma de tablas, es decir, los elementos
que la conforman están dispuestos bajo dos conceptos de clasificación (fila y columna). Para
poder indicar el lugar donde se encuentra un determinado elemento, es necesario utilizar dos
índices: uno para indicar el renglón o fila y otro para indicar la columna.
Puede mirarse una matriz como un vector de vectores; por lo tanto, es un conjunto de
componentes en el que se necesitan dos subíndices para identificar un elemento que
pertenezca al arreglo.
Por ejemplo, si tenemos un arreglo llamado matriz de dos dimensiones como se muestra a
continuación:
14
Unidad V: Arreglos Unidimensionales y Bidimensionales
Ejemplo 1
15
Unidad V: Arreglos Unidimensionales y Bidimensionales
DIAGRAMA DE FLUJO:
16
Unidad V: Arreglos Unidimensionales y Bidimensionales
Ejemplo 2:
Hacer un algoritmo que encuentre e imprima la matriz transpuesta de una matriz MAT.
La matriz transpuesta de la matriz MAT se encuentra intercambiando las filas por las
columnas y las columnas por las filas. Si TMAT es la matriz transpuesta de MAT, implica
entonces que TMAT [columna, fila] es igual a MAT [fila, columna]. Si el contenido de MAT es:
Como se puede ver, se invierte el orden de la matriz; es decir, el número de filas de MAT es
igual al número de columnas de TMAT y el número de columnas se invierte por el número de
filas de TMAT.
17
Unidad V: Arreglos Unidimensionales y Bidimensionales
18
Unidad V: Arreglos Unidimensionales y Bidimensionales
Ejemplo # 3:
Realice un algoritmo que pida una matriz de nFilas y nColumnas, comprobar que el tamaño de
la matriz sea mayor a 2, luego calcule la suma de las diagonales de la matriz y presente en
pantalla los valores de la diagonal principal y secundaria con sus respectivas sumas. Se le deja
al estudiante realizar el diagrama de flujo.
19
Unidad V: Arreglos Unidimensionales y Bidimensionales
Ejemplo # 4:
El siguiente Pseudocódigo rellena automáticamente una matriz N*M con la suma de sus índices (Es
decir, el elemento A[1][1] = 1+1=2, A[3][2] = 3+2=5). El algoritmo mostrará la matriz resultante por
pantalla.
20
Unidad V: Arreglos Unidimensionales y Bidimensionales
21
Unidad V: Arreglos Unidimensionales y Bidimensionales
Ejemplo # 5:
22
Unidad V: Arreglos Unidimensionales y Bidimensionales
Diagrama de Flujo:
23
Unidad V: Arreglos Unidimensionales y Bidimensionales
EJERCICIOS PROPUESTOS
2. Ingrese en una tabla de N filas por M columnas valores enteros y que almacene los
valores de la diagonal principal y secundaria en arreglos unidimensionales, luego
deberá visualizar la tabla como los valores almacenados en los arreglos.
3. Escriba un algoritmo que lea un arreglo de N x 5 indicando que una empresa tiene N
vendedores cada uno de los cuales vende 5 productos. El arreglo almacena los
ingresos obtenidos por cada vendedor en cada producto, imprimir el total de cada
vendedor y obtener los ingresos totales de la tienda.
5. Hacer un algoritmo que lea una matriz de NF filas y NC columnas y calcule la suma de
las filas y de las columnas, dejando los resultados en dos vectores, uno con las sumas
de las filas y otro con la suma de las columnas; imprima los dos vectores.
24