Está en la página 1de 9

POLITECNICO COLOMBIANO JAIME ISAZA CADAVID

Fundamentos de programación 1

Guía de preparación seminario de encuentro arreglos

ARREGLO:

Un arreglo se define como una colección finita, homogénea y ordenada de


elementos:

• Finita : Todo arreglo tiene un límite, establecido por el máximo número de


elementos que puede tener el arreglo.
• Homogénea : Todos los elementos del arreglo son del mismo tipo (todos
entero, todos real, etc, pero nunca una combinación de distintos tipos).
• Ordenada : Se puede determinar cuál es el primer elemento del arreglo,
cuál es el segundo, cuál es el tercero, el cuarto, . . . y el n-ésimo elemento.

Representación gráfica de un arreglo:

...

Primer Segundo i – ésimo n –ésimo


elemento elemento elemento elemento

Un arreglo tiene la característica de poder almacenar simultáneamente N


elementos del mismo tipo y permitir el acceso a cada uno de esos
elementos.

En un arreglo pueden diferenciarse dos partes :

• Elementos o componentes : Son cada uno de los valores almacenados en


las posiciones del arreglo (casillas del arreglo).

• Subíndices : Se refieren a las posiciones relativas dentro del arreglo, a


través de ellos se accede a elementos individuales del arreglo.
elementos  2 8 -3 -1 1 ... -2 1 8
i=n
subíndices  i=1 i=2 i=3

Para hacer referencia a un elemento de un arreglo, se utiliza el nombre del arreglo

y el subíndice del elemento.

OBSERVACIONES:

• El subíndice debe ser un valor entero.


• Los elementos pueden ser de cualquier tipo, pero todos los elementos deben ser del
mismo tipo.
• Se utilizan paréntesis para indicar una posición dentro del arreglo. Entre los
paréntesis puede ir un valor literal, una variable, una constante o una expresión,
siempre se que produzca un valor entero.

Podemos clasificar los arreglos en dos categorías:

 Unidimensionales (Vectores)
 Bidimensionales (Matrices)

ARREGLO UNIDIMENSIONAL O VECTOR:

También es conocido como lineal, e ese elemento en el arreglo.

El rango o longitud de un vector es la diferencia entre el índice de valor máximo y


el índice de valor mínimo de ese arreglo + 1. Normalmente los índices comienzan
a enumerarse, es decir, el valor mínimo del índice es 0 ó 1, dependiendo del
lenguaje (en Pascal con 1 y en C con 0). Sin embargo nadie impide que
comiencen en cualquier otro valor.

Como ya se mencionó, los arreglos se almacenan siempre en posiciones


consecutivas de memoria y podemos acceder a cada elemento del arreglo de
manera independiente a través de los índices. Un índice no tiene porque ser un
valor constante, sino que puede ser también una variable o una expresión que al
ser evaluada devuelva ese índice, por ejemplo, puede expresarse como una
constante entera (por ejemplo 3), una variable entera (por ejemplo x) o una
expresión entera (por ejemplo x + y - 1). En cualquiera de los casos, el valor del
subíndice debe ser un entero mayor o igual a cero.
PREGUNTAS ORIENTADORAS

Cuál es la función del índice en un arreglo?


De qué manera se almacenan los arreglos en la
memoria?

DECLARACIÓN DE UN ARREGLO:

Para declarar un arreglo, daremos primero el tipo de dato que va a manejar


nombre del arreglo, seguido entre corchetes del tamaño de este, que puede estar
compuesto por el rango de sus índices o simplemente la cantidad de elementos.

SINTAXIS GENERAL:

Tipo: <Nombre del arreglo> [Li.....Ls]


Real : sueldo : arreglo [1 … 8]

O también:

Tipo : <Nombre del arreglo> [número de elementos]

Real : sueldo[5]

REPRESENTACIÓN GRÁFICA DE UN VECTOR

Vec[1]
7
Vec[2] 8
Vec[3] 9
Vec[4] 1
0

OPERACIONES CON UN ARREGLO UNIDIMENSIONAL

1. Asignación de un dato a una posición concreta del arreglo:

<nom_arreglo>[indice]  valor

Supongamos que tenemos un vector de 10 elementos llamado Ventas y vamos a


asignarle el valor 800000 a la posición tres.

Ventas [3]  800000


