Está en la página 1de 38

ARREGLOS UNIDIMENSIONALES

Un arreglo es una estructura de datos estática, lineal, física


y homogénea, es decir sus elementos son del mismo tipo.
El arreglo reside en memoria principal, por tanto es volátil.
Para evitar la pérdida de los datos de un arreglo, es
necesario almacenar los datos de un arreglo en una fila
secuencial, a este proceso se le llama SALVAR el arreglo.
Posteriormente cuando se quiere continuar trabajando con
el arreglo, se devuelve los datos de la fila al arreglo, a este
proceso se denomina RECUPERAR el arreglo.
ARREGLOS UNIDIMENSIONALES

Un arreglo recibe el nombre de variable dimensionada,


porque sus elementos corresponden a un mismo tipo por lo
que son referenciados por un mismo nombre, sin embargo
cada elemento del mismo se referencia por su índice que
indica la posición en el arreglo.
Si cada elemento del arreglo puede ser referenciado por un
solo índice se dice que el arreglo es unidimensional, si son
referenciados por dos índices se dice que el arreglo es
bidimensional, si son referenciados por n índices recibe el
nombre de arreglo n-dimensional.
ARREGLOS UNIDIMENSIONALES
Definición
Un arreglo unidimensional (vector o arreglo simplemente)
es una aplicación T de I en V
T : I  V donde,
I es un intervalo de enteros positivos, formado por N
elementos y se llama el conjunto de índices y se representa
por [1, N]. N es un número positivo que señala el total de
elementos de un arreglo.
V es un conjunto finito de valores, se dice que son los
valores del arreglo.
ARREGLOS UNIDIMENSIONALES

T: I  V
I V

T es una función que hace corresponder a cada elemento


de I un valor en V
ARREGLOS UNIDIMENSIONALES

Se puede decir que un vector es una transformación del


conjunto de índices I en un elemento del conjunto V.
Los elementos del vector se referencian, a través de un
conjunto de índices constituido por números consecutivos.
Los elementos del vector se almacenan en la memoria en
celdas consecutivas. Cada uno de los elementos ocupa un
espacio físico contiguo. De esto se deduce que cada
elemento excepto el último tiene un sucesor que se
encuentra en la dirección física inmediata. De igual forma
cada elemento excepto el primero tiene un antecesor que se
encuentra en la dirección física anterior.
ARREGLOS UNIDIMENSIONALES

LONGITUD DE UN ARREGLO (VECTOR)


Se refiere al número de elementos que la componen.
Sea LI y LS límite inferior y límite superior del arreglo. La
longitud del arreglo T se denota como L(T) y se define
como: L(T) = LS – LI + 1
DIMENSIÓN DEL ARREGLO
La dimensión del arreglo es el espacio ordenado para el
arreglo. Se refiere al tamaño máximo del arreglo que se
define al momento de declararse el arreglo, aunque no se
hayan usado todos sus elementos.
Ej: T(1:N)
ARREGLOS UNIDIMENSIONALES

Convenio notacional
Los elementos de un arreglo A, pueden denotarse:
Por medio de subíndices
A1 , A2 , A3 , ... An
O por medio de paréntesis o corchetes
A(1), A(2), A(3), ....A(n)
A[1], A[2], A[3], ...A[n]
El número k recibe el nombre de índice y
Ak , A(k) o A[k] indica la variable subindicada.
ARREGLOS UNIDIMENSIONALES
Representación de vectores en memoria
Las posiciones de memoria que utiliza el arreglo son
consecutivas, por lo que cada una es direccionable por
direcciones contiguas.
Conociendo la dirección base del arreglo, es posible obtener
la dirección de cada elemento. Esto permite el acceso a cada
elemento en forma directa.
Sea LOC(A(i)) la dirección del elemento A(i) del arreglo A.
Si consideramos
BASE(A) la dirección de inicio de A (del primer elemento)
W número de palabras que ocupa la celda A(i)
LOC(A(k)) = BASE(A) + W * (k – LI)
ARREGLOS UNIDIMENSIONALES
A(1) 2000
A(2) 2002
A(3) 2004
A(4) 2006
A(5) 2008
A(6) 2010
A(7) 2012
A(8) 2014
A(9) 2016
A(10) 2018

