La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso de Computación.  Manipular una colección de datos usando vectores  Declarar y utilizar un vector de tipos de datos primitivos en la implementación.

Presentaciones similares


Presentación del tema: "Curso de Computación.  Manipular una colección de datos usando vectores  Declarar y utilizar un vector de tipos de datos primitivos en la implementación."— Transcripción de la presentación:

1 Curso de Computación

2  Manipular una colección de datos usando vectores  Declarar y utilizar un vector de tipos de datos primitivos en la implementación de un programa  Inicializar vectores mediante lazos y en la declaración  Utilizar lazos para realzar operaciones con vectores.  Ordenar un vector  Leer datos desde un archivo y almacenarlos en un vector

3 Un vector es una colección del mismo tipo de datos. Declaración de un vector: Tipo[] identificador; O Tipo identificador[]; Un vector es un objeto en java Un vector se construye con el operador new double lluvia[]; lluvia = new double[12]; O double lluvia[] = new double[12]; Se crea un vector de 12 componentes lluvia[0] 0.0 lluvia[1] 0.0 lluvia[2] 0.0 lluvia[3] 0.0 lluvia[4] 0.0 lluvia[5] 0.0 lluvia[6] 0.0 lluvia[7] 0.0 lluvia[8] 0.0 lluvia[9] 0.0 lluvia[10] 0.0 lluvia[11] 0.0

4 Los elementos de un vector se acceden mediante un subíndice. lluvia[2] o lluvia[i+1] El índice de la primera posición de un vector es siempre 0.

5 double lluvia[] = new double[12]; double mediaAnual, suma = 0.0; for( int i = 0; i < 12; i++) { lluvia[i] = entrada.getDouble( “lluvia para el mes “+ (i+1)+”:”); suma += lluvia[i]; } mediaAnual = suma/12; System.out.println(“Media anual = ”+mediaAnual); Leer 12 valores de lluvia mensual y calcular el promedio

6 double diferencia; for( int i = 0; i < 12; i++) { System.out.println(formato.rightAlign (17,1,lluvia[i])); diferencia = Math.abs(lluvia[i]- mediaAnual); System.out.println(formato.rightAlign (17,2,diferencia)); } Calcula la diferencia entre la lluvia del mes y la media anual

7 El tamaño de un vector se obtiene por medio de la constante pública length. Los lazos anteriores pueden escribirse como: for( int i = 0; i < lluvia.length; i++) { }

8 Otra forma de iniciar un vector al declararlo es como sigue: String[] nombreMes = {“enero”,”febrero”,”marzo”,”abril”,”mayo”,” junio”,”julio”,”agosto”,”septiembre”,”octub re”,”noviembre”,”diciembre”};

9 double lluvia[] = new double[12]; double sumaMesImpar = 0.0, mediaMesImpar, sumaMesPar = 0.0, mediaMesPar; for(int i=0; i<lluvia.length; i++){ lluvia[i]=(double) entrada.getFloat( "lluvia para el mes de " + nombreMes[i] + ": "); } for(int i = 0; i < lluvia.length; i+=2) sumaMesImpar += lluvia[i]; mediaMesImpar = sumaMesImpar/6; for(int i = 1; i < lluvia.length; i+=2) sumaMesPar += lluvia[i]; mediaMesPar = sumaMesPar/6; Cálculo de la media de lluvia en meses pares e impares

10 1. ¿Cuáles de las siguientes sentencias son válidas? a. float numeros[13]; b. float numeros = {1.0f, 2.0f, 3.0f}; c. int numeros; numeros = new Vector[23]; d. int[] numeros = {1, 2, 3, 4}; 2. Escriba un programa que lea con un SimpleInput las componentes y calcule el producto punto de dos vectores de 2 dimensiones declarados como: float x[] = new double[2]; float y[] = new double[2];

11 3. Escriba un programa que lea los milímetros de lluvia de cada mes e imprime el nombre del mes con mayor nivel de lluvia y el nombre del mes con menor nivel de lluvia.