2. Lectura y escritura de datos:

leer <nom_arreglo>[indice]

escribir <nom_arreglo>[indice]

Para llenar un vector, la forma más simple es utilizando la estructura repetitiva


para, aunque obviamente puede hacerse con mientras o repetir.

Ejemplo: Siguiendo con el vector ventas, para llenar cada una de las posiciones
del vector lo podemos hacer utilizando las tres estructuras repetitivas vistas, así:

1. PARA (i=1,12, 1) hacer


escribir ( “Introduce las ventas del mes”, i)
leer ventas [i]
fin Para

2. i=1
mientras (i <= 12) hacer
Leer ventas[i]
i=i+1
Fin-mientras

3. i=1
Repetir
Leer ventas[i]
i=i+1
Hasta-que i>12

3. Recorrido o acceso secuencial de un arreglo:

Consiste en pasar por todas las posiciones del arreglo para procesar su
información.

Para (i=1, 12, 1) hacer


ventas [i]  ventas [i] + 1000000
Fin para

4. Actualización de un arreglo:

1) Añadir datos:

Es un caso especial de la operación de inserción de un elemento en un arreglo,


pero el elemento lo metemos después de la última posición que contiene
información válida en el arreglo.
Para que esto se pueda hacer es necesario que si actualmente el arreglo tiene K
posiciones de información válida, tenga un tamaño de al menos K+1 para que
pueda añadir otro elemento a continuación de K.

<nom_arreglo>[K+1]  valor

2º) Inserción de datos:

Consiste en introducir un elemento en el interior de un arreglo para lo cual será


necesario desplazar todos los elementos situados a la derecha del que vamos a
insertar una posición a la derecha con el fin de conservar el orden relativo entre
ellos.

Para que se pueda insertar un nuevo elemento en el arreglo si ya existen N


elementos con información en el arreglo, el arreglo tendrá que tener un tamaño de
cómo mínimo N+1 para poder insertar el elemento.

C E F J M O

“G”
Siendo K la posición en la que tengo que insertar el nuevo elemento y N el número
de elementos válidos en el arreglo en el momento de la inserción y siempre
suponiendo de N+1, el algoritmo de inserción será:

Para (i=N, K,1) Hacer


A[I+1]  A[I]
Fin para
A[K]  valor

3º) Borrar datos:

Para eliminar un elemento de un arreglo si ese elemento está posicionado al final


del arreglo, no hay ningún problema, simplemente si el tamaño del arreglo era N,
ahora hay que considerar que el tamaño del arreglo es N-1.

Si el elemento a borrar ocupa cualquier otra posición entonces tendré que


desplazar todos los elementos situados a la derecha del que quiero borrar una
posición hacia la izquierda para que el arreglo quede organizado.

C E F J M O

Borrar J.

Suponiendo que el número de elementos validos actualmente es N y que quiero


borrar el elemento de la posición K.
Para (i=K, N-1,1 ) hacer
A[I]  A[I+1]
Fin para

Para indicar que el número de elementos validos es N, podríamos indicarlo como


N  N-1.

Ejemplo:
Calcular la suma de los elementos de un vector.

Var.
Entero : A arreglo [8] = {1, 3, 5, 4, 7, 2, 99, 16}
Entero : i, total
Inicio
total  0
Para (i = 0, 8, 1) hacer
total  total + a[i]
fin-para
Escribir total
Fin

2. Ingresar por teclado cada uno de los 5 elementos de un arreglo de nombre

VECTOR Y luego leerlos y presentarlos por pantalla en orden inverso al que

entraron (de 5 a 1)

Solución:

Var.

Entero : VECTOR [0, 4]


Entero : i

Inicio

Para (i = 0, 4, 1) Hacer
Leer VECTOR[i]
Fin Para

Para (i = 0, 4, 1) Hacer
Escribir VECTOR[i]
Fin Para
FIN
ARREGLOS BIDIMENSIONALES O MATRICES

Un arreglo bidimensional o matriz esta compuesto por elementos del mismo tipo
organizados por filas (M) y columnas (N), conformando dos dimensiones, por lo
que para referirse a un elemento del arreglo se requiere el uso de dos índices en
lugar de uno en el caso del arreglo unidimensional, por lo tanto, la representación
lógica no será un vector sino una matriz. El primer subíndice podrá variar entre 1 y
M si hemos empezado a numerar los índices por 1, y el segundo índice variará
entre 1 y N, si hemos empezado a numerar los índices por el 1.

