array definición - Corporación de Estudios Superiores del Oriente

Anuncio
ARRAY
AMPARO CALDERON PEREZ
CORPORACION DE ESTUDIOS SUPERIORES DEL ORIENTE
SARAVENA
2013
ARRAY
AMPARO CALDERON PEREZ
TRABAJO DIRIGIDO A:
ING. Jorge Alberto Patiño
CORPORACION DE ESTUDIOS SUPERIORES DEL ORIENTE
SARAVENA
2013
ARRAY DEFINICIÓN
Un Array es un conjunto finito de valores del mismo tipo.
Un Array es una estructura de datos que almacena bajo el
mismo nombre
(Variable) a una colección de datos del mismo tipo.
Un Array es un conjunto de variables del mismo tipo que
tienen el Mismo nombre y se diferencian en el índice.
Letras = ‘a’ ‘z’ ‘r’ ‘j’
• A cada dato almacenado se le denomina elemento del array o
ítem.
•Cada elemento del array está numerado, y a éste número se le
Denomina índice.
INDICES DE UN ARRAY
Los índices son números que se utilizan para identificar a
cada uno de los componentes de un array. A modo de
ejemplo, podemos pensar que los índices son como los
números de habitaciones de un hotel, es decir, para poder
dirigirnos a un hotel específico es necesario saber el nombre
del mismo, luego, si queremos llegar a una habitación
específica de dicho hotel necesitaremos, además del nombre
del hotel, el número de habitación deseado.
DIMENSIONES DE UN ARRAY
De acuerdo a la forma en que se construye o declara un
array, éste puede ser clasificado como: unidimensional,
bidimensional y multidimensional. Los arrays que se emplean
con mucha más frecuencia son los estructurados a manera
de vector ( array unidimensional ) y los estructurados a
manera de matriz ( array bidimensional ), así, aunque en C++
se pueden crear estructuras multidimensionales, en este
capítulo solo trataremos con vectores y matrices.
ARRAY UNIDIMENSIONAL
Una array uni-dimensional es aquel en donde los
componentes son accesibles por medio de uno y solamente
un índice que apunte al componente requerido. Los arrays de
este tipo son conocidos también con el nombre de vectores.
Conceptualmente,
podemos
pensar
en
un
array
unidimensional como una lista compuesta de datos, donde
para referirnos a uno de ellos emplearemos un número para
indicar la posición del mismo dentro de la lista. Por ejemplo,
consideremos el caso de la tabla o array Venta Semanal, la
cual está pensada para registrar las ventas de cada uno de
los días de la semana.
En C++ los arrays están basados en 0 (cero ), es decir, el
primer elemento de un array se indexa mediante el 0, y el
índice para el último de los elementos es igual al número de
componentes menos uno.
ARRAY BIDIMENSIONAL
Una array bi-dimensional es aquel en donde los componentes
son accesibles por medio de una pareja de índices que
apunten a la fila y a la columna del componente requerido.
Los arrays de este tipo son conocidos también con el nombre
de matrices. Conceptualmente, podemos pensar en un array
bidimensional como en una lista compuesta de filas y
columnas, en donde para referirnos a una de ellas
emplearemos un número para indicar la posición de fila y otro
número para indicar la posición de la columna del
componente deseado. Por ejemplo, consideremos el caso de
la tabla o array Venta Semana Q, la cual está pensada para
registrar las ventas de cada uno de los días de la semana por
cuatro semanas, o sea, una tabla de 7 x 4 elementos. De
manera conceptual podemos ver el array como se muestra a
continuación:
Array: VentaSemanaQ
C O L U M N A S
F
+--- componente ( 0, 0 )
|
+------+------+------+------+
| dato | dato | dato | dato |
|------|------|------|------|
| dato | dato | dato | dato |
|------|------|------|------|
I | dato | dato | dato | dato |
|------|------|------|------|
L | dato | dato | dato | dato |
|------|------|------|------|
A | dato | dato | dato | dato |
|------|------|------|------|
S | dato | dato | dato | dato |
|------|------|------|------|
| dato | dato | dato | dato |
+------+------+------+------+
|
+---( 6, 3 )
componente
Los arrays de Ada son de alto nivel, comparados, por
ejemplo, con los de C/C++. Esto se traduce en varias
posibilidades sintácticas que se presentan a continuación.
DECLARACIÓN DE ARRAYS
Los arrays de Ada son de alto nivel, comparados, por
ejemplo, con los de C/C++. Esto se traduce en varias
posibilidades sintácticas que se presentan a continuación.
SINTÁXIS BÁSICA
La declaración básica de un array es la siguiente:
Array (Tipo_Índice) of Tipo_Elemento
Este
array
consiste
en
un
elemento
de
tipo Tipo_Elemento por cada posible valor de Tipo_Índice.
Por ejemplo, si quisiéramos contar las ocurrencias de cada
letra en un texto nos definiríamos un array de este tipo:
Type Contador_Caracteres is array (Character)
of Natural;
Nota: usamos Natural como tipo de elemento puesto que
los valores negativos de Integer no tienen sentido en una
cuenta. Es conveniente usar el subtipo entero más
adecuado en cada caso, puesto que así nos
beneficiamos de la comprobación de rango y podemos
descubrir errores fácilmente.
Con subrango conocido
A menudo no necesitamos un array con todos los valores
posibles del tipo del índice. En este caso definimos
un subtipo del tipo índice con el rango necesitado.
subtype Subtipo_Índice is Tipo_Índice range
Primero ... Último;
Array (Subtipo_Índice) of Tipo_Elemento;
Para lo que hay una forma más abreviada si no deseamos
definir el subtipo con nombre, se puede hacer
anónimamente:
Array (Tipo_Índice range Primero... Último)
of Tipo_Elemento;
Puesto que Primero y Último son expresiones del tipo
Tipo_Índice, una forma más simple es la siguiente:
Array (Primero ... Último) of Tipo_Elemento
Ten en cuenta que si First y Last son literales numéricos,
esto implica que el tipo índice base es el Integer.
Si en el ejemplo anterior, sólo deseásemos contar letras
mayúsculas desechando otros caracteres, podríamos
definir el tipo array de este modo:
Type Contador_Caracteres is array (Character
range 'A' .. 'Z') of Natural;
Con un subrango desconocido
A menudo el rango necesitado no se conoce hasta tiempo
de ejecución o necesitamos objetos array de varias
longitudes.
En
lenguajes
de
más
bajo
nivel
como C necesitaríamos hacer uso de la memoria dinámica
(del heap). Pero no es el caso de Ada, puesto que la
caja <> nos permite declarar arrays de tamaño no
restringido:
Array
(Tipo_Índice
Tipo_Elemento
range
<>)
of
Cuando declaramos objetos de este tipo, los extremos
(bounds) del array deben conocerse, bien como resultado
de una función o por una inicialización mediante un
agregado. Desde su declaración hasta su finalización, el
objeto no puede cambiar de tamaño.
Con elementos aliased
Los programadores de C/C++ dan por hecho que todo
elemento de un array tiene una dirección propia en
memoria (de hecho el nombre del array es un puntero
sobre el que se puede operar).
En Ada, esto no es siempre así. Veamos este ejemplo:
type Día_De_Mes is range 1 .. 31;
Type Día_Con_Cita is array (Día_De_Mes) of
Boolean;
pragma Pack (Día_Con_Cita);
Puesto que hemos empaquetado el array, el compilador
usará el mínimo espacio de almacenamiento posible. En la
mayoría de los casos esto implica que los 8 valores
booleanos cabrán en un byte.
Pero este no es el único caso en el que el compilador de
Ada puede empaquetar un array puesto que tiene libertad
en los casos en que sea más óptimo.
Si queremos acceder con un puntero a cada elemento
tenemos que expresarlo explícitamente.
type Día_De_Mes is range 1 .. 31;
type Día_Con_Cita is array (Día_De_Mes) of
aliased Boolean;
Descargar