Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

APUNTE05_INFO023 - SEM_I_2013

Manejo de Arreglos
by

Erick Araya

on 25 February 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of APUNTE05_INFO023 - SEM_I_2013

Arreglo (Array)
A1
A1Copia
Los arreglos no se copian mediante asignación
Introducción
Dinámicos
No extensibles
Métodos con arreglos como parámetros
Un arreglo completo puede pasar como parámetro.
El parámetro es una referencia al arreglo.
Ejemplo: Método que imprime los n-primeros elementos de un arreglo de enteros:
Ejemplo: Inicialice e Imprima
import java.util.Scanner;
public class multiplos01{
public static void main(String args[]) {
Scanner entrada = new Scanner(System.in);
int [] A = new int[10];
System.out.println(" i A[i] ");
for (int i = 0; i < 10; i++) {
A[i] = 2*i+2;
System.out.println(" "+i+" "+A[i]);
}
}
}
Arreglos Bidimensionales
Declaración:
int tabla [][];
Ejemplo:
tabla = new int [10][5];
EJEMPLO 2 (en clase)
Repita el ejemplo 1, solo que esta vez el arreglo de 10 x 5 debe inicializarse con el patrón que se muestra (sin usar métodos)
EJEMPLO 3 (en clase)
Repita el ejemplo 1, solo que esta vez el arreglo de 10 x 5 debe inicializarse con el patrón que se muestra (sin usar métodos)
Ejercicio
Programa en java que solicite la dimensión de un arreglo (rechace los no válidos) y almacene en éste números aleatorios entre 0 y 9. Un ejemplo de E/S:
Declaración de un Arreglo
tipo [ ] identificador;
tipo identificador [ ];
Ejemplos:
int [ ] miArreglo;
int [ ] otro, a, x;
String b, c[ ];
char arregloCh [ ];
La cantidad de elementos del arreglo no se indica en la declaración.
Declaración de arreglos
En dos pasos:
int c[ ]; //declaración
c = new int[ 12 ]; //asignación
En un paso:
int c[ ] = new int[ 12 ];
Para conocer el número de elementos:
c.length
Asignaciones (ejemplos):
c[ 0 ] = 3;
c[ 0 ] += 5;
Operaciones en los subíndices:
Si x = 3,
c[ 5 - 2 ] == c[ 3 ] == c[ x ]
Declaración y Asignación
de Arreglos

Elementos Primitivos son inicializados a cero o falso.
Referencias No-primitivas son null.
Ejemplos declaraciones:

String b[ ] = new String[100], x[ ] = new String[ 27 ];
double[ ] array1, array2;
Inicializador de listas
int miArreglo[ ] = { 1, 2, 3, 4, 5 };
float [ ] temperatura = {27.3, 30.2, 22.5};
Ejemplo: Inicialice e Imprima
Problema: Escribir un programa que inicialice un arreglo A de 10 elementos con los primeros enteros múltiplos de 2 (2,4,6,8,...20) e imprima el arreglo en formato tabular. Un ejemplo de A:
Copia de Arreglos
Ejemplo:
int [ ] A1 = {12, 24, 36, 48};
Int [ ] A1copia = A1;

¿Qué pasa si, a continuación de lo anterior,
A1[0] = 21;
¿Cambia el valor de A1copia[0]?
¿Por qué?
Ejemplo

char[ ] Desde = { 'd', 'e', 'c', 'a', 'f', 'e', 'i', 'n', 'a', ‘d', ‘o'};
char[ ] Hacia = new char[7];
System.arraycopy(Desde, 2, Hacia, 0, 7);