12 12345678910 11121314151617181920 Se van tachando los múltiplos de los primos que se van siendo encontrados hasta los múltiplos de sqrt(n) (sqrt(20)~4). Múltiplos de 2 xxxx xxxxx 12345678910 11121314151617181920 xxxx xxxxx Múltiplos de 3 x x Los números no tachados son números primos, i.e. : 2, 3, 5, 7, 11, 13, 17 y 19.

13 //Implementa la criba de Eratóstenes public class Criba{ public static void main(String []args){ boolean primo[] = new boolean[100]; int i,j; //iniciar arreglo for(i = 0; i<primo.length; i++) primo[i] = true; for (i = 2; i<Math.sqrt(100); i++){ //marca los múltiplos de i del 2o en adelante for (j = 2; i*j<(100); j++) primo[i*j]=false; } for(i = 0; i<primo.length; i++) if(primo[i]) System.out.print(i+" "); } }

14 Escriba una aplicación que calcule la desviación estándar de N números reales. La desviación estándar se calcula con: Donde x es la media de los N valores. promedio desviación estándar pequeña desviación estándar grande

15 Se utilizará un vector x de 100 elementos. 1. Leer los elementos del vector 2. Calcular el promedio 3. Calcular la desviación estándar 4. Desplegar resultados //Esqueleto de programa class Desviacion{ static public void main(String[] args){ //declaración de variables //leer elementos del vector //calcular el promedio //calcular desviación estándar //desplegar resultados } }

