1 / 30

Capítulo 2 “Subprogramas/Funciones - Arreglos”

Capítulo 2 “Subprogramas/Funciones - Arreglos”. Arreglos-Arrays. 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

yanni
Télécharger la présentation

Capítulo 2 “Subprogramas/Funciones - Arreglos”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capítulo 2“Subprogramas/Funciones - Arreglos” Arreglos-Arrays.

  2. 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

  3. Arreglos - Arrays • Ahora sumar las variables, es mucho más fácil:

  4. 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

  5. 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

  6. Ejemplos UNIDIMENSIONAL BIDIMENSIONAL TRIDIMENSIONAL

  7. Ejemplos // Enteros tamaño int[] unidimensional={2,0,0,7}; //Arreglo bidimensional de enteros int[][] bidimensional={ {0,0,0},{1,1,1}};

  8. Arreglos - Arrays • Como las variables, al utilizar un arreglo primero que se debe hacer es declararlo. • Al igualque 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.

  9. Arreglos - Arrays • Porejemplo, el tipo de dato para un arreglo que sólo va a contener elementos enteros es un arreglo deenteros. int[] arrayDeEnteros;

  10. 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 NOha asignado memoria para contener los elementos del arreglo.

  11. Arreglos - Arrays • Para asignar memoria se utiliza el operador new. • La siguiente sentencia asigna la suficiente memoria para que arrayDeEnteros pueda contener diezenteros. int[] arrayDeEnteros = new int[10];

  12. Arreglos - Arrays • En general, cuando se crea un arreglo, se utiliza el operador new, más el tipo de dato de loselementos del arreglo, más el número de elementos deseados encerrado entre corchetes cuadrados('[' y ']'). TipoElemento[] nombreArray = new TipoElementos[tamano];

  13. Arreglos - Arrays • Ahora que se ha asignado memoria para un arreglo ya se pueden asignar valores a los elementos yrecuperar esos valores. for (int j = 0; j < arrayDeEnteros.length; j++) { arrayDeEnteros[j] = j; StdOut.println("[j] = " + arrayDeEnteros[j]); }

  14. Arreglos - Arrays • Como se puede ver en el ejemplo anterior, para referirse a un elemento del arreglo, se añadecorchetes cuadrados al nombre del array. • Entre los corchetes cuadrados se indica (bien con unavariable 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.

  15. Accediendo 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!

  16. Arreglos - Arrays • Hay otro elemento interesante en el pequeño ejemplo anterior. • El bucle for itera sobre cadaelemento de arrayDeEnteros asignándole valores e imprimiendo esos valores. • Se usaarrayDeEnteros.length para obtener el tamaño real del arreglo, length es una propiedadproporcionada para todos los arreglos de Java.

  17. Ejemplos 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

  18. Ejemplo notas alumno • public class Notas • { • public static void main(String[]args) • { • int Nota[] = new int[7]; • int i; • float suma=0; • for(i=0; i<7; i++) • do • { • StdOut.println("Ingrese la nota "+(i+1)+ " de su quiz"); • Nota[i]=StdIn.readInt(); • } • while(Nota[i]<=0); • for(i=0;i<7;i++) • suma = suma + Nota[i]; • StdOut.println(suma); • StdOut.println("El promedio de sus quices es de "+ (float)(suma/7)); • } • }

  19. Arreglos Bidimensionales • Un arreglo bidimensional es una lista de arreglos unidimensional • Para declarar un arreglo bidimensional de enteros int [][] matriz = new int[3][4];

  20. Ejemplo 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]);

  21. 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

  22. 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)

  23. Ejemplo • 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

  24. Ejemplo notas curso • public class Curso • { • public static void main(String[] args) • { • int C[][] = new int[3][4]; • int i, j, suma; • for(i=0; i<3;i++) • for(j=0;j<4;j++) • { • do • { • StdOut.println("Ingrese la nota "+(j+1)+" del curso "+(i+1)); • C[i][j]=StdIn.readInt(); • }while(C[i][j]<=0); • } • for(i=0; i<3;i++) • { • suma=0; • for(j=0;j<4;j++) • suma = suma + C[i][j]; • StdOut.println("El promedio de notas del curso "+(i+1)+ " es de: "+ (suma/4)); • } • } • }

  25. Multidimensionales • 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;

  26. Nota máxima, curso y alumno • public class Nota_Max • { • public static void main(String[] args) • { • int a, b, i, j, max, posi, posj; • do • { • StdOut.println("Ingrese la cantidad de Cursos"); • a = StdIn.readInt(); • } • while(a<=0); • do • { • StdOut.println("Ingrese la cantidad de Alumnos"); • b = StdIn.readInt(); • } • while(a<=0); • int C[][] = new int[a][b]; • for(i=0;i<a;i++) • { • for(j=0;j<b;j++) • { • do • { • StdOut.println("Ingrese la nota "+(j+1)+" del curso "+(i+1)); • C[i][j]=StdIn.readInt(); • }while((C[i][j]<=0)||(C[i][j]>100)); • } • } • max=C[0][0]; • posi=0; • posj=0; • for(i=0;i<a;i++) • for(j=0;j<b;j++) • { • if(max<=C[i][j]) • { • max = C[i][j]; • posi = i; • posj = j; • } • } • StdOut.println("La nota maxima fue de "+ max+" y la saco el alumno "+(posj+1)+" en el curso "+(posi+1)); • } • }

  27. Ordenamiento Burbuja • Existen numerosos algoritmos para ordenar. A continuación se verá Ordenamiento Burbuja (bublesort). • Idea: vamos comparando elementos adyacentes y empujamos los valores más livianos hacia arriba (los más pesados van quedando abajo). • Idea de la burbuja que asciende, por lo liviana que es.

  28. Ordenamiento Burbuja Código for (int i = 0; i < arreglo.length; i++) for (int j = 0; j < arreglo.length - 1; j++) if (arreglo[j] > arreglo[j + 1]) { aux = arreglo[j]; arreglo[j] = arreglo[j + 1]; arreglo[j + 1] = aux; }

  29. Ordenamiento Burbuja Aplicado importjava.util.Random; publicclass Burbuja { publicstaticvoidmain(Stringargs[]) { RandomnumeroAleatorio = new Random(); int arreglo[] = new int[10]; // Generamos numeros for (int i = 0; i < arreglo.length; i++) { arreglo[i] = numeroAleatorio.nextInt(9) + 1; System.out.print(arreglo[i]); } System.out.println(); // Los ordenamos con ordenamiento burbuja intaux; for (int i = 0; i < arreglo.length; i++) { for (int j = 0; j < arreglo.length - 1; j++) { if (arreglo[j] > arreglo[j + 1]) { aux = arreglo[j]; arreglo[j] = arreglo[j + 1]; arreglo[j + 1] = aux; } } } } }

  30. Fin Preparando la revancha …

More Related