Vous êtes sur la page 1sur 15

Arreglos en lenguaje C

Programacion estructurada
Arreglos

Oscar Alvarado Nava


oscar.alvarado.nava@gmail.com
Departamento de Electr
onica
Divisi
on de Ciencias B
asicas e Ingeniera
Universidad Aut
onoma Metropolitana, Unidad Azcapotzalco

13O, octubre de 2013

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

1/15

Arreglos en lenguaje C

Contenido

Arreglos en lenguaje C
Arreglos en lenguaje C
Uni-dimensionales

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

2/15

Arreglos en lenguaje C
Arreglos en lenguaje C

Arreglos
Un arreglo (array ) es un conjunto de variables del mismo tipo
que son referenciadas por un identificador
Cada elemento en el arreglo es accedido por un ndice
En C, un arreglo es un segmento de memoria (locaciones de
memoria contiguas)
Los arreglos pueden ser de varias dimensiones, comunmente
de una o dos dimensiones
El arreglo mas com
un es C es la cadena (string ), el cual es un
arreglo de caracteres terminado por el caracter nulo (NULL,
\0)
Los arreglos y los apuntadores (pointer ) estan estrechamente
relacionados
Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

3/15

Arreglos en lenguaje C
Arreglos en lenguaje C

Puntos de vista logico

Un arreglo uni-dimensional es un conjunto de elementos del


mismo tipo ordenados en fila. Tambien son llamado lista,
secuencia o vector
Un arreglo bi-dimensional es un conjunto de elementos del
mismo tipo ordenados en filas y columnas. Tambien son
llamados matrices

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

4/15

Arreglos en lenguaje C
Uni-dimensionales

Declaracion de un arreglo uni-dimensional

La forma de declarar un arreglo uni-dimensional es


tipo identificador[tama~
no];
Como cualquier otra variable, un arreglo debe de ser declarado
antes de utilizarse
tipo es el tipo de variables que podra almacenar el arreglo
tama~
no define el n
umero de elementos que contendra el
arreglo

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

5/15

Arreglos en lenguaje C
Uni-dimensionales

Declaracion de un arreglo

float unArreglo[10];
unArreglo

En tiempo de compilaci
on se reserva un segmento de memoria
suficiente para alojar el arreglo
En este caso, si cada float es de 4 bytes, el segmento
debera de ser de 40 bytes
Ni compilador, ni el cargador inicializan el arreglo

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

6/15

Arreglos en lenguaje C
Uni-dimensionales

dir float.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