BASE(A) = 2000 W = 2 palabras LI = 1


Ejemplos: LOC(A(4)) = 2000 + 2 * (4 – 1) = 2006
LOC(A(7)) = 2000 + 2 * (7 – 1) = 20012
LOC(A(9)) = 2000 + 2 * (9 – 1) = 20016
ARREGLOS UNIDIMENSIONALES

Primitiva de Acceso a un elemento de un Arreglo:


Indización
Sea un arreglo T(1:N):
Para todo índice i  [1,N]
La operación de indización representada por T(i), devuelve
el valor del elemento de índice i del arreglo.
El resultado de T(i) es indefinido si i [1,N]
Ejemplo: Sea el vector T(1:6) = (A, B, Z, A, P, S)
T(2) B T(4) A
T(-4) Indefinido T(7) Indefinido
T(0) Indefinido T(5) P
ARREGLOS UNIDIMENSIONALES
Observaciones
- La primitiva T(i) permite accesar y/o referenciar al i-
ésimo elemento de un arreglo.
Para salvar este valor devuelto por la primitiva de
indización, debe ser asignado a una variable
Ejemplo: A  T(i)
- Se puede colocar un valor en el i-ésimo elemento por
medio de la asignación. Ejemplo: T(i)  4, si T es un
arreglo de valores numéricos.
- Si T es un arreglo y A es una variable, se puede ejecutar
las acciones: A  T(1); A  T(4); A  T(2)
- El acceso a los elementos de un arreglo es directo, en
oposición al acceso secuencial a los elementos de una fila.
ARREGLOS UNIDIMENSIONALES

Arreglo Unidimensional Ordenado


Un arreglo T(1:N), con valores en el conjunto V provisto
de una relación de orden < , es ordenado si T es una
aplicación monótona de [1, N] en V.
T(1:N) es ordenado en orden creciente, si:
Para todo i [1, N-1] T(i) ≤ T(i+1)
ARREGLOS UNIDIMENSIONALES

ACCIONES BÁSICAS

1. Almacenamiento de un Arreglo
Carga (alimenta) datos en cada una de las celdas del
arreglo.
La acción lee N, la cantidad de elementos que se
colocarán en el arreglo T.

Salida: T arreglo
N cantidad de elementos
ARREGLOS UNIDIMENSIONALES

1. Almacenamiento de un Arreglo

Acción Carga_Arreglo(T, N)
Inicio
Leer N
Para I desde 1 hasta N
Leer dato
T(I)  dato
FinPara
Fin
ARREGLOS UNIDIMENSIONALES

2. Recorrido de un vector
Recorre cada elemento del vector una única vez.
Sea T un arreglo de N elementos (el conjunto de
índices I es [1, N])
El arreglo es recorrido en el orden creciente de sus
índices, sin considerar la posibilidad del acceso
directo, y muestra sus elementos.
(Un arreglo puede considerarse como una fila
secuencial donde el conjunto de posiciones es I ).
Entrada: T arreglo
N el número de elementos de T
ARREGLOS UNIDIMENSIONALES

2. Recorrido de un Arreglo

Acción Recorre_Arreglo(T, N)
Inicio
Para I desde 1 hasta N
dato  T(I)
Escribir dato
FinPara
Fin
ARREGLOS UNIDIMENSIONALES
3. Recorrido de un Arreglo en orden decreciente de
sus índices

Sea T un arreglo de N elementos (el conjunto de


índices I es [1, N])
La posibilidad del acceso directo, nos permite hacer
un recorrido en orden decreciente de sus índices. La
acción recorre el arreglo T en orden decreciente y
muestra sus elementos.

Entrada: T arreglo
N el número de elementos de T
ARREGLOS UNIDIMENSIONALES
3. Recorrido de un Arreglo en orden decreciente de
sus índices

Acción Recorre_Decreciente_Arreglo(T, N)
Inicio
IN
Mientras ( I ≥ 1 )
dato  T(I)
Escribir dato
II-1
FinMientras
Fin
ARREGLOS UNIDIMENSIONALES

4. Acceso a un elemento de un Arreglo


