Sesion S2-C1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 68

ARREGLOS

UNIDIMENSIONALES

Estructura de Datos
Unidades Tecnológicas de Santander Slide 1
CONTENIDO

1. Los Arreglos y Java.

1. Definición de arreglos
2. Inserción de datos
3. Extracción de datos

2. Trabajando con arreglos


3. Ejercicios de repaso

Estructura de Datos
Unidades Tecnológicas de Santander Slide 2
Definiendo los arreglos unidimensionales.

Estructura de Datos
Unidades Tecnológicas de Santander 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 [ ].

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander 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”);
. . .

Estructura de Datos
Unidades Tecnológicas de Santander 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”);
. . .

Estructura de Datos
Unidades Tecnológicas de Santander 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”);
. . .

Estructura de Datos
Unidades Tecnológicas de Santander 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”);
. . .

Estructura de Datos
Unidades Tecnológicas de Santander 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” Elemento del


arreglo
cajasDeNombres

0 1 2
Índice del arreglo

Estructura de Datos
Unidades Tecnológicas de Santander 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).

Estructura de Datos
Unidades Tecnológicas de Santander Slide 11
¿Cuáles son arreglos?

Estructura de Datos
Unidades Tecnológicas de Santander Slide 12
¿Cuáles son arreglos?

Estructura de Datos
Unidades Tecnológicas de Santander Slide 13
¿Cuáles son arreglos?

Estructura de Datos
Unidades Tecnológicas de Santander Slide 14
2. Los Arreglos y Java

Declarando y trabajando con arreglos en Java.

Estructura de Datos
Unidades Tecnológicas de Santander 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];

Estructura de Datos
Unidades Tecnológicas de Santander 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).

Estructura de Datos
Unidades Tecnológicas de Santander 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).

Estructura de Datos
Unidades Tecnológicas de Santander 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).
Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander 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];

Estructura de Datos
Unidades Tecnológicas de Santander 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];

Estructura de Datos
Unidades Tecnológicas de Santander 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};


Estructura de Datos
Unidades Tecnológicas de Santander 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];

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander 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?

Estructura de Datos
Unidades Tecnológicas de Santander 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!

Estructura de Datos
Unidades Tecnológicas de Santander 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?

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander 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’;

Estructura de Datos
Unidades Tecnológicas de Santander Slide 33
Inserción de datos

double notas[]=new double[3];


notas[?]=?;
¿Cuáles son las
notas[?]=?; instrucciones necesarias
notas[?]=?; para obtener el arreglo que
se muestra abajo?

0 1 2

2.7 3.1 2.5

Estructura de Datos
Unidades Tecnológicas de Santander Slide 34
Inserción de datos

double notas[]=new double[3];


notas[0]=2.7;
¿Cuáles son las
notas[1]=3.1; instrucciones necesarias
notas[2]=2.5; para obtener el arreglo que
se muestra abajo?

0 1 2

2.7 3.1 2.5

Estructura de Datos
Unidades Tecnológicas de Santander 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”.

Estructura de Datos
Unidades Tecnológicas de Santander Slide 36
Extracción de datos
JOptionPane.showMessageDialog(null, “El valor
en la posición 2 es “ + nombres[2]);

Estructura de Datos
Unidades Tecnológicas de Santander Slide 37
Extracción de datos

int arreglo[ ] = new int [5];


arreglo[0] = 21 ;
arreglo[1] = arreglo[0] + 90;
arreglo[2] = 10 * arreglo[1];

Estructura de Datos
Unidades Tecnológicas de Santander Slide 38
3. Trabajando con arreglos

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


arreglos.

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander 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];

Estructura de Datos
Unidades Tecnológicas de Santander 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”));

Estructura de Datos
Unidades Tecnológicas de Santander 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”));

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander 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 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);
Estructura de Datos
Unidades Tecnológicas de Santander Slide 45
Los arreglos y el ciclo for
Un arreglo se procesa generalmente usando un ciclo for:

Estructura de Datos
Unidades Tecnológicas de Santander Slide 46
Los arreglos y el ciclo for
Un arreglo se procesa generalmente usando un ciclo for:

Estructura de Datos
Unidades Tecnológicas de Santander Slide 47
Los arreglos y el ciclo for
b.length indica la cantidad de elementos del
arreglo.

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander Slide 49
Ejemplo 1: Análisis

* Entradas:

* Salidas

Estructura de Datos
Unidades Tecnológicas de Santander Slide 50
Ejemplo 1: Análisis

* Entradas: n, nombres[]

* Salidas: lista con todos los nombres enumerados.

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander Slide 52
Ejemplo 1: Pseudocódigo
INICIO
n,i: entero
lista="", nombres[]: texto

Estructura de Datos
Unidades Tecnológicas de Santander Slide 53
Ejemplo 1: Pseudocódigo
INICIO
n,i: entero
lista="",nombres[]: texto
leer(n)

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander 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
Estructura de Datos
Unidades Tecnológicas de Santander 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];

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander 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

Estructura de Datos
Unidades Tecnológicas de Santander Slide 60
Ejemplo 1: Análisis

* Entradas: productos[], precios[]

* Salidas: producto, precio, posición.

Estructura de Datos
Unidades Tecnológicas de Santander
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;

Estructura de Datos
Unidades Tecnológicas de Santander 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));
}

Estructura de Datos
Unidades Tecnológicas de Santander 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);

Estructura de Datos
Unidades Tecnológicas de Santander Slide 64
4. Ejercicios de Repaso

Ejercicios para reforzar lo visto en clase.

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander 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.

Estructura de Datos
Unidades Tecnológicas de Santander Slide 67
Ejercicios a realizar con arreglos
3) La Unidades Tecnológicas de Santander 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.
Estructura de Datos
Unidades Tecnológicas de Santander Slide 68

También podría gustarte