Arreglos
-
Upload
stephany-bradbury -
Category
Documents
-
view
7 -
download
0
description
Transcript of Arreglos
-
Arreglos en lenguaje C
Programacion estructuradaArreglos
Oscar Alvarado Nava
Departamento de ElectronicaDivision de Ciencias Basicas e Ingeniera
Universidad Autonoma Metropolitana, Unidad Azcapotzalco
13O, octubre de 2013
Oscar Alvarado Nava UAM Azcapotzalco Arreglos 1/15
-
Arreglos en lenguaje C
Contenido
1 Arreglos en lenguaje CArreglos en lenguaje CUni-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 tipoque 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 dememoria contiguas)
Los arreglos pueden ser de varias dimensiones, comunmentede una o dos dimensiones
El arreglo mas comun es C es la cadena (string), el cual es unarreglo de caracteres terminado por el caracter nulo (NULL,\0)Los arreglos y los apuntadores (pointer) estan estrechamenterelacionados
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 delmismo tipo ordenados en fila. Tambien son llamado lista,secuencia o vector
Un arreglo bi-dimensional es un conjunto de elementos delmismo tipo ordenados en filas y columnas. Tambien sonllamados 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 declaradoantes de utilizarse
tipo es el tipo de variables que podra almacenar el arreglo
tama~no define el numero de elementos que contendra elarreglo
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 compilacion se reserva un segmento de memoriasuficiente para alojar el arreglo
En este caso, si cada float es de 4 bytes, el segmentodebera 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 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Direcciones de memoria de un arreglo de flotantes */3 #include 45 int main()6 {7 float unArreglo [10]; /* declara un arreglo de 10 flotantes */89 printf("Arreglo de %d bytes\n", sizeof(unArreglo));
10 printf("Cada elemento es de %d bytes\n", sizeof(unArreglo [0]));1112 printf("Direccion de memoria\n");13 printf("1er elemento: %p\n", &unArreglo [0]);14 printf("2do elemento: %p\n", &unArreglo [1]);15 printf("3er elemento: %p\n", &unArreglo [2]);16 printf("4to elemento: %p\n", &unArreglo [3]);17 printf("5to elemento: %p\n", &unArreglo [4]);18 printf("6to elemento: %p\n", &unArreglo [5]);19 printf("7mo elemento: %p\n", &unArreglo [6]);20 printf("8vo elemento: %p\n", &unArreglo [7]);21 printf("9no elemento: %p\n", &unArreglo [8]);22 printf("10mo elemento: %p\n", &unArreglo [9]);2324 return 0;25 }
Oscar Alvarado Nava UAM Azcapotzalco Arreglos 7/15
-
Arreglos en lenguaje C
Uni-dimensionales
dir char.c
1 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Direcciones de memoria de un arreglo de chars*/3 #include 45 int main()6 {7 char unArreglo [10]; /* declara un arreglo de 10 caracteres */89 printf("Arreglo de %d bytes\n", sizeof(unArreglo));
10 printf("Cada elemento es de %d bytes\n", sizeof(unArreglo [0]));1112 printf("Direccion de memoria\n");13 printf("1er elemento: %p\n", &unArreglo [0]);14 printf("2do elemento: %p\n", &unArreglo [1]);15 printf("3er elemento: %p\n", &unArreglo [2]);16 printf("4to elemento: %p\n", &unArreglo [3]);17 printf("5to elemento: %p\n", &unArreglo [4]);18 printf("6to elemento: %p\n", &unArreglo [5]);19 printf("7mo elemento: %p\n", &unArreglo [6]);20 printf("8vo elemento: %p\n", &unArreglo [7]);21 printf("9no elemento: %p\n", &unArreglo [8]);22 printf("10mo elemento: %p\n", &unArreglo [9]);2324 return 0;25 }
Oscar Alvarado Nava UAM Azcapotzalco Arreglos 8/15
-
Arreglos en lenguaje C
Uni-dimensionales
dir double.c
1 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Direcciones de memoria de un arreglo de doubles */3 #include 45 int main()6 {7 double unArreglo [10]; /* declara un arreglo de 10 dobles */89 printf("Arreglo de %d bytes\n", sizeof(unArreglo));
10 printf("Cada elemento es de %d bytes\n", sizeof(unArreglo [0]));1112 printf("Direccion de memoria\n");13 printf("1er elemento: %p\n", &unArreglo [0]);14 printf("2do elemento: %p\n", &unArreglo [1]);15 printf("3er elemento: %p\n", &unArreglo [2]);16 printf("4to elemento: %p\n", &unArreglo [3]);17 printf("5to elemento: %p\n", &unArreglo [4]);18 printf("6to elemento: %p\n", &unArreglo [5]);19 printf("7mo elemento: %p\n", &unArreglo [6]);20 printf("8vo elemento: %p\n", &unArreglo [7]);21 printf("9no elemento: %p\n", &unArreglo [8]);22 printf("10mo elemento: %p\n", &unArreglo [9]);2324 return 0;25 }
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 convalores 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 1 2 3 4 5 6 7 8 9
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 numero
En cada elemento del arreglo se puede almacenar un valor deltipo 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 1 2 3 4 5 6 7 8 9
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 arregloy acceder a uno de sus elementos
La sentenciavar = unArreglo[0];
almacena en la variable var el valor del primer elemento (vardebe ser de tipo float)
Oscar Alvarado Nava UAM Azcapotzalco Arreglos 12/15
-
Arreglos en lenguaje C
Uni-dimensionales
Almacenamiento en el arreglo
0 1 2 3 4 5 6 7 8 9
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 indexarel arreglo y almacenar un valor en uno de sus elementos
La sentenciaunArreglo[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 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Solicita 10 valores , los almacena en un arreglo3 muesta los valores y calcula el promedio */4 #include 5 #define NCALIF 106 int main()7 {8 float calif[NCALIF ]; /* declara un arreglo de 5 flotantes */9 int i; /*para indexar el arreglo y como contador en los ciclos */
10 float suma =0.0, promedio;11 /* solicita las calificaciones */12 for(i=0; i
-
Arreglos en lenguaje C
Uni-dimensionales
Desbordamiento de arreglos
Ni en la compilacion ni en la ejecucion del programa seprueban los lmites de un arreglo
Sera responsabilidad del programador asegurar que el arreglono sea desbordado
int puntos[10],i;
...for(i=0; i