Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porLuciano Teixeira Gil Modificado hace 5 años
1
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
2
Estructuras de Datos Cuando representamos un círculo definimos una clase Circulo agrupando componentes de diferentes tipos. Una alternativa para representar un círculo es mantener dos valores el radio y el centro. 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
3
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
4
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 de programación 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
5
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
6
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
7
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] Introducción a la Programación Orientada a Objetos
8
Arreglos tMin[3] = 5.2; x = tMin[3]; tMin[3] 5.2 0 1 2 3 4 5 6
Introducción a la Programación Orientada a Objetos
9
Arreglos i = 0; tMin[i] = -2; tMin[i+1] = ES.leerFloat();
max = tMin[i]; tMin[i+1] = 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
10
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 7 Introducción a la Programación Orientada a Objetos
11
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
12
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
13
Arreglos Calcular en cuántas días hubo heladas
Corresponde a un patrón conocido valor 0 para i tomando valores entre 1 y n leer s si s cumple la propiedad p valor valor + 1 contador 0 n cantidad de elementos para i tomando valores entre 0 y n-1 si tMin[i] cumple la propiedad p contador contador + 1 Introducción a la Programación Orientada a Objetos
14
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
15
Arreglos Decidir si algún día heló Es una solución ineficiente
int cantHeladas = 0; for (int i=0;i<tMin.length;i++) if (tMin[i]<0) cantHeladas++; boolean huboHeladas = cantHeladas > 0; Es una solución ineficiente Introducción a la Programación Orientada a Objetos
16
Arreglos Decidir si algún día heló Es un recorrido NO exhaustivo
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
17
Arreglos Decidir si algún día heló boolean huboHeladas = false;
for (int i=0; (i<tMin.length&&(!huboHeladas));i++) huboHeladas= tMin[i]<0; Es un recorrido NO exhaustivo Introducción a la Programación Orientada a Objetos
18
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
19
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
20
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) 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
21
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
22
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
23
Arreglos Calcular la primera temperatura registrada mayor a una temperatura t. Si no existe, computar t ¿exhaustivo o NO exhaustivo? Introducción a la Programación Orientada a Objetos
24
Arreglos Calcular la primera temperatura registrada mayor a una temperatura t. Si no existe, computar 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
25
Arreglos Calcular la última temperatura registrada mayor a una temperatura t. Si no existe, computar t ¿exhaustivo o NO exhaustivo? Introducción a la Programación Orientada a Objetos
26
Arreglos Calcular la última temperatura registrada mayor a una temperatura t. Si no existe, computar t int i = 0; float temp_mayor = t; while (i<tMin.length) if (tMin[i]> t) temp_mayor = tMin[i]; else i++; No es una solución eficiente Introducción a la Programación Orientada a Objetos
27
Arreglos Calcular la última temperatura registrada mayor a una temperatura t. Si no existe, computar 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
28
Arreglos Calcular a qué día corresponde la primera temperatura registrada mayor a una dada. Si no existe, computar -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
29
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
30
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
31
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+1){ if (tMin[i]> t) cont++; i++; } boolean hubo = cont == n; Introducción a la Programación Orientada a Objetos
32
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
33
Administración de Memoria
v w length 5 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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.