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 Slide 2
Definiendo los arreglos unidimensionales. 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 [ ]. 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. 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 );... 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 );... 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 );... 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 );... 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. cajasdenombres Ana Luis Juan Elemento del arreglo 0 1 2 Índice del arreglo 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). Slide 11
Cuáles son arreglos? Slide 12
Cuáles son arreglos? Slide 13
Cuáles son arreglos? Slide 14
2. Los Arreglos y Java Declarando y trabajando con arreglos en Java. 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]; 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). 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). 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). 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. 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]; 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]; 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}; 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]; 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. 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. 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. 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 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? 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! 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? 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 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 ; Slide 33
Inserción de datos double notas[]=new double[3]; notas[?]=?; notas[?]=?; notas[?]=?; Cuáles son las instrucciones necesarias para obtener el arreglo que se muestra abajo? 0 1 2 2.7 3.1 2.5 Slide 34
Inserción de datos double notas[]=new double[3]; notas[0]=2.7; notas[1]=3.1; notas[2]=2.5; Cuáles son las instrucciones necesarias para obtener el arreglo que se muestra abajo? 0 1 2 2.7 3.1 2.5 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. Slide 36
Extracción de datos JOptionPane.showMessageDialog(null, El valor en la posición 2 es + nombres[2]); Slide 37
Extracción de datos int arreglo[ ] = new int [5]; arreglo[0] = 21 ; arreglo[1] = arreglo[0] + 90; arreglo[2] = 10 * arreglo[1]; Slide 38
3. Trabajando con arreglos Ejemplos prácticos de cómo se crean programas usando arreglos. 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 todos los números en un solo mensaje Luego, muestre solo los números almacenados en posiciones pares y, muestre los números impares contenidos en el arreglo 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]; 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 )); 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 )); 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 todos los números en un solo mensaje Slide 44
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 todos los números en un solo mensaje String mensaje= ""; for (int i=0; i<=99; i=i+1){ } 3. Trabajando con arreglos mensaje=mensaje + " \t " + numeros[i]; JOptionPane.showMessageDialog(null, mensaje); Slide 45
Los arreglos y el ciclo for Un arreglo se procesa generalmente usando un ciclo for: Slide 46
Los arreglos y el ciclo for Un arreglo se procesa generalmente usando un ciclo for: Slide 47
Los arreglos y el ciclo for b.length indica la cantidad de elementos del arreglo. 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. Slide 49
Ejemplo 1: Análisis * Entradas: * Salidas Slide 50
Ejemplo 1: Análisis * Entradas: n, nombres[] * Salidas: lista con todos los nombres enumerados. 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. Slide 52
Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto Slide 53
Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="",nombres[]: texto leer(n) 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 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 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 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]; 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 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 Slide 60
Ejemplo 1: Análisis * Entradas: productos[], precios[] * Salidas: producto, precio, posición. 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; 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)); } 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); Slide 64
4. Ejercicios de Repaso Ejercicios para reforzar lo visto en clase. 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. 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. Slide 67
Ejercicios a realizar con arreglos 3) La 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 Histograma 1 3 *** 2 2 ** 3 10 **********... 8 9 ********* 9 15 *************** 10 7 ******* Utilice un arreglo de enteros de 10 elementos para almacenar la frecuencia con la que ocurre cada calificación. Slide 68