/* Programacion estructurada , 13 O , Oscar Alvarado Nava


Direcciones de memoria de un arreglo de flotantes */
# include < stdio .h >
int main ()
{
float unArreglo [10]; /* declara un arreglo de 10 flotantes */
printf ( " Arreglo de %d bytes \ n " , sizeof ( unArreglo ) ) ;
printf ( " Cada elemento es de %d bytes \ n " , sizeof ( unArreglo [0]) ) ;
printf ( " Direccion de memoria \ n " ) ;
printf ( " 1 er elemento : %p \ n " , & unArreglo [0]) ;
printf ( " 2 do elemento : %p \ n " , & unArreglo [1]) ;
printf ( " 3 er elemento : %p \ n " , & unArreglo [2]) ;
printf ( " 4 to elemento : %p \ n " , & unArreglo [3]) ;
printf ( " 5 to elemento : %p \ n " , & unArreglo [4]) ;
printf ( " 6 to elemento : %p \ n " , & unArreglo [5]) ;
printf ( " 7 mo elemento : %p \ n " , & unArreglo [6]) ;
printf ( " 8 vo elemento : %p \ n " , & unArreglo [7]) ;
printf ( " 9 no elemento : %p \ n " , & unArreglo [8]) ;
printf ( " 10 mo elemento : %p \ n " , & unArreglo [9]) ;
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

7/15

Arreglos en lenguaje C
Uni-dimensionales

dir char.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

/* Programacion estructurada , 13 O , Oscar Alvarado Nava


Direcciones de memoria de un arreglo de chars */
# include < stdio .h >
int main ()
{
char unArreglo [10]; /* declara un arreglo de 10 caracteres */
printf ( " Arreglo de %d bytes \ n " , sizeof ( unArreglo ) ) ;
printf ( " Cada elemento es de %d bytes \ n " , sizeof ( unArreglo [0]) ) ;
printf ( " Direccion de memoria \ n " ) ;
printf ( " 1 er elemento : %p \ n " , & unArreglo [0]) ;
printf ( " 2 do elemento : %p \ n " , & unArreglo [1]) ;
printf ( " 3 er elemento : %p \ n " , & unArreglo [2]) ;
printf ( " 4 to elemento : %p \ n " , & unArreglo [3]) ;
printf ( " 5 to elemento : %p \ n " , & unArreglo [4]) ;
printf ( " 6 to elemento : %p \ n " , & unArreglo [5]) ;
printf ( " 7 mo elemento : %p \ n " , & unArreglo [6]) ;
printf ( " 8 vo elemento : %p \ n " , & unArreglo [7]) ;
printf ( " 9 no elemento : %p \ n " , & unArreglo [8]) ;
printf ( " 10 mo elemento : %p \ n " , & unArreglo [9]) ;
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

8/15

Arreglos en lenguaje C
Uni-dimensionales

dir double.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

/* Programacion estructurada , 13 O , Oscar Alvarado Nava


Direcciones de memoria de un arreglo de doubles */
# include < stdio .h >
int main ()
{
double unArreglo [10]; /* declara un arreglo de 10 dobles */
printf ( " Arreglo de %d bytes \ n " , sizeof ( unArreglo ) ) ;
printf ( " Cada elemento es de %d bytes \ n " , sizeof ( unArreglo [0]) ) ;
printf ( " Direccion de memoria \ n " ) ;
printf ( " 1 er elemento : %p \ n " , & unArreglo [0]) ;
printf ( " 2 do elemento : %p \ n " , & unArreglo [1]) ;
printf ( " 3 er elemento : %p \ n " , & unArreglo [2]) ;
printf ( " 4 to elemento : %p \ n " , & unArreglo [3]) ;
printf ( " 5 to elemento : %p \ n " , & unArreglo [4]) ;
printf ( " 6 to elemento : %p \ n " , & unArreglo [5]) ;
printf ( " 7 mo elemento : %p \ n " , & unArreglo [6]) ;
printf ( " 8 vo elemento : %p \ n " , & unArreglo [7]) ;
printf ( " 9 no elemento : %p \ n " , & unArreglo [8]) ;
printf ( " 10 mo elemento : %p \ n " , & unArreglo [9]) ;
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

9/15

Arreglos en lenguaje C
Uni-dimensionales

Inicializacion de un arreglo
Ni compilador, ni el cargador inicializan el arreglo
Sera responsabilidad del programador inicializar el arreglo con
valores adecuados
La inicializacion se puede hacer al declarar el arreglo
...
float puntos[5] = {1.1, -2.2, 3.3, -4.4, 5.5};
...
char vocales[5] = {a, e, i, o, u};
...
int respuesta[2] = {0, 1};
...

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

10/15

Arreglos en lenguaje C
Uni-dimensionales

Indexacion del arreglo


float unArreglo[10];
0
unArreglo

3.1 1.2 1.3 4.4 1.5 2.5 2.7 3.1 3.3 3.9

Cada elemento del arreglo es identificado por un n


umero
En cada elemento del arreglo se puede almacenar un valor del
tipo del arreglo
Un arreglo de N elementos debera ser indexado de 0 a N-1
Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

11/15

Arreglos en lenguaje C
Uni-dimensionales

Acceso al arreglo
float unArreglo[10];
0
unArreglo

3.1 1.2 1.3 4.4 1.5 2.5 2.7 3.1 3.3 3.9

Tambien se utiliza el operador corchete para indexar el arreglo


y acceder a uno de sus elementos
La sentencia
var = unArreglo[0];
almacena en la variable var el valor del primer elemento (var
debe ser de tipo float)
Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

12/15

Arreglos en lenguaje C
Uni-dimensionales

Almacenamiento en el arreglo

0
unArreglo

3.1 1.2 1.3 9.9 1.5 2.5 2.7 3.1 3.3 3.9

De la misma forma se utiliza el operador corchete para indexar


el arreglo y almacenar un valor en uno de sus elementos
La sentencia
unArreglo[3] = 9.9;
almacena el valor 9.9 en el cuarto elemento

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

13/15

Arreglos en lenguaje C
Uni-dimensionales

promedio arreglo.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

/* Programacion estructurada , 13 O , Oscar Alvarado Nava


Solicita 10 valores , los almacena en un arreglo
muesta los valores y calcula el promedio */
# include < stdio .h >
# define NCALIF 10
int main ()
{
float calif [ NCALIF ]; /* declara un arreglo de 5 flotantes */
int i ; /* para indexar el arreglo y como contador en los ciclos */
float suma =0.0 , promedio ;
/* solicita las calificaciones */
for ( i =0; i < NCALIF ; i ++)
{
printf ( " calificacion %d : " ,i +1) ;
scanf ( " %f " , & calif [ i ]) ;
}
/* muestra las calificaciones */
for ( i =0; i < NCALIF ; i ++)
printf ( " calificacion %d = %f \ n " ,i +1 , calif [ i ]) ;
/* realiza la suma de las calificaciones */
for ( i =0; i < NCALIF ; i ++)
suma += calif [ i ];
promedio = suma /( float ) NCALIF ; /* cambio de tipo a flotante de NCALIF */
printf ( " El promedio es : %f \ n " , promedio ) ;
return 0;
}

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

14/15

Arreglos en lenguaje C
Uni-dimensionales

Desbordamiento de arreglos

Ni en la compilaci
on ni en la ejecuci
on del programa se
prueban los lmites de un arreglo
Sera responsabilidad del programador asegurar que el arreglo
no sea desbordado
int puntos[10],i;
...
for(i=0; i<100; i++)
puntos[i] = i+1;
...

Oscar Alvarado Nava

UAM Azcapotzalco

Arreglos

15/15

Vous aimerez peut-être aussi