arreglo s
TRANSCRIPT
-
UNIDAD II: ARREGLOS.
ARREGLOS UNIDIMENSIONALES Y MULTIDIMENSIONALES
Objetivo El estudiante conocer la representacin interna de los arreglos unidimensionales. As
mismo, ser capaz de aplicarlos al construir modelos y desarrollar aplicaciones de software que
requieran de estos.
Unidimensional.
Multidimensional.
ARREGLOS UNIDIMENSIONALES LISTAS (VECTORES) Un array almacena muchos elementos del mismo tipo, tales como veinte enteros, cincuenta nmeros
de cmo flotante o quince caracteres. Los arrays pueden ser de una dimensin y son los ms
utilizados, de dos dimensiones, tablas o matrices, tambin de tres o ms dimensiones. El array es
muy importante por diversas razones. Una muy importante es que permite almacenar secuencias o
cadenas de texto; por su importancia, Java proporciona la clase String, que representa a una
secuencia de caracteres y las operaciones con cadenas ms comunes.
Conceptos bsicos
Un array (lista o tabla) es una secuencia de datos del mismo tipo. Los datos se llaman elementos del
array y se numeran consecutivamente 0, 1, 2, 3 El tipo de elemento almacenado en el array puede ser cualquier tipo de dato simple de Java, o de tipo previamente declarado. Normalmente el array se
utiliza para almacenar tipos tales como char, int o flotante.
Un array puede contener, por ejemplo la edad de los alumnos de una clase, las temperaturas de cada
da de un mes en una ciudad determinada, o el nmero de personas que residen en cada uno de los
municipios de la ciudad de Misantla, cada item sedenomina elemento. Los elementos de un array,
como ya se ha comentado del 0, 1, 2, 3 Estos nmeros se denominan valores ndices o subndices del array. Estos nmeros localizan la posicin del elemento dentro del array, proporcionando acceso
directo al array.
Si el nombre del array es ciudad, entonces ciudad[0] es el elemento que est en la posicin 0,
ciudad[1] es el elemento que est en la posicin 1, etc. En general, el elemento i-simo est en la
posicin i-1. De modo que si el array tiene n elementos, sus nombres son ciudad[0], ciudad[1],. ciudad[n-1]. Grficamente se representa as el array ciudad con seis elementos.
- Vectores paralelos
Este concepto se da cuando hay una relacin entre las componentes de igual subndice (misma
posicin) de un vector y otro.
-
Si tenemos dos vectores de 5 elementos cada uno. En uno se almacenan los nombres de personas en
el otro las edades de dichas personas. Decimos que el vector nombres es paralelo al vector edades si
en la componente 0 de cada vector se almacena informacin relacionada a una persona (Juan 12 aos). Es decir hay una relacin entre cada componente de los dos vectores. Esta relacin la conoce
nicamente el programador y se hace para facilitar el desarrollo de algoritmos que procesen los
datos almacenados en las estructuras de datos.
Ejemplo: Desarrollar un programa que permita cargar 5 nombres de personas y sus edades
respectivas. Luego de realizar la carga por teclado de todos los datos imprimir los nombres de las
personas mayores de edad (mayores o iguales a 18 aos)
Programa:
import java.util.Scanner;
public class PruebaVector10 {
private Scanner teclado;
private String[] nombres;
private int[] edades;
public void cargar() {
teclado=new Scanner(System.in);
nombres=new String[5];
edades=new int[5];
for(int f=0;f
-
- Vectores (mayor y menor elemento)
Es una actividad comn la bsqueda del mayor y menor elemento de un vector, lo mismo que su
posicin. El mayor elemento es el 820 y se encuentra en la posicin n 2.
Ejemplo: Crea un programa que permita cargar los nombres de 5 operarios y sus sueldos
respectivos. Mostrar el sueldo mayor y el nombre del operario.
Programa:
import java.util.Scanner;
public class PruebaVector11 {
private Scanner teclado;
private String[] nombres;
private float[] sueldos;
public void cargar() {
teclado=new Scanner(System.in);
nombres=new String[5];
sueldos=new float[5];
for(int f=0;f
-
- Vectores (ordenamiento)
El ordenamiento de un vector se logra intercambiando las componentes de manera que: vec[0]
-
Analizando el algoritmo podemos comprobar que el elemento mayor del vector se ubica ahora en el
ltimo lugar. Podemos definir otros vectores con distintos valores y comprobar que siempre el
elemento mayor queda al final. Pero todava con este algoritmo no se ordena un vector. Solamente
est ordenado el ltimo elemento del vector. Ahora bien, con los 4 elementos que nos quedan
podemos hacer el mismo proceso visto anteriormente, con lo cual quedar ordenado otro elemento
del vector. Este proceso lo repetiremos hasta que quede ordenado por completo el vector. Como
debemos repetir el mismo algoritmo podemos englobar todo el bloque en otra estructura repetitiva.
Realicemos una prueba del siguiente algoritmo:
Cuando k = 0
f = 0 f = 1 f = 2 f = 3
750 750 750 750
1200 820 820 820
820 1200 550 550
550 550 1200 490
490 490 490 1200
Cuando k = 1
f = 0 f = 1 f = 2 f = 3
750 750 750 750
820 550 550 550
550 820 490 490
490 490 820 820
1200 1200 1200 1200
Cuando k = 2
f = 0 f = 1 f = 2 f = 3
550 550 550 550
750 490 490 490
490 750 750 750
820 820 820 820
1200 1200 1200 1200
Cuando k = 3
f = 0 f = 1 f = 2 f = 3
490 490 490 490
550 550 550 550
750 750 750 750
820 820 820 820
1200 1200 1200 1200
Porque repetimos 4 veces el for externo? Como sabemos cada vez que se repite en forma completa
el for interno queda ordenada una componente del vector. A primera vista diramos que deberamos
repetir el for externo la cantidad de componentes del vector, en este ejemplo el vector sueldos tiene
5 componentes. Si observamos, cuando quedan dos elementos por ordenar, al ordenar uno de ellos
queda el otro automticamente ordenado (podemos imaginar que si tenemos un vector con 2
elementos no se requiere el for externo, porque este debera repetirse una nica vez). Una ltima
consideracin a este ALGORITMO de ordenamiento es que los elementos que se van ordenando
continuamos comparndolos.
-
Ejemplo: En la primera ejecucin del for interno el valor 1200 queda ubicado en la posicin 4 del
vector. En la segunda ejecucin comparamos si el 820 es mayor a 1200, lo cual seguramente ser
falso. Podemos concluir que la primera vez debemos hacer para este ejemplo 4 comparaciones, en
la segunda ejecucin del for interno debemos hacer 3 comparaciones y en general debemos ir
reduciendo en uno la cantidad de comparaciones. Si bien el algoritmo planteado funciona, un
algoritmo ms eficiente, que se deriva del anterior es el plantear un for interno con la siguiente
estructura: (f=0 ; f
-
Ejemplo: Definir un vector donde almacenar los nombres de 5 paises. Confeccionar el algoritmo de
ordenamiento alfabtico.
Programa:
import java.util.Scanner;
public class PruebaVector14 {
private Scanner teclado;
private String[] paises;
public void cargar() {
teclado=new Scanner(System.in);
paises=new String[5];
for(int f=0;f
-
- Vectores (ordenamiento con vectores paralelos)
Cuando se tienen vectores paralelos y se ordena uno de ellos hay que tener la precaucin de
intercambiar los elementos de los vectores paralelos.
Ejemplo: Crea un programa que permita cargar los nombres de 5 alumnos y sus notas respectivas.
Luego ordenar las notas de mayor a menor. Imprimir las notas y los nombres de los alumnos.
Programa:
import java.util.Scanner;
public class PruebaVector16 {
private Scanner teclado;
private String[] nombres;
private int[] notas;
public void cargar() {
teclado=new Scanner(System.in);
nombres=new String[5];
notas=new int[5];
System.out.println("Carga de nombres y notas");
for(int f=0;f
-
}
public static void main(String[] ar) {
PruebaVector16 pv=new PruebaVector16();
pv.cargar();
pv.ordenar();
pv.imprimir();
}
}
ARREGLOS MULTIDIMENSIONALES Los arrays vistos anteriormente se conocen como arrays unidimensionales (una sola dimensin) y se
caracterizan por tener un solo subndice. Estos arrays se conocen tambin por el trmino listas. Los
arrays multidimensionales son aquellos que tienen ms de una dimensin y, en consecuencia, ms
de un ndice. Los arrays ms usuales son los de dos dimensiones, conocidos tambin por el nombre
de tablas o matrices. Sin embargo, es posible crear arrays de tantas dimensiones como requieran sus
aplicaciones, esto es, tres, cuatro o ms dimensiones.
- Estructura de datos tipo matriz
Una matriz es una estructura de datos que permite almacenar un CONJUNTO de datos del MISMO
tipo. Con un nico nombre se define la matriz y por medio de DOS subndices hacemos referencia a
cada elemento de la misma (componente)
Hemos graficado una matriz de 3 filas y 5 columnas. Para hacer referencia a cada elemento
debemos indicar primero la fila y luego la columna, por ejemplo en la componente 1,4 se almacena
el valor 97. En este ejemplo almacenamos valores enteros. Todos los elementos de la matriz deben
ser del mismo tipo (int, float, String etc.). Las filas y columnas comienzan a numerarse a partir de
cero, similar a los vectores. Una matriz se la puede representar por un conjunto de vectores.
Ejemplo: Crear una matriz de 3 filas por 5 columnas con elementos de tipo int, cargar sus
componentes y luego imprimirlas.
Programa:
import java.util.Scanner;
public class Matriz1 {
-
private Scanner teclado;
private int[][] mat;
public void cargar() {
teclado=new Scanner(System.in);
mat=new int[3][5];
for(int f=0;f