Sea un arreglo representado por: (I, T, V),
El acceso por posición es definido por la primitiva de
indización T(i).
Lo mas común es el acceso asociativo, cuya
formulación es la siguiente:
Sea a  V, se quiere determinar si existe un i  I, tal
que T(i) = a
El acceso asociativo puede realizarse de varias
maneras, según se considere T como una fila
secuencial y/o provisto de una relación (ordenado).
ARREGLOS UNIDIMENSIONALES
5. Salvar un Vector

Un vector es una estructura lineal que reside en


almacenamiento principal, por tanto es volátil. Cuando
finalice la aplicación que lo utilice, se perderán los
datos. Para guardar la información del vector en forma
permanente, se pueden copiar los datos del vector en
una fila secuencial. Esta operación se denomina
SALVAR
Entrada: T vector (debe existir)
N número de elementos
Salida: F fila secuencial
ARREGLOS UNIDIMENSIONALES

5. Salvar un Vector

Acción Salvar_Vector(T, N, F)
Inicio
Primer(F)
Para I desde 1 hasta N
V  T(I)
Poner(F,V)
FinPara
Marcar(F, )
Fin
ARREGLOS UNIDIMENSIONALES

6. Recuperar un Vector

Si se salva una fila en almacenamiento secundario,


debe existir una operación que permita traer los datos
de la fila a la memoria principal en un arreglo.
Esta operación se denomina RECUPERAR y consiste
en copiar los elementos de la fila en el vector.

Entrada: F fila secuencial (debe existir)


Salida: T vector
N número de elementos
ARREGLOS UNIDIMENSIONALES
6. Recuperar un Vector
Acción Recuperar_Vector(F, T, N)
Inicio
Primer(F)
Tomar(F,V)
I0
Mientras ( Ultimo(F))
II+1
T(I)  V
Tomar(F,V)
Fin Mientras
NI
Fin
ARREGLOS UNIDIMENSIONALES

7. Búsqueda secuencial de un Arreglo


El arreglo es considerado como una fila secuencial. Si
no está ordenada, la acción realiza una exploración
secuencial hasta que encuentra la primera ocurrencia
de ValBus o la exploración continua hasta el final del
arreglo cuando no se encuentra.
Entrada: T arreglo
N número de elementos
ValBus valor a buscar
Salida BusArrayNoSort:
predicado retorna Verdad si encontró
ValBus, falso en otro caso
ARREGLOS UNIDIMENSIONALES

7. Búsqueda secuencial de un Arreglo

Predicado BusArrayNoSort(T, N,ValBus)


Inicio
I1
Mientras ( T(I)  ValBus  I < N )
II+1
FinMientras
BusArrayNoSort  IGUAL(T(I), ValBus)
Fin
ARREGLOS UNIDIMENSIONALES

8. Búsqueda secuencial de un valor en un Arreglo Ordenado

Si el arreglo está ordenado ( V es provisto de una relación de


orden < ), y T es una aplicación creciente. La acción realiza
una exploración (comparando por <) hasta encontrar la
primera ocurrencia de ValBus. Termina la exploración cuando
lo encontró o cuando encuentre el primer elemento mayor que
ValBus, lo que indica que no se encontró en el arreglo T.
Entrada: T arreglo sorteado en orden creciente
N el número de elementos de T
ValBus el valor buscado
Salida: BusArraySort
predicado retorna Verdad si encontró ValBus,
Falso de lo contrario
ARREGLOS UNIDIMENSIONALES

8. Búsqueda secuencial de un valor en un Arreglo


Ordenado

Predicado BusArraySort(T, N,ValBus)


Inicio
I1
Mientras ( T(I) < ValBus  I < N )
II+1
FinMientras
BusArraySort  IGUAL(T(I), ValBus)
Fin
ARREGLOS UNIDIMENSIONALES

Observaciones:
Al momento de evaluar la complejidad de una Búsqueda
secuencial en un arreglo se distinguen dos casos:
- Si el arreglo T de N elementos no es ordenado es
necesario:
N comparaciones si el valor buscado no pertenece a T
N/2 comparaciones en promedio si pertenece a T
- Si el vector está ordenado, es necesario N/2
comparaciones en promedio independientemente si el
valor está o no presente en el arreglo.
ARREGLOS UNIDIMENSIONALES

