Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera.
Cuando representamos una caja de ahorro bancaria definimos una clase CuentaBancaria agrupando el codigo y el saldo.
Un objeto de clase CuentaBancaria es una estructura de datos formada por componentes de tipo elemental.
Una variable de tipo clase CuentaBancaria va a referenciar a una estructura de datos que mantiene dos valores numéricos.
Introducción a la Programación Orientada a Objetos
Estructuras de Datos
Cuando representamos un círculo definimos una clase Circulo agrupando componentes de diferentes tipos.
Un objeto de clase Circulo es una estructura de datos formada por una componente de tipo elemental y una de tipo clase.
Una variable de tipo clase Circulo referencia a una estructura de datos.
Introducción a la Programación Orientada a Objetos
Estructuras de Datos
Arreglos
Un arreglo es una estructura de datos homogénea y lineal.
Es una estructura de datos porque agrupa a varios valores, que pueden ser accedidos individualmente.
Es homogénea porque todos los valores son del mismo tipo.
El lineal porque todos los valor ocupan posiciones contínuas, de modo que cada uno tiene un que le sigue, excepto el último y todos tienen uno anterior, excepto el primero.
Introducción a la Programación Orientada a Objetos
ArreglosUn arreglo queda asociado a una única variable.
Cada valor es un elemento o componente del arreglo y puede accederse a través de un subíndice.
El subíndice representa la posición relativa del elemento dentro del arreglo.
Introducción a la Programación Orientada a Objetos
Un lenguaje que soporte arreglos debe brindar operaciones para:
•Declarar una variable•Crear la estructura•Acceder a sus componentes
Arreglos
Hallar una representación adecuada para las temperaturas mínimas registradas durante un período en una estación meteorológica.
Declarar la variable
<TipoBase> [ ] <Identificador>;
float [] tMin;
Introducción a la Programación Orientada a Objetos
Arreglos
Hallar una representación adecuada para las temperaturas mínimas registradas durante un período en una estación meteorológica.
Crear la estructura
<Identificador> = new <TipoBase> [<Exp>];
tMin = new float [7];
Introducción a la Programación Orientada a Objetos
Arreglos
Hallar una representación adecuada para las temperaturas mínimas registradas durante un período en una estación meteorológica.
0 1 2 3 4 5 6
Acceder a sus componentes
<Identificador> [<Exp>]
Introducción a la Programación Orientada a Objetos
tMin[3]
Arreglos
0 1 2 3 4 5 6
5.2
tMin[3] = 5.2;x = tMin[3];
tMin[3]
es una variable subindicada de tipo float
Introducción a la Programación Orientada a Objetos
Arreglos
i = 0;tMin[i] = -2;tMin[i+1] = ES.leerFloat();max = tMin[i];tMin[i+1] = tMin[i];System.out.prinln(tMin[i]);
Introducción a la Programación Orientada a Objetos
La expresión que computa el subíndice tiene que producir un valor dentro del rango (0,6).
En ejecución, si el cómputo produce un valor que está fuera del rango establecido, Java produce una excepción y el programa termina anormalmente.
Arreglos
0 1 2 3 4 5 6
Un arreglo tiene una longitud que queda fija en el momento de la creación y se almacena en una variable llamada length.
tMin.length
Introducción a la Programación Orientada a Objetos
Leer las temperaturas mínimas y almacenarlas en el arreglo
Arreglos
tMin[0] = ES.leerFloat();tMin[1] = ES.leerFloat();tMin[2] = ES.leerFloat();tMin[3] = ES.leerFloat();tMin[4] = ES.leerFloat();tMin[5] = ES.leerFloat();tMin[6] = ES.leerFloat();
for (int i=0; i<tMin.length; i++) {
tMin[i]=ES.leerFloat();
}Introducción a la Programación Orientada a Objetos
Mostrar las temperaturas mínimas almacenadas en un arreglo
Arreglos
for (int i=0;i<tMin.length;i++) {
System.out.println(tMin[i]);
}
Introducción a la Programación Orientada a Objetos
Arreglos
Calcular en cuántas días hubo heladas
Introducción a la Programación Orientada a Objetos
Corresponde a un patrón conocido
valor 0para i tomando valores entre 1 y n leer s si s cumple la propiedad p valor valor + 1
contador 0n cantidad de elementospara i tomando valores entre 0 y n-1 si tMin[i] cumple la propiedad p contador contador + 1
Arreglos
int cantHeladas = 0; for (int i=0;i<tMin.length;i++) if (tMin[i]<0) cantHeladas++;
Calcular en cuántas días hubo heladas
Introducción a la Programación Orientada a Objetos
Es un recorrido exhaustivo
Arreglos
Decidir si algún día heló
Introducción a la Programación Orientada a Objetos
int cantHeladas = 0;
for (int i=0;i<tMin.length;i++)
if (tMin[i]<0)
cantHeladas++;
boolean huboHeladas = cantHeladas > 0;
Analizar la eficiencia
Arreglos
boolean huboHeladas = false;
int i = 0;
while ((i<tMin.length)&&(!huboHeladas)){
if (tMin[i]<0)
huboHeladas=true;
i++;
}
Decidir si algún día heló
Introducción a la Programación Orientada a Objetos
Es un recorrido NO exhaustivo
Arreglos
boolean huboHeladas = false;
for (int i=0;
(i<tMin.length&&(!huboHeladas));i++)
if (tMin[i]<0)
huboHeladas=true;
Introducción a la Programación Orientada a Objetos
Decidir si algún día heló
Es un recorrido NO exhaustivo
Arreglos
float suma=0; float promedio;
for (int i=0;i<tMin.length;i++)
suma += tMin[i]; promedio = suma/tMin.length;
Calcular el promedio de las temperaturas mínimas
Introducción a la Programación Orientada a Objetos
Arreglos
float max = tMin[0];
for (int i=1;i<tMin.length;i++) if (tMin[i]>max) max = tMin[i];
Calcular la temperatura máxima entre las mínimas
Introducción a la Programación Orientada a Objetos
Arreglos
float max; for (int i=0;i<tMin.length;i++) if (i == 0) max = tMin[i]; else if (tMin[i]>max) max = tMin[i];
Calcular la temperatura máxima entre las mínimas
Introducción a la Programación Orientada a Objetos
No es una buena estrategia utilizar un condicional que solo se verifica en la primera iteración (o en la última)
Arreglos
Calcular el primer día que se produjo la temperatura máxima entre las mínimas
Introducción a la Programación Orientada a Objetos
int dia = 0;
for (int i=1;i<tMin.length;i++) if (tMin[i]>tMin[dia]) dia= i;
Arreglos
Calcular el último día que se produjo la temperatura máxima entre las mínimas
Introducción a la Programación Orientada a Objetos
int dia = 0;
for (int i=1;i<tMin.length;i++) if (tMin[i]>=tMin[dia]) dia= i;
Arreglos
Calcular la primera temperatura registrada mayor a una temperatura t. Si no existe, devolver t
Introducción a la Programación Orientada a Objetos
¿exhaustivo o NO exhaustivo?
Arreglos
boolean encontre = false; int i = 0; float temp_mayor = t; while ((i<tMin.length) && (!encontre)) if (tMin[i]> t){ encontre=true; temp_mayor = tMin[i];} else i++;
Introducción a la Programación Orientada a Objetos
Calcular la primera temperatura registrada mayor a una temperatura t. Si no existe, devolver t
Arreglos
Calcular la última temperatura registrada mayor a una temperatura t. Si no existe, devolver t
Introducción a la Programación Orientada a Objetos
¿exhaustivo o NO exhaustivo?
Arreglos
boolean encontre = false; int i = tMin.length-1; float temp_mayor = t; while ((i>=0) && (!encontre)) if (tMin[i]> t){ encontre=true; temp_mayor = tMin[i];} else i--;
Introducción a la Programación Orientada a Objetos
Calcular la última temperatura registrada mayor a una temperatura t. Si no existe, devolver t
Arreglos
Calcular a qué día corresponde la primera temperatura registrada mayor a una dada. Si no existe, devolver -1
boolean encontre = false; int i = 0; int dia = -1;
while ((i<tMin.length) && (!encontre)) if (tMin[i]> t){ encontre=true; dia = i;} else i++;
Introducción a la Programación Orientada a Objetos
Arreglos
Calcular en cuántos días se produjeron temperaturas mínimas mayores a t.
Introducción a la Programación Orientada a Objetos
int cont = 0;
for (int i=1;i<tMin.length;i++) if (tMin[i]>t) cont++;
Sigue el mismo patrón que contar la cantidad de heladas
Arreglos
Decidir si hubo al menos n días con temperaturas mínimas mayores a t
int i = 0; int cont= 0;
while ((i<tMin.length) && cont < n) if (tMin[i]> t) cont++; i++; } boolean hubo = cont == n;
Introducción a la Programación Orientada a Objetos
Arreglos
Decidir si hubo exactamente n días con temperaturas mínimas mayores a t
int i = 0; int cont= 0;
while ((i<tMin.length) && cont > n) if (tMin[i]> t) cont++; i++; } boolean hubo = cont == n;
Introducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos
Administración de Memoria
float [] tMin;tMin = new float[7];
tMin
Se crea un objeto y se asigna la referencia a la variable.
La variable mantiene una referencia asociada a un arreglo
7length
Introducción a la Programación Orientada a Objetos
Administración de Memoria
float [] v,w;v = new float[5];w = v;
Una operación de asignación copia la dirección de memoria, no el contenido del arreglo
El operador relacional == compara referencias
v
w 7length
Top Related