Está en la página 1de 14

ARREGLOS Y MATRICES

Un array (matriz o vector) es un conjunto finito y ordenado de elementos homogneos.


La propiedad ordenado significa que el elemento primero, segundo y tercero,,
ensimo de un array puede ser identificado. Los elementos del array son
homogneos, es decir, del mismo tipo de datos. Los array tambin se conocen como
matrices-en matemticas- y tablas- en clculos financieros.
En otras palabras un arreglo es una especie de variable que contiene
muchos valores pero cada uno con una posicin diferente. Un arreglo puede ser
unidimensional o vectorial, bidimensional o matricial, o multidimencional.
Array Unidimensionales: Los Vectores
El array unidimensional (matriz de una dimensin) es el tipo ms simple. Un vector de
una dimensin denominado NOTAS que consta de n elementos se
puede representar as:
NOTAS(1) NOTAS(2) . . . . . NOTAS(I) . . . . . NOTAS(N)
El subndice o ndice de un elemento (1, 2, . . . , i, n) designa su posicin en la
ordenacin del vector. Como ejemplo de un vector o array unidimensional, se puede
considerar el vector temperatura que contiene las temperaturas horarias registradas en
una ciudad durante las veinticuatro horas del da. Este vector constar de veinticuatro
elementos de tipo real, ya que las temperaturas normales no sern enteras siempre. El
valor mnimo permitido de un vector se denomina lmite inferior del vector (L) y el valor
mximo permitido se denomina lmite superior (U). En ste ejemplo el lmite inferior es 1
y el superior 24.
TEMPERATURA (I) donde 1 <= I <=24
Un ejemplo en seudo lenguaje podra ser:
Inicio
Suma, const.
Limite= 40
Tipo
array [1limite] de real : puntuacin
var
puntuacin: puntos
real: suma, media
entero: i
1
el seudo cdigo sera:
inicio
suma 0
escribir (`datos de array')
desde i 1 hasta limite hacer
leer (puntos [i])
suma suma + puntos [i]
fin_desde
media suma/limite
escribir ( ` la media es' , media )
fin
Este programa sirve para procesar un array puntos, realizando las siguientes
operaciones; a) lectura del array, b) clculo de la suma de los vectores del array, c)
clculo de la media de los valores.
1.2. Array Bidimensionales (Tablas/ Matrices)
El array bidimensional se puede considerar como un vector de vectores. Por
consiguiente, un conjunto de elementos, todos del mismo tipo, en el cual el orden de los
componentes es significativo y en el que se necesita especificar los subndices para
identificar cada elemento del array.
Si se visualiza un array unidimensional, se puede considerar como una columna de
datos, un array bidimensional es un grupo de columna.
1.3. Array Multidimensionales
Un array puede ser definido de res dimensiones, cuatro dimensiones, hasta de n-
dimensiones. En general, un array de n- dimensiones requiere que los valores de n-
ndices puedan ser especificados a fin de identificar un elemento individual del array. Si
cada componente de un array tiene n-ndices, el array se dice que es solo de n-
dimensiones.
Ejemplo: Mediciones diarias de temperatura
.
Punto
Tiempo 1 2 3
1 65.5 68.7 62.0
2 68.8 68.9 64.5
3 70.4 69.4 66.3
4 68.5 69.1 65.8