9. Búsqueda del elemento mayor en un Arreglo

La función hace un recorrido secuencial del arreglo T


guardando en la variable May el mayor valor encontrado
hasta el momento.

Entrada: T arreglo (no vacío)


N el número de elementos de T
Salida: Retorna en May (BusMayor) el mayor valor de
T
ARREGLOS UNIDIMENSIONALES
9. Búsqueda del elemento mayor en un Arreglo

Función BusMayor(T, N): Tipo de elemento


Inicio
May  T(1)
I1
Mientras ( I < N )
II+1
Si (T(I) > May)
May  T(I)
FinSi
FinMientras
Retornar May
Fin
ARREGLOS UNIDIMENSIONALES
10. Inserción de un elemento en una posición dada.
Sea T un arreglo de N elementos y Pos un entero
positivo. La acción inserta un dato ValorIns en la
posición Pos.
Entrada: T arreglo (no vacío) (y Salida)
N el número de elementos de T (y Salida)
Pos la posición del elemento a insertar
ValorIns el valor a insertar
Salida: Insertar_Val
predicado retorna verdad si se insertó el
valor, falso de lo contrario
ARREGLOS UNIDIMENSIONALES
10. Inserción de un elemento en una posición dada
Predicado Insertar_Val(T, N, Pos, ValorIns)
Inicio
Insertar_Val  falso
Si (Pos ≤ N)
IN
Mientras ( I ≥ Pos)
// Movemos el elemento i-esimo hacia abajo
T(I+1)  T(I)
II-1
FinMientras
T(Pos)  ValorIns
NN+1
Insertar_Val  verdad
FinSi
Fin
ARREGLOS UNIDIMENSIONALES
11. Eliminación de un elemento situado en una
posición dada.
Sea T un arreglo de N elementos y Pos un entero
positivo. La acción elimina el elemento situado en la
posición Pos, y el valor de éste lo asigna a una
variable Valor.
Entrada: T arreglo (no vacío) (y Salida)
N el número de elementos de T (y Salida)
Pos la posición del elemento a eliminar
Salida: Valor el valor eliminado
Eliminar_Pos
predicado retorna verdad si eliminó el
elemento, falso de lo contrario
ARREGLOS UNIDIMENSIONALES
11. Eliminación de un elemento situado en una posición
dada
Predicado Eliminar_Pos(T, N, Pos, Valor)
Inicio
Eliminar_Pos  falso
Si (Pos ≤ N)
Valor  T(Pos)
Para I desde Pos hasta N-1
// Movemos el elemento i+1-esimo hacia arriba
T(I)  T(I + 1)
FinPara
NN-1
Eliminar_Pos  verdad
FinSi
Fin
ARREGLO DE REGISTROS

Un arreglo de registros es un arreglo cuyos elementos son


de tipo registro.
Los elementos del vector se almacenan en el mismo orden
en que son ingresados los valores de tipo registro.
ARREGLO DE REGISTROS

Ejemplo: Crear un vector de registros de alumno.


Cada registro de alumno contiene los siguientes datos: código,
nombre y nota.

Definimos el tipo de registro Alumno:

Registro Alumno
entero código
carácter nombre(20)
real nota
FinRegistro
ARREGLO DE REGISTROS
Max 100 // se definió constante Max cuyo valor es 100
Alumno A(Max) // declarada en la acción que llama a Crea_Vector

Acción Crea_Vector(A, N)
Inicio
Alumno Alu
Leer N
Si (N > Max)
Escribir “el vector está lleno”
Sino
Para I desde 1 hasta N
Leer Alu.código
Leer Alu.nombre
Leer Alu.nota
A(I)  Alu
FinPara
FinSi
Fin
ARREGLO DE REGISTROS

La acción Recorre_Vector recorre el vector A de registros de alumnos


creado por la acción anterior Crea_Vector y muestra sus elementos.

Acción Recorre_Vector(A, N)
Inicio
Para I desde 1 hasta N
Escribir A(I).código
Escribir A(I).nombre
Escribir A(I).nota
FinPara
Fin

También podría gustarte