08a Arreglos
Arreglos
Arreglos
• Un computador no sirve para sacar
promedios de 3 notas.
– ¡Pero si de 10.000!
– ¿Definir 10.000 variables?
– ¿Definir funciones con 10.000 parámetros?
Arreglos
void main(){
int nota1, nota2, nota3,……nota10000;
}
double promedio(int n1, int n2, …,n10000);
Arreglos
• ¿Como decirle al computador que
nota1..nota10000 son todas notas?
• ¿Cómo acceder a todas con unciclo for?
• Se hace necesario especificar “grupos” de
variables
– Todas del mismo tipo.
– Todas con un nombre parecido.
– Definidas con una secuencia especifica.
Arreglos
• Un arreglo es:
– Una variable que define un “grupo” de
variables.
– Define un nombre
– Define un tipo
– Define el tamaño del “grupo”.
– Las variables dentro del “grupo” estan
ordenadas
Arreglos
1005AA
Nota 1
2FFF88
Nota10.000
1005AA
.
.
.
1005AA+10000
FF00B2
Nota 2
FF0F9D
Nota 3
Nota 1
Nota 2
Nota 3
Nota 10.000
Arreglos
Nota
1
2
3
.
.
.
10.000
10.000
Definición de arreglos
• Se definen como variables comunes y corrientes
– Pueden ser locales, globales y parámetros.
– Tienen un nombre que debe seguir la restricciones de
toda variable.
– El nombre debe ser unico dentro del contexto
– Tienen un tipoespecífico.
• Además
– Definen un tamaño.
– Definen una forma de acceder a cada una de la
variables del “grupo”.
Definición de arreglos
Cualquier
tipo válido
Cualquier
nombre válido
Corchetes
obligatorios
Constante que
especifica el
tamaño
Definición de arreglos
#define TAMAGNO 32
…
int nota1,nota2,…,nota10000;
int notas[10000];
Float otro[TAMAGNO];
Charmuchos[80];
Definición de arreglos
• El tamaño debe ser constante
• No se pueden utilizar variables para
especificar el tamaño.
• Se suelen utilizar constantes de
preprocesador.
Definición de arreglos
…
int tamagno=10000;
int notas[tamagno];
…
#define tamagno 10000
…
int notas[tamagno];
…
Acceso a arreglos
• Como los arreglos definen “grupos”, es importante
poder acceder a los “integrantes” delarreglo.
• Cada “integrante” se representa por un indice
secuencial. Se les llama elementos.
• El indice varia entre 0 y (tamaño-1).
• Cada elemento es una variable común y silvestre.
• Para acceder a una de estas variables (lectura y
escritura) se utiliza la notación “[
Acceso a arreglos
Modificacion el elemento correspondiente al indice
Recuperación el elemento correspondiente al indice
Acceso a arreglos
Primer elemento del arreglo “notas”
…
int notas[10000]; Recupera el valor del primer elemento
notas[0]=0;
printf(“%d\n”,notas[0]);
notas[1]=notas[0]+1;
printf(“%d\n”,notas[1]);
…
notas[10000]=notas[9999]+1;
printf(“%d\n”,notas[10000]);
…
Modifica el valor de la segunda variable
Ejemplo 1
int main(){
intnumeros[10];
int i;
numeros[0]=0;
for(i=1;i<10;i++)
numeros[i]=numeros[i-1]+1;
for(i=0;i<10;i++)
printf("%d\n",numeros[i]);
return 1;
}
0
1
2
3
4
5
6
7
8
9
Ejemplo 2
int main(){
int numeros[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&numeros[i]);
for(i=0;i<10;i++)
printf("%d\n",numeros[i]);
return 1;
}
Ejemplo 3
#include
#define N 4
int main(){
int numeros[N];
int i;
double sum;for(i=0;i
sum=0;
for(i=0;i
}
return 1;
}
Ejemplo 4
#include
#define N 4
int main(){
int numeros[N];
int i;
double sum, parit,pgeom;
sum=0;
pgeom=1;
for(i=0;i
pgeom = pgeom * numeros[i];
}
parit = 1.0*sum / N;
pgeom = pow(pgeom, 1.0/N);
return 1;
}
Ejemplo 5
#include
#define N 4
intmain(){
int numeros[N];
int i;
int maximo, minimo;
minimo=1000;
maximo=0;
for(i=0;i
if(numeros[i]>maximo)
maximo=numeros[i];
}
return 1;
}
Acceso a arreglos
• Solo se puede acceder a los indices entre el
cero y tamaño-1.
• Sin embargo, C no realiza un chequeo de
acceso a indices inválidos.
• ¿Qué pasa si accedemos a un indice
invalido?
• Veremos el...
Regístrate para leer el documento completo.