Se ha copiado Desde en Hacia.
Cualquier cambio en Desde no afectará a Hacia.
EJEMPLO 1 (en clase)
Programa que crea un arreglo de 10 x 5 enteros e inicializa su contenido sólo con 1’s (sin usar métodos)
Solución
///programa que inicializa un arreglo de 10x5
// un patrón ascendente por filas
import java.util.Scanner;
public class iniarreglo02 {
public static void main(String args[]) {
int tabla[][] =new int[10][5];
for(int i = 0; i<10; i++){
for (int j = 0; j<5; j++){
tabla[i][j]=(i+1)%10;
}
}
Solución
//programa que imprime solo una fila
//de un arreglo de 10x5
import java.util.Scanner;
public class iniarreglo04 {
public static void main(String args[]) {
int tabla[][] =new int[10][5];
for(int i = 0; i<10; i++){
for (int j = 0; j<5; j++){
tabla[i][j]=(9-i)%10;
}
}
imprimeFila(tabla,3);
}
public static void imprimeFila(int [][]t, int f){
for (int j = 0; j < 5; j++){
System.out.print(t[f][j]+" ");
}
System.out.println();
}
}
EJEMPLO 5 (en clase)
Igual que el anterior, solo que esta vez se imprime una fila y los métodos usados no retornan los arreglos (Usa paso de parámetros con arreglos como forma de retornar arreglos.)
public static void defineArreglo1(int [][]t){
for(int i = 0; i<10; i++){
for (int j = 0; j<5; j++){
t[i][j]=(9-i)%10;
}
}
}
}
SOLUCION
Lo medular:
int [][] datos = new int[F][C];
// Se completa el arreglo de F x C elementos con numeros aleatorios entre el 0 y el 9
Random genera = new Random();
int r = 0;
for (int i = 0; i < F; i++) {
for (int j = 0; j < C; j++) {
r = genera.nextInt(9);
datos[i][j] = r;
}
}
Retorno de arreglos en Métodos
Un arreglo completo puede retornar al programa que lo invocó.
Al igual que en el caso del parámetro, se retorna una referencia al arreglo.
Objetivos de la sesión
Aprender a registrar conjuntos de valores, todos del mismo tipo, en una estructura de datos denominada “Arreglo”
Para copiar un arreglo:
Método “array copy”, perteneciente a la clase System

public static void arraycopy(Object fuente,
int posicInicialFuente,
Object destino,
int posicInicialDestino,
int cantidadElemACopiar)
Solución
//programa que inicializa un arreglo de 10x5 con 1's
import java.util.Scanner;
public class iniarreglo01 {
public static void main(String args[]) {
int tabla[][] =new int[10][5];
for(int i = 0; i<10; i++){
for (int j = 0; j<5; j++){
tabla[i][j]=1; }
}
for(int i = 0; i<10; i++){
for (int j = 0; j<5; j++){
System.out.print(tabla[i][j]+" ");}
System.out.println();}
}
}
Solución
///programa que inicializa un arreglo de 10x5
// un patrón ascendente por filas
import java.util.Scanner;
public class iniarreglo02 {
public static void main(String args[]) {
int tabla[][] =new int[10][5];
for(int i = 0; i<10; i++){
for (int j = 0; j<5; j++){
tabla[i][j]=(i+1)%10;
}
}
for(int i = 0; i<10; i++){
for (int j = 0; j<5; j++){
System.out.print(tabla[i][j]+" ");
}
System.out.println();
}
}
}
EJEMPLO 4 (en clase)
Repita el ejemplo 3, solo que esta vez sólo se imprime una fila (Use métodos)
Solución
import java.util.Scanner;
public class iniarreglo06 {
public static void main(String args[]) {
int [][]tabla = new int[10][5];
defineArreglo1(tabla);
imprimeFila(tabla,3);
}
public static void imprimeFila(int [][]t, int f){
for (int j = 0; j < 5; j++){
System.out.print(t[f][j]+" ");
}
System.out.println();
}
Ejercicio
Escriba un método que calcula el cuadrado de 10 enteros consecutivos, a partir de un número recibido como parámetro, y los almacena en los 10 elementos de un arreglo de enteros (también recibido como parámetro). Además escriba un programa que solicite el número desde teclado, invoque el método para el cálculo de los cuadrados e imprima en pantalla el arreglo retornado
Arreglos
(http://tinyurl.com/mebus5z)

PROGRAMACIÓN 2013
APUNTE 05
Full transcript