Sunteți pe pagina 1din 11

ARREGLOS, MATRICES Y ARCHIVOS

1. 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. 1.1. Array Unidimensionales: Los Vectores El array unidimensional (matriz de una dimensin) es el tipo ms simple. Un denominado NOTAS que consta de n elementos se puede representar as: NOTAS(1) NOTAS(2) ..... NOTAS(I) ..... vector de una dimensin

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.

Fila 1 Fila 2 Fila 3 Fila 4 Fila 5

Columna 6 Columna 5 Columna 4 Columna 3 Columna 2 Columna 1 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 4 1 2 3

65.5 68.7 62.0 68.8 68.9 64.5 70.4 69.4 66.3 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 A[1] 15 A[2] 56 A[3] 14 A[4] 35 A[5] 1 A[6] 12 A[7] 9 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;

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.

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: a. b. c. 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 1 2 3 4 Salto 3 3 3 1 Lista Ordenada 2,1,4,0,3,5,6 0,1,4,2,3,5,6 0,1,4,2,3,5,6 0,1,2,3,4,5,6 Intercambio (6,2), (5,4), (6,0) (2,0) Ninguno (4,2), (4,3)

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 lista inf sup temp i j cont Cualquiera Entero Entero Uso Lista a ordenar Elemento inferior de la lista Elemento superior de la lista

elem_div El mismo que los elementos de la lista El elemento divisor El mismo que los elementos de la lista Para realizar los intercambios Entero Entero Entero Contador por la izquierda Contador por la derecha 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. CREACIN de un archivo en disco MAESTRO (desordenado)

DATOS

Operacin de clasificacin por nmero de empleado

Nmero de empleado

Maestro ordenado

2.2.2. Consulta: Lectura de todos sus registros.

Proceso de consulta

2.2.3. Actualizacin: Insercin supresin o modificacin de algunos de sus registros.

Proceso de actualizacin

2.2.4. Clasificacin: Reubicacin de los registros de tal forma que queden ordenados segn determinados criterios.

Clasificacin

Clasificacin

Copia

2.2.5. Borrado: Eliminando total del archivo, dejando libre el espacio del soporte que ocupaba.

Proceso de reorganizacin

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. Registro de datos 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:

Nombre Registro 1 Registro 2 Registro 3 Registro 4

Profesin

Direccin

Telfono

Ciudad

CONCLUSIN: En conclusin se puede decir que los arreglos pueden variar dependiendo sus dimensiones. Con respecto a los archivos no se requieren de un tamao predeterminado; esto significa que se pueden hacer archivos de datos ms grandes o pequeos, segn se necesiten. Las aplicaciones pueden ser infinitas, ya que son utilizados en diferentes rutinas diarias, como por ejemplo, acceder a nuestro expediente en la universidad, para consultar el estado de cuenta bancario, etc. La eleccin del mtodo de ordenamiento esta directamente relacionada con la estructura de los registros del archivo y del soporte utilizado. Un programa puede acceder directamente cualquier registro sin tener que leer los registros previos. REFERENCIAS O BIBLIOGRAFAS: JOYANES, Luis Fundamentos de Programacin Editorial Lavel, 1996. Espaa P.p.205-321.

PRIETO, Alberto Introduccin a la Informtica Editorial Mc. Grauhill.1999. Espaa P.p.444-445. http://webdia.cem.itesm.mx/ac/rtrejo/CompuII/S32.html http://c.conclase.net/orden/quicksort.html

S-ar putea să vă placă și