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.

Slides:



Advertisements
Presentaciones similares
Arreglos.
Advertisements

Programación Orientada a Objetos (con Java)
Complejidad Computacional
Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
Los meses del año.
el invierno Es una estación. Los meses son diciembre, enero y febrero.
Arreglos en C++ (una y dos dimensiones)
Las estaciones del año.
Hablamos de HOY…. ¿Qué día de la semana es hoy? ¿Cuál es la fecha de hoy? agosto septiembre octubre noviembre El ______ de ________. (#) (mes) diciembre.
CULENDARIO 2007 Para los Patanes.
Análisis y programación 13051A. * Como se había comentado anteriormente, un vector es un arreglo o colección de datos donde los datos se almacenan de.
TOMATE INGRESOS PROMEDIOS AL M.C.B.A. EN % DE TONELADAS POR REGION (Promedio 1996/2000) Para el mes de ENERO.
Vectores en java.
Arreglos: Vectores en JAVA
Español conversacional 7º grado Señor Manning.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
ENERO/2012 JULIO/2012.
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
Curso Programación en Java
Estructuras de control Introducción a la programación.
H. AYUNTAMIENTO 2009 – 2012 H. AYUNTAMIENTO 2009 – 2012 AGENDA DE ACTIVIDADES DEL HONORABLE CABILDO DEL MUNICIPIO DE CD. VALLES AGOSTO 2012 DOMINGOLUNESMARTESMIERCOLESJUEVESVIERNESSABADO.
Programación III Clase 08 Arreglos.
Manejo de Vectores y Matirces
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
METODOLOGÍA DE LA PROGRAMACIÓN
ASKARTZA F. T. CONSTRUCCION NUEVO CAMPO DE FUTBOL Año
Patrones evolutivos en T1 Febrero Octubre Diciembre Delimitación progresiva de la lesión.
ENERO 2012 ENERO 2012 AGENDA DEL COMITÉ DE ADQUISICIONES DOMINGOLUNESMARTESMIERCOLESJUEVESVIERNESSABADO El lugar: Salón de Cabildo Objetivo: Validación.
2009 Calendario ENERO LUNESMARTESMIERCOLESJUEVESVIERNESSABADODOMINGO
Calendario mensual de 2006 Puede imprimir esta plantilla para usarla como calendario para colgarlo en la pared, o bien, puede copiar la página de cualquiera.
31/01/2010URIPOP INFORME GESTION REVISION PROYECTOS 31 – ENERO
Vectores y matrices Curso de Computación.
Los Meses del Año en Español
Enero, 2011 Estadística de Visitas Anual 2011 Sitio 1 MES Visitantes distintos* Número de Visitas** ENERO FEBRERO MARZO
28 December corner association presents Calendario 2006 PARA ELLOSSS.
NUMERAL 19: INFORMES DE ENTIDADES PUBLICAS Numeral 19 del artículo 10 de la LTAIP: Los informes que debe rendir el sujeto obligado, la unidad responsable.
laboutiquedelpowerpoint.
APLICACIONES INFORMÁTICAS DESARROLLO DE UN EJERCICIO DE EXCEL 1MARIAN PINO MÁRQUEZ.
Calendario escolar Puede imprimir esta plantilla para usarla como calendario de pared o copiar la página correspondiente a cualquiera de los.
CALENDARIO2007 Para mis amigos. ENERO 2007 D S T Q Q S S
¿En qué orden vienen los meses del año?
Enero. febrero marzo abril mayo junio julio.
ENERO DLMMJVS
El Calendario.
¿Cuál es la fecha hoy? ¿Qué fecha/día es hoy?
PARA MIS AMIGOS CALENDÁRIO 2011 AVIONES - Se entiende -
2012 Calendario mensual Puede imprimir esta plantilla para usarla como calendario de pared o copiar la página del mes que desee y agregarla a su propia.
PARA MIS AMIGOS CALENDÁRIO 2011 Hélicoptères de Combate.
Si compañeros sí Aquí tenéis El calendario, Vente conmigo, 2013 Que disfrutéis LOS DÍAS poco a poco, DE LAS NOCHES MUCHO MÁS, PUES EL AÑO CORRE.
¿Cuándo es tu cumpleaños? Mi cumpleaños es el dos de febrero.
El tiempo y las estaciones
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
¿En qué mes es tu cumpleaños?.
Las estaciones del año.
CALENDARIO DE CUMPLEAÑOS
Número de solicitudes de información presentadas en el Periodo de Julio 2017 – Agosto 2017
2009 Calendario.
Enero 2010 DOMINGO LUNES MARTES MIÉRCOLES JUEVES VIERNES SÁBADO 1 2 3
Agosto 2009 LUNES MARTES MIÉRCOLES JUEVES VIERNES SÁBADO DOMINGO 1 2 3
Departamento de Asistencia al Usuario
Enero 2010 DOMINGO LUNES MARTES MIÉRCOLES JUEVES VIERNES SÁBADO 1 2 3
Número de solicitudes de información presentadas en el Periodo de Septiembre 2017 – Octubre 2017
SON 12 LOS MESES DE AÑO. enero 1 febrero 2 marzo 3.
Los meses del año Las estaciones del año. ¿Cuáles son los meses de la primavera?  Marzo  Abril  Mayo.
Enero 2010 LUNES MARTES MIÉRCOLES JUEVES VIERNES SÁBADO DOMINGO 1 2 3
Transcripción de la presentación:

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 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

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

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.

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

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

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++) { }

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”};

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

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];

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.

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

//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+" "); } }

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

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 } }

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 ).

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 } }

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 } }

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 } }

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)); } }

x 04.5promedio= desviación= Los siguientes datos fueron calculados con Excel

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

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; }

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 } } }

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 } } }

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 } } }

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

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 }

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]; }

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

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; }

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 } } }

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 } } }