Arreglos Unidimensionales - Java - NetBeans

Post on 13-Jun-2015

25.763 views 11 download

description

Universidad del Valle, 2013. Algoritmia y Programación.

Transcript of Arreglos Unidimensionales - Java - NetBeans

ARREGLOS

UNIDIMENSIONALES

Slide 2

Algoritmia y programación

Universidad del Valle

CONTENIDO

1. Los Arreglos y Java.

1.2 Inserción de datos

1.3 Extracción de datos

1.1 Definición de arreglos

2. Trabajando con arreglos

3. Ejercicios de repaso

Slide 3

Algoritmia y programación

Universidad del Valle

Definiendo los arreglos unidimensionales.

Slide 4

Algoritmia y programación

Universidad del Valle

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

Algoritmia y programación

Universidad del Valle

¿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 6

Algoritmia y programación

Universidad del Valle

¿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

Algoritmia y programación

Universidad del Valle

¿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 8

Algoritmia y programación

Universidad del Valle

¿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

Algoritmia y programación

Universidad del Valle

¿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 10

Algoritmia y programación

Universidad del Valle

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.

1 2 0

“Luis” “Ana” “Juan”

Índice del arreglo

Elemento del

arreglo cajasDeNombres

Slide 11

Algoritmia y programación

Universidad del Valle

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 12

Algoritmia y programación

Universidad del Valle

¿Cuáles son arreglos?

Slide 13

Algoritmia y programación

Universidad del Valle

¿Cuáles son arreglos?

Slide 14

Algoritmia y programación

Universidad del Valle

¿Cuáles son arreglos?

Slide 15

Algoritmia y programación

Universidad del Valle

2. Los Arreglos y Java

Declarando y trabajando con arreglos en Java.

Slide 16

Algoritmia y programación

Universidad del Valle

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 17

Algoritmia y programación

Universidad del Valle

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 18

Algoritmia y programación

Universidad del Valle

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 19

Algoritmia y programación

Universidad del Valle

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 20

Algoritmia y programación

Universidad del Valle

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 21

Algoritmia y programación

Universidad del Valle

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 22

Algoritmia y programación

Universidad del Valle

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 23

Algoritmia y programación

Universidad del Valle

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 24

Algoritmia y programación

Universidad del Valle

¿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 25

Algoritmia y programación

Universidad del Valle

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 26

Algoritmia y programación

Universidad del Valle

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 27

Algoritmia y programación

Universidad del Valle

Inserción de datos

String nombres[] = new String [4]; nombres[1] = “Sarah”;

Guarda el texto “Sarah”

En la posición 1 del

arreglo.

Slide 28

Algoritmia y programación

Universidad del Valle

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 29

Algoritmia y programación

Universidad del Valle

Inserción de datos

String nombres[] = new String [4]; nombres[1] = “Sarah”; nombres[2] = “Juan”; nombres[?] = “Oscar”;

¿Cuál debe ser el

índice?

Slide 30

Algoritmia y programación

Universidad del Valle

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 31

Algoritmia y programación

Universidad del Valle

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 32

Algoritmia y programación

Universidad del Valle

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 33

Algoritmia y programación

Universidad del Valle

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 34

Algoritmia y programación

Universidad del Valle

double notas[]=new double[3];

notas[?]=?;

notas[?]=?;

notas[?]=?;

0 1 2

2.7 3.1 2.5

¿Cuáles son las instrucciones necesarias

para obtener el arreglo que se muestra abajo?

Inserción de datos

Slide 35

Algoritmia y programación

Universidad del Valle

double notas[]=new double[3];

notas[0]=2.7;

notas[1]=3.1;

notas[2]=2.5;

0 1 2

2.7 3.1 2.5

¿Cuáles son las instrucciones necesarias

para obtener el arreglo que se muestra abajo?

Inserción de datos

Slide 36

Algoritmia y programación

Universidad del Valle

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 37

Algoritmia y programación

Universidad del Valle

Extracción de datos

JOptionPane.showMessageDialog(null, “El valor en la posición 2 es “ + nombres[2]);

