Anda di halaman 1dari 29

UNIVERSIDAD NACIONAL DE CAJAMARCA

FACULTAD DE INGENIERA

Algoritmos y Estructura
de Datos II

ARREGLOS UNIDIMENSIONALES

Qu conocemos de los arreglos unidimensionales?

Descubriendo los Arreglos!


Necesitaremos en algn
momento de programas
que trabajen con muchas
variables o datos al
mismo tiempo?
Puedes mencionar
algunos ejemplos?
Que podemos hacer
para solucionarlos?
en qu programa crees
que podemos utilizar los
arreglos? ejemplos

Donde estamos?
Qu ventajas y
desventajas encuentra a
los arreglos?
Qu tipos de datos
conocemos hasta ahora?
Con qu tipo de
variables hemos
trabajado?
Podemos estructurar,
clasificar a los tipos de
datos estudiados?

Entero
Real
Estndar
Carcter
Simples

Lgico
Definidos por el
programador

Enumerativos
Arrays

Datos

Registros
Estticos

Ficheros
Conjuntos
Cadenas

Estructurados

Listas
Listas enlazadas
Dinmicos
rboles

Grafos

Cmo lo soluciono?
Qu pasara si el
profesor nos plantea
generar una nota
aleatoria para cada
estudiante de la clase
(30), cuntos serian los
aprobados, jalados,
nota mxima, mnima y
promedio?

Logro Esperado
Al finalizar la sesn, el
estudiante presenta un
solucionario de
ejercicios propuestos
sobre arreglos
unidimensionales,
documentando para
cada uno su solucin
propuesta

ARREGLOS UNIDIMENSIONALES

Manipulacin de arreglos unidimensionales

Introduccin

Los programadores a menudo necesitan la


habilidad de representar un grupo de valores
como una lista
La lista puede ser unidimensional o
muldimensional
Java provee arreglos y las clases coleccin
Consideraremos primero a los arreglos

Terminologa bsica

Una lista esta compuesta de elementos


Los elementos en una lista tienen un nombre
comn
La lista como un todo es referenciada a travs
de un nombre comun
Los elementos de una lista son del mismo tipo
el tipo base
Los elementos de una lista son referenciados
por subndices, (indexando) el nombre comun

Caractersticas de un array Java


Los subndices son denotados como expresiones
dentro de corchetes [ ]
El tipo base (elemento) puede ser de cualquier tipo
El tamao de un arreglo puede ser especificado en
tiempo de ejecucin
El tipo del ndice es entero y el rango debe de estar
entre 0 ... n-1
Donde n es el nmero de elementos

La comprobacin de lmites es automtica

Asegura que cualquier referencia a un array es vlida

El campo length especifica el nmero de elementos


en la lista
Un arreglo es un objeto
Tiene caractersticas comunes a todos los otros objetos

Estilos de definicin de una variable


array
Sin inicializacin
TipoElemento [] id
TipoElemento tipo de los elemtos de la lista
[] indican que se est definiendo un array
Id nombre del arreglo

TipoElemento[ ] id ;

Tipo de los Los [] indican Nombre


que se est
de la lista
elementos
de la lista definiendo un
array

Estilos de definicin de una variable


array
Con inicializacin
TipoElemento [] id = new TipoElemento [n]
nexpresin entera positiva que e indica el nmero de
elementos del array
new TipoElemento [n] referencia a un nuevo array de n
elementos
Expresin enetera positiva que indica el
nmero de elementos del array

TipoElemento[ ] id = new TipoElemento[ n ];

Referencia a un nuevo array de n


elementos

Ejemplo
Definiciones
char[] c;
int[] value = new int[10];

Descripcin
La variable c que es un arreglo de objetos no esta inicializada
La variable value que es un arreglo de objetos hace referencia a
una nueva lista de 10 elementos del tipo entero
Cada uno de los enteros es inicializado por defecto en 0

c
value

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();
v

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();
v

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();
v

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();
v

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();
v

12

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();
v

Se muestra 8

12

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
int[] v = new int[10];
int i = 7;
int j = 2;
int k = 4;
v[0] = 1;
v[i] = 5;
v[j] = v[i] + 3;
v[j+1] = v[i] + v[0];
v[v[j]] = 12;
System.out.println(v[2]);
v[k] = stdin.nextInt();
v

Asumimos que se ha leido el 3

12

v[0]

v[1]

v[2]

v[3]

v[4]

v[5]

v[6]

v[7]

v[8]

v[9]

Considere
cdigo
int[] b = new int[100];
b[-1] = 0;
b[100] = 0;

ocasiona
Se crea una variable array b que hace referencia a una
nueva lista de 100 enteros
Cada elemento es inicializado en cero

Dos excepciones son lanzadas


-1 no es un ndice vlido muy pequeo
100 no es un ndice vlido muy largo
IndexOutOfBoundsException

Cdigo java para leer, generar y mostrar un vector


int[] v = new int[n];
//leer el vector
for(int i=0; i<v.length; i++){
System.out.print("v["+(i+1)+"]= ");
v[i]=sc.nextInt();
}
//mostrar el vector
System.out.println();
for(int i=0; i<v.length;i++){
System.out.print(v[i]+"\t");
}
System.out.println();
//generar vector
for (int i = 0; i < v.length; i++) {
v[i] = (int) (Math.random()*50);
}

Cdigo java utilizando mtodos en la clase main


static void mostrarV(int[] v) {
System.out.println();
for (int i = 0; i < v.length; i++) {
System.out.print(v[i] + "\t");
}
System.out.println();
}
static void generarV(int[] v){
for (int i = 0; i < v.length; i++) {
v[i] = (int) (Math.random()*50);
}
}

Solucin al problema
Qu pasara si el profesor
nos plantea generar una nota
aleatoria para cada
estudiante de la clase (30),
cuntos serian los
aprobados, jalados, nota
mxima, mnima y
promedio?

PREGUNTAS DE REPASO

Qu hemos aprendido?

Recordando la clase
Qu es un arreglo y qu
tipos conocemos?
Qu tipo de dato es un
vector de acuerdo a la
clasificacin estudiada?
Cundo uso un vector?
Cmo definimos un
vector?
Un vector es una variable o
una referencia? Explique
Describa el cdigo usado
para leer, generar y mostrar
un vector cualquiera.
Qu es un mtodo?

APLICACIN PRCTICA

Poniendo en prctica lo aprendido

Problema propuesto
Leer por consola n
nombres y contar la
cantidad de veces que
se ha usado cada letra
del abecedario. No
considerar los
caracteres , , , , ,

Anda mungkin juga menyukai