ARRAYS
ARRAYS UNIDIMENSIONALES
Este tipo de instrucciones se utilizan para
informar al procesador del espacio que debe reservar en memoria para almacenar
un dato simple o estructurado que se denominan o se referencian por un mismo
nombre, donde la dirección de memoria más baja corresponde al primer elemento y
la dirección dememoria más alta corresponde al último elemento o componente del
array.
El formato general de un array unidimensional
es el siguiente:
Tipo_básico Nombredelarray[tamaño];
a) Tipo_básico
Indica
el dato del array o vector, que será común a todos los elementos que lo forman.
Para ello utilizaremos los tipo básicos proporcionados por el lenguaje de
programación y que en este caso son char, int, float y double.
b)
Nombre_del_array
Es
un identificador que deberá adaptarse a ciertas reglas establecidas por el
lenguaje de programación.
1- Puede estar formado por letras, dígitos y el carácter subrayado.
2- El primer carácter, debe ser una letra o el carácter subrayado, nunca un dígito.
b)
Tamaño
Indica la longitud o el número de elementos
del array.
ACCESO A LOS DATOS
Nombre_del_array[indice];
Los índices, ya sea en arrays
unidimensionales, arrays bidimensionales o multidimensionales, pueden ser:
1- Variables de tipo entero Letras[i];
2- Constante numérica de
tipo entero Letras[5];
3- Expreesión cuyo resultado
sea un entero Letras[i+4];
La carga de datos la podemos realizar de dos
formas diferentes:
a)
Inicialización:
Básico
Nombre[Tam.Dim1][tam.Dim2]...={Lista de valores};
Int vector[5]={1,2,3,45,23};
Float num[4]={3.21, 2.3,7.
44, 6.009};
b)
Asignación
Esta operación consiste en asignar de manera
individual a cada elemento del array un valor.
Int vector[4];
vector[0]=32;
vector[1]=-7;
vector[2]=1000;
vector[3]=23;
ARRAYS BIDIMENSIONALES
El formato para la definición de un array bidimensional es el
siguiente:
Tipo_básico Nombre_del_array[tamaño dim1][tamaño dim2];
El acceso a cada elemento se realiza a través de dos índices.
Nombre_del_array [indice1][indice2];
La carga de datos la podemos realizar de las dos siguientes formas.:
a)
Iniciación:
Int matriz[2][3]={ 64, 65,
10, 23,
23, 22};
Int matriz[2][3]={64,
65, 10, 23, 23, 22};
b)
Asignación:
Int vector[2][3];
Matriz[0][=64;
Matriz[0][1]=65;
Matriz[0][2]=10;
Matriz[1][0]=23;
Matriz[1][1]=23
Matriz[1][2]=22;
Tipo_basico Nombredel array [tamaño dim1][tam dim2][tam dim3]...;
Nombre_del_array[tam dim1][tam dim2][tam dim 3]...;
Las cadenas son arrays unidimensionales de tipo carácter (char) que
requieren un tratamiento especial frente a los arrays unidimensionales con
otros tipos de datos (int, float o double).
En C las cadenas se caracterizan por estar delimitadas por dobles
comillas para determinar el inicio y el final de la misma. Estas cadenas pueden
estar construidas por uno o más caractere. En el siguiente ejemplo, la primera
y la segunda A son aparentemente iguales, aunque requieren tratamientos
diferentes, ya que la primera es considerada una cadena de caracteres y la
segunda un caracter simple o individual.
“A” A \ 0 Cadena de caracteres
A A Carácter individual
DEFINICIÓN
El formato para la definición de un array de caracteres es el
siguiente:
Char Nombre_cadena[Tamaño+1];
Toda cadena de caracteres debe finalizar con el carácter nulo, lo que nos indica que para una cadena de longitud ‘N’, sólo podemos utilizar los N-1 primeros elementos.
Esto nos obliga a crear un array cuya longitud deberá ser superior en
uno al número de carateres que comprende la tira.
Char letras[6]=”abcde”
ACCESO A LOS DATOS
La forma de acceder o referenciar un elemento de un array de caracteres
es la misma que para arrays unidimensionales.
Otra característica de los arrays de tipo carácter es que el nombre del
array es un puntero que siempre apunta por defecto al primer elemento o
componente del array, donde Nombre_cadena o &Nombre_cadena[0] nos proporcionana la dirección de memoria del
primer elemento o componente de la tira de caracteres.
Char cadena[15]=”querido amigo:”;
A)
Inicialización
El formato para la inicialización de un array
de caracteres es el siguiente:
Char
Nombre_cadena[tamaño]=”cadena”;
Char nombre[10] = ”Juan”;
Char saludo[12] = ”Buenos Dias”;
Char saludo[5] = { ‘h’,’o’,’l’,’a’};
Siempre es conveniente inicializar la cadena antes de utilizarla y
limpiarla antes de volverla a utilizar.
Nombre_cadena[0] = ”\0”;
*Nombre_cadena = ‘\0’;
b )Asignación.
Consiste en asignar de manera individual cada
elemento del array aun caracter determinado.
Char vocales[6];
Vocales[0] = ’a’;
Vocales[1] = ‘e’;
Vocales[2] = ‘i’;
Vocales[3] = ’o’;
Vocales[4] = ‘u’;
Vocales[5] =’\0’;
FUNCIONES DE ENTRADA/SALIDA PARA EL
TRATAMIENTO DE ARRAYS DE CARACTERES
Char *gets(char *cadena):
Los caracteres leidos son almacenadoss en el array ‘cadena’ o en la direción de memoria apuntada por ‘cadena’. Se leen todos aquellos caracteres que se encuentran antes del carácter de nueva línea o de final de fichero. Se leen aquellos caracteres que se encuentran antes del carácter de nueva línea o de final de fichero. El carácter retorno de carro, no formará parte integrante de la ‘cadena’. La función gets() no tiene límite de lectura consecutiva de caracteres.
In puts(const char
*cadena);
El carácter nulo que marca el final de la cadena de caracteres es convertido al carácter de nueva línea. La función puts() sólo puede imprimir cadenas de caracteres, lo que la hace más limitada que la función printf(), pero de más rápida ejecución.
Si se ejecuta correctamente, devuelve el último carácter escrito en el dispositivo estandard de salida, siendo siempre en este caso un carácter de salto de línea, en caso contrario devuelve EOF.
ARRAYS INDETERMINADOS
Son arrays que se caracterizan porque pueden ser definidos e
inicializados al mismo tiempo sin necesidad de especificar su tamaño, puex ‘C’
calcula automáticamente las dimensiones del array definido.
Tipo_básico
Nombre_array[] = “Lista de valores”;
a)
char cadena[17] = “Acceso denegado.”;
b)
char cadena[] = “Acceso denegado.”;
Para conocer la longitud de la cadena en un
momento determinado de la ejecución del programa, es necesario emplear el
operador sizeof().
Printf ( “ ’ %s ’ , tiene %d
caracteres \n”, cadena, sizeof ( cadena));
También es posible la utilización de arrays indeterminados con arrays de dos o más dimensiones.
Tipo_básico Nombre_del array
[][tam. Dim2][tam. Dim3] = lista de valores;