Unidad I: Arreglos

Anuncio
Unidad I: Arreglos
ESTRUCTURA DE DATOS. Una estructura de datos es una colección de datos
que pueden ser caracterizados por su organización y las operaciones que se
definen en ella.
Los datos que una computadora procesa se pueden dividir en : Simples y
Estructurados.
DATOS SIMPLES. Ocupan sólo una localidad de memoria, es decir se hace
referencia a un valor único a la vez.
Ejemplo: Enteros, Reales ,Caracteres,Booleanos, etc.
DATOS ESTRUCTURADOS. Son aquellos que hacen referencia a un grupo de
localidades de memoria a través de un nombre (Identificador), es decir, un
dato estructurado es aquél que tiene varios componentes.
Cada uno de los componentes puede ser a su vez un dato simple o
estructurado.
Ejemplo: Arreglos, Registros, Estructuras, etc.
TIPOS DE DATOS.
Los tipos de datos estructurados se pueden organizar en Estructuras e Datos
Estáticas y Dinámicas.
Las E.D. ESTATICAS. Son aquéllas en las que el tamaño ocupado en memoria
se define antes de que el programa se ejecute y no puede modificarse dicho
tamaño durante la ejecución del programa.
Las E.D. DINAMICAS. no tienen las limitaciones o restricciones en el tamaño
de memoria ocupada que son propias de las estructuras estáticas. Las
estructuras de datos dinámicas son construídas a través de un tipo de dato
denominado puntero, las cuales son soportadas en la mayoría de los
lenguajes.
Una característica importante que diferencia a los tipos de datos es la
siguiente:
Los tipos de Datos Simples tienen como característica común que cada
variable representa a un elemento; los tipos de Datos Estructurados tienen
múltiples datos individuales, pudiendo cada uno de éstos ser referenciado
independientemente.
ARREGLOS.(Array,Vector,Tabla)
Es una conjunto finito y ordenado de elementos homogéneos.
Finito. todo arreglo tiene un límite; es decir debe determinarse cuál será el
número máximo de elementos que podrán formar parte del arreglo.
Homogéneo. Todos los elementos de un arreglo son del mismo tipo (todos
enteros, booleanos, etc.pero nunca una combinación de distintos tipos).
Ordenado. se puede determinar cuál es el primer elemento , el segundo, el
tercero,.... y el enésimo elemento.
Figura. Representación de Arreglos.
Si un arreglo tiene la característica de que puede almacenar a N elementos
del mismo tipo, deberá tener la facilidad de permitir el acceso a cada uno de
ellos. Así , se distinguen dos partes en los arreglos:
*Los Componentes
*Los Subíndices
Los componentes hacen referencia a los elementos que forman el arreglo. Es
decir a los valores que se almacenan en cada una de las casillas del mismo.
Los índices permiten hacer referencia a los componentes del arreglo en forma
individual. Es decir, distinguir entre los elementos del mismo.
Por lo tanto para hacer referencia a un elemento de un arreglo se utiliza:
* El nombre del arreglo
* El índice del elemento.
Definición de Arreglos.
iden_arreglo = ARREGLO [líminf...límsuP]DE Tipo
Con los valores líminf y límsup se declara el tipo de los índices así como el
número de elementos que tendrá el arreglo.
El número total de componentes (NTC) que tendrá el arreglo puede calcularse
con la fórmula: NTC = Límsup - Líminf +1
Con tipo se declara el tipo de datos para todos los componentes
del arreglo. El tipo de los componentes no tiene
que ser necesariamente el mismo que el tipo de los índices. (Pueden ser los
índices: caracter,entero,enumerado)
El valor mínimo permitido de un vector se denomina límite inferior y el valor
máximo permitido se denomina superior.
Ejemplo: Sea V un arreglo de 50 elementos con índices enteros. vease figura.
NTC = ( 50 - 1 + 1 ) = 50
Cada componente del arreglo V será un número entero, y podrá accesarse por
medio de un índice que será un valor comprendido entre 1 y 50. asi V[1] hace
referencia al elemento de la posición 1.
Los índices de tipo entero no necesariamente deben tener un límite inferior
igual a cero o a uno. Podrían usarse valores negativos [-10...10] o valores
mayores a uno [100...200].
OPERACIONES CON ARREGLOS.
*Lectura
*Escritura
*Asignación
*Actualización -Inserción
-Eliminación
-Modificación
*Ordenación
*Búsqueda
OPERACIÓN DE LECTURA CON ARREGLOS.
El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada
uno de sus componentes.
Ejemplo: Supóngase que desea leer todos los elementos del arreglo V en
forma consecutiva.
Leer V[1],.... leer V[50]
usando el ciclo...
Repetir con I desde 1 hasta 50
Leer V[I]
Figura. Lectura de Arreglos
Puede suceder que no se necesite leer todos los componentes, sino solamente
algunos de ellos.
Ejemplo: Supóngase que se desea leer los elementos con índices
comprendidos entre el 1 y el 30 inclusive. El ciclo necesario es el siguiente:
Repetir con I desde 1 hasta 30
Leer V[I]
El arreglo queda como se muestra en la Figura.
Figura. Lectura de arreglos.
OPERACIÓN DE ESCRITURA CON ARREGLOS.
El proceso de Escritura de un arreglo es similar a la lectura. Se debe
escribir el valor de cada uno de los componentes.
Ejemplo:
Supóngase que se desea escribir los primeros N componentes del arreglo V
en forma consecutiva.
Los pasos a seguir son los siguientes:
Repetir con I desde 1 hasta N
Escribir V[I]
OPERACIÓN DE ASIGNACIÓN CON ARREGLOS.
En general no es posible asignar directamente un valor a todo el arreglo;
sino que se debe asignar el valor deseado a cada componente.
ejemplo.
En los dos primeros casos se asigna un valor a una determinada casilla del
arreglo (en el primero a la señalada por el índice ene, en el segundo a la
indicada por el índice mar).
CICLO[ene] <- 123.89
CICLO[mar] <- CICLO[ene]/2
En el tercer caso se asigna el 0 a todas las casillas del arreglo, con el que éste
queda de la siguiente manera:
Repetir con MES desde ene hasta dic
Hacer CICLO [MES] <- 0
Figura. Asignación de arreglos
En algunos lenguajes es posible asignar una variable tipo arreglo a otra
exactamente del mismo tipo.
V1 <-- V
La expresión anterior es equivalente a:
Repetir con I desde 1 hasta 50
Hacer V1[I] <-- V[I]
OPERACIÓN DE ACTUALIZACIÓN CON ARREGLOS.
En el arreglo pueden insertarse nuevos elementos ,eliminar y/o modificar
algunos de los ya existentes. para llevar a cabo estas operaciones
eficientemente se debe tener en cuenta si el arreglo está o no ordenado. Es
decir,
si sus componentes respetan algun orden (Creciente o decreciente).
***INSERCIÓN.
ARREGLO DESORDENADO.
Para insertar un elemento X en un arreglo V desordenado debe verificarse
que exista espacio. Si cumple esta condición, entonces se asignará a la
posición N
+ 1 el nuevo elemento.
ARREGLO ORDENADO.
Cuando se trabaja con arreglos ordenados debe evitarse alterar el orden al
insertar nuevos elementos o al modificar los existentes. Para insertar un
elemento X en un arreglo V ordenado debe verificarse que exista espacio.
Luego tendrá que encontrarse la posición en la que debería estar el nuevo
valor para no alterar el orden del arreglo. Una vez detectada la posición, se
procederá a recorrer todos los elementos desde la misma hasta la N-ésima
posición, un lugar a la derecha. Finalmente se asignará el valor de X en la
posición encontrada.
***ELIMINACIÓN.
ARREGLO DESORDENADO.
Para eliminar un elemento X de un arreglo V desordenado debe verificarse
que el arreglo no este vacío y que X se encuentre en el arreglo. Si se cumples
estas condiciones entonces se procederá a recorrer todos los elementos que
están a su derecha a una posición a la izquierda, decrementando finalmente el
número de componentes del arreglo.
ARREGLO ORDENADO.
Para eliminar un elemento X de un arreglo ordenado V debe verificarse que
el arreglo no este vacío. Si se cumple esta condición, entonces tendrá que
buscarse la posición del elemento a eliminar. Si el resultado de la función es
un valor positivo, quiere decir que el elemento se encuentra en el arreglo y
por lo tanto puede ser eliminado; en otro caso no se puede ejecutar la
eliminación.
***MODIFICACION.
ARREGLO DESORDENADO.
Debe verificarse que el arreglo no esté vacío y que X se encuentre en el
arreglo. Si se cumplen estas condiciones entonces se procederá a su
actualización.
ARREGLOS ORDENADOS.
Se debe proceder de manera similar a la eliminación de un elemento en un
arreglo ordenado. La variante se presenta en que al modificar el valor X por
un valor Y, debe verificarse que el orden del arreglo no se altere. Si esto
llegara a suceder, entonces podría rechazarse la operación o reordenar el
arreglo.
ARREGLOS UNIDIMENSIONALES. (Lineales)Hacen referencia a cada elemento
por medio de un solo indice.
ARREGLOS BIDIMENSIONALES.
Se hace referencia a cada elemento por medio de dos índices. El primero se
utiliza generalmente para indicar el renglón y el segundo para indicar la
columna.
El arreglo A(MxN) tiene M renglones y N columnas. Internamente en
memoria se reservan M x N posiciones consecutivas para almacenar todos los
elementos del arreglo.
Declaración del arreglo: id_arreglo = ARREGLO [líminfr..límsupr,
líminfc..límsupc)DE tipo
Ejemplo:
Sea COSTOS un arreglo bidimensional de números reales con índices de
tipo escalar.
meses=(ene,feb,mar,abr,may,jun,jul,ago,set,oct,nov,dic)
departamentos=(dulces,conservas,bebidas)
COSTOS=ARREGLO[meses,departamento)DE reales
Meses/Dptos.
Enero
Febrero
Marzo
Abril
Mayo
Junio
Julio
Agosto
Septiembre
Octubre
Noviembre
Diciembre
Dulces
100
400
350
280
300
250
200
180
500
350
400
600
Conservas
300
200
250
300
320
300
280
300
400
420
450
550
Bebidas
120
200
210
200
300
350
300
400
450
220
360
531
NTC= (ord(dic)-ord(ene)+1)*(ord(bebidas)-ord(dulces)+1)
= (11-0+1)
* (2-0+1) = 12*3 = 36
Cada componente de COSTOS será un real. Para hacer referencia a cada
uno de ellos usaremos dos índices y el nombre de la variable tipo arreglo
COSTOS[i,j]
Donde ene<= i<=dic
dulces<=j<=bebidas
Documentos relacionados
Descargar