1.4. Ordenamientos
La ordenacin o clasificacin es el proceso de organizar datos en algn orden o
secuencia especfica, tal como creciente o decreciente, para datos numricos, o
alfabticos, para datos de caracteres.
Los mtodos de ordenacin ms directos son los que se realizan en el espacio ocupado
por el array. Los ms populares son:
1.4.1. Mtodo De Intercambio O De Burbuja:
Se basa en el principio de comparar pares de elementos adyacentes e intercambiarlos
entre si hasta que estn todos ordenados.
Supongamos que se desea clasificar en orden ascendente el vector o lista,
50 15 56 14 35 1 12 9
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Los pasos a dar son:
-Comparar A[1] y A[2] si estn en orden, se mantienen como estn, en caso contrario se
intercambian entre si.
-A continuacin se comparan los elementos 2 y 3; de nuevo se intercambian si es
necesario.
-El proceso continua hasta que cada elemento del vector ha sido comparado con sus
elementos adyacentes y se han realizado los intercambios necesarios.
Un ejemplo en seudo cdigo es:
desde I 1 hasta 7 hacer
si elemento [I] <elemento [I + 1] entonces
intercambiar (elemento [I] , elemento [I + 1]
fin_si
fin_desde
1.4.2. Ordenamiento Por Insercin
Consiste en insertar un elemento en el vector en una parte ya ordenada de este vector y
comenzar de nuevo con los elementos restantes. Por ser utilizado generalmente por los
jugadores de cartas se le conoce tambin por el mtodo de la baraja.
Por ejemplo, supngase que se tiene la lista desordenada;
5 14 24 39 43 65 84 45
Para insertar el elemento 45, habr que insertar entre 43 y 65, lo que supone desplazar
a la derecha todos aquellos nmeros de valor superior a 45, es decir, saltar sobre 65 y
84.
5 14 24 39 43

65 84 45
El mtodo se basa en comparaciones y desplazamientos sucesivos. El algoritmo de
clasificaciones de un vector X para N elementos se realiza con un recorrido de todo el
vector y la insercin del elemento correspondiente en el lugar adecuado. El recorrido se
realeza desde el segundo elemento al n-simo.
desde i 2 hasta N hacer
insertar X[ i ] en el lugar adecuado
entre x [ 1 ] . . x [ i - 1 ]
fin_desde
Esta accin repetitiva - insertar- se realiza ms fcilmente con la inclusin de un valor
centinela o bandera. (SW).
Seudocdigo:
algoritmo Clas_insercion1
//declaraciones
inicio
. . .
//ordenacin
desde I 2 hasta N hacer
AUXI X [ I ]
K I - 1
SW falso
mientras no (SW) y (k >= 1) hacer
si AUXI < X [ ] entonces
X [ K + 1 ] X [ K ]
K K - 1
si_no
SW verdad
fin_si
fin_mientras
X [ K + 1 ] AUXI
fin_desde
fin
1.4.3. Ordenacin Por Seleccin
Este mtodo se basa en buscar el elemento menor del vector y colocarlo en primera
posicin. Luego se busca el segundo elemento ms pequeo y se coloca en la segunda
posicin, y as sucesivamente.
Los pasos sucesivos a dar son:
Seleccionar el electo menor del vector de n elementos.
Intercambiar dicho elemento con el primero.
Repetir estas operaciones con los n - 1 elementos restantes, seleccionando el segundo
elemento; continuar con los n - 2 elementos restantes hasta que solo quede el mayor.
Para la comprensin del mtodo usaremos un ejemplo:
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el
menor elemento es la primera 'a'. De manera que no ocurre ningn cambio. Luego se
procede a buscar el siguiente elemento y se encuentra la segunda 'a'.
Esta se intercambia con el dato que est en la segunda posicin, la 's', quedando el
arreglo as despus de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se
intercambia con lo que est en la tercera posicin, o sea, la 'o'. Le sigue la segunda 's',
la cual es intercambiada con la 'r'.
El arreglo ahora se ve de la siguiente manera: a =
['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].
De esta manera se va buscando el elemento que debe ir en la siguiente posicin hasta
ordenar todo el arreglo.
El nmero de comparaciones que realiza este algoritmo es :
Para el primer elemento se comparan n-1 datos, en general para el elemento i-simo se
hacen n-i comparaciones, por lo tanto, el total de comparaciones es: la sumatoria para i
de 1 a n-1 (n-i) = 1/2 n (n-1).
Seudo cdigo:
Inicio
desde I 1 hasta n - 1 hacer
buscar elemento menor de X [ I], X [ I + 1 ], . . . , X [N ] e intercambiar con X [ I ]
fin_desde
fin.
1.4.4. Mtodo De Shell
Es una mejora del mtodo de insercin directa que se utiliza cuando el nmero de
elementos a ordenar es grande. Nombrado as debido a su inventor Donald Shell.
Ordena subgrupos de elementos separados K unidades (respecto de su posicin en el
arreglo) del arreglo original. El valor K es llamado incremento.
Despus de que los primeros K subgrupos han sido ordenados (generalmente utilizando
INSERCION DIRECTA), se escoge un nuevo valor de K ms pequeo, y el arreglo es
de nuevo partido entre el nuevo conjunto de subgrupos. Cada uno de los subgrupos
mayores es ordenado y el proceso se repite de nuevo con un valor ms pequeo de K.
Eventualmente el valor de K llega a ser 1, de tal manera que el subgrupo consiste de
todo el arreglo ya casi ordenado.
Al principio del proceso se escoge la secuencia de decrecimiento de incrementos; el
ltimo valor debe ser 1."Es como hacer un ordenamiento de burbuja pero comparando e
intercambiando elementos."
Cuando el incremento toma un valor de 1, todos los elementos pasan a formar parte del
subgrupo y se aplica insercin directa.
El mtodo se basa en tomar como salto N/2 (siendo N el nmero de elementos) y luego
se va reduciendo a la mitad en cada repeticin hasta que el salto o distancia vale 1.
Un ejemplo de su algoritmo es:
const
MAXINC = _____;
incrementos = array[1..MAXINC] of integer;
var
j,p,num,incre,k:integer;
begin
for incre := 1 to MAXINC do begin /* para cada uno de los incrementos */
k := inc[incre]; /* k recibe un tipo de incremento */
for p := k+1 to MAXREG do begin /* insercin directa para el grupo que se encuentra
cada K posiciones */
num := reg[p];
j := p-k;
while (j>0) AND (num < reg[j]) begin
reg[j+k] := reg[j];
j := j - k;
end;
reg[j+k] := num;
end
end
end;
Ejemplo:
Para el arreglo a = [6, 1, 5, 2, 3, 4, 0]
Tenemos el siguiente recorrido:
Recorrido Salto Lista Ordenada Intercambio
1 3 2,1,4,0,3,5,6 (6,2), (5,4), (6,0)
2 3 0,1,4,2,3,5,6 (2,0)
3 3 0,1,4,2,3,5,6 Ninguno
4 1 0,1,2,3,4,5,6 (4,2), (4,3)
5 1 0,1,2,3,4,5,6 Ninguno

1.4.5. Ordenacin Rpida (Quicksort)
El mtodo de ordenacin rpida sirve para ordenar o clasificar un vector o lista de
elementos (array). Desarrollada por C.A.R. Hoare en 1960, se basa en el hecho de que
es ms rpido y fcil ordenar dos listas pequeas que una lista grande. Se denomina
as, ya que en general, puede ordenar una lista de datos mucho ms rpidamente que
cualquiera de los mtodos de ordenacin anteriores.
El algoritmo fundamental es el siguiente:
Eliges un elemento de la lista. Puede ser cualquiera, lo llamaremos elemento de divisin.
Buscas la posicin que le corresponde en la lista ordenada (explicado ms abajo).
Acomodas los elementos de la lista a cada lado del elemento de divisin, de manera que a un lado
queden todos los menores que l y al otro los mayores (explicado ms abajo tambin). En este
momento el elemento de divisin separa la lista en dos sublistas (de ah su nombre).
Realizas esto de forma recursiva para cada sublista mientras stas tengan un largo mayor que 1.
Una vez terminado este proceso todos los elementos estarn ordenados.
Una idea preliminar para ubicar el elemento de divisin en su posicin final sera contar la
cantidad de elementos menores y colocarlo un lugar ms arriba. Pero luego habra que mover
todos estos elementos a la izquierda del elemento, para que se cumpla la condicin y pueda
aplicarse la recursividad. Reflexionando un poco ms se obtiene un procedimiento mucho ms
efectivo. Se utilizan dos ndices: i, al que llamaremos contador por la izquierda, y j, al que
llamaremos contador por la derecha. El algoritmo es ste:
Recorres la lista simultneamente con i y j: por la izquierda con i (desde el primer elemento), y
por la derecha con j (desde el ltimo elemento).
Cuando lista[i] sea mayor que el elemento de divisin y lista[j] sea menor los intercambias.
Repites esto hasta que se crucen los ndices.
El punto en que se cruzan los ndices es la posicin adecuada para colocar el elemento de
divisin, porque sabemos que a un lado los elementos son todos menores y al otro son todos
mayores (o habran sido intercambiados).
Al finalizar este procedimiento el elemento de divisin queda en una posicin en que
todos los elementos a su izquierda son menores que l, y los que estn a su derecha
son mayores.
Un seudo cdigo en C sera:
Tabla de variables
Nombre Tipo Uso
lista Cualquiera Lista a ordenar
inf Entero Elemento inferior de la lista
sup Entero Elemento superior de la lista
elem_div
El mismo que los elementos
de la lista El elemento divisor
temp
El mismo que los elementos
de la lista Para realizar los intercambios
i Entero Contador por la izquierda
j Entero Contador por la derecha
cont Entero
El ciclo continua mientras cont
tenga el valor 1
Nombre Procedimiento: OrdRap
Parmetros:
lista a ordenar (lista)
ndice inferior (inf)
ndice superior (sup)
// Inicializacin de variables
1. elem_div = lista[sup];
2. i = inf - 1;
3. j = sup;
4. cont = 1;
// Verificamos que no se crucen los lmites
5. if (inf >= sup)
6. retornar;
// Clasificamos la sublista
7. while (cont)
8. while (lista[++i] < elem_div);
9. while (lista[--j] > elem_div);
10. if (i < j)
11. temp = lista[i];
12. lista[i] = lista[j];
13. lista[j] = temp;
14. else
15. cont = 0;
// Copiamos el elemento de divisin
// en su posicin final
16. temp = lista[i];
17. lista[i] = lista[sup];
18. lista[sup] = temp;
// Aplicamos el procedimiento
// recursivamente a cada sublista
19. OrdRap (lista, inf, i - 1);
20. OrdRap (lista, i + 1, sup);
2. ARCHIVOS
Los archivos tambin denominados ficheros (file); es una coleccin de informacin
(datos relacionados entre s), localizada o almacenada como una unidad en alguna
parte de la computadora.
Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden
utilizarse en un mismo tratamiento; como soporte material de estas informaciones.
Las principales caractersticas de esta estructura son: independencia de las
informaciones respecto de los programas, la informacin almacenada es permanente,
un archivo puede ser accedido por distintos programas en distintos momentos, gran
capacidad de almacenamiento.
2.1. Tipos De Archivos
Los elementos de un archivo pueden ser de cualquier tipo, simples o estructurados o
segn su funcin.
2.1.1 Segn Su Funcin
Se define por:
2.1.1.1 Archivos Permanentes: Son aquellos cuyos registros sufren pocas o ninguna
variacin a lo largo del tiempo, se dividen en:
a. Constantes: Estn formados por registros que contienen campos fijos y campos de
baja frecuencia de variacin en el tiempo.
b. De Situacin: Son los que en cada momento contienen informacin actualizada.
Histricos: Contienen informacin acumulada a lo largo del tiempo de archivos que han
sufridos procesos de actualizacin o bien acumulan datos de variacin peridica en el
tiempo.
2.1.1.2. Archivos de Movimiento: Son aquellos que se utilizan conjuntamente con los
maestros (constantes), y contienen algn campo comn en sus registros con aquellos,
para el procesamiento de las modificaciones experimentados por los mismos.
2.1.1.3. Archivo de Maniobra o Transitorio: Son los archivos creados auxiliares
creados durante la ejecucin del programa y borrados habitualmente al terminar el
mismo.

2.1.2. Segn Sus Elementos
Los principales archivos de este tipo son:
2.1.2.1. Archivo de Entrada: Una coleccin de datos localizados en un dispositivo de
entrada.
2.1.2.2. Archivo de Salida: Una coleccin de informacin visualizada por la
computadora.
2.1.2.3. Archivo de Programa: Un programa codificado en un lenguaje especifico y
localizado o almacenado en un dispositivo de almacenamiento.
2.1.2.4. Archivo de Texto: Una coleccin de caracteres almacenados como una unidad
en un dispositivo de almacenamiento.
2.2. Operaciones Generales Que Se Realizan Sobre Un Archivo
Las operaciones generales que se realizan son:
2.2.1. Creacin: Escritura de todos sus registros.
Operacin de clasificacin
por nmero de empleado
2.2.2. Consulta: Lectura de todos sus registros.
2.2.3. Actualizacin: Insercin supresin o modificacin de algunos de sus registros.
2.2.4. Clasificacin: Reubicacin de los registros de tal forma que queden ordenados
segn determinados criterios.
2.2.5. Borrado: Eliminando total del archivo, dejando libre el espacio del soporte que
ocupaba.


Un ejemplo de seudo cdigo en archivo sera:
Ejemplo: La declaracin de un archivo con tipo se efecta con la ayuda de las palabras
reservadas file of.
Type
datos = record
clave : integer;
nombre : string[30];
puesto : string[20];
sueldo : real;
estado : boolean;
{true activo,false baja lgica}
end;
Var
archivo:file of datos;
begin
Assign(archivo,'empleado.dat');
3. registros
Son estructura de datos formada por uno o ms elementos denominados "Campos" y
estos pueden estar compuestos a su vez por "subcampos". Puede definirse tambin
como una coleccin de informacin, normalmente relativa a una entidad particular. Un
ejemplo de registro puede ser la informacin de un determinado empleado, que contiene
los campos de nombre, direccin, fecha de nacimiento, estudios, salarios, etc.
N
N = Longitud de registro
3.1. Tipos De Registros
Los archivos se encuentran organizados lgicamente como una secuencia de registros
de varias longitudes diferentes. Entre ellas tenemos:
3.1.1. Registros De Longitud Fija: son los que almacenan la informacin en los
archivos mediante un encabezado y luego se introducen uno a uno los registros
ubicados en posiciones consecutivas.
3.1.2. Registros De Longitud Variable: es el almacenamiento de registros de varios
tipos en un archivo y permite uno o ms campos de longitudes variables y dichos
campos pueden ser repetidos. La longitud de los registros debe estar definida
correctamente para poder leer y escribir de forma efectiva.
3.2. Estructura De Registro
Una estructura de registro en una computadora es diseada para obtener datos. Los
datos estn organizados de tal modo que pueden ser recuperados fcilmente,
actualizados o borrados y almacenados de nuevo en el archivo con todos los cambios
realizados.
La siguiente figura recoge la estructura de un registro correspondiente a un usuario de
una revista de informtica:
Registro 1
Registro 2
Registro 3
Registro 4

También podría gustarte