Академический Документы
Профессиональный Документы
Культура Документы
Definiciones de Arreglos:
◦ Unidimensional: Conjunto finito y ordenado de elementos
homogéneos
◦ Arreglos multidimensionales: En C, son posibles arreglos
multidimensionales, significando que la correspondencia con los
valores pueden realizarse por varios índices. Así, por ejemplo, si el
arreglo tiene 2 índices se dice que es bidimensional. Su declaración
es muy similar al de un arreglo unidimensional.
◦ Elementos de igual tamaño almacenados linealmente en posiciones
de memoria consecutivas
◦ El nombre del arreglo es visto como un puntero al primer elemento del
arreglo
Operaciones Básicas
◦ Extracción: Función que toma un arreglo a y un índice i, y retorna un
elemento del arreglo: int x = a[i];
◦ Almacenamiento: Acepta un arreglo a, un índice i, y un elemento x, y
asigna a[i] = x;
◦ Para crear arreglos en C++, hay que indicar:
1.El tipo de los elementos (ejemplo, int, char, doublé ,bool o un tipo
definido por el programador).
2. El nombre del arreglo.
3. La cantidad de dimensiones y sus tamaños; cada dimensión
comienza con el signo [seguido por el tamaño de la dimensión y
termina con el signo].
Declaración
Tipo Nombre Arreglo [Número Elementos]
Ejemplos:
float salarios[5];
char alfabeto[30]; [0] [1] [2] [3] [4]
Inicialización
Por defecto: Cuando son creados, se aplica solamente a arreglos
globales y estáticos
Explícita: Cuando son creados, suministrando datos de iniciación
En ejecución: Durante ejecución, cuando se asignan o copian datos
al arreglo.
Ejemplos:
double scores[5] = {5.5,
6.7, 9.8, 10.0, 8.7};
int estado[3] = {-1, 0, 1};
char alfabeto[] = {‘a’, ‘b’,
‘c’, ‘d’, ‘e’, ‘f’, ‘\0’};
char vocales[10] = {‘a’,
’e’, ‘i’, ‘o’, ‘u’,’\0’};
*p = 9; // Equivalente a v[5] = 9;
Arreglos de caracteres (strings).
No existen Strings en C, son solamente arreglos de caracteres con la convención
que un carácter nulo (‘\0’) es almacenado al final del último carácter para marcar el
final de la cadena.
Ejemplo: char *p = “ejemplo”;
La variable puntero p obtiene la dirección del primer elemento en el arreglo (e). El
compilador coloca un carácter null al final del arreglo:
P E P I T O 0 X X X
char
localnombre [10];
strcpy(localnombre,
“PEPITO”);
Copiamos la
constante de
caracteres en el
arreglo local.
Arreglos Multidimensionales.
Por dimensión entendemos como el número de índices utilizados para referirse a
un elemento particular en el arreglo.
Bidimensional: Type Array Name [numFilas] [numColumnas].
Ejemplo:
Inicializamos el array:
int fila, columna;
for(fila = 0; fila < numFilas; fila++)
for(columna = 0; columna<numColumnas;
columna++)
miarray[fila][columna] = 0;
char sexo;
int edad;
char primernombre[10];
char apellido[15];
} minombre;
Debe tenerse bien presente que, al igual que en el caso de los arreglos
unidimensionales, el identificador asociado a un arreglo es realmente un puntero al
bloque de memoria donde se guardan los valores en el arreglo.
Continúa vigente la definición de la correspondencia. Es decir:
X[i][j] = *(&X[i] + j)
Aparentemente esta definición es contradictoria, pero no.
Sucede que para el cálculo de la dirección de X[i], el compilador tiene en cuenta la
longitud de la fila. De donde se llega a la conclusión anti intuitiva, que ¡la información
que emplea el compilador para localizar la posición de un valor está vinculada NO
al rango del primer índice, sino del segundo!
Esto puede resumirse en que el valor de &vals[1][0] - &vals[0][0] (diferencia de dos
punteros a double) es ¡8! porque el rango del segundo índice es 8.
El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir,
podemos acceder a cualquier elemento del arreglo sin tener que consultar a
elementos anteriores o posteriores, esto mediante el uso de un índice para cada
elemento del arreglo que nos da su posición relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria.
Los arreglos nos permiten hacer un conjunto de operaciones para manipular los
datos guardados en ellos, estas operaciones son: ordenar, buscar, insertar,
eliminar, modificar entre otras.
Bibliografía.
[1] The C Programming Language, Brian Kernighan / Dennis Ritchie
[2] Data Structures, Algorithms and Program Style Using C, James F. Korsh / Leonard J. Garrett