Clase 8 -Arreglos Unidimensionales

download Clase 8 -Arreglos Unidimensionales

of 68

Transcript of Clase 8 -Arreglos Unidimensionales

  • ARREGLOS

    UNIDIMENSIONALES

  • Slide 2

    Algoritmia y programacin

    Universidad del Valle

    CONTENIDO

    1. Los Arreglos y Java.

    1.2 Insercin de datos

    1.3 Extraccin de datos

    1.1 Definicin de arreglos

    2. Trabajando con arreglos

    3. Ejercicios de repaso

  • Slide 3

    Algoritmia y programacin

    Universidad del Valle

    Definiendo los arreglos unidimensionales.

  • Slide 4

    Algoritmia y programacin

    Universidad del Valle

    Qu es un arreglo?

    * Un arreglo es una lista (conjunto) de datos con

    un nmero fijo de componentes, todos del mismo

    tipo, que estan referenciados bajo un mismo

    nombre.

    * Cada componente del arreglo se puede acceder

    mediante ndices (0, 1, 2, 3, ...) encerradas entre

    corchetes [ ].

  • Slide 5

    Algoritmia y programacin

    Universidad del Valle

    Para qu sirven los arreglos?

    Los arreglos permiten manejar de forma sencilla y directa

    conjuntos de datos del mismo tipo, de los cuales

    conocemos su cantidad y con los cuales se realizarn

    operaciones similares.

    Ejemplo1: Escriba un programa en Java que solicite los

    nombres de cada estudiante del curso y los muestre todos

    al final.

  • Slide 6

    Algoritmia y programacin

    Universidad del Valle

    Para qu sirven los arreglos?

    Ejemplo1: Escriba un programa en Java que solicite los

    nombres de cada estudiante del curso y los muestre todos

    al final.

    Sin arreglos tendramos un programa cuyo cdigo sera

    algo como esto:

    String nombre1, nombre2, nombre3, , nombre50;

    nombre1 =JOptionPane.showInputDialog(Digite su nombre);

    nombre2=JOptionPane.showInputDialog(Digite su nombre);

    . . .

    nombre50=JOptionPane.showInputDialog(Digite su nombre);

    . . .

  • Slide 7

    Algoritmia y programacin

    Universidad del Valle

    Para qu sirven los arreglos?

    Ejemplo1: Escriba un programa en Java que solicite los

    nombres de cada estudiante del curso y los muestre todos

    al final.

    Sin arreglos tendramos un programa cuyo cdigo sera

    algo como esto:

    String nombre1, nombre2, nombre3, , nombre50;

    nombre1 =JOptionPane.showInputDialog(Digite su nombre);

    nombre2=JOptionPane.showInputDialog(Digite su nombre);

    . . .

    nombre50=JOptionPane.showInputDialog(Digite su nombre);

    . . .

  • Slide 8

    Algoritmia y programacin

    Universidad del Valle

    Para qu sirven los arreglos?

    Ejemplo2: Escriba un programa en Java que solicite los

    nombres de cada estudiante de cualquier curso y los

    muestre todos al final.

    Sin arreglos tendramos que declarar un nmero

    arbitrariamente grande de variables de tipo String (100?,

    200?) de tal forma que nunca hubiera ms estudiantes

    que variables del programa.

    String nombre1, nombre2, nombre3, , nombre100;

    . . .

    nombre1 =JOptionPane.showInputDialog(Digite su nombre);

    nombre2=JOptionPane.showInputDialog(Digite su nombre);

    . . .

    nombre50=JOptionPane.showInputDialog(Digite su nombre);

    . . .

  • Slide 9

    Algoritmia y programacin

    Universidad del Valle

    Para qu sirven los arreglos?

    Ejemplo2: Escriba un programa en Java que solicite los

    nombres de cada estudiante de cualquier curso y los

    muestre todos al final.

    Sin arreglos tendramos que declarar un nmero

    arbitrariamente grande de variables de tipo String (100?,

    200?) de tal forma que nunca hubiera ms estudiantes

    que variables del programa.

    String nombre1, nombre2, nombre3, , nombre100;

    . . .

    nombre1 =JOptionPane.showInputDialog(Digite su nombre);

    nombre2=JOptionPane.showInputDialog(Digite su nombre);

    . . .

    nombre50=JOptionPane.showInputDialog(Digite su nombre);

    . . .

  • Slide 10

    Algoritmia y programacin

    Universidad del Valle

    Arreglos: Espacios ordenados

    Un arreglo se puede ver como un conjunto de espacios

    finitos donde se almacenan elementos (todos del mismo

    tipo).

    Un arreglo tambin puede verse como cajas ordenadas en

    fila y numeradas, donde en cada caja se almacena un solo

    elemento u objeto.

    1 2 0

    Luis Ana Juan

    ndice del arreglo

    Elemento del

    arreglo cajasDeNombres

  • Slide 11

    Algoritmia y programacin

    Universidad del Valle

    Para recordar:

    * Un arreglo se usa para almacenar elementos del mismo

    tipo.

    * Un arreglo es de tamao fijo.

    * Cada elemento se guarda en un espacio independiente.

    * Cada espacio se referencia con un ndice (0,1,2,3,...,n).

  • Slide 12

    Algoritmia y programacin

    Universidad del Valle

    Cules son arreglos?

  • Slide 13

    Algoritmia y programacin

    Universidad del Valle

    Cules son arreglos?

  • Slide 14

    Algoritmia y programacin

    Universidad del Valle

    Cules son arreglos?

  • Slide 15

    Algoritmia y programacin

    Universidad del Valle

    2. Los Arreglos y Java

    Declarando y trabajando con arreglos en Java.

  • Slide 16

    Algoritmia y programacin

    Universidad del Valle

    Declarando Arreglos

    La declaracin de un arreglo se hace de la siguiente

    forma:

    TipoDeDato nombre[] = new TipoDeDato [n];

    Donde n es la capacidad (tamao) del arreglo.

    Ejemplos:

    String nombres[ ] = new String [4];

    double notas[ ] = new double [5];

    int edadEstudiantes[ ] = new int [3];

  • Slide 17

    Algoritmia y programacin

    Universidad del Valle

    Declarando Arreglos

    String nombres[] = new String [4];

    Define un arreglo llamado nombres, que almacena cadenas

    de texto y puede contener mximo 4 elementos (con ndices

    0, 1, 2 y 3).

  • Slide 18

    Algoritmia y programacin

    Universidad del Valle

    Declarando Arreglos

    String nombres[] = new String [4];

    Define un arreglo llamado nombres, que almacena cadenas

    de texto y puede contener mximo 4 elementos (con ndices

    0, 1, 2 y 3).

    double notas[] = new double [5];

    Define un arreglo llamado notas, que almacena nmeros

    reales y puede tener mximo 5 elementos (con ndices 0, 1,

    2, 3 y 4).

  • Slide 19

    Algoritmia y programacin

    Universidad del Valle

    Declarando Arreglos

    String nombres[] = new String [4];

    Define un arreglo llamado nombres, que almacena cadenas

    de texto y puede contener mximo 4 elementos (con ndices

    0, 1, 2 y 3).

    double notas[] = new double [5];

    Define un arreglo llamado notas, que almacena nmeros

    reales y puede tener mximo 5 elementos (con ndices 0, 1,

    2, 3 y 4).

    int edadEstudiantes[] = new int [3];

    Define un arreglo llamado edadEstudiantes, que almacena

    nmeros enteros y puede tener mximo 3 elementos (con

    ndices 0, 1 y 2).

  • Slide 20

    Algoritmia y programacin

    Universidad del Valle

    Declarando arreglos

    TipoDeDato nombre[] = new TipoDeDato [n];

    Los arreglos definidos de esta forma no estn

    inicializados, es decir, no contienen ningn valor, lo

    cual se representa con null si es String o con 0 si es

    int o double.

  • Slide 21

    Algoritmia y programacin

    Universidad del Valle

    Declarando arreglos

    TipoDeDato nombre[] = new TipoDeDato [n];

    Los arreglos definidos de esta forma no estn

    inicializados, es decir, no contienen ningn valor, lo

    cual se representa con null si es String o con 0 si es

    int o double.

    String nombres[] = new String [4];

  • Slide 22

    Algoritmia y programacin

    Universidad del Valle

    Declarando arreglos

    TipoDeDato nombre[] = new TipoDeDato [n];

    Los arreglos definidos de esta forma no estn

    inicializados, es decir, no contienen ningn valor, lo

    cual se representa con null si es String o con 0 si es

    int o double.

    String nombres[] = new String [4];

    int edadEstudiantes[] = new int [3];

  • Slide 23

    Algoritmia y programacin

    Universidad del Valle

    Declarando e inicializando Declarar e inicializar un arreglo se hace de la

    siguiente forma:

    TipoDeDato nombre[] = { val1, val2, , valn};

    Esto crea e inicializa un arreglo de n elementos con

    valores val1, val2, , valn.

    Ejemplos:

    String nombres[ ] = {Oscar, Juan, John, Carlos};

    double notas[ ] = { 5.0, 4.0, 5.0};

    int edadEstudiantes[ ] = {18, 21, 17};

  • Slide 24

    Algoritmia y programacin

    Universidad del Valle

    Donde est el error?

    String nombres [] = {Oscar, 100 , Sofia , A ); String nombres [] = {Oscar, 100 , Sofia , A); double valores [] = new String[4]; int edades = new int [10];

  • Slide 25

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    Para ingresar datos en un arreglo se debe indicar la

    posicin(ndice) del arreglo en el que se va insertar el

    valor:

    nombreArreglo[posicin] = valor;

    Nota: No importa el orden en el cual se guardan los

    datos en el arreglo.

  • Slide 26

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    String nombres[] = new String [4];

    Cuando se crea un arreglo de

    cadenas de texto, ste no

    tiene ningn valor, lo cual se

    indica con la palabra null.

  • Slide 27

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    String nombres[] = new String [4]; nombres[1] = Sarah;

    Guarda el texto Sarah En la posicin 1 del

    arreglo.

  • Slide 28

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    String nombres[] = new String [4]; nombres[1] = Sarah; nombres[2] = Juan;

    Guarda el texto Juan En la posicin 2 del

    arreglo

  • Slide 29

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    String nombres[] = new String [4]; nombres[1] = Sarah; nombres[2] = Juan; nombres[?] = Oscar;

    Cul debe ser el

    ndice?

  • Slide 30

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    String nombres[] = new String [4]; nombres[1] = Sarah; nombres[2] = Juan; nombres[0] = Oscar;

    No importa el orden

    en el cual se guardan

    los datos en el arreglo!

  • Slide 31

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    String nombres[] = new String [4]; nombres[1] = Sarah; nombres[2] = Juan; nombres[0] = Oscar;

    La instruccin

    nombres[4]=Jose; es vlida?

  • Slide 32

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    String nombres[] = new String [4]; nombres[1] = Sarah; nombres[2] = Juan; nombres[0] = Oscar;

    Las posiciones siempre son nmeros enteros que inician en 0

  • Slide 33

    Algoritmia y programacin

    Universidad del Valle

    Insercin de datos

    Cul es el error en cada una de las lneas? int arreglo[ ] = new int [5];

    arreglo[0] = 21.2;

    arreglo[5] = 90;

    Arreglo[2] = 10;

  • Slide 34

    Algoritmia y programacin

    Universidad del Valle

    double notas[]=new double[3];

    notas[?]=?;

    notas[?]=?;

    notas[?]=?;

    0 1 2

    2.7 3.1 2.5

    Cules son las instrucciones necesarias

    para obtener el arreglo que se muestra abajo?

    Insercin de datos

  • Slide 35

    Algoritmia y programacin

    Universidad del Valle

    double notas[]=new double[3];

    notas[0]=2.7;

    notas[1]=3.1;

    notas[2]=2.5;

    0 1 2

    2.7 3.1 2.5

    Cules son las instrucciones necesarias

    para obtener el arreglo que se muestra abajo?

    Insercin de datos

  • Slide 36

    Algoritmia y programacin

    Universidad del Valle

    Extraccin de datos

    Para recuperar datos de un arreglo se debe indicar la

    posicin(ndice) del arreglo que se quiere conocer:

    nombreArreglo[posicin]

    nombres[2] indica que el valor en la posicin 2 es Juan.

  • Slide 37

    Algoritmia y programacin

    Universidad del Valle

    Extraccin de datos

    JOptionPane.showMessageDialog(null, El valor en la posicin 2 es + nombres[2]);

  • Slide 38

    Algoritmia y programacin

    Universidad del Valle

    Extraccin de datos

    int arreglo[ ] = new int [5];

    arreglo[0] = 21 ; arreglo[1] = arreglo[0] + 90;

    arreglo[2] = 10 * arreglo[1];

  • Slide 39

    Algoritmia y programacin

    Universidad del Valle

    3. Trabajando con arreglos

    Ejemplos prcticos de cmo se crean programas usando arreglos.

  • Slide 40

    Algoritmia y programacin

    Universidad del Valle

    Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamao 100

    Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 nmeros

    despus, muestre todos los nmeros en un solo mensaje

    Luego, muestre solo los nmeros almacenados en posiciones pares

    y, muestre los nmeros impares contenidos en el arreglo

    3. Trabajando con arreglos

  • Slide 41

    Algoritmia y programacin

    Universidad del Valle

    Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamao 100

    Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 nmeros

    int numeros[]=new int[100];

    3. Trabajando con arreglos

  • Slide 42

    Algoritmia y programacin

    Universidad del Valle

    int numeros[]=new int[100];

    numeros[0]=Integer.parseInt(JOptionPane.showInputDialog(Ingrese un valor));

    numeros[1]=Integer.parseInt(JOptionPane.showInputDialog(Ingrese un valor));

    . . .

    numeros[99]=Integer.parseInt(JOptionPane.showInputDialog(Ingrese un valor));

    3. Trabajando con arreglos

  • Slide 43

    Algoritmia y programacin

    Universidad del Valle

    int numeros[]=new int[100];

    for (int i=0; i

  • Slide 44

    Algoritmia y programacin

    Universidad del Valle

    Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamao 100

    Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 nmeros

    despus, muestre todos los nmeros en un solo mensaje

    3. Trabajando con arreglos

  • Slide 45

    Algoritmia y programacin

    Universidad del Valle

    Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamao 100

    Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 nmeros

    despus, muestre todos los nmeros en un solo mensaje

    String mensaje= "";

    for (int i=0; i

  • Slide 46

    Algoritmia y programacin

    Universidad del Valle

    Los arreglos y el ciclo for

    Un arreglo se procesa generalmente usando un ciclo for:

  • Slide 47

    Algoritmia y programacin

    Universidad del Valle

    Los arreglos y el ciclo for

    Un arreglo se procesa generalmente usando un ciclo for:

  • Slide 48

    Algoritmia y programacin

    Universidad del Valle

    Los arreglos y el ciclo for

    b.length indica la cantidad de elementos del

    arreglo.

  • Slide 49

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1:

    Escriba un programa en Java que solicite los nombres de

    cada estudiante de cualquier curso y los muestre todos de

    forma numerada al final. Use un arreglo para almacenar el

    nombre de cada estudiante.

  • Slide 50

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Anlisis

    * Entradas:

    * Salidas

  • Slide 51

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Anlisis

    * Entradas: n, nombres[]

    * Salidas: lista con todos los nombres enumerados.

  • Slide 52

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Anlisis

    * Debemos capturar los nombres de n estudiantes. por

    lo tanto requerimos primero conocer el valor de n para

    saber cul ser el tamao del arreglo.

    * El arreglo ser un arreglo de datos tipo String de

    tamao n.

    La salida del programa ser un String que contendr la lista numerada de los nombres de los estudiantes.

  • Slide 53

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Pseudocdigo

    INICIO

    n,i: entero

    lista="", nombres[]: texto

  • Slide 54

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Pseudocdigo

    INICIO

    n,i: entero

    lista="",nombres[]: texto

    leer(n)

  • Slide 55

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Pseudocdigo

    INICIO

    n,i: entero

    lista="", nombres[]: texto

    leer(n)

    //insertamos datos en el arreglo

    desde i=0 mientras i

  • Slide 56

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Pseudocdigo

    INICIO

    n,i: entero

    lista="", nombres[]: texto

    leer(n)

    //insertamos datos en el arreglo

    desde i=0 mientras i

  • Slide 57

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Pseudocdigo

    INICIO

    n,i: entero

    lista="", nombres[]: texto

    leer(n)

    //insertamos datos en el arreglo

    desde i=0 mientras i

  • Slide 58

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Programa en Java

    import javax.swing.*;

    public class NombresCurso {

    public static void main(String[] args) {

    int n,i;

    String lista="La lista de nombres de los

    Estudiantes es:\n";

    n =Integer.parseInt(JOptionPane.showInputDialog(

    "Ingrese el nmero de estudiantes del curso: "));

    String nombres[] = new String [n];

  • Slide 59

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Programa en Java

    // Ingreso de los nombres de los estudiantes

    for (i=0; i < nombres.length; i++){

    nombres [i] = JoptionPane.showInputDialog(

    "Ingrese el nombre del estudiante "

    + (i+1) + ": ");

    }

    // Despliegue de la lista de estudiantes:

    for (i=0; i < nombres.length; i++){

    lista= lista+ (i+1) + ". "

    + nombres[i] + "\n";

    }

    JOptionPane.showMessageDialog(null, lista);

    }// fin mtodo main

    } // Fin clase

  • Slide 60

    Algoritmia y programacin

    Universidad del Valle

    Desarrolle un programa en JAVA que permita leer el nombre de 10 productos de una tienda y su correspondiente precio. La aplicacin debe decir cuntos de ellos cuestan ms de 3000 pesos y mostrar su nombre, precio y posicin en pantalla.

    Utilice arreglos para almacenar los precios y nombres de productos

    Ejemplo 2

  • Slide 61

    Algoritmia y programacin

    Universidad del Valle

    Ejemplo 1: Anlisis

    * Entradas: productos[], precios[]

    * Salidas: producto, precio, posicin.

  • Slide 62

    Algoritmia y programacin

    Universidad del Valle

    import javax.swing.JOptionPane;

    public class Tienda {

    String nombre[] = new String[10], salida;

    int precio[] = new int[10], posicion;

    Ejemplo 2: Programa en Java

  • Slide 63

    Algoritmia y programacin

    Universidad del Valle

    import javax.swing.JOptionPane;

    public class Tienda {

    String productos[] = new String[10], salida ;

    int precios[] = new int[10], posicion;

    //ingresarProductos

    for (int i=0 ; i

  • Slide 64

    Algoritmia y programacin

    Universidad del Valle

    //calcularMayores

    salida="Los siguientes artculos cuestan mas de $3000 \n";

    for (int j=0 ; j3000){

    salida += nombre[j] + " : +precio[j]+ "\n";

    }

    //mostrarDatos

    JOptionPane.showMessageDialog(null,salida);

    Ejemplo 2: Programa en Java

  • Slide 65

    Algoritmia y programacin

    Universidad del Valle

    4. Ejercicios de Repaso

    Ejercicios para reforzar lo visto en clase.

  • Slide 66

    Algoritmia y programacin

    Universidad del Valle

    Ejercicios a realizar con arreglos

    1) Escriba un programa en Java que lea una lista de n

    enteros, calcule el promedio de los datos ingresados,

    el mayor y el menor de ellos.

    2) Escriba un programa en Java que dada una lista de

    enteros y un valor x por parte del usuario, diga cuntas

    veces x aparece en la lista. El programa como salida

    debe mostrar la lista ingresada por el usuario e indicar

    cuntas veces aparece el valor x y en cules

    posiciones.

  • Slide 67

    Algoritmia y programacin

    Universidad del Valle

    Ejercicios adicionales:

    En una competencia de natacin se desea implementar una

    aplicacin para almacenar el tiempo por cada competidor y

    adems determinar con base en todos los tiempos de los

    competidores cual es el ganador. El usuario debe

    especificar cuantos tiempos (competidores) desea ingresar.

    Desarrolle un programa que recorra un arreglo de enteros,

    evale si sus datos son mltiplos de 7 y los muestre en

    pantalla.

    Ejercicios a realizar con arreglos

  • Slide 68

    Algoritmia y programacin

    Universidad del Valle

    Ejercicios a realizar con arreglos 3) La Universidad del Valle requiere un programa que le permita conocer cmo

    califican los estudiantes la comida de la cafetera central. Para ello defini una

    escala de 1 a 10 (1 denota horrible y 10 denota excelente). El programa debe ser

    capaz capturar la calificacin de cualquier nmero de estudiantes (no se sabe

    cuntos estudiantes se encuestarn, as que cuando el encuestador ingrese la

    calificacin de 0, se sabr que la encuesta habr concluido).

    El programa deber mostrar en su salida cuntos estudiantes fueron encuestados

    as como el resumen de la encuesta con histograma as:

    Estudiantes encuestados: 111 Frecuencia de las calificaciones: Calificacin nm. Estudiantes Histograma 1 3 *** 2 2 ** 3 10 ********** ... 8 9 ********* 9 15 *************** 10 7 ******* Utilice un arreglo de enteros de 10 elementos para almacenar la frecuencia con la que ocurre cada calificacin.