Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2...
-
Upload
ercilia-abeyta -
Category
Documents
-
view
217 -
download
2
Transcript of Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2...
![Page 1: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/1.jpg)
Departamento de InformáticaDepartamento de InformáticaUniversidad Técnica Federico Santa MaríaUniversidad Técnica Federico Santa María
Capítulo 2Capítulo 2“Subprogramas/Funciones - “Subprogramas/Funciones -
Arreglos”Arreglos”
Arreglos-Arrays.
![Page 2: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/2.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Supongamos que tenemos 10 variables:
a; b; c; d; e; f; g; h; i; j• Si se desea manipular las variables debemos
poner sus nombres cada vez que se requiera• Un enfoque más general es utilizar las
variables con el mismo nombre, pero diferenciándolas con un nuúmero
• Semejante a como los libros de matemáticas utilizan los vectores y las tuplas
a1; a2; a3; a4; a5; a6; a7; a8; a9; a10
![Page 3: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/3.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Ahora sumar las variables, es mucho más fácil:
![Page 4: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/4.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Suponga que se quieren leer 5000 enteros y hacer algún tipo de operación con ellos
• Con los contenidos que conocemos(¿?) hasta ahora necesitamos utilizar 5000 variables
• Problemas:– De comprensión en la codificación– De utilización de memoria
• La solución es utilizar ARREGLOS ó ARRAYS
![Page 5: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/5.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Los arreglos son conjuntos de variables que comparten un mismo nombre, son capaces de almacenar una colección de datos del mismo tipo.
• Pueden ser referenciadas de manera individual con ayuda de uno o más índices
• Tenemos según su dimensionalidad:– Unidimensionales (Ej. Vector Matemático)– Bidimensionales (Ej. Matriz)– Tridimensional (Ej. Cubo)– Multidimensionales
![Page 6: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/6.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
EjemplosEjemplos
UNIDIMENSIONAL
BIDIMENSIONAL
TRIDIMENSIONAL
![Page 7: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/7.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
EjemplosEjemplos
// Enteros tamaño
int[] unidimensional={2,0,0,7};
//Arreglo bidimensional de enteros
int[][] bidimensional={ {0,0,0},{1,1,1}};
![Page 8: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/8.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Como las variables, al utilizar un arreglo primero que se debe hacer es declararlo.
• Al igual que otras variables, la declaración de un arreglo tiene dos componentes primarios: tipoArreglo[] nombre;
• Un tipo de arreglo incluye el tipo de dato de los elementos que va contener el arreglo.
88
![Page 9: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/9.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Por ejemplo, el tipo de dato para un arreglo que sólo va a contener elementos enteros es un arreglo de enteros.
int[] arrayDeEnteros;
99
![Page 10: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/10.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
int[] arrayDeEnteros;
• La parte int de la declaración indica que arrayDeEnteros es un arreglo de enteros.
• []: indica que su dimensionalidad es uno
• La declaración NO ha asignado memoria para contener los elementos del arreglo.
1010
![Page 11: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/11.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Para asignar memoria se utiliza el operador new.
• La siguiente sentencia asigna la suficiente memoria para que arrayDeEnteros pueda contener diez enteros.
int[] arrayDeEnteros = new int[10];
1111
![Page 12: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/12.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• En general, cuando se crea un arreglo, se utiliza el operador new, más el tipo de dato de los elementos del arreglo, más el número de elementos deseados encerrado entre corchetes cuadrados ('[' y ']').
TipoElemento[] nombreArray = new TipoElementos[tamano];
1212
![Page 13: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/13.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Ahora que se ha asignado memoria para un arreglo ya se pueden asignar valores a los elementos y recuperar esos valores.
for (int j = 0; j < arrayDeEnteros.length; j++) {
arrayDeEnteros[j] = j;
StdOut.println("[j] = " + arrayDeEnteros[j]);
}
1313
![Page 14: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/14.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Como se puede ver en el ejemplo anterior, para referirse a un elemento del arreglo, se añade corchetes cuadrados al nombre del array.
• Entre los corchetes cuadrados se indica (bien con una variable o con una expresión) el índice del elemento al que se quiere acceder.
• El índice del array empieza en 0 y termina en la longitud del array menos uno.
1414
![Page 15: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/15.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Accediendo los elementosAccediendo los elementos
• Un índice describe la posición de un elemento dentro de un arreglo. Recordar en Java el primer elemento tiene el índice cero!
![Page 16: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/16.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos - Arrays
• Hay otro elemento interesante en el pequeño ejemplo anterior. – El bucle for itera sobre cada elemento de
arrayDeEnteros asignándole valores e imprimiendo esos valores.
– Se usa arrayDeEnteros.length para obtener el tamaño real del arreglo, length es una propiedad proporcionada para todos los arreglos de Java.
1616
![Page 17: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/17.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
EjemplosEjemplos
1.- Realizar un programa en el que se ingresen 10 enteros, y luego muestre la suma de ellos y su promedio
2.- Encontrar el máximo de una lista de 10 elementos
3.- Desarrolle un programa que calcule el promedio de las notas de un curso
![Page 18: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/18.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos Bidimensionales
• Un arreglo bidimensional es una lista de arreglos unidimensional
• Para declarar un arreglo bidimensional de enteros int [][] matriz = new int[3][4];
![Page 19: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/19.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
EjemploEjemplo
int fila=3,col=4;
for(fila=0;fila<3;fila++)
for(col=0;col<4;col++)
matriz[fila][col]=fila*col;
//más fácil
for(fila=0;fila<matriz.length;fila++)
for(col=0;col<matriz[0].length;col++)
StdOut.print(matriz[fila][col]);
![Page 20: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/20.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Arreglos Bidimensionales
• Por ejemplo: Cada alumno tiene tres notas, una por cada certamen.
• Entonces las notas de un alumno pueden contenerse en un arreglo de tamaño tres,
• Ahora si queremos mantener las notas de un curso de 52 alumnos.
• Podemos mantener las notas en un arreglo de 52 arreglos de tamaño 3
![Page 21: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/21.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
Notas del curso
int alumnos=52; int notas=3; int curso[][] = new int[alumnos][notas]; int fila,col; for(fila=0;fila<alumnos;fila++) for(col=0;col<notas;col++) curso[fila][col]=StdIn.readInt();
• Con lo cual curso[10][2] representa la nota del tercer certamen del alumno identificado como 10 (que realmente será el 11 ingresado dado que el arreglo comienza en 0)
![Page 22: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/22.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
EjemploEjemplo
• Desarrolle un programa que reciba como entrada las notas de cada pregunta del certamen 1 de programación, para todos los alumnos, y muestre como salida un resumen con las notas finales de todos los alumnos
![Page 23: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/23.jpg)
Departamento de InformáticaDepartamento de InformáticaProgramación de Computadores IWI-131Programación de Computadores IWI-131
MultidimensionalesMultidimensionales
• No existe un limite lógico definido para la cantidad de dimensiones que puede tener un arreglo, físico sí, la memoria reservada.
• Java permite arreglos con mas de dos dimensiones,La forma general de una declaración de arreglo es: tipo[][]…[] nombre_var;nombre_var= new tipo[tamaño1][tamaño2]…[tamañoN];
int a=3,b=4,c=5,i ,j ,k; int[][][] arr= new int[a][b][c]; for(i=0; i<a; i++) for(j=0; j<b; j++) for(k=0; k<c; k++) arr[i][j][k]=i+j+k;
![Page 24: Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.](https://reader036.fdocumento.com/reader036/viewer/2022062519/5665b4341a28abb57c8ff34b/html5/thumbnails/24.jpg)
Departamento de InformáticaDepartamento de InformáticaUniversidad Técnica Federico Santa MaríaUniversidad Técnica Federico Santa María
FinFin
Preparando la revancha …