Story Transcript
TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C
Tipos de Datos Compuestos Estáticos en C
UNIDAD 5: ARRAYS (listas y tablas) EN C 5.1
INTRODUCCIÓN
Arreglo: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una colección de datos del mismo tipo. Los arreglos se caracterizan por: ♦ Almacenan los elementos en posiciones contiguas de memoria. ♦ Tienen un mismo nombre de variable que representa a todos los elementos. ♦ Para hacer referencia a esos elementos es necesario utilizar un índice que especifica el lugar que ocupa cada elemento dentro del archivo. Un array (lista o tabla) es una colección de datos del mismo tipo que se referencian por un nombre común. Los datos se llaman elementos del array y se numeran consecutivamente 0, 1, 2, 3, etc. El tipo de elementos almacenados en el array puede ser cualquier tipo de dato C, incluyendo estructuras definidas por el usuario. Normalmente el array se utiliza para almacenar tipos tales como char, int o float. Cada ítem del array se denomina elemento. Los elementos de un array se numeran consecutivamente 0, 1, 2, 3... Estos números se denominan valores índice o subíndice del array. El término “subíndice” se utiliza ya que se especifica igual que en matemáticas, como una secuencia a0, a1, a2, a3… Estos números localizan la posición del elemento dentro del array, proporcionando acceso directo al array. Si el nombre del array es "a", entonces a[0] es el nombre (valor) del elemento que está en la posición 0, a[1] es el nombre (valor) del elemento que está en la posición 1, etc. En general, el elemento i-ésimo está en la posición i-1. De modo que si el array tiene n elementos, sus nombres son a[0], a[1], a[2], …., a[n-1]. Gráficamente se representa así el array “a” de 6 elementos: int a[6]; //Declara un array de 6 elementos enteros
Figura: Array de 6 elementos. El array tiene 6 elementos: a[0] contiene 5, a[1] contiene 8, a[2] contiene 6, a[3] contiene 10, a[4] contiene 9, a[5] contiene 4. En un array sus elementos se almacenan siempre en una secuencia de posiciones de memoria contiguas. En C los índices de un array siempre tiene como límite inferior 0, como índice superior el tamaño del array menos 1. 5.2
DEFINICIÓN Y DECLARACIÓN DE ARRAYS EN C
Al igual que con cualquier tipo de variable, se debe declarar un array antes de utilizarlo. Un array se declara de forma similar a otros tipos de datos, excepto que se debe indicar al compilador el tamaño o longitud del array. La sintaxis para declarar un array es simple: tipo nombreArray [numerodeElementos];
2
Tipos de Datos Compuestos Estáticos en C
Siendo: ♦ tipo: El tipo de los elementos que conformarán el array. ♦ nombreArray: El nombre de nuestro array . ♦ numerodeElementos: Un número entero mayor que cero que indica el tamaño del array. Ejemplos: int array1[100]; /* Declara un array de 100 elementos enteros */ char array2[15]; /* Declara un array de 15 caracteres */ Si por ejemplo, se quiere crear un array de números reales y su tamaño es una constante representada por un parámetro: #define NE 20 float array[NE]; Para acceder al elemento 3 y leer un valor de entrada del array: scanf(“%f”,&array[2]); 5.2.1 SUBÍNDICES DE UN ARRAY El índice de un array se denomina, con frecuencia, subíndice del array. El término procede de las matemáticas, en las que un subíndice se utiliza para representar un elemento determinado. int numeros[4]; numeros0 equivale numeros1 equivale numeros2 equivale numeros3 equivale
a a a a
numeros[0] numeros[1] numeros[2] numeros[3]
El método de numeración del elemento i-ésimo con el índice o subíndice i-1 se denomina indexación basada en cero. Su uso tiene el efecto de que el índice de un elemento del array es siempre el mismo que el número de pasos desde el elemento inicial numeros[0] a ese elemento. Por ejemplo, numeros[3] está a 3 pasos o posiciones del elemento numeros[0]. Ejemplos: int edad[5]; /*Array edad; contiene 5 elementos: el primero edad[0] y el último edad[4] */ int pesos[25], longitudes[100]; // Declara dos arrays de enteros float salarios[25]; //Declara un array de 25 elementos float double temperaturas[50]; //Declara un array de 50 elementos double char letras[15]; //Declara un array de caracteres 5.2.2 ALMACENAMIENTO EN MEMORIA DE LOS ARRAYS Los elementos de los arrays se almacenan en bloques contiguos. Así por ejemplo, los arrays: int edades[5]; char codigos[5];
3
Tipos de Datos Compuestos Estáticos en C
Ejemplo:
char ciudad[]= “Leon”; ciudad L
[0]
e
[1]
o
[2]
n
[3]
\0
A tener en cuenta, en las cadenas de caracteres el sistema siempre inserta un último carácter (nulo, ‘\0’) para indicar el fin de cadena. 5.2.3 INICIALIZACIÓN DE UN ARRAY Se deben asignar valores a los elementos del array antes de utilizarlos, tal como se asignan valores a variables. Para asignar valores a cada elemento del array de enteros “edades”, se puede escribir: edades [0] = 15; edades [1] = 25; edades [3] = 30; edades [4] = 35; La primera sentencia fija edades[0] al valor 15, precios[1] al valor 25, etc. Sin embargo, este método no es práctico cuando el array contiene muchos elementos. El método utilizado, normalmente, es inicializar el array completo en una sola sentencia. Cuando se inicializa un array, el tamaño del array se puede determinar automáticamente por las constantes de inicialización. Estas constantes se separan por comas y se encierran entre llaves, como en los siguientes ejemplos: int numeros[6] = {10, 20, 30, 40, 50, 60}; int n[ ]= {3, 4, 5}; //Declara un array de 3 elementos char c[ ] = {‘L’,’u’,’i’,’s’}; //Declara un array de 4 elementos En C los arrays de caracteres, las cadenas, se caracterizan por tener un carácter final que indica el fin de la cadena, es el carácter nulo. Lo habitual es inicializar un array de caracteres (una variable cadena) con una constante cadena. char cad [ ] = “Hola mundo”;
4
Tipos de Datos Compuestos Estáticos en C
El método de inicializar arrays mediante valores constantes después de su definición es adecuado cuando el número de elementos del array es pequeño. Por ejemplo, para inicializar un array de 10 enteros a los valores de 10 a 1 y visualizar dichos valores en un orden inverso, se puede escribir: Por ejemplo, para inicializar todos los valores del array edades al valor 0, se puede utilizar el siguiente programa: Ejemplo #1: /*Programa para inicializar un array de 10 elementos enteros a 0*/ //inicializar.c #include void main() { int edades[10],i; for(i=0;i