16 class Desviacion{ static public void main(String[] args){ //declaración de variables double x[] = new double[100], suma = 0, prom, des; int n,i; //leer elementos del vector //calcular el promedio //calcular desviación estándar //desplegar resultados } } Se requieren variables de tipo double para los valores ( x ), la suma ( suma ), el promedio ( prom ) y la desviación estándar ( des ). También variables de tipo int para el número de valores ( n ) y el control de los lazos ( i ).

17 Puede leerse primero el valor de n y después en un lazo leer cada elemento de x, o bien, puede leerse con un centinela los valores de x, el centinela podría ser un valor <0. Optaremos por la segunda opción. import javabook.*; class Desviacion{ static public void main(String[] args){ //declaración de variables double x[] = new double[100], suma, prom, des, v; int n,i; SimpleInput entrada = new SimpleInput(); //leer elementos del vector i = 0; do{ v = SimpleInput.getDouble(“Tecle valor para x”+i+”:”); if(v>0){x[i] = v; i++;} }while(v>0 && i<x.length); n = i; //calcular el promedio //calcular desviación estándar //desplegar resultados } }

18 Calculamos mediante un lazo for. import javabook.*; class Desviacion{ static public void main(String[] args){ //declaración de variables double x[] = new double[100], suma, prom, des, v; int n,i; SimpleInput entrada = new SimpleInput(); //leer elementos del vector i = 0; do{ v = SimpleInput.getDouble(“Tecle valor para x”+i+”:”); if(v>0){x[i] = v; i++;} }while(v>0 && i<x.length); n = i; //calcular el promedio suma = 0; for(i = 0; i<n; i++) suma += x[i]; prom = suma/n; //calcular desviación estándar //desplegar resultados } }

19 Calculamos mediante un lazo for. import javabook.*; class Desviacion{ static public void main(String[] args){ //declaración de variables double x[] = new double[100], suma, prom, des; int n,i; SimpleInput entrada = new SimpleInput(); //leer elementos del vector i = 0; do{ v = SimpleInput.getDouble(“Tecle valor para x”+i+”:”); if(v>0){x[i] = v; i++;} }while(v>0 && i<x.length); n = i - 1; //calcular el promedio suma = 0; for(i = 0; i<n; i++) suma += x[i]; prom = suma/n; //calcular desviación estándar suma =0; for(i = 0; i<n; i++) suma += (x[i]-prom)*(x[i]-prom); des = Math.sqrt(suma/(n-1)); //desplegar resultados } }

20 Desplegar con formato. import javabook.*; class Desviacion{ static public void main(String[] args){ //declaración de variables double x[] = new double[100], suma, prom, des; int n,i; SimpleInput entrada = new SimpleInput(); //leer elementos del vector i = 0; do{ v = SimpleInput.getDouble(“Tecle valor para x”+i+”:”); if(v>0){x[i] = v; i++;} }while(v>0 && i<x.length); n = i - 1; //calcular el promedio suma = 0; for(i = 0; i<n; i++) suma += x[i]; prom = suma/n; //calcular desviación estándar suma =0; for(i = 0; i<n; i++) suma += (x[i]-prom)*(x[i]-prom); des = Math.sqrt(suma/(n-1)); //desplegar resultados System.out.println(“total de valores leídos: “+n); System.out.println(“el promedio es: “+Format.leftAlign(8,3,prom)); System.out.println(“la desviación es: “+Format.leftAlign(8,3,des)); } }

21 x 04.5promedio=4.575 14.6desviación=0.170782513 24.4 34.8 Los siguientes datos fueron calculados con Excel

22 Agregue código al programa de ejemplo para calcular lo siguiente: Desviación media Raíz del valor cuadrático medio Medio armónico Intervalo = máx(x 1, x 2, x 3,...,x N ) – mín(x 1, x 2, x 3,...,x N ) Medio geométrico

23 La clase BufferedReader (lector con buffer) lee texto desde un flujo de caracteres. Debe construirse sobre un lector de flujos o de archivos. BufferedReader in = new BufferedReader(new FileReader("foo.in")); El método readLine() lee una línea de texto. La lectura debe hacerse manejando los posibles errores que se puedan producir en un bloque try. try{ instrucciones si no hay error; } catch (Excepción x){ instrucciones si hay error; }

24 import java.io.*; public class Ejemplo1TextIO { public static void main(String args[]) { // Vamos a leer el archivo prueba.txt // input es el objeto para leer desde el archivo BufferedReader entrada = null; try { FileReader arch = new FileReader("prueba.txt"); // Abre el archivo. entrada = new BufferedReader(arch); // Ata 'input' a este archivo. } catch(FileNotFoundException x) { // El archivo puede no existir System.err.println("Archivo no encontrado: prueba.txt"); System.exit(2);// Termina el programa con código 2 } // Ahora lee el archivo y despliega cada línea try { String linea; while( (linea = entrada.readLine()) != null ) { System.out.println(linea); } } catch(IOException x) { x.printStackTrace();//Esto se ejecuta si hay error al leer } } }

25 import java.io.*; public class Ejemplo2TextIO { public static void main(String args[]) { // Vamos a leer el archivo numeros.txt BufferedReader entrada = null; try { FileReader arch = new FileReader("numeros.txt"); // Abre el archivo. entrada = new BufferedReader(arch); // Ata 'input' a este archivo. } catch(FileNotFoundException x) { // El archivo puede no existir. System.err.println("Archivo no encontrado: numeros.txt"); System.exit(2);// Termina el programa con código 2 } int n,suma = 0; // Ahora lee el archivo y despliega el total try { String linea; while( (linea = entrada.readLine()) != null ) { n = Integer.parseInt(linea); suma += n; } System.out.println("la suma es: "+suma); } catch(IOException x) { x.printStackTrace();//Esto se ejecuta si hay error al leer } } }

26 import java.io.*; public class Ejemplo3TextIO { public static void main(String args[]) { // Vamos a leer el archivo numeros.txt BufferedReader entrada = null; try { FileReader arch = new FileReader("numeros.txt"); // Abre el archivo. entrada = new BufferedReader(arch); // Ata 'input' a este archivo. } catch(FileNotFoundException x) { // El archivo puede no existir. System.err.println("Archivo no encontrado: numeros.txt"); System.exit(2);// Termina el programa con código 2 } int n = 0; double d[] = new double[100]; // Ahora lee el archivo y despliega cada valor try { String linea; while( (linea = entrada.readLine()) != null ) { d[n++] = Double.parseDouble(linea); } for(int i = 0; i<n; i++) System.out.println("d["+i+"]="+d[i]); } catch(IOException x) { x.printStackTrace();//Esto se ejecuta si hay error al leer } } }

27 Haga un programa que lea una lista de nombres y los muestre ordenados en la pantalla. Algoritmo 1. Leer los nombres desde un archivo y almacenarlos en un vector. 2. Ordenar los nombres alfabéticamente 3. Desplegar los nombres ordenados

28 import java.io.*; public class Ejemplo4TextIO { public static void main(String args[]) { // Vamos a leer el archivo nombres.txt BufferedReader entrada = null; try { FileReader arch = new FileReader("nombres.txt"); // Abre el archivo. entrada = new BufferedReader(arch); // Ata 'input' a este archivo. } catch(FileNotFoundException x) { // El archivo puede no existir. System.err.println("Archivo no encontrado: nombres.txt"); System.exit(2);// Termina el programa con código 2 } int n = 0, i, j; String d[] = new String[100]; // Ahora lee el archivo y despliega cada valor try { String linea; while( (linea = entrada.readLine()) != null ) { d[n++] = linea; } } catch(IOException x) { x.printStackTrace();//Esto se ejecuta si hay error al leer }

29 El método consiste en comparar el primer elemento con el segundo, luego el segundo, el tercero, etc., si es necesario se intercambian los elementos. Al final de este proceso se tendrá el más pequeño al inicio. El proceso se repite con el segundo elemento comparándolo con los demás y luego el tercero, etc. Algoritmo en Java for(i = 0; i d[j]){ intercambiar d[i] y d[j]; }

30 Usaremos el método más sencillo (la burbuja) //Despliega lista desordenada System.out.println("Desordenados\n"); for(i = 0; i 0){ String temp = d[i]; d[i] = d[j]; d[j] = temp; } //Despliega lista ordenada for(i = 0; i<n; i++) System.out.println(d[i]); } } Compara cadenas 0 – iguales >0 – la primera mayor <0 – la primera menor Intercambia cadenas

31 La clase BufferedWriter (Escritor con buffer) escribe texto en un flujo de caracteres. Debe construirse sobre un escritor de flujos o de archivos. BufferedWriter in = new BufferedWriter(new FileWriter("foo.out")); El método write(s,off,len) escribe una parte de una cadena de caracteres empezando en off y con longitud len. La escritura debe hacerse manejando los posibles errores que se puedan producir en un bloque try. try{ instrucciones si no hay error; } catch (Excepción x){ instrucciones si hay error; }

32 import java.io.*; public class Ejemplo5TextIO { public static void main(String args[]) { // Vamos a escribir el archivo salida.txt BufferedWriter salida = null; try { FileWriter arch = new FileWriter("salida.txt"); // Crea el archivo. salida = new BufferedWriter(arch); // Ata 'salida' a este archivo. } catch(IOException x) { // El archivo puede no ser creado. System.err.println("Archivo no se creo: salida.txt"); System.exit(2);// Termina el programa con código 2 } int i; String d[] = {"hola","que","tal"}; // Ahora escribe el archivo try { for(i=0; i< d.length; i++ ) { salida.write(d[i],0,d[i].length());//Escribe cadena salida.newLine(); //Escribe nueva línea } salida.close();//Es necesario cerrar el archivo } catch(IOException x) { x.printStackTrace();//Esto se ejecuta si hay error al escribir } } }

33 import java.io.*; public class Ejemplo6TextIO { public static void main(String args[]) { // Vamos a escribir el archivo salidanum.txt BufferedWriter salida = null; try { FileWriter arch = new FileWriter("salidanum.txt"); // Crea el archivo. salida = new BufferedWriter(arch); // Ata 'salida' a este archivo. } catch(IOException x) { // El archivo puede no ser creado. System.err.println("Archivo no se creo: salidanum.txt"); System.exit(2);// Termina el programa con código 2 } int i; double a; // Ahora escribe el archivo try { for(i=0; i< 20; i++ ) { a = i*i; String s = ""+i+" "+a; salida.write(s,0,s.length());//Escribe cadena salida.newLine(); //Escribe nueva línea } salida.close();//Es necesario cerrar el archivo } catch(IOException x) { x.printStackTrace();//Esto se ejecuta si hay error al escribir } } }


Descargar ppt "Curso de Computación.  Manipular una colección de datos usando vectores  Declarar y utilizar un vector de tipos de datos primitivos en la implementación."

Presentaciones similares


Anuncios Google