Sunteți pe pagina 1din 34

Programacin Electrnica 2 el estilo Haga clic para modificar de subttulo del patrn

Programacin Electrnica 2

Arreglos

Tema 8 Fase 2

Ing. Mario Urrutia Espinoza Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Agenda
q q q q q

Introduccin. Arreglos Declaracin y creacin de arreglos Ejemplos Arreglos multidimensionales

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Introduccin

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

p Los arreglos son una parte importante de las

estructuras de datos que analizan las colecciones de elementos de datos relacionados.


p Los arreglos (unidimensionales o vectores y

multidimensionales o matrices) son estructuras de datos que consisten de elementos relacionados, del mismo tipo.
p Los arreglos son entidades de longitud fija, es decir,

conservan la misma longitud una vez creados, aunque puede reasignarse una variable tipo arreglo de tal forma que haga referencia a un nuevo arreglo de distinta longitud
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

Arreglos Unidimensional es

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

p Un arreglo es un grupo de variables

(elementos o componentes) que contienen valores, todos del mismo tipo (primitivos o de referencia). consideran como tipos de referencia. Un arreglo es en realidad una referencia a un objeto arreglo en memoria. especfico en un arreglo, debemos especificar el nombre de la referencia al arreglo y el nmero de la posicin del elemento en el arreglo (ndice oIng. Mario Urrutia Espinoza subndice)

p Los arreglos son objetos, por lo que se

p Para hacer referencia a un elemento

Programacin Electrnica 2

Representacin lgica de un arreglo unidimensional de enteros, llamado c.

