Está en la página 1de 38

Pontificia Universidad Catlica de Chile

Escuela de Ingeniera
Departamento de Ciencia de la Computacin

Arrays
Un contenedor de variables

Ral Montes T.
1

Ejercicio

Pidmosle al usuario que nos diga un nombre de un


lbum de The Beatles

String album = io.pideUnTexto("Ingresa un lbum");

String album1 = io.pideUnTexto("Y otro...");


String album2 = io.pideUnTexto("Y otro...");
String album3 = io.pideUnTexto("Y otro...");

ahora que nos diga 3 lbumes

ahora que nos diga todos los lbumes que se sepa


ehmehmmmm
ehmmmm
ehm
3

Los Arrays son contenedores que permiten almacenar


una cantidad fija de elementos de un determinado tipo
Pero cmo cantidad FIJA?? Cul es la diferencia
con declarar muchas variables entonces??
Ah, pero es que con arreglos la cantidad se puede fijar
durante la ejecucin del programa, no necesariamente
cuando se escribe
4

Son una secuencia ordenada, por lo que cada


elemento tiene un ndice
Elemento de ndice 6

10

11

12

El largo es 13

Los ndices parten desde el 0


5

tipo de los elementos


del arreglo

identificador de la
variable

int[] numeros;

Hemos declarado una variable etiquetada numeros, que


puede contener un objeto arreglo de ints

char[] vocales;

Arreglo de chars

Persona[] personas;

Arreglo de objetos de clase Persona

int[] numeros;

El arreglo en s ser un objeto de la clase int[]

Si es un objeto de una clase, tenemos que construirlo


pero de una forma ligeramente diferente
cantidad de elementos
del arreglo
int[] numeros = new int[5];

10

Largo de un arreglo
atributo que almacena
el largo del arreglo
int[] numeros = new int[5];
System.out.println(numeros.length);
// imprime 5

11

Guardando elementos en un arreglo

int tamanio = io.pideUnEntero("Tamao de arreglo");


int[] numeros = new int[tamanio];
numeros[0] = 12;
// primer elemento
numeros[1] = 24;
// segundo elemento
numeros[numeros.length - 1] = 99; // ltimo elemento

12

Obteniendo elementos de un arreglo

int tamanio = io.pideUnEntero("Tamao de arreglo");


int[] numeros = new int[tamanio];
// ...
int elemento = numeros[2] + 3;
System.out.println(numeros[1 + elemento]);
int e = numeros[numeros.length - 2]; // penltimo

13

int unNumero = 10;


System.out.println(unNumero);

En ambos casos identificamos una


variable de tipo int
int[] numeros = new int[3];
numeros[0] = 10;
System.out.println(numeros[0]);

14

int[] numeros = new int[3];


numeros[0] = 10;
System.out.println(numeros[0]);

int numero0 = 0;
int numero1 = 0;
int numero2 = 0;
numero0 = 10;
System.out.println(numero0);
15

Justo despus de construir un nuevo arreglo, lo que


habr como contenido en cada una de las variables ser
el valor default correspondiente al tipo de variable
Celular[] superDuperCelulares = new Celular[10];
superDuperCelulares[0] = new Celular("Apple", "iPhone 4S");
io.muestra(superDuperCelulares[0].getModelo());
io.muestra(superDuperCelulares[1].getModelo());
// en el ndice 1 no hemos guardado nada! => es null

16

Pide al usuario todos los lbumes de The Beatles que


se sepa y recurdalos para un posterior uso. Y mejor
an: aprovecha y, en lugar de guardar fomes
Strings, guarda realmente Albums con ms info
que slo su nombre.

Ahora s, poh!

17

Y si son un nuevo tipo, podemos crear mtodos que


reciban y/o retornen arreglos
public class ManejadorDeNotas {
public double[] calculaNotas(int[] puntajesObtenidos, int puntajeMaximo) {
// ...
}
}

18

Otra forma de construir arreglos


char[] vocales = {'a', 'e', 'i', 'o', 'u'};
Celular c1 = new Celular("Apple", "iPhone 4S");
Celular c2 = new Celular("Samsung", "Galaxy Nexus");
Celular c3 = new Celular("Sony", "Xperia S");
Celular[] superDuperCelulares = {c1, c2, c3};

