Práctica1: Medición del Tiempo



Documentos relacionados
GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Introduciendo datos desde el

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

FACULTAD DE INGENIERÍA

Computación III. Objetivo de aprendizaje del tema

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Programación Orientada a Objetos. Tema 7: Persistencia

1. Creación del repositorio

Modulo 1 El lenguaje Java

11. Algunas clases estándar de Java (II)

Modulo conexión Cliente WS DGI

La clase estándar Scanner

Tema 1. Introducción a JAVA

Introducción al lenguaje Java

Tema: Introducción a Java y Netbeans

Examen de Prácticas de Programación Ingeniería Informática

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Colecciones. Nadjet Bouayad-Agha Programación 2007

Un breve resumen del lenguaje Java

Curso Informática Lección 2. Introducción a la programación en Java

JLEX Y JAVA CUP. Instalación

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Primer Parcial Septiembre 5 de 2009

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

FACULTAD DE INGENIERÍA

James Gosling, creador de Java

2. Estructura de un programa en Java

EXAMEN PARCIAL 23 de Octubre de 2015 Programación I. Grado en Matemáticas e Informática ETSIINF UPM

Manual del Protocolo XML-RPC de Mensajería Negocios

Uso de excepciones en Java

Práctica III: Streams, Readers y Writers

Programación Orientada a Objetos. Java: Excepciones

Estructura de datos tipo vector.

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Introducción a Java III. Prof. MSc. Pedro Shiguihara

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null;

Tema 14: Excepciones

Técnicas Avanzadas de Testing Automatizado

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Vectores y matrices. Arrays Declaración Creación Acceso a los elementos de un array Manipulación de vectores y matrices

Programación de Sistemas

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor.

Etapa 3.1. Implementación de la clase Operacion

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco.

Ejercicios de evaluación de fundamentos de programación en Java

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Universidad Carlos III de Madrid Ingeniería de Telecomunicación. Examen de Programación Febrero Parte de Ejercicios

Tutorial básico del entorno de desarrollo Eclipse.

JFlex. Diseño de compiladores. JFlex. Funcionamiento. Archivo de especificación. Código de usuario 23/03/2014

Programación Orientada a Objetos: Arreglos en Java

Universidad Central de Bayamón COLEGIO DE DESARROLLO EMPRESARIAL Y TECNOLOGIA. Número Estudiante:

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

Soluciones Ejercicios Tema 3

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Los bloques DLL (Figura A.1) externos permiten al usuario escribir su propio código y

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Primer Parcial Septiembre 6 de 2008

Repaso desarrollo de software Parte #1. Jorge Iván Meza Martínez

FAMILIARIZANDONOS CON JAVA

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

Introducción a la Programación en Java. Page 1

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

1. Manejo de memoria estática 2. Manejo de memoria dinámica

8. Sentencia return y métodos

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA

1. Visión general de RMI

Quickstart-Webapps-Spring

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Universidad ORT - Arquitectura de Software. Requisitos

Programación Orientada a Objetos. Java: Excepciones

Federico Peinado

Tema 2. El lenguaje de programación Java. Arrays y cadenas

Práctica 5: Common Object Request Broker Architecture CORBA

Procesamiento de documentos XML

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

FACULTAD DE INGENIERÍA

Tema 2. El lenguaje de programación Java (Parte 1)

Elementos léxicos del lenguaje de programación Java

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

Pruebas de unidad con JUnit

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

Introducción - por qué usarlas?(1)

Transcripción:

