Sunteți pe pagina 1din 32

Estructuras de Datos

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


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


Arreglos
Un 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.

Un lenguaje que soporte arreglos debe brindar


operaciones para:
•Declarar una variable
•Crear la estructura
•Acceder a sus componentes

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.

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.

Acceder a sus componentes


<Identificador> [<Exp>]

tMin[3]

0 1 2 3 4 5 6
Introducción a la Programación Orientada a Objetos
Arreglos

tMin[3] = 5.2;
x = tMin[3];

tMin[3]

es una variable subindicada de tipo float

5.2
0 1 2 3 4 5 6
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]);

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. Introducción a la Programación Orientada a Objetos
Arreglos

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

0 1 2 3 4 5 6
Introducción a la Programación Orientada a Objetos
Arreglos
Leer las temperaturas mínimas y almacenarlas
en el arreglo
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
Arreglos
Mostrar las temperaturas mínimas almacenadas
en un arreglo

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
Corresponde a un patrón conocido
valor  0 contador  0
para i tomando valores entre 1 y n n  cantidad de elementos
leer s para i tomando valores entre 0 y n-1
si s cumple la propiedad p si tMin[i] cumple la propiedad p
valor  valor + 1 contador  contador + 1

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular en cuántas días hubo heladas

int cantHeladas = 0;
for (int i=0;i<tMin.length;i++)
if (tMin[i]<0)
cantHeladas++;

Es un recorrido exhaustivo

Introducción a la Programación Orientada a Objetos


Arreglos
Decidir si algún día heló

int cantHeladas = 0;
for (int i=0;i<tMin.length;i++)
if (tMin[i]<0)
cantHeladas++;
boolean huboHeladas = cantHeladas > 0;

Analizar la eficiencia
Introducción a la Programación Orientada a Objetos
Arreglos
Decidir si algún día heló

boolean huboHeladas = false;


int i = 0;
while ((i<tMin.length)&&(!huboHeladas)){
if (tMin[i]<0)
huboHeladas=true;
i++;
}

Es un recorrido NO exhaustivo

Introducción a la Programación Orientada a Objetos


Arreglos
Decidir si algún día heló

boolean huboHeladas = false;


for (int i=0;
(i<tMin.length&&(!huboHeladas));i++)
if (tMin[i]<0)
huboHeladas=true;

Es un recorrido NO exhaustivo

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular el promedio de las temperaturas
mínimas

float suma=0; float promedio;


for (int i=0;i<tMin.length;i++)
suma += tMin[i];
promedio = suma/tMin.length;

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular la temperatura máxima entre las
mínimas

float max = tMin[0];


for (int i=1;i<tMin.length;i++)
if (tMin[i]>max)
max = tMin[i];

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular la temperatura máxima entre las
mínimas
float max;
for (int i=0;i<tMin.length;i++)
if (i == 0)
max = tMin[i];
else
if (tMin[i]>max)
max = tMin[i];

No es una buena estrategia utilizar un condicional que


solo se verifica en la primera iteración (o en la última)
Introducción a la Programación Orientada a Objetos
Arreglos
Calcular el primer día que se produjo la
temperatura máxima entre las mínimas

int dia = 0;
for (int i=1;i<tMin.length;i++)
if (tMin[i]>tMin[dia])
dia= i;

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular el último día que se produjo la
temperatura máxima entre las mínimas

int dia = 0;
for (int i=1;i<tMin.length;i++)
if (tMin[i]>=tMin[dia])
dia= i;

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular la primera temperatura registrada
mayor a una temperatura t. Si no existe,
devolver t

¿exhaustivo o NO exhaustivo?

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular la primera temperatura registrada
mayor a una temperatura t. Si no existe,
devolver t
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


Arreglos
Calcular la última temperatura registrada
mayor a una temperatura t. Si no existe,
devolver t

¿exhaustivo o NO exhaustivo?

Introducción a la Programación Orientada a Objetos


Arreglos
Calcular la última temperatura registrada
mayor a una temperatura t. Si no existe,
devolver t
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


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.

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
Introducción a la Programación Orientada a Objetos
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


Administración de Memoria

tMin

length 7

float [] tMin;
tMin = new float[7];

Se crea un objeto y se asigna la referencia a la variable.

La variable mantiene una referencia asociada a un


arreglo
Introducción a la Programación Orientada a Objetos
Administración de Memoria

w length 7

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

Introducción a la Programación Orientada a Objetos

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