You are on page 1of 16

Programacin en C

Prof. Luciano Beato

Programacin I

Programacin en C
ARREGLOS

Prof. Luciano Beato

Programacin I

ARREGLOS
Concepto de array o arreglo
Un arreglo(lista o tabla) es una secuencia de datos del mismo tipo. Los datos se llaman elementos del arreglo y se numeran consecutivamente 0, 1, 2, 3... . Estos nmeros se denominan valores ndice o subndice del arreglo Estos nmeros localizan la posicin del elemento dentro del arreglo, proporcionando acceso directo al arreglo. El tipo de elementos almacenados en el arreglo puede ser cualquier tipo de dato de C, incluyendo estructuras definidas por el usuario.
Prof. Luciano Beato
Programacin I 3

ARREGLOS
Declaracin de un arreglo
Se debe declarar un arreglo antes de utilizarlo. Un arreglo se declara de modo similar a otros tipos de datos, excepto que se debe indicar al compilador el tamao o longitud del arreglo. Para indicar al compilador el tamao o longitud del arreglo se debe hacer seguir al nombre, del tamao encerrado entre corchetes. La sintaxis para declarar un arreglo de una dimensin determinada es:
tipo nombrearreglo [numeroDeElementos];

Prof. Luciano Beato

Programacin I

ARREGLOS
Ejemplos
int edad[5];

arreglo edad contiene 5 elementos: el primero, edad[0] y el ltimo, edad[4].

float salarios[25]; #define MX 120 char buffer[MX+1];

Declara un arreglo de 25 elementos float.

Declara un arreglo de caracteres de tamao MX+1, el primer elemento es buffer[0] y el ltimo buffer[MX ]

Se pueden referenciar elementos del arreglo utilizando frmulas para los subndices. Por ejemplo:
edad[4] buffer[total-5] salario[mes[i]*5]

Prof. Luciano Beato

Programacin I

ARREGLOS
Verificacin del ndice de un arreglo
C, al contrario que otros lenguajes de programacin, no verifica el valor del ndice de la variable que representa al arreglo. El ndice de un arreglo fuera de rango no genera un error en compilacin. Sin embargo los resultados de la ejecucin sern incorrectos. Por ejemplo:
int lista[10]; for (i = 0; i <= 10; i++) suma += lista[i];

Prof. Luciano Beato

Programacin I

ARREGLOS
INICIALIZACIN DE UN ARREGLO
Se deben asignar valores a los elementos del arreglo antes de utilizarlos. El mtodo utilizado, normalmente, es inicializar el arreglo completo en una sola sentencia. Por ejemplo:
int numeros[6] = {10, 20, 30, 40, 50, 60};

Cuando se inicializa un arreglo, el tamao del arreglo se puede determinar automticamente por las constantes de inicializacin. Estas constantes se separan por comas y se encierran entre llaves.
double v[] = {1.0, 3.0, 5.0, 7.0}; Prof. Luciano Beato

Programacin I

ARREGLOS
ARREGLOS DE CARACTERES Y CADENAS
Una cadena de texto es un conjunto de caracteres terminado en caracter nulo, tales como "ABCDEFG". C soporta cadenas de texto utilizando un arreglo de caracteres que contenga una secuencia de caracteres:
char cadena[] = "ABCDEFG";

Es importante comprender la diferencia entre un arreglo de caracteres y una cadena de caracteres. Las cadenas contienen un carcter nulo (\0) al final del arreglo de caracteres. El compilador inserta automticamente un carcter nulo al final de la cadena.
Prof. Luciano Beato
Programacin I 8

ARREGLOS
Cadenas
El medio ms fcil de inicializar un arreglo de caracteres es hacer la inicializacin de la declaracin:
char Cadena[7] = "PALOMA";

El compilador inserta automticamente un carcter nulo al final de la cadena.

No se puede asignar una cadena a un array del siguiente modo: Cadena = "PALOMA";

Prof. Luciano Beato

Programacin I

ARREGLOS
ARREGLOS MULTIDIMENSIONALES
Los arreglos multidimensionales son aquellos que tienen ms de una dimensin y, en consecuencia, ms de un ndice. Los arreglos ms usuales son los de dos dimensiones, conocidos tambin por el nombre de tablas o matrices. La sintaxis para la declaracin de un arreglo de dos dimensiones es:
<tipoElemento> <nombrearreglo> [<NmeroDeFilas<] [<NmeroDeColumnas>]

char Pantalla[25][80]; int puestos[6][8];

Prof. Luciano Beato

Programacin I

10

ARREGLOS
Inicializacin de arreglos multidimensionales
La inicializacin consta de una lista de constantes separadas por comas y encerradas entre llaves, como en los ejemplos siguientes:
int tabla1[2][3] = {51, 52, 53, 54, 55, 56};

o bien en los formatos mas amigables:


int tabla[2][3]= { {51, 52, 53}, 54, 55, 56} }; int tabla[2][3]= {{51, 52, 53}, {54, 55, 56}};

Prof. Luciano Beato

Programacin I

11

ARREGLOS
Acceso a los elementos de los arreglos bidimensionales
Se puede acceder a los elementos de arreglos bidimensionales de igual forma que a los elementos de un arreglo unidimensional. La diferencia reside en que en los elementos bidimensionales deben especificarse los ndices de la fila y la columna. Ejemplos: tabla[2][3] = 4.5; resistencias[2][4] = 50; ventas = Tabla[1][1]; dia = Semana[3][6]; scanf("%d",&tabla[2][3]); printf("%4d",tabla[1][1]);

Prof. Luciano Beato

Programacin I

12

ARREGLOS
Acceso a elementos mediante bucles
Su sintaxis es:
for (IndiceFila = 0; IndiceFila < NumFilas; ++IndiceFila) for (IndiceCol = 0; IndiceCol < NumCol; ++IndiceCol) Procesar elemento[IndiceFila][IndiceCol];

Ejemplo. Lectura y visualizacin de un arreglo de dos dimensiones.


float discos[2][4]; int fila, col; for (fila = 0; fila < 2; fila++) for (col = 0; col < 4; col++) scanf("%f",&discos[fila][col]); for (fila = 0; fila < 2; fila++) for (col = 0; col < 4; col++) printf("\n Pts %.1f \n",discos[fila][col]);

Prof. Luciano Beato

Programacin I

13

ARREGLOS
ARREGLOS COMO PARMETROS
En C todos los arreglos se pasan por referencia (direccin). C trata automticamente la llamada a la funcin como si hubiera situado el operador de direccin & delante del nombre del arreglo. Dadas las declaraciones:
#define MAX 100 double datos[MAX];

Se puede declarar una funcin que acepte un arreglo de valores double como parmetro con estos prototipos:
double SumaDeDatos(double datos[MAX]); double SumaDeDatos(double datos[], int n);

Prof. Luciano Beato

Programacin I

14

ARREGLOS
Paso de cadenas como parmetros
Cuando una cadena se pasa a una funcin conoce que se ha almacenado el final del arreglo de caracteres cuando lee un valor de 0 en un elemento del arreglo. Las cadenas utilizan siempre un 0 para indicar que es el ltimo elemento del arreglo de caracteres. Este 0 es el carcter nulo del cdigo de caracteres ASCII. Los siguiente prototipos de funciones tienen parmetros cadenas de caracteres:
int buscar(char cad[], char vocal); void concatenar(char * dest, const char*org, int n); Prof. Luciano Beato

Programacin I

15

Programacin en C

Prof. Luciano Beato

Programacin I

16

You might also like