ARREGLOS UNIDIMENSIONALES CONTENIDO 1. Los Arreglos y Java. 1.1 Definición de arreglos 1.2 Inserción de datos 1.3 Extracción de datos 2. Trabajando con arreglos 3. Ejercicios de repaso Algoritmia y programación Universidad del Valle Slide 2 Definiendo los arreglos unidimensionales. Algoritmia y programación Universidad del Valle Slide 3 ¿Qué es un arreglo? * Un arreglo es una lista (conjunto) de datos con un número fijo de componentes, todos del mismo tipo, que estan referenciados bajo un mismo nombre. * Cada componente del arreglo se puede acceder mediante índices (0, 1, 2, 3, ...) encerradas entre corchetes [ ]. Algoritmia y programación Universidad del Valle Slide 4 ¿Para qué sirven los arreglos? Los arreglos permiten manejar de forma sencilla y directa conjuntos de datos del mismo tipo, de los cuales conocemos su cantidad y con los cuales se realizarán operaciones similares. Ejemplo1: Escriba un programa en Java que solicite los nombres de cada estudiante del curso y los muestre todos al final. Algoritmia y programación Universidad del Valle Slide 5 ¿Para qué sirven los arreglos? Ejemplo1: Escriba un programa en Java que solicite los nombres de cada estudiante del curso y los muestre todos al final. Sin arreglos tendríamos un programa cuyo código sería algo como esto: String nombre1, nombre2, nombre3, … , nombre50; nombre1 =JOptionPane.showInputDialog(“Digite su nombre”); nombre2=JOptionPane.showInputDialog(“Digite su nombre”); . . . nombre50=JOptionPane.showInputDialog(“Digite su nombre”); . . . Algoritmia y programación Universidad del Valle Slide 6 ¿Para qué sirven los arreglos? Ejemplo1: Escriba un programa en Java que solicite los nombres de cada estudiante del curso y los muestre todos al final. Sin arreglos tendríamos un programa cuyo código sería algo como esto: String nombre1, nombre2, nombre3, … , nombre50; nombre1 =JOptionPane.showInputDialog(“Digite su nombre”); nombre2=JOptionPane.showInputDialog(“Digite su nombre”); . . . nombre50=JOptionPane.showInputDialog(“Digite su nombre”); . . . Algoritmia y programación Universidad del Valle Slide 7 ¿Para qué sirven los arreglos? Ejemplo2: Escriba un programa en Java que solicite los nombres de cada estudiante de cualquier curso y los muestre todos al final. Sin arreglos tendríamos que declarar un número arbitrariamente grande de variables de tipo String (¿100?, ¿200?) de tal forma que nunca hubiera más estudiantes que variables del programa. String nombre1, nombre2, nombre3, … , nombre100; . . . nombre1 =JOptionPane.showInputDialog(“Digite su nombre”); nombre2=JOptionPane.showInputDialog(“Digite su nombre”); . . . nombre50=JOptionPane.showInputDialog(“Digite su nombre”); . . . Algoritmia y programación Universidad del Valle Slide 8 ¿Para qué sirven los arreglos? Ejemplo2: Escriba un programa en Java que solicite los nombres de cada estudiante de cualquier curso y los muestre todos al final. Sin arreglos tendríamos que declarar un número arbitrariamente grande de variables de tipo String (¿100?, ¿200?) de tal forma que nunca hubiera más estudiantes que variables del programa. String nombre1, nombre2, nombre3, … , nombre100; . . . nombre1 =JOptionPane.showInputDialog(“Digite su nombre”); nombre2=JOptionPane.showInputDialog(“Digite su nombre”); . . . nombre50=JOptionPane.showInputDialog(“Digite su nombre”); . . . Algoritmia y programación Universidad del Valle Slide 9 Arreglos: Espacios ordenados Un arreglo se puede ver como un conjunto de espacios finitos donde se almacenan elementos (todos del mismo tipo). Un arreglo también puede verse como cajas ordenadas en fila y numeradas, donde en cada caja se almacena un solo elemento u objeto. “Ana” “Luis” “Juan” 0 1 2 cajasDeNombres Elemento del arreglo Índice del arreglo Algoritmia y programación Universidad del Valle Slide 10 Para recordar: * Un arreglo se usa para almacenar elementos del mismo tipo. * Un arreglo es de tamaño fijo. * Cada elemento se guarda en un espacio independiente. * Cada espacio se referencia con un índice (0,1,2,3,...,n). Algoritmia y programación Universidad del Valle Slide 11 ¿Cuáles son arreglos? Algoritmia y programación Universidad del Valle Slide 12 ¿Cuáles son arreglos? Algoritmia y programación Universidad del Valle Slide 13 ¿Cuáles son arreglos? Algoritmia y programación Universidad del Valle Slide 14 2. Los Arreglos y Java Declarando y trabajando con arreglos en Java. Algoritmia y programación Universidad del Valle Slide 15 Declarando Arreglos La declaración de un arreglo se hace de la siguiente forma: TipoDeDato nombre[] = new TipoDeDato [n]; Donde n es la capacidad (tamaño) del arreglo. Ejemplos: String nombres[ ] = new String [4]; double notas[ ] = new double [5]; int edadEstudiantes[ ] = new int [3]; Algoritmia y programación Universidad del Valle Slide 16 Declarando Arreglos String nombres[] = new String [4]; Define un arreglo llamado nombres, que almacena cadenas de texto y puede contener máximo 4 elementos (con índices 0, 1, 2 y 3). Algoritmia y programación Universidad del Valle Slide 17 Declarando Arreglos String nombres[] = new String [4]; Define un arreglo llamado nombres, que almacena cadenas de texto y puede contener máximo 4 elementos (con índices 0, 1, 2 y 3). double notas[] = new double [5]; Define un arreglo llamado notas, que almacena números reales y puede tener máximo 5 elementos (con índices 0, 1, 2, 3 y 4). Algoritmia y programación Universidad del Valle Slide 18 Declarando Arreglos String nombres[] = new String [4]; Define un arreglo llamado nombres, que almacena cadenas de texto y puede contener máximo 4 elementos (con índices 0, 1, 2 y 3). double notas[] = new double [5]; Define un arreglo llamado notas, que almacena números reales y puede tener máximo 5 elementos (con índices 0, 1, 2, 3 y 4). int edadEstudiantes[] = new int [3]; Define un arreglo llamado edadEstudiantes, que almacena números enteros y puede tener máximo 3 elementos (con índices 0, 1 y 2). Algoritmia y programación Universidad del Valle Slide 19 Declarando arreglos TipoDeDato nombre[] = new TipoDeDato [n]; Los arreglos definidos de esta forma no están inicializados, es decir, no contienen ningún valor, lo cual se representa con null si es String o con 0 si es int o double. Algoritmia y programación Universidad del Valle Slide 20 Declarando arreglos TipoDeDato nombre[] = new TipoDeDato [n]; Los arreglos definidos de esta forma no están inicializados, es decir, no contienen ningún valor, lo cual se representa con null si es String o con 0 si es int o double. String nombres[] = new String [4]; Algoritmia y programación Universidad del Valle Slide 21 Declarando arreglos TipoDeDato nombre[] = new TipoDeDato [n]; Los arreglos definidos de esta forma no están inicializados, es decir, no contienen ningún valor, lo cual se representa con null si es String o con 0 si es int o double. String nombres[] = new String [4]; int edadEstudiantes[] = new int [3]; Algoritmia y programación Universidad del Valle Slide 22 Declarando e inicializando Declarar e inicializar un arreglo se hace de la siguiente forma: TipoDeDato nombre[] = { val1, val2, …, valn}; Esto crea e inicializa un arreglo de n elementos con valores val1, val2, …, valn. Ejemplos: String nombres[ ] = {“Oscar”, “Juan”, “John”, “Carlos”}; double notas[ ] = { 5.0, 4.0, 5.0}; int edadEstudiantes[ ] = {18, 21, 17}; Algoritmia y programación Universidad del Valle Slide 23 ¿Donde está el error? String nombres [] = {”Oscar”, 100 , ”Sofia” , ”A” ); String nombres [] = {”Oscar”, ”100” , ”Sofia” , A); double valores [] = new String[4]; int edades = new int [10]; Algoritmia y programación Universidad del Valle Slide 24 Inserción de datos Para ingresar datos en un arreglo se debe indicar la posición(índice) del arreglo en el que se va insertar el valor: nombreArreglo[posición] = valor; Nota: No importa el orden en el cual se guardan los datos en el arreglo. Algoritmia y programación Universidad del Valle Slide 25 Inserción de datos String nombres[] = new String [4]; Cuando se crea un arreglo de cadenas de texto, éste no tiene ningún valor, lo cual se indica con la palabra null. Algoritmia y programación Universidad del Valle Slide 26 Inserción de datos String nombres[] = new String [4]; nombres[1] = “Sarah”; Guarda el texto “Sarah” En la posición 1 del arreglo. Algoritmia y programación Universidad del Valle Slide 27 Inserción de datos String nombres[] = new String [4]; nombres[1] = “Sarah”; nombres[2] = “Juan”; Guarda el texto “Juan” En la posición 2 del arreglo Algoritmia y programación Universidad del Valle Slide 28 Inserción de datos String nombres[] = new String [4]; nombres[1] = “Sarah”; nombres[2] = “Juan”; nombres[?] = “Oscar”; ¿Cuál debe ser el índice? Algoritmia y programación Universidad del Valle Slide 29 Inserción de datos String nombres[] = new String [4]; nombres[1] = “Sarah”; nombres[2] = “Juan”; nombres[0] = “Oscar”; ¡No importa el orden en el cual se guardan los datos en el arreglo! Algoritmia y programación Universidad del Valle Slide 30 Inserción de datos String nombres[] = new String [4]; nombres[1] = “Sarah”; nombres[2] = “Juan”; nombres[0] = “Oscar”; ¿La instrucción nombres[4]=”Jose”; es válida? Algoritmia y programación Universidad del Valle Slide 31 Inserción de datos String nombres[] = new String [4]; nombres[1] = “Sarah”; nombres[2] = “Juan”; nombres[0] = “Oscar”; Las posiciones siempre son números enteros que inician en 0 Algoritmia y programación Universidad del Valle Slide 32 Inserción de datos ¿Cuál es el error en cada una de las líneas? int arreglo[ ] = new int [5]; arreglo[0] = 21.2; arreglo[5] = 90; Arreglo[2] = ’10’; Algoritmia y programación Universidad del Valle Slide 33 Inserción de datos double notas[]=new double[3]; notas[?]=?; ¿Cuáles son las instrucciones necesarias para obtener el arreglo que se muestra abajo? notas[?]=?; notas[?]=?; 0 2.7 1 2 3.1 2.5 Algoritmia y programación Universidad del Valle Slide 34 Inserción de datos double notas[]=new double[3]; notas[0]=2.7; ¿Cuáles son las instrucciones necesarias para obtener el arreglo que se muestra abajo? notas[1]=3.1; notas[2]=2.5; 0 2.7 1 2 3.1 2.5 Algoritmia y programación Universidad del Valle Slide 35 Extracción de datos Para recuperar datos de un arreglo se debe indicar la posición(índice) del arreglo que se quiere conocer: nombreArreglo[posición] nombres[2] indica que el valor en la posición 2 es “Juan”. Algoritmia y programación Universidad del Valle Slide 36 Extracción de datos JOptionPane.showMessageDialog(null, “El valor en la posición 2 es “ + nombres[2]); Algoritmia y programación Universidad del Valle Slide 37 Extracción de datos int arreglo[ ] = new int [5]; arreglo[0] = 21 ; arreglo[1] = arreglo[0] + 90; arreglo[2] = 10 * arreglo[1]; Algoritmia y programación Universidad del Valle Slide 38 3. Trabajando con arreglos Ejemplos prácticos de cómo se crean programas usando arreglos. Algoritmia y programación Universidad del Valle Slide 39 3. Trabajando con arreglos • Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 • Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números • después, muestre mensaje • Luego, muestre solo los números almacenados en posiciones pares • y, muestre los números impares contenidos en el arreglo todos los números en un solo Algoritmia y programación Universidad del Valle Slide 40 3. Trabajando con arreglos • Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 • Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números int numeros[]=new int[100]; Algoritmia y programación Universidad del Valle Slide 41 3. Trabajando con arreglos int numeros[]=new int[100]; numeros[0]=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese un valor”)); numeros[1]=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese un valor”)); ... numeros[99]=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese un valor”)); Algoritmia y programación Universidad del Valle Slide 42 3. Trabajando con arreglos int numeros[]=new int[100]; for (int i=0; i<=99; i=i+1){ numeros[i]=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese un valor”)); } Algoritmia y programación Universidad del Valle Slide 43 3. Trabajando con arreglos • Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 • Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números • después, muestre mensaje todos los números en un solo Algoritmia y programación Universidad del Valle Slide 44 3. Trabajando con arreglos • Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 • Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números • después, muestre mensaje todos los números en un solo String mensaje= ""; for (int i=0; i<=99; i=i+1){ mensaje=mensaje + " \t " + numeros[i]; } JOptionPane.showMessageDialog(null, mensaje); Algoritmia y programación Universidad del Valle Slide 45 Los arreglos y el ciclo for Un arreglo se procesa generalmente usando un ciclo for: Algoritmia y programación Universidad del Valle Slide 46 Los arreglos y el ciclo for Un arreglo se procesa generalmente usando un ciclo for: Algoritmia y programación Universidad del Valle Slide 47 Los arreglos y el ciclo for b.length indica la cantidad de elementos del arreglo. Algoritmia y programación Universidad del Valle Slide 48 Ejemplo 1: Escriba un programa en Java que solicite los nombres de cada estudiante de cualquier curso y los muestre todos de forma numerada al final. Use un arreglo para almacenar el nombre de cada estudiante. Algoritmia y programación Universidad del Valle Slide 49 Ejemplo 1: Análisis * Entradas: * Salidas Algoritmia y programación Universidad del Valle Slide 50 Ejemplo 1: Análisis * Entradas: n, nombres[] * Salidas: lista con todos los nombres enumerados. Algoritmia y programación Universidad del Valle Slide 51 Ejemplo 1: Análisis * Debemos capturar los nombres de n estudiantes. por lo tanto requerimos primero conocer el valor de n para saber cuál será el tamaño del arreglo. * El arreglo será un arreglo de datos tipo String de tamaño n. •La salida del programa será un String que contendrá la lista numerada de los nombres de los estudiantes. Algoritmia y programación Universidad del Valle Slide 52 Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto Algoritmia y programación Universidad del Valle Slide 53 Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="",nombres[]: texto leer(n) Algoritmia y programación Universidad del Valle Slide 54 Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto leer(n) //insertamos datos en el arreglo desde i=0 mientras i<n incrementando i en 1 Haga leer(nombres[i]) Fin desde Algoritmia y programación Universidad del Valle Slide 55 Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto leer(n) //insertamos datos en el arreglo desde i=0 mientras i<n incrementando i en 1 Haga leer(nombres[i]) Fin desde //Formamos la salida desde i=0 mientras i<n incrementando i en 1 haga lista = lista+(i+1)+nombres[i]+“\n” Fin desde Algoritmia y programación Universidad del Valle Slide 56 Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto leer(n) //insertamos datos en el arreglo desde i=0 mientras i<n incrementando i en 1 Haga leer(nombres[i]) Fin desde //Formamos la salida desde i=0 mientras i<n incrementando i en 1 haga lista= lista+(i+1)+nombres[i]+“\n” Fin desde imprimir (salida) FIN Algoritmia y programación Universidad del Valle Slide 57 Ejemplo 1: Programa en Java import javax.swing.*; public class NombresCurso { public static void main(String[] args) { int n,i; String lista="La lista de nombres de los Estudiantes es:\n"; n =Integer.parseInt(JOptionPane.showInputDialog( "Ingrese el número de estudiantes del curso: ")); String nombres[] = new String [n]; Algoritmia y programación Universidad del Valle Slide 58 Ejemplo 1: Programa en Java // Ingreso de los nombres de los estudiantes for (i=0; i < nombres.length; i++){ nombres [i] = JoptionPane.showInputDialog( "Ingrese el nombre del estudiante " + (i+1) + ": "); } // Despliegue de la lista de estudiantes: for (i=0; i < nombres.length; i++){ lista= lista+ (i+1) + ". " + nombres[i] + "\n"; } JOptionPane.showMessageDialog(null, lista); }// fin método main } // Fin clase Algoritmia y programación Universidad del Valle Slide 59 Ejemplo 2 Desarrolle un programa en JAVA que permita leer el nombre de 10 productos de una tienda y su correspondiente precio. La aplicación debe decir cuántos de ellos cuestan más de 3000 pesos y mostrar su nombre, precio y posición en pantalla. Utilice arreglos para almacenar los precios y nombres de productos Algoritmia y programación Universidad del Valle Slide 60 Ejemplo 1: Análisis * Entradas: productos[], precios[] * Salidas: producto, precio, posición. Algoritmia y programación Universidad del Valle Slide 61 Ejemplo 2: Programa en Java import javax.swing.JOptionPane; public class Tienda { String nombre[] = new String[10], salida; int precio[] = new int[10], posicion; Algoritmia y programación Universidad del Valle Slide 62 Ejemplo 2: Programa en Java import javax.swing.JOptionPane; public class Tienda { String productos[] = new String[10], salida ; int precios[] = new int[10], posicion; //ingresarProductos for (int i=0 ; i<10; i++){ productos[i] = JOptionPane.showInputDialog("Ingrese el articulo "+i); precios[i]=Integer.parseInt(JOptionPane.showInputDialog (“ Ingrese precio"+i)); } Algoritmia y programación Universidad del Valle Slide 63 Ejemplo 2: Programa en Java //calcularMayores salida="Los siguientes artículos cuestan mas de $3000 \n"; for (int j=0 ; j<10 ; j++){ if (precio[j] >3000){ salida += nombre[j] + " : “+precio[j]+ "\n"; } //mostrarDatos JOptionPane.showMessageDialog(null,salida); Algoritmia y programación Universidad del Valle Slide 64 4. Ejercicios de Repaso Ejercicios para reforzar lo visto en clase. Algoritmia y programación Universidad del Valle Slide 65 Ejercicios a realizar con arreglos 1) Escriba un programa en Java que lea una lista de n enteros, calcule el promedio de los datos ingresados, el mayor y el menor de ellos. 2) Escriba un programa en Java que dada una lista de enteros y un valor x por parte del usuario, diga cuántas veces x aparece en la lista. El programa como salida debe mostrar la lista ingresada por el usuario e indicar cuántas veces aparece el valor x y en cuáles posiciones. Algoritmia y programación Universidad del Valle Slide 66 Ejercicios a realizar con arreglos Ejercicios adicionales: En una competencia de natación se desea implementar una aplicación para almacenar el tiempo por cada competidor y además determinar con base en todos los tiempos de los competidores cual es el ganador. El usuario debe especificar cuantos tiempos (competidores) desea ingresar. Desarrolle un programa que recorra un arreglo de enteros, evalúe si sus datos son múltiplos de 7 y los muestre en pantalla. Algoritmia y programación Universidad del Valle Slide 67 Ejercicios a realizar con arreglos 3) La Universidad del Valle requiere un programa que le permita conocer cómo califican los estudiantes la comida de la cafetería central. Para ello definió una escala de 1 a 10 (1 denota horrible y 10 denota excelente). El programa debe ser capaz capturar la calificación de cualquier número de estudiantes (no se sabe cuántos estudiantes se encuestarán, así que cuando el encuestador ingrese la calificación de 0, se sabrá que la encuesta habrá concluido). El programa deberá mostrar en su salida cuántos estudiantes fueron encuestados así como el resumen de la encuesta con histograma así: Estudiantes encuestados: 111 Frecuencia de las calificaciones: Calificación núm. Estudiantes 1 3 2 2 3 10 … … 8 9 9 15 10 7 Histograma *** ** ********** ... ********* *************** ******* Utilice un arreglo de enteros de 10 elementos para almacenar la frecuencia con la que ocurre cada calificación. Algoritmia y programación Universidad del Valle Slide 68