La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 1. Introducción a la programación (Lenguaje java).

Presentaciones similares


Presentación del tema: "Tema 1. Introducción a la programación (Lenguaje java)."— Transcripción de la presentación:

1 Tema 1. Introducción a la programación (Lenguaje java).
1.4 Estructuras de datos.

2 1.4 Estructuras de datos. Concepto de Estructura de datos:
Agrupación de datos que se trata como una unidad en su conjunto. Se construyen a partir de los tipos de datos simples Clasificación: Por su naturaleza: Homogénea: Todos del mismo tipo (ej: vectores, tablas, matrices n dimensionales. Heterogénea: De diferente tipo (ej: registros). Por su forma de almacenamiento. Memoria central: Estática. Tamaño conocido a priori. Dinámica. El tamaño varía durante la ejecución del programa (ej: listas, árboles, grafos). Memoria externa (ficheros y bases de datos).

3 1.4 Estructuras de datos. Tecnología para estructuras dinámicas (I).
Se basa en el concepto de puntero (pointer). Puntero: variable estática cuyo contenido (referencia) es la dirección de una región de la memoria dinámica (nodo) que contiene el dato. Mediante un puntero se puede (además de acceder al contenido de su nodo) reservar y liberar espacio. Modelo:

4 1.4 Estructuras de datos. Tecnología para estructuras dinámicas (II).
En Java los punteros apuntan a (referencian) objetos. En otros lenguajes (C o Pascal) pueden apuntar a estructuras de datos. Sintaxis: Crear un nodo: <tipo> <variable> = new <tipo | Constructor>; Eliminar un nodo: innecesario en Java. Asignación: <puntero1> = <puntero2>. La referencia <puntero2> se copia en <puntero1>, Comparación: <puntero1> == <puntero2>. Devuelve un valor booleano en función de que ambas referencias sean iguales o no. Puntero “especial”: null. No apunta a ningún sitio (no hay reserva de memoria).

5 1.4 Estructuras de datos. Estructuras de datos estáticas (I).
Homogéneas: Unidimensionales (vectores) Modelo. Sintaxis. Declaración (vector nulo): <tipoElementos> [] <nombreVector>; Construcción: <tipoElementos> [ ] <nombreVector> = new <tipoElementos> [<tamaño>] Acceso: Al conjunto (referencia): <nombreVector> A un elemento: <nombreVector> [<indice>]

6 1.4 Estructuras de datos. Ejemplo de uso de vector:
public class PruebaVectores { static float media (int [ ] dato) { float resul = 0; for (int i = 0; i < 5; i ++) resul = resul + dato [i]; resul = resul / i; return resul; } public static void main (String [ ] args) throws NumberFormatException, IOException { int [ ] d = new int [5]; int i, rango; float media; BufferedReader linea = new BufferedReader (new InputStreamReader (System.in)); System.out.println ("Introduce cinco numeros enteros: "); for (i = 0; i < 5; i ++) d [i] = Integer.parseInt (linea.readLine ()); media = media (d); System.out.println("El valor medio es: " + media);

7 1.4 Estructuras de datos. Estructuras de datos estáticas (II).
Homogéneas: Bidimensionales (matrices o tablas) Modelo. Sintaxis. Declaración: <tipoElementosMatriz> [ ] [ ] <nombreMatriz>; Acceso: Al conjunto (referencia): <nombreMatriz> A un elemento: <nombreMatriz> [<indice1>] [<indice2>] N-dimensionales. Por generalización

8 1.4 Estructuras de datos. Ejemplo de uso de matriz:
public class Prueba_matrices { static void leerMatriz (int [ ][ ] temperaturas) throws NumberFormatException, IOException { BufferedReader linea = new BufferedReader(new InputStreamReader(System.in)); for (int i = 0;i<7;i++) for (int j = 0; j < 2; j++) { System.out.println("Valor dia: " + i + " extremo: " + j + ": "); temperaturas [i] [j] = Integer.parseInt (linea.readLine ()); } static int min (int [ ] [ ] temperaturas) { int i, resul = temperaturas [0] [0]; for (i = 1; i < 7; i++) if (temperaturas [i] [0] < resul) resul = temperaturas [i][0]; return resul; public static void main(String[] args) throws NumberFormatException, IOException { int [ ] [ ] temp = new int [7] [2]; leerMatriz(temp); int mini = min(temp); System.out.println("Temperatura minima: " + mini);

9 1.4 Estructuras de datos. Estructuras de datos estáticas (III).
Heterogéneas (registros). Cada uno de sus elementos se denomina campo o atributo. Uno de ellos suele utilizarse como identificativo o clave (key). Modelo.

10 1.4 Estructuras de datos. Estructuras de datos estáticas (IV).
Heterogéneas (registros). Sintaxis. Declaración: class <variableRegistro> { // miembros  <modificadorDeAccesoMiembro1> <tipoCampo1><nombreCampo1>; ... <modificadorDeAccesoN> <tipoCampoN><nombreCampoN>; // constructor   <modificadorAcceso> <variableRegistro>(<tipoCampo1><nomCampo1>, ... ,<tipoCampoN> <nomCampoN>) { <AsignacionDeValoresInicialesDeCampos>; } Acceso: Al conjunto (referencia) <nombreRegistro> A un elemento: <nombreRegistro> .<nombreCampo>

11 1.4 Estructuras de datos. Ejemplo de uso de registro. Clase RegistroAlumno (I): class RegistroAlumno { //Variables miembro public String numeroMatricula; public String apellidos; public String nombre; public String ; public int año; public float calificacion; // Constructor public RegistroAlumno () { numeroMatricula=null; apellidos =null; nombre = null; =null; año = 1980; calificacion = 0; }

12 1.4 Estructuras de datos. Ejemplo de uso de registro. Clase RegistroAlumno (II): //Métodos public String aCadena () { return numeroMatricula+" "+" "+apellidos+" "+nombre+" "+ +" "+año+" "+calificacion; } public void cargarRegistro () throws IOException { BufferedReader linea = new BufferedReader (new InputStreamReader (System.in)); System.out.println ("Numero de matricula: "); numeroMatricula = new String (linea.readLine ()); System.out.println ("Apellidos: "); apellidos = new String (linea.readLine ()); System.out.println ("Nombre: "); nombre = new String (linea.readLine ()); System.out.println ("Correo electronico: "); = new String (linea.readLine ()); System.out.println ("Año de nacimiento: "); año = Integer.parseInt (linea.readLine ()); System.out.println ("Calificación: "); calificacion= Float.parseFloat (linea.readLine ()); System.out.println (this.aCadena ());

13 1.4 Estructuras de datos. Estructuras de datos estáticas (V).
Híbridas (ej: vector de registros)

14 1.4 Estructuras de datos. Ejemplo de uso de vector de registros. Clase PruebaRegistro: public class PruebaReg { static void cargarTabla (RegistroAlumno [ ] alumnos) throws IOException { for (int i = 0; i < 6; i ++) { System.out.println ("Datos del alumno N: " + i); alumnos [i].cargarRegistro (); } static float mediaCalif (RegistroAlumno [ ] alumnos) { float resul; resul = 0; for (int i = 0; i < 6; i ++) resul = resul + alumnos [i].calificacion; return resul/6; public static void main (String [ ] args) throws IOException { RegistroAlumno [ ] alumnos = new RegistroAlumno [6]; float media; alumnos[i]= new RegistroAlumno(); cargarTabla (alumnos); media = mediaCalif (alumnos); System.out.println ("La media de las calificaciones es: "+media);


Descargar ppt "Tema 1. Introducción a la programación (Lenguaje java)."

Presentaciones similares


Anuncios Google