Si se desea acceder a un elemento I,J estaríamos accediendo al elemento que


ocupa la fila I y la columna J.

En memoria, sin embargo todos los elementos del arreglo se almacenan en


posiciones contiguas pero nosotros lo vemos como una matriz.

Se puede definir un arreglo de dos dimensiones, de la siguiente manera:

<tipo> : <nom_arreglo> [LI1..LS1,LI2..LS2]

Donde:

LI1…LS1 equivale al límite inferior y superior de las filas.


LI2…LS2 equivale al límite inferior y superior de las columnas.

El tamaño del arreglo sería (LS1-LI1+1)*(LS2-LI2+1)

<tipo> : <nom_arreglo> [TF] [TC]

Donde TF es la cantidad de filas


Donde TC es la cantidad de columnas

Ejemplo: Necesitamos almacenar las ventas en una empresa para cada uno de los
5 empleados durante todos los 12 meses del año.

Real : Ventas: arreglo [¡…5, 1…12] por lo tanto, el tamaño sería 5*12= 60

1 2 3 4 5 6 7 8 9 10 11 12
Emp 1
Emp 2
Emp 3
Emp 4
Emp 5

Manipulación de matrices:

Para inicializar en 0 todos los elementos de la matriz.

Const
N=5
M = 12
Var
Entero M [1..N,1..M]
Entero i,j
Inicio
Para (i=1,N, 1) Hacer
Para (j=1,M, 1) Hacer
M [i, j]  0
Fin desde
Fin desde

Para hacer el llenado de una matriz se deben de usar dos variables para los
índices y se utilizan 2 ciclos uno para los renglones y otro para las columnas.

EJEMPLO

Dada una matriz de 3 por 3, colocar en las columnas los elementos de las filas.
Solución:
Var.
Entero : Matriz1 [0, 2] = { {5, 20, 3}, {7. 5, 20}, {15, 10 30}
Entero : Matriz2 [0, 2], i, j
Inicio

Para (i = 0, 4, 1) hacer
Para (j = 0, 4, 1) hacer
Matriz2[j,i] = Matriz1[i,j]
Fin para
Fin para
Para (i = 0, 4, 1) hacer
Para (j = 0, 4, 1) hacer
Escribir Matriz2[i,j]
Fin para j
Fin para i
Fin

Arreglos Multidimensionales
Un arreglo multidimensional es aquel que esta compuesto por 3 o más
dimensiones.

Si tenemos un arreglo de N dimensiones, cada dimensión de tamaño d1,d2,..,dN,


el número de elementos del arreglo será d1*d2*..*dN, y para acceder a un
elemento concreto del arreglo utilizaremos N índices, cada uno de los cuales
referenciará a una posición dentro de una dimensión, siempre según el orden de
declaración.

En memoria, el arreglo se sigue almacenando en posiciones consecutivas.

La declaración de un arreglo multidimensional sería:

Tipo: Nom_arreglo: [LI1..LS1,LI2..LS2,LI3..LS3,LIN..LSN]

Donde:

LI1..LS1 equivale al límite inferior y superior de la primera dimensión


LI2..LS2 equivale al límite inferior y superior de la segunda dimensión
LI3..LS3 equivale al límite inferior y superior de la tercera dimensión
LIN..LSN equivale al límite inferior y superior de la dimensión N.

Ejercicios de desarrollo:

1. En un grupo de n estudiantes se requiere almacenar las notas definitivas de


todos los estudiantes, realice un algoritmo que halle la nota promedio de todo
el grupo, los alumnos con nota igual o superior a la nota promedio y el alumno
con mejor nota media.
2. En el Instituto de Meteorología de Caldas se tienen los datos del volumen de
precipitaciones (en mm cúbicos) en cada uno de los municipios del
departamento durante el primer semestre del año 2003, tal y como se muestra
en la siguiente tabla:

Municipios MESES
Ene Feb ....... Jun
Aguadas - - ....... -
Anserma - - ....... -
…… ....... ....... ....... .......
Viterbo - - ....... -

Confeccione un programa que determine:

a. En qué mes (o meses) el volumen total de lluvias fue mayor?


b. La media mensual total.

También podría gustarte