Práctica1: Medición del Tiempo Objetivo Medir teórica y experimentalmente el tiempo de ejecución de algoritmos. Procedimiento General. En Netbeans cree el proyecto P1_Timing para incorporar los códigos que están disponibles en la sección de ayudas y los que se generen en esta práctica. 1. Haga la puesta en marcha del programa Time.java que mide el tiempo de ejecución en milisegundos y nanosegundos. Esta clase tiene su propio main, así que ejecútelo como archivo y no como proyecto con shif+f6.. Haga la puesta en marcha del programa Random.java que genera números aleatorios en el intervalo 1-100 y escribe su frecuencia de ocurrencia. Esta clase tiene su propio método main. 3. Haga la puesta en marcha del programa ListFile.java que muestra el contenido de un archivo de texto. Esta clase tiene su propio método main. 4. Haga la puesta en marcha del Programa DoubleSpace.java, el recibe un archivo de texto y crea uno similar separando cada línea por un espacio. 5. Haga la puesta en marcha del programa DataProcessing.java. Esta clase por ahora contiene sólo una rutina de ordenamiento (insertsort) que ordena datos de cualquier tipo (Object). Como esta clase no tiene método main propio, desde la clase Main del proyecto invoque al algoritmo de ordenamiento con datos de tipo entero (Integer) introducidos en código duro y mida el tiempo de ejecución. 6. Agregue a la clase Main el código necesario para ordenar datos de los tipos siguientes: a) Tipo cadena (String) introducidos en código duro. b) Tipo Cadena (String) introducidos por teclado. Utilice los métodos getstrings( ) y resizestringsarray( ). c) Tipo Cadena introducidos desde archivo de texto. 7. Incorpore al programa DataProcessing.java, como métodos estáticos, cada uno de los códigos de los siguientes algoritmos. En el método main realice llamadas a esos métodos y mida el tiempo de ejecución con los datos enteros del punto 3. Ordenamiento por Inserción (ojo: ya está incorporado) Ordenamiento Burbuja (requiere que los datos estén ordenados) Ordenamiento por Selección Búsqueda binaria iterativa Menor de una secuencia de números Segundo mayor 8. Haga un programa que genere aleatoriamente datos (enteros) para los programas anteriores y los guarde en archivo de texto de acuerdo con el formato del inciso g de la sección de ayudas. 9. Ejecute los algoritmos con entradas ordenadas-ascendentemente y desordenadas, así como de diferentes tamaño. Recuerde que para ejecutar la Búsqueda binaria primero debe ordenar los elementos. Para cada algoritmo elabore una tabla de desempeño con la siguiente información:

n Tipo 56 Ordenado 56 Desordenado 16384 Ordenado 16384 Desordenado 09715 Ordenado 09715 Desordenado Algoritmo 1: Análisis experimental Tiempo en nanoseg Análisis teórico T(n)= número de veces que se ejecutan las operaciones Básicas Constante de proporcionalidad T(n)/nanoseg. Presentación de resultados a) Elabore un documento pdf que contenga una descripción general de la práctica (un párrafo) y los siguiente resultados de la práctica: PUNTO 1-5, una explicación breve de cada procedimiento. PUNTO 6, E/S que muestren el funcionamiento correcto de los códigos. PUNTO 7-9 tablas de desempeño con conclusiones. b) Suba a la página del grupo, en el directorio correspondiente (Files/Practicas/Practica3), un sólo archivo en formato zip o rar que contenga: el documento pdf y archivos de la aplicación (proyecto java-netbeans que incluya archivos de entrada, jar). c) Muestre a la profesora que los códigos de la práctica funcionan. La profesora está disponibles en cualquiera de los siguientes horarios (lu-jue 13-14 hrs) o el viernes de 9-1 hrs o 18-0 hrs. Fecha de entrega (subir archivos a la página del grupo) Lunes 19 de septiembre Nota: Los puntos 1 al 4 se deben traer listos de casa y los puntos 5 y 6 se deben terminar en el laboratorio y cuentan para la calificación de la práctica. Los puntos 7 a 9 son para casa. Ayudas a) Código: Time.java public class Time public static void main(string[] args) int numpasses; numpasses = 1000; //Milliseconds long time1 = System.currentTimeMillis(); for (int i = 0; i < numpasses; i++) System.out.println("hola "); long time = System.currentTimeMillis(); //Nanoseconds long time3 = System.nanoTime(); for (int i = 0; i < numpasses; i++) System.out.println("hola "); long time4 = System.nanoTime();