Especificamos directamente los elementos que contiene


el arreglo
19

{"hip", "hip"}
es un hip hip array!

20

Cuidado con
intentar obtener o guardar un elemento en un ndice
fuera del rango
char[] vocales = {'a', 'e', 'i', 'o', 'u'};

System.out.println(vocales[-1]); // slo tenemos desde ndice 0
System.out.println(vocales[5]); // slo tenemos hasta ndice 4

21

Ejercicios

22

Ejercicio

Escribe un mtodo que copie un arreglo y entregue la


copia como retorno

23

Ejercicio

Escribe un programa que pregunte un nmero al usuario


y lo descomponga en un arreglo de dgitos

24

Ejercicio
Genera un arreglo de enteros aleatorios y luego
encuentra el largo e ndice donde comienza la secuencia
montona creciente ms larga
Ej.: { 3, 1, 5, 9, 10, 43, 6, 81, 22 }
La secuencia marcada est compuesta por nmeros en
que el siguiente es siempre mayor que el anterior.
Comienza en el ndice 2 y tiene un largo de 4.
25

Ejemplo
Escribe un programa que represente un mazo de
cartas y lo baraje (como se muestra en la foto) tantas
veces como el usuario indique

Muestra el mazo antes y despus de barajarlo


26

Ejercicio
Ticketbastard quiere rehacer su sistema de venta de
entradas. Para ello, te pide que crees un programa en el
que se le pueda, primero, especificar el nombre del
evento a vender y las categoras de entradas que ofrecen
(cada categora indica ubicacin (galera, cancha, etc.),
precio y cantidad de entradas disponibles) y, luego, sea
posible ir vendiendo estas entradas a medida que un
cliente realiza una determinada compra.

27

Ejemplo
Una municipalidad le pide a la empresa Dynamic
Computer Connections (DCC) un presupuesto
para conectar a Internet a sus establecimientos
educacionales. Se sabe que se necesitan 30 Kbps
por cada estudiante y se conocen las cantidades de
estudiantes de cada establecimiento. Adems, DCC
cuenta slo con 3 planes, de 10, 15 y 30 Mbps que
tienen un valor de $15.000, $20.000 y $30.000
mensuales respectivamente. Especifique los pasos
necesarios para obtener un presupuesto de Internet
para todos los establecimientos por un ao.
ao
28

Ejemplo
Dynamic Computer Connections S.A.
Presupuesto para 5 colegios:
Liceo Villa Macul Academia: $30.000 (Plan Super 30)
Colegio Millant: $15.000 (Plan Super 10)

Total mensual: $125.000


Total anual: $1.500.000

29

Cmo podemos representar esto en un programa?


30

31

Arreglos
bidimensionales
aka Matrices en Matemticas
Corresponden a un arreglo de objetos que son
arreglos!
char[][] burbujas = new char[10][10];
burbujas[0][0] = 'a';
burbujas[5][8] = 'v';
// tambin puede ser especificado directamente
char[][] otrasBurbujas = {{'a','v','y'},{'c', 'a','e'}};

32

Arreglos
bidimensionales
aka Matrices en Matemticas
Corresponden a un arreglo de objetos que son
arreglos!
// no es necesario especificar la otra dimensin de inmediato
char[][] masBurbujas = new char[5][];
masBurbujas[0] = new char[3];
// ni tampoco tienen que ser regulares
masBurbujas[1] = new char[9];

33

Ejercicio

Escriba un mtodo que reciba una matriz y la


transponga sin crear una nueva matriz

34

Ejercicio
Encontrar los mximos locales de altura en un terreno
representado en una matriz (que debe generar
aleatoriamente). Un mximo local es un punto en el cual
todos sus puntos vecinos son de menor altura

35

Misin: imposible

36

Ejercicio
Crea una clase que represente las elevaciones de un
terreno. Cada punto del terreno es un entero que
representa la cantidad de metros que tiene el terreno en
ese punto. Luego, adele mtodos que permitan
modificar el terreno realizando elevaciones en un punto,
indicando la cantidad de metros a elevar. Estas elevaciones
funcionan como en la siguiente figura:

37

Ejercicio

38

También podría gustarte