Slide 38

Algoritmia y programación

Universidad del Valle

Extracción de datos

int arreglo[ ] = new int [5];

arreglo[0] = 21 ; arreglo[1] = arreglo[0] + 90;

arreglo[2] = 10 * arreglo[1];

Slide 39

Algoritmia y programación

Universidad del Valle

3. Trabajando con arreglos

Ejemplos prácticos de cómo se crean programas usando arreglos.

Slide 40

Algoritmia y programación

Universidad del Valle

• 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

3. Trabajando con arreglos

Slide 41

Algoritmia y programación

Universidad del Valle

• 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];

3. Trabajando con arreglos

Slide 42

Algoritmia y programación

Universidad del Valle

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”));

3. Trabajando con arreglos

Slide 43

Algoritmia y programación

Universidad del Valle

int numeros[]=new int[100];

for (int i=0; i<=99; i=i+1){

numeros[i]=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese un valor”));

}

3. Trabajando con arreglos

Slide 44

Algoritmia y programación

Universidad del Valle

• 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

3. Trabajando con arreglos

Slide 45

Algoritmia y programación

Universidad del Valle

• 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){

mensaje=mensaje + " \t " + numeros[i];

}

JOptionPane.showMessageDialog(null, mensaje);

3. Trabajando con arreglos

Slide 46

Algoritmia y programación

Universidad del Valle

Los arreglos y el ciclo for

Un arreglo se procesa generalmente usando un ciclo for:

Slide 47

Algoritmia y programación

Universidad del Valle

Los arreglos y el ciclo for

Un arreglo se procesa generalmente usando un ciclo for:

Slide 48

Algoritmia y programación

Universidad del Valle

Los arreglos y el ciclo for

b.length indica la cantidad de elementos del

arreglo.

Slide 49

Algoritmia y programación

Universidad del Valle

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 50

Algoritmia y programación

Universidad del Valle

Ejemplo 1: Análisis

* Entradas:

* Salidas

Slide 51

Algoritmia y programación

Universidad del Valle

Ejemplo 1: Análisis

* Entradas: n, nombres[]

* Salidas: lista con todos los nombres enumerados.

Slide 52

Algoritmia y programación

Universidad del Valle

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 53

Algoritmia y programación

Universidad del Valle

Ejemplo 1: Pseudocódigo

INICIO

n,i: entero

lista="", nombres[]: texto

Slide 54

Algoritmia y programación

Universidad del Valle

Ejemplo 1: Pseudocódigo

INICIO

n,i: entero

lista="",nombres[]: texto

leer(n)

Slide 55

Algoritmia y programación

Universidad del Valle

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 56

Algoritmia y programación

Universidad del Valle

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 57

Algoritmia y programación

Universidad del Valle

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 58

Algoritmia y programación

Universidad del Valle

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 59

Algoritmia y programación

Universidad del Valle

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 60

Algoritmia y programación

Universidad del Valle

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

Ejemplo 2

Slide 61

Algoritmia y programación

Universidad del Valle

Ejemplo 1: Análisis

* Entradas: productos[], precios[]

* Salidas: producto, precio, posición.

Slide 62

Algoritmia y programación

Universidad del Valle

import javax.swing.JOptionPane;

public class Tienda {

String nombre[] = new String[10], salida;

int precio[] = new int[10], posicion;

Ejemplo 2: Programa en Java

Slide 63

Algoritmia y programación

Universidad del Valle

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));

}

Ejemplo 2: Programa en Java

Slide 64

Algoritmia y programación

Universidad del Valle

//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);

Ejemplo 2: Programa en Java

Slide 65

Algoritmia y programación

Universidad del Valle

4. Ejercicios de Repaso

Ejercicios para reforzar lo visto en clase.

Slide 66

Algoritmia y programación

Universidad del Valle

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 67

Algoritmia y programación

Universidad del Valle

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.

Ejercicios a realizar con arreglos

Slide 68

Algoritmia y programación

Universidad del Valle

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