System.out.println("Completed " + numpasses + " passes in " + (time - time1) + " milliseconds"); System.out.println("Completed " + numpasses + " passes in " + (time4 - time3) + " nanoseconds"); b) Código: Random.java import java.util.random; public class RandomNumbers // Generate random numbers (from 1-100) // Print number of occurrences of each number public static final int DIFF_NUMBERS = 100; public static final int TOTAL_NUMBERS = 1000000; public static void main( String [ ] args ) // Create the array; initialize to zero int [ ] numbers = new int [ DIFF_NUMBERS + 1 ]; for( int i = 0; i < numbers.length; i++ ) numbers[ i ] = 0; Random r = new Random( ); // Generate the numbers for( int i = 0; i < TOTAL_NUMBERS; i++ ) numbers[ r.nextint( DIFF_NUMBERS ) + 1 ]++; // Output the summary for( int i = 1; i <= DIFF_NUMBERS; i++ ) System.out.println( i + ": " + numbers[ i ] ); c) Códigos: ListFile.java import java.util.scanner; import java.io.filereader; import java.io.ioexception; public class ListFiles public static void listfile(string filename) Scanner filein = null; System.out.println("FILE: " + filename); try filein = new Scanner(new FileReader(fileName)); //for read Integer objects uses hasnextint while (filein.hasnextline()) String oneline = filein.nextline(); System.out.println(oneLine); catch (IOException e) System.out.println(e); finally // Close the stream if (filein!= null) filein.close(); public static void main(string[] args) listfile("./src/p1_timing/data.txt");

d) Códigos: DoubleSpace.java import java.io.filereader; import java.util.scanner; import java.io.filewriter; import java.io.printwriter; import java.io.ioexception; public class DoubleSpace public static void main( String [ ] args ) doublespace( "./src/p1_timing/data.txt" ); public static void doublespace( String filename ) PrintWriter fileout = null; Scanner filein = null; try filein = new Scanner( new FileReader( filename ) ); fileout = new PrintWriter( new FileWriter( filename + ".ds" ) ); while( filein.hasnextline( ) ) String oneline = filein.nextline( ); fileout.println( oneline + "\n" ); catch( IOException e ) e.printstacktrace( ); finally if( fileout!= null ) fileout.close( ); if( filein!= null ) filein.close( ); e) Códigos: DataProcessing.java y Main.java public class DataProcessing public static void insertsort (Object [] A) Object tmp = new Object(); for (int p = 1 ; p < A.length ; p++) int j = p; tmp = A [p]; for (; j > 0 && ((Comparable) tmp).compareto (A [j - 1])<0 ; j--) //((Comparable) dest[j-1]).compareto(dest[j])>0; j--) A [j] = A [j - 1]; A [j] = tmp;

public class Main public static void main(string[] args) throws Exception Integer[] num =, 4, 15, 5, 7, 0, 1, 8, 7, 3, 4, 30, 6, 33, 1, 18, 39, 5; DataProcessing.insertSort(num); System.out.println("\nOrdenado"); for (int i = 0; i < num.length; i++) System.out.print(num[i] + " "); f) Códigos: método getstrings, método resizestringsarray e invocación. // Read an unlimited number of String; return a String [ ] public static String[] getstrings() Scanner in = new Scanner(System.in); String[] array = new String[5]; int itemsread = 0; System.out.println("Enter any number of strings, one per line; "); System.out.println("Terminate with empty line: "); while (in.hasnextline()) String oneline = in.nextline(); if (oneline.equals("")) break; if (itemsread == array.length) array = resizestringsarray(array, array.length * ); array[itemsread++] = oneline; System.out.println("Done reading"); return resizestringsarray(array, itemsread); // Resize a String[ ] array; return new array public static String [ ] resizestringsarray( String [ ] array, int newsize ) String [ ] original = array; int numtocopy = Math.min( original.length, newsize ); array = new String[ newsize ]; //manual array copy, can be replaced with System.arraycopy() for( int i = 0; i < numtocopy; i++ ) array[ i ] = original[ i ]; return array; public static void main(string[] args) String[] nom = getstrings(); g) Formato para archivo de datos //data type 1)ordered, ) disordered //number of elements 4 //elements 5 4 6 // search keys 5