Este arreglo contiene 12 c. El nombre del arreglo es elementos. Cada instancia de un objeto Un programa puede hacer y conoce su propia longitud referencia a susinformacin mantiene esta elementos mediante una en un campo length. expresin que c.lengthel La expresin incluye nombre delcampo length del accede al arreglo, seguido por el ndice del arreglo c para determinar elemento especfico la longitud del arreglo. encerrado entre ] es -45, el El valor de c[ 0 corchetes ([ ]). de c[ 1 ] es 6, el de valor El primer 0, el de c[ en]un 62 c[ 2 ] es elemento 7 es arreglo tiene eles 78. y el de c[ 11 ] ndice cero (elemento cero) de los Para calcular la suma Los elementos del arreglo primeros tres elementos cdel arreglo c[ y almacenar el son c[ 0 ], c 1 ], c[ 2 ], y as sucesivamente. resultado en la variable El mayor ndice en el suma: arreglo c = c[ 0 ] + c[ 1 ] + suma es 11; 1 menos que 12, nmero ]; c[ 2 de elementos enel valor de Para dividir el arreglo. Los 6 ] entre 2 y los c[ nombres de asignar el arreglos siguenvariable x: resultado Mario Urrutia Espinoza Ing. a la las mismas convenciones que x = c[ 6 ] / 2;

Programacin Electrnica 2

Declaracin y creacin de arreglos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

p Los objetos arreglo ocupan espacio en memoria. p Al igual que cualquier objeto, los arreglos

unidimensionales se crean con la palabra clave new donde debe especificarse el tipo de cada elemento y el numero de elementos que se requieren para el arreglo, como parte de una expresin para crear un arreglo que utiliza la palabra clave new. almacenarse en una variable tipo arreglo.

p Dicha expresin devuelve una referencia que puede

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

10

10 p La siguiente declaracin y expresin crea un objeto arreglo, que contiene 12 elementos int, y almacena la referencia del

arreglo en la variable c:
int c[] = new int[12]; p Tambin puede hacerse por separado:
int c[ ]; // declara la variable arreglo c = new int[ 12 ]; // crea el arreglo y lo asigna a la variable arreglo

p Al crear un arreglo, cada uno de sus elementos recibe un valor

predeterminado: cero para los elementos numricos tipo primitivo, false para los elementos boolean y null para las referencias.

p Pero tambin es posible proporcionar valores iniciales para

los elementos no especficos ni predeterminados al crear un arreglo.


Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

11

11

p Un programa puede crear varios arreglos en una

sola declaracin. La siguiente declaracin de un arreglo String reserva 100 elementos para b y 27 para x:
String b[] = new String[ 100 ], x[] = new String[ 27 ];

p En este caso, se aplica el nombre de la clase String

a cada variable en la declaracin.

p Por cuestin de legibilidad, es preferible declarar

solo una variable en cada declaracin:


String b[] = new string[ 100 ]; // crea el arreglo b String x[] = new string[ 27 ]; // crea el arreglo x

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

12

12 p Cuando se declara un arreglo, su tipo y los corchetes pueden

combinarse al principio de la declaracin para indicar que todos los identificadores en la declaracin son variables tipo arreglo. Por ejemplo:

double[] arreglo1, arreglo2; p indica que arreglo1 y arreglo2 son variables tipo arreglo de

double. La anterior declaracion es equivalente a:


double arreglo1[]; double arreglo2[];

double[] arreglo1; double[] arreglo2;

p Los pares de la derecha son equivalentes; cuando se declara

solo una variable en cada declaracin, los corchetes pueden colocarse ya sea despus del nombre de la variable o antes de la misma.
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

13

13

Ejemplos acerca del uso de los arreglos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

14

14

Creacin e inicializacin de un arreglo


Inicializacin de los elementos de un arreglo con valores predeterminados de cero

Pantalla

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

15

15

Inicializacin de los elementos de un arreglo con un inicializador de arreglo

Pantalla

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

16

16 Clculo de los valores a guardar en un arreglo

Pantalla

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

17

17 Suma de los elementos de un arreglo (con for controlada por contador)

Pantalla

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

18

18 Suma de los elementos de un arreglo con for mejorado

El encabezado del for mejorado se puede leer: para cada iteracin, asignar el siguiente elemento de arreglo a la variable numero y despus ejecutar la siguiente instruccin La instruccin for mejorada slo puede utilizarse para obtener elementos del arreglo; no puede utilizarse para modificar los elementos, dicho de otra manera, cuando el cdigo que itera a travs de un arreglo requiere acceso solo a los valores y no al subndice del elemento actual del arreglo Pantalla

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

19

19

Ejercicio
p Programa que lee por teclado la nota de los alumnos de una

clase y calcula la nota media del grupo. Tambin muestra los alumnos con notas superiores a la media.

p Solucin: que contendr las notas de los alumnos.

Este programa utiliza un arreglo de elementos de tipo double El tamao del arreglo ser el nmero de alumnos de la clase, Se realizan 3 recorridos sobre el arreglo: el primero para

por lo tanto primero se pedir por teclado el nmero de alumnos y a continuacin se crear el arreglo. asignar a cada elemento las notas introducidas por teclado, el segundo para sumarlas y calcular la media y el tercero para mostrar los alumnos con notas superiores a la media

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

20

20

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

21

21 Ejercicio: Hacer un programa que lea 10 valores enteros en un arreglo desde el teclado y calcule y muestre: la suma, el valor medio, el mayor y el menor

Probar y corregir

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

22

22

Arreglos multidimension ales

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

23

23

p Los arreglos multidimensionales de dos dimensiones se

utilizan con frecuencia para representar tablas de valores, las cuales consisten en informacin ordenada en filas y columnas. especificar dos subndices. Por convencin, el primero identifica la fila del elemento y el segundo su columna.

p Para identificar un elemento especfico de una tabla, debemos

p Los arreglos que requieren dos subndices para identificar un

elemento especfico se llaman arreglos bidimensionales.


p Java no soporta los arreglos multidimensionales directamente,

pero permite al programador especificar arreglos unidimensionales, cuyos elementos sean tambin arreglos unidimensionales, con lo que se obtiene el mismo efecto

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

24

24

Arreglos bidimensionales

- Cada elemento en el arreglo a se identifica mediante una expresin de acceso a un arreglo de la forma a [ fila ][ columna ]; - a es el nombre del arreglo, fila y columna son los subndices que identifican en forma nica a cada elemento en el arreglo a por nmero de fila y columna. - Observe que los nombres de los elementos en la fila 0 tienen todos un primer subndice de 0, y los nombres de los elementos en la columna 3 tienen un segundo subndice de 3.
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

25

25

Arreglos de arreglos unidimensionales

p Los arreglos multidimensionales tambin pueden inicializarse

mediante inicializadores de arreglos en las declaraciones. Un arreglo bidimensional b con dos filas y dos columnas podra declararse e inicializarse con inicializadores de arreglos anidados, como se muestra a continuacin:

int b[ ] [ ] = { { 1, 2 }, {3, 4} }; p Los valores del inicializador se agrupan por fila entre llaves. p Entonces, 1 y 2 inicializan a b[ 0 ][ 0 ] y b[ 0 ][ 1 ],

respectivamente; 3 y 4 inicializan a b[ 1 ][ 0 ] y b[ 1 ][ 1 ], respectivamente formando la matriz:


b[0][0] b[1][0] b[0][1] b[1][1]
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

26

26 p El compilador cuenta el nmero de inicializadores de arreglos

anidados (representados por conjuntos de llaves dentro de las llaves externas) en la declaracin del arreglo, para determinar el nmero de filas en el arreglo b. Asimismo, cuenta los valores inicializadores en el inicializador de arreglos anidado de una fila, para determinar el nmero de columnas en esa fila. Esto significa que las filas pueden tener distintas longitudes. de arreglos unidimensionales.

p Los arreglos multidimensionales se mantienen como arreglos p Por lo tanto, el arreglo b en la declaracin anterior est

realmente compuesto de dos arreglos unidimensionales separados: uno que contiene los valores en la primera lista inicializadora anidada { 1, 2 } y otro que contiene los valores en la segunda lista inicializadora anidada { 3, 4 }. As, el arreglo b en s es un arreglo de dos elementos, cada uno de los cuales es un arreglo unidimensional.
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

27

27

Arreglos bidimensionales con filas de distintas longitudes


p La forma en que se representan los arreglos

multidimensionales los hace bastante flexibles. De hecho, las longitudes de las filas en el arreglo b no tienen que ser iguales. Por ejemplo,

int b[ ][ ] = { { 1, 2 }, { 3, 4, 5 } };

p crea el arreglo entero b con dos elementos (los cuales se

determinan segn el nmero de inicializadores que representan las filas del arreglo bidimensional.

p Cada elemento de b es una referencia a un arreglo

unidimensional de variables. El arreglo de la fila 0 es un arreglo unidimensional con dos elementos (1 y 2), y el arreglo de la fila 1 es un arreglo unidimensional con tres elementos (3, 4 y 5).
Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

28

28

Creacin de arreglos bidimensionales mediante expresiones de creacin de arreglos

p Un arreglo multidimensional con el mismo nmero

de columnas en cada fila puede crearse mediante una expresin de creacin de arreglos.
p Por ejemplo, se declara el arreglo b y se le asigna

una referencia a un arreglo de tres por cuatro:

int b[ ][ ] = new int[ 3 ][ 4 ];

p En este caso, utilizamos los valores literales 3 y 4

para especificar el numero de filas y columnas, respectivamente, pero esto no es obligatorio

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

29

29

p Al igual que con los arreglos unidimensionales, los

elementos de un arreglo multidimensional se inicializan cuando se crea el objeto arreglo.


p Un arreglo multidimensional, en el que cada fila

tiene un nmero distinto de columnas, puede crearse de la siguiente manera:


int b[][] = new int[2][]; // crea 2 filas b[0] = new int[5]; // crea 5 columnas para la fila 0 b[1] = new int[3]; // crea 3 columnas para la fila 1

p Estas instrucciones crean un arreglo bidimensional

con dos filas. La fila 0 tiene cinco columnas y la fila 1 tiene 3.


Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

30

Inicializacin de arreglos bidimensionales

30 El mtodo main de la clase InicArreglo declara dos arreglos: En la declaracin de arreglo1 se utilizan inicializadores para inicializar la primera fila del arreglo con los valores 1, 2 y 3, y la segunda fila con los valores 4, 5 y 6. En la declaracin de arreglo2 se utilizan inicializadores de distintas longitudes. En este caso, la primera fila se inicializa para tener dos elementos con los valores 1 y 2, respectivamente. La segunda fila se inicializa para tener un elemento Pantalla con el valor 3. La tercera fila se inicializa para tener tres elementos con los valores 4, 5 y 6.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

31

31

Manipulaciones comunes en arreglos multidimensionales, realizadas mediante instrucciones for


p p

Manipulaciones comunes en arreglos utilizan la instruccin for. La siguiente instruccin for asigna a todos los elementos en la fila 2 del arreglo a, el valor de cero:

for ( int columna = 0; columna < a[ 2 ].length; columna++ ) a[ 2 ][ columna ] = 0;

Se especifica la fila 2; por lo tanto, el primer ndice siempre ser 2 (0 es la primera fila y 1 es la segunda). Este ciclo for vara solamente el segundo ndice (de la columna). Si la fila 2 del arreglo a contiene cuatro elementos, entonces la instruccin for anterior es equivalente a las siguientes instrucciones de asignacin:
2 2 2 2 ][ ][ ][ ][ 0 1 2 3 ] ] ] ] = = = = 0; 0; 0; 0;

a[ a[ a[ a[

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

32

32 p La siguiente instruccin for anidada suma el total de los valores

de todos los elementos del arreglo a:

int total = 0; for ( int fila = 0; fila < a.length; fila++ ) { for ( int columna = 0; columna < a[ fila ].length; columna++ ) total += a[ fila ][ columna ]; } // fin de for exterior

p Estas instrucciones for anidadas suman el total de los

elementos del arreglo, una fila a la vez.

p La instruccin for exterior empieza asignando 0 al ndice fila, de

modo que los elementos de la primera fila puedan totalizarse mediante la instruccin for interior. Luego, la instruccin for exterior incrementa fila a 1, de manera que la segunda fila pueda totalizarse y as sucesivamente. La variable total puede mostrarse al terminar la instruccin for exterior.

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

33

33
Ejercicio: Programa que permite ingresar datos por teclado a una matriz y visualizarlos

Ing. Mario Urrutia Espinoza

Programacin Electrnica 2

34

34
Ejercicio: Programa que permite hacer la suma entre dos matrices donde los datos de las matrices sumando se generan aleatoriamen te

Ing. Mario Urrutia Espinoza

S-ar putea să vă placă și