Tema 3. Test Driven Development

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Tema 3. Test Driven Development"

Transcripción

1 Tema 3. Test Driven Development Ejercicios Resueltos Ejercicio 01. Desarrolle mediante TDD una implementación del algoritmo de la Criba de Eratóstenes para calcular la lista de los números primos desde 2 hasta un número n indicado. Si no existiera ningún primo, el algoritmo devolverá una lista vacía. El algoritmo de la criba de Eratóstenes se muestra a continuación. 1. Se crea una lista con los números desde 2 hasta n. 2. Se elige el siguiente número x no marcado (inicialmente el 2). 3. Se marcan todos los múltiplos de dicho número (x*2, x*3, etc.). 4. Se repite desde el paso 2. Cuando se ha terminado con todos los números aquellos que queden sin marcar son primos. Más información sobre la criba de Eratóstenes en la Wikipedia: Solución Antes de comenzar con la implementación es interesante pararse un momento a estudiar los posibles casos de prueba de este algoritmo. El único valor de entrada de las pruebas es el número n límite para calcular los números primos. Los casos de prueba se pueden dividir en varias particiones equivalentes en función de dicho n. Vamos a describir estas particiones a continuación. La primera partición engloba a todos los números menores de 2. Para cualquier valor de dicha partición el resultado de esta implementación será siempre el mismo: una lista vacía de números. Después, podemos definir tantas particiones como valores son necesarios para incluir a un nuevo número primo. También podemos jugar con particiones que terminan justo en un valor primo o justo después (por ejemplo, calcular todos los primos hasta 11 o hasta 12). Todos son equivalentes a la hora de generar ya que el proceso para calcularlo son los mismos, pero alguna prueba adicional puede ayudarnos a detectar errores ocultos. Veamos las primeras evoluciones aplicando TDD. public void testcalculaconvalorinicialuno() { List<Integer> l = CrivaDeEratosthenes.Calcula(1); asserttrue(l.isempty()); static class CrivaDeEratosthenes { 1

2 public static List<Integer> Calcula(int i) { return new ArrayList<Integer>(); // public void testcalculaconvalorinicialdos() { List<Integer> l = CrivaDeEratosthenes.Calcula(2); // (*) assertequals(1, l.size()); assertequals(new Integer(2), l.get(0)); public static List<Integer> Calcula(int i) { List<Integer> l = new ArrayList<Integer>(); if (i >= 2) l.add(2); return l; (*) Aunque los dos asserts verifican lo mismo, con el primer assert evitamos que la prueba falle por una excepción si no hay ningún elemento en la lista. Hacer este cambio hace más legible la traza de la prueba cuando no hay ningún elemento en la lista. Al final de la traza veremos una manera más cómoda de escribir este tipo de asserts utilizando la librería de Java. Continuamos aplicando TDD. public void testcalculaconvalorinicialuno() { List<Integer> l = CrivaDeEratosthenes.Calcula(1); asserttrue(l.isempty()); public void testcalculaconvalorinicialdos() { List<Integer> l = CrivaDeEratosthenes.Calcula(2); assertequals(new Integer(2), l.get(0)); public void testcalculaconvalorinicialtres() { List<Integer> l = CrivaDeEratosthenes.Calcula(3); assertequals(2, l.size()); assertequals(new Integer(2), l.get(0)); assertequals(new Integer(3), l.get(1)); public static List<Integer> Calcula(int i) { List<Integer> l = new ArrayList<Integer>(); if (i >= 2) { l.add(2); l.add(3); return l; 2

3 En este nuevo paso vemos dos detalles interesantes. La primera es que ha sido necesario quitar el assert que pusimos para evitar un error por excepción. La segunda es que introducir una nueva prueba no ha hecho avanzar. Es necesario cambiar de enfoque. Llegados a este punto ya nos damos cuenta de que los casos de prueba no ayudan a evolucionar el código. Tendríamos que dar un paso muy grande con muchos cambios que pueden salir mal para implementar el código del algoritmo. Este es el momento de buscar alternativas para hacer pruebas más pequeñas y avanzar pasos más diminutos. Para ello cada paso del algoritmo será un método y cada uno de los métodos irá creciendo guiado por pruebas. Aunque dichos métodos deberían ser privados, los pondremos con el ámbito de visibilidad necesario para poder probarlos. En el próximo módulo veremos las técnicas y herramientas para poder probar métodos privados. Empezamos con una primera prueba que nos haga avanzar en este paso. El primer paso que vamos a abordar es crear una matriz de booleanos para indicar qué números están marcados y cuáles no. public void testcrealistadenumerossinmarcar() { int tope = 4; List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(tope); assertequals((tope+1), l.size()); for (Boolean b:l) { assertfalse(b); public static List<Boolean> CreaListaDeNumerosSinMarcar(int i) { List<Boolean> lb = new ArrayList<Boolean>(); for (int c=0; c<=i; c++) lb.add(false); return lb; Necesitamos incrementar el tope en 1 ya que para que el número 4 aparezca en la lista de marcados, es necesario que la lista tenga 5 elementos (del 0 al 5). Como trabajamos con listas, ignoraremos las posiciones 0 y 1 que siempre serán false ya que no intervienen. Continuamos. public void testmarcarmultiplos() { int tope = 2; List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(2); CrivaDeEratosthenes.MarcarMultiplos(l); assertfalse(l.get(2)); public static void MarcarMultiplos(List<Boolean> l) { Cuidado! Hemos descubierto un mal caso de prueba, el nombre es poco descriptivo y no le estamos pidiendo a nuestro sistema que haga nada por eso un método vacío lo pasa. Vamos a cambiar este caso de prueba. Vamos a utilizar como valor de prueba 4 porque es el primer valor que introduce un cambio. Continuamos. 3

4 public void testmarcarmultiploshasta4() { List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(4); CrivaDeEratosthenes.MarcarMultiplos(l); assertfalse(l.get(2)); assertfalse(l.get(3)); asserttrue(l.get(4)); public static void MarcarMultiplos(List<Boolean> l) { for (int num = 2; num < l.size(); num++) { for (int mul = (num*2); mul < l.size(); mul += num) { l.set(mul, true); // public void testcrearlistadeprimoshasta4() { List<Boolean> l = CrivaDeEratosthenes.CreaListaDeNumerosSinMarcar(4); CrivaDeEratosthenes.MarcarMultiplos(l); List<Integer> primos = CrivaDeEratosthenes.CreaListaDePrimos(l); assertequals(2, primos.size()); assertequals(new Integer(2), primos.get(0)); assertequals(new Integer(3), primos.get(1)); public static List<Integer> CreaListaDePrimos(List<Boolean> l) { List<Integer> lb = new ArrayList<Integer>(); for (int c = 2; c < l.size();c++) { if (!l.get(c)) { lb.add(c); return lb; Ya tenemos implementados y probados todos los pasos. Ahora es el momento de refactorizar el método que calcula la criba de Eratóstenes y comprobar que las primeras pruebas que escribimos siguen funcionando. Veamos la refactorización. public static List<Integer> Calcula(int i) { List<Boolean> lb = CreaListaDeNumerosSinMarcar(i); MarcarMultiplos(lb); return CreaListaDePrimos(lb); Las pruebas siguen funcionando por lo que ya podemos dar por terminada la implementación. Si embargo podemos añadir algunas pruebas más jugando con las particiones que comentamos al principio. Por ejemplo: 4

5 public void testgeneraprimoshastadoce() { List<Integer> l = CrivaDeEratosthenes.Calcula(12); Assert.assertEquals(l, Arrays.asList(2, 3, 5, 7, 11)); Consideraciones finales Este desarrollo ha tenido una carencia. No se ha podido hacer TDD para definir que el método principal llame a los demás métodos ni verifica si el orden en que los llama es el correcto, con lo que hemos diseñado esa parte sin el soporte de pruebas. Este tipo de TDD lo realizaremos mediante mocks los cuáles estudiaremos en el siguiente módulo. Ejercicio 02. Se desea crear una clase que funcione como un contador. Se cuenta con los siguientes requisitos. Al crear el contador indicamos el valor inicial del mismo, el incremento y el valor límite. El valor inicial y el incremento tomarán un valor de 0 y 1 respectivamente si no se indica nada. El límite es necesario indicarlo siempre. Ninguno de los tres valores (valor inicial, incremento y límite) pueden cambiarse una vez creado el contador Al incrementar el contador se suma al valor actual el incremento y nos indican si se superó el límite. Cuando se supere el límite, el valor actual del contador vuelve a ser el valor inicial. En cualquier momento se puede conocer el valor actual del contador y E cualquier momento se puede establecer el contador a su valor inicial. Implemente los requisitos anteriores utilizando TDD. Solución Esta solución muestra la línea temporal del trabajo hecho. Cada boque de código (entre dos comentarios con guiones) es la implementación de una característica en el código. Primero se muestra el código de prueba y, después, la implementación. También se indican las refactorizaciones realizadas. 5

6 Esta misma traza y el código Java obtenido pueden descargarse en la sección de materiales del curso. En el boletín de ejercicios de este tema se plantean cuestiones adicionales a partir de esta solución. public void testvervalordelcontadorpordefecto() { ContadorCircular cc = new ContadorCircular(); assertequals(0, cc.getvalor()); public class ContadorCircular { public int getvalor() { return 0; // public void testvervalordelcontadorconvalorinicial5() { ContadorCircular cc = new ContadorCircular(5); assertequals(5, cc.getvalor()); public class ContadorCircular { int valor; public ContadorCircular(int i) { this.valor = i; public ContadorCircular() { this(0); public int getvalor() { return this.valor; // public void testincrementarcontadorpordefecto() { ContadorCircular cc = new ContadorCircular(); cc.incrementa(); assertequals(1, cc.getvalor()); public void incrementa() { this.valor++; //

7 public void testincrementarcontadorde5a10() { ContadorCircular cc = new ContadorCircular(5, 5); cc.incrementa(); assertequals(10, cc.getvalor()); public class ContadorCircular { int valor; int incremento; public ContadorCircular(int i) { this.valor = i; this.incremento = 1; public ContadorCircular() { this(0); public ContadorCircular(int i, int j) { this(i); this.incremento = j; public int getvalor() { return this.valor; public void incrementa() { // /* Refactorizamos - Nombres de parámetros de constructores más descriptivos - Quitamos un constructor. - Creamos los contadores en el setup - nombres más descriptivos para los contadores de pruebas */ public class TestContadorCircular { ContadorCircular ccpordefecto; ContadorCircular public void setup() throws Exception { ccpordefecto = new ContadorCircular(); cccincoencinco = new ContadorCircular(5, 5); public void testvervalordelcontadorpordefecto() { assertequals(0, ccpordefecto.getvalor()); public void testvervalordelcontadorconvalorinicial5() { assertequals(5, cccincoencinco.getvalor()); 7

8 public void testincrementarcontadorpordefecto() { ccpordefecto.incrementa(); assertequals(1, ccpordefecto.getvalor()); public void testincrementarcontadorde5a10() { cccincoencinco.incrementa(); assertequals(10, cccincoencinco.getvalor()); public class ContadorCircular { int valor; int incremento; public ContadorCircular(int valor, int incremento) { this.valor =valor; this.incremento = incremento; public ContadorCircular() { this(0, 1); public int getvalor() { return this.valor; public void incrementa() public void setup() throws Exception { ccpordefecto = new ContadorCircular(1); cccincoencinco = new ContadorCircular(5, 5); public void testlimitenosuperadocontadorpordefecto() { boolean b = this.ccpordefecto.incrementa(); assertfalse(b); int limite; public ContadorCircular(int limite) { this(0, 1); this.limite = limite; public boolean incrementa() { return false; 8

9 public void testlimitesuperadocontadorpordefecto() { this.ccpordefecto.incrementa(); boolean b = this.ccpordefecto.incrementa(); asserttrue(b); public boolean incrementa() { return this.valor > this.limite; public void testlimitesuperadocontadorde5en5() { this.cccincoencinco.incrementa(); boolean b = this.cccincoencinco.incrementa(); asserttrue(b); public ContadorCircular(int valor, int incremento, int limite) { this.valor =valor; this.incremento = incremento; this.limite = limite; public ContadorCircular(int limite) { this(0, 1, limite); { public void testcontadorpordefectovuelvealvalorinicialasuperarellimite() this.ccpordefecto.incrementa(); this.ccpordefecto.incrementa(); assertequals(0, this.ccpordefecto.getvalor()); int inicial; public ContadorCircular(int valor, int incremento, int limite) { this.inicial = valor; this.valor =valor; this.incremento = incremento; this.limite = limite; public boolean incrementa() { boolean b = this.valor > this.limite; if (b) { this.valor = this.inicial; return b; public void testresetearcontadorpordefecto() { 9

10 this.ccpordefecto.incrementa(); this.ccpordefecto.resetea(); assertequals(0, this.ccpordefecto.getvalor()); public void resetea() { this.valor = this.inicial; /* Refactorizamos - Evitamos código repetido */ public boolean incrementa() { boolean b = this.valor > this.limite; if (b) { this.resetea(); return b; 10

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones.

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones. Refactorización Definición Refactorización (n) Cambio realizado a la estructura interna del software para hacerlo más fácil de comprender y más fácil de modificar sin cambiar su comportamiento observable.

Más detalles

Capitulo 3. Test Driven Development

Capitulo 3. Test Driven Development Capitulo 3. Test Driven Development 3.1 Uso de JUnit como framework para realizar pruebas unitarias Como ya se mencionó en el marco teórico Test Driven Development es una técnica de programación extrema

Más detalles

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL BLACKJACK Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones 1. Explicación del juego de cartas del Blackjack El Blackjack

Más detalles

Ejercicio 1 (3 puntos).-

Ejercicio 1 (3 puntos).- URJC Ingeniería Técnica de Gestión Abril 2011 Asignatura: SOFTWARE AVANZADO Normas: La prueba consta de 2 ejercicios. La máxima nota del examen es un 8. Siendo la práctica la que añade los 2 puntos que

Más detalles

Lenguaje Java Avanzado

Lenguaje Java Avanzado Lenguaje Java Avanzado Sesión 4: Pruebas con JUnit 2012-2013 Depto. Ciencia de la Computación e IA Índice Introducción a JUnit Implementación de las pruebas Ejecución de pruebas Pruebas con excepciones

Más detalles

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

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Tema 1. Introducción a los TAD

Tema 1. Introducción a los TAD Tema 1. Introducción a los TAD Objetivos En este tema nos ocupamos inicialmente del concepto de abstracción, dedicando la mayor atención a la abstracción de datos, estudiando aspectos relacionados con

Más detalles

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases

Más detalles

SCR6150c Versión 2.0(12/01/05)

SCR6150c Versión 2.0(12/01/05) SCR6150c Versión 2.0(12/01/05) JUnit: Manual de usuario Fecha: Referencia: EJIE S.A. Mediterráneo, 3 Tel. 945 01 73 00* Fax. 945 01 73 01 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1

Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1 Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Convertidor Dec->Hex y Hex->Dec (5.0 ptos.)... 1 1.1.1 Apartado A (4.0 ptos.)... 1 1.1.2 Apartado B (1.0

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Técnicas Avanzadas de Testing Automatizado

Técnicas Avanzadas de Testing Automatizado Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados

Más detalles

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005

Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005 Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005 JUnit es una herramienta para la realización de pruebas de unidad de software desarrollado con Java, que es una herramienta de software

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Primer Parcial Septiembre 5 de 2009

Primer Parcial Septiembre 5 de 2009 Primer Parcial Septiembre 5 de 2009 Algoritmos y Lenguajes II Reglas del juego Tal como se le dijo antes, durante este examen usted no puede pedir ABSOLUTAMENTE nada prestado a sus compañeros, ni hablar

Más detalles

1 Agencia de viajes: enunciado

1 Agencia de viajes: enunciado 1 AGENCIA DE VIAJES: ENUNCIADO 1 1 Agencia de viajes: enunciado Una agencia de viajes mantiene una base de datos con exactamente N clientes y M destinos turísticos. En una situación real, estos valores

Más detalles

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

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I

Más detalles

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

BETA. Sacándole Partido a JUnit. Mocking. www.iwt2.org formacion@iwt2.org

BETA. Sacándole Partido a JUnit. Mocking. www.iwt2.org formacion@iwt2.org BETA Sacándole Partido a JUnit Mocking www.iwt2.org formacion@iwt2.org 03. Mocking Aprender qué es el mocking y para qué sirve. Desarrollar el tipo de pruebas en las que es necesario un mock. Conocer librerías

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Grados Ing. Inf. y Mat. Inf. Julio 2014 Algoritmos y Estructura de Datos Página 1 de 6

Grados Ing. Inf. y Mat. Inf. Julio 2014 Algoritmos y Estructura de Datos Página 1 de 6 Grados Ing. Inf. y Mat. Inf. Julio 201 Algoritmos y Estructura de Datos Página 1 de 6 Algoritmos y Estructura de Datos: Examen Julio (Solución) Grados Ing. Inf. y Mat. Inf. Julio 201 Departamento de Lenguajes,

Más detalles

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

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

Pruebas unitarias en profundidad

Pruebas unitarias en profundidad Pruebas unitarias en profundidad Luis Alfonso Rey 9º Encuentro Danysoft en Microsoft Agenda Lo que ya sabemos Algunas cosas nuevas Despacito y buena letra Herencia de familia Lo que ya sabemos Qué es

Más detalles

Demo. TDD desde Cero. Acceptance Test Driven Development. www.iwt2.org formacion@iwt2.org

Demo. TDD desde Cero. Acceptance Test Driven Development. www.iwt2.org formacion@iwt2.org Demo TDD desde Cero Acceptance Test Driven Development www.iwt2.org formacion@iwt2.org Objetivos Objetivos Conocer cómo desarrollar un sistema software combinando pruebas de aceptación y TDD. Aprender

Más detalles

Comencemos a programar con. Entrega 10. Estructuras de Control II

Comencemos a programar con. Entrega 10. Estructuras de Control II Comencemos a programar con VBA - Access Entrega 10 Estructuras de Control II Eduardo Olaz 10-2 Estructuras de Control, segunda parte Las Instrucciones While - - - Wend La estructura de bucle For Contador

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Variables y Tipos de Datos PRÁCTICA NÚM. [ 1 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

Ingeniería Software. Verificación y Validación

Ingeniería Software. Verificación y Validación Ingeniería Software Ingeniería software 4º 4º de Físicas Verificación y Validación José M. Drake y Patricia López Computadores y Tiempo Real Ingeniería de Programación 2009 1 Ingeniería de Programación

Más detalles

Curso PUDE. Desarrollo de Aplicaciones Móviles en Android

Curso PUDE. Desarrollo de Aplicaciones Móviles en Android Curso PUDE Ejercicio Avanzado A: Bases de Datos y conexión con un ListView utilizando vistas A. Descripción Con este ejercicio, veremos cómo funcionan las bases de datos SQLite en Android, crearemos una,

Más detalles

Apéndices técnicos. Método de representación: forma en que serán representados internamente los documentos.

Apéndices técnicos. Método de representación: forma en que serán representados internamente los documentos. APÉNDICE A: INDEXACIÓN DE INFORMACIÓN. LUCENE 1. INTRODUCCIÓN: INDEXACIÓN DE INFORMACIÓN El desarrollo y crecimiento masivo de las redes de computadoras y medios de almacenamiento a lo largo de los últimos

Más detalles

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Hilos en Java A veces necesitamos que nuestro programa Java realice varias cosas simultáneamente. Otras veces tiene que realizar una tarea muy

Más detalles

Clase 11. Análisis dinámico, 2ª parte.

Clase 11. Análisis dinámico, 2ª parte. Clase 11. Análisis dinámico, 2ª parte. Continuamos con el mismo tema de la clase anterior, pero esta vez nos ocuparemos principalmente de la fase de prueba. Nos detendremos brevemente en algunas de las

Más detalles

Automatización Industrial

Automatización Industrial ESCUELA SUPERIOR DE INFORMÁTICA UNIVERSIDAD DE CASILLA-LA MANCHA Automatización Industrial Programación de la Interfaz FTI con C# Tercera práctica Jose Domingo López López josed.lopez1@alu.uclm.es Raúl

Más detalles

Refactoring: otra práctica de la Programación extrema

Refactoring: otra práctica de la Programación extrema Hackers & Developers Magazine Año 0, Número 6 31 Refactoring: otra práctica de la Programación extrema EXTREME PROGRAMMING En ediciones anteriores estuvimos hablando de TDD, sus beneficios y forma de implementarlo.

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

Android avanzado. Sesión 6: Depuración y pruebas. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Android avanzado. Sesión 6: Depuración y pruebas. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles Android avanzado Sesión 6: Depuración y pruebas 2012-2013 Depto. Ciencia de la Computación e IA Puntos a tratar Conectar un dispositivo Hardware Depuración con Eclipse Log y LogCat Dalvik Debug Monitor

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 Introducción Java es un lenguaje basado en la programación orientada a objetos (POO), este tipo de programación va más allá del tipo de programación

Más detalles

SIL SERVICIO INTERMEDIACIÓN LABORAL. Guía de Iniciación a la búsqueda de empleo por Internet

SIL SERVICIO INTERMEDIACIÓN LABORAL. Guía de Iniciación a la búsqueda de empleo por Internet SIL SERVICIO DE Guía de Iniciación a la búsqueda de empleo por Internet Índice PÁGINAS Correo Electrónico... 2 Crear una cuenta de correo...2 Abrir y leer correo... 4 Escribir y enviar correo... 6 Enviar

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 3 Clases y Objetos Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Clases y

Más detalles

15. Parámetros o argumentos

15. Parámetros o argumentos Programación orientada a objetos con Java 161 15. Parámetros o argumentos Objetivos: a) Profundizar en el concepto de parámetro de una clase e indicar su mecanismo de funcionamiento. b) Interpretar el

Más detalles

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

TEMA 3: EL LENGUAJE C: PRESENTACIÓN TEMA 3: EL LENGUAJE C: PRESENTACIÓN Historia del lenguaje C Características del lenguaje C Estructura de un programa en C El editor de textos: elementos Funciones: de usuario y de librería Librerías de

Más detalles

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

Introducción - por qué usarlas?(1) Excepciones en Java Introducción - por qué usarlas?(1) En el mundo de la programación hay algo que siempre ocurre: los errores en los programas. Pero qué sucede realmente después de que ha ocurrido el

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

Tema 5 Sentencias de control de flujo. Fundamentos de Informática Tema 5 Fundamentos de Informática Sentencias de Control Tipos de sentencias de control: Comprobación lógica para bifurcar el flujo de un programa. Sentencias de control condicional o alternativo Comprobación

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

Proyecto de ISIII. Pruebas Extra. Pruebas de Caja Blanca

Proyecto de ISIII. Pruebas Extra. Pruebas de Caja Blanca Proyecto de ISIII. Pruebas Extra Pruebas de Caja Blanca InfoMedia 27 de mayo de 2009 Índice Historial... 3 División del método en nodos... 4 Diagrama de Flujo de Control del método... 6 Diseño y realización

Más detalles

Pruebas unitarias. Índice de contenido. Características de una buena prueba unitaria. Curso.NET con C#

Pruebas unitarias. Índice de contenido. Características de una buena prueba unitaria. Curso.NET con C# Pruebas unitarias Índice de contenido Características de una buena prueba unitaria...1 Beneficios de las pruebas unitarias...2 Mitos de las pruebas unitarias...3 Prueba de método...4 Métodos de inicialización...10

Más detalles

De los casos de uso a los casos de prueba. Caso práctico. Aplicación web Javier Gutiérrez / javierj@us.es

De los casos de uso a los casos de prueba. Caso práctico. Aplicación web Javier Gutiérrez / javierj@us.es De los casos de uso a los casos de prueba Caso práctico. Aplicación web Javier Gutiérrez / javierj@us.es Objetivo Objetivo: Mostrar cómo aplicar el proceso ETUC para la generación de casos de prueba a

Más detalles

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 1. Introducción Este documento

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

También añado a la clase Libro los siguientes métodos: (que programaré más adelante) 1.Creación de la capa de negocios La capa del Dominio de Negocios consta de una clase creada a partir de la tabla Libro a la que le he añadido los atributos no persistentes: CodPais, artic y digcontrol.

Más detalles

Cualquier lenguaje de contexto libre, L, puede ser generado por medio de una GCL, G, que cumpla las siguientes condiciones:

Cualquier lenguaje de contexto libre, L, puede ser generado por medio de una GCL, G, que cumpla las siguientes condiciones: Teoría de Autómatas y Lenguajes Formales Boletín de Autoevaluación 5: Cómo se simplifica una Gramática de Contexto Libre?. 1. Objetivos. El objetivo de este boletín es ilustrar cómo proceder para simplificar

Más detalles

Introducción al lenguaje de especificación JML

Introducción al lenguaje de especificación JML Introducción al lenguaje de especificación JML Elena Hernández Pereira Óscar Fontenla Romero Tecnología de la Programación Octubre 2006 Departamento de Computación Facultad de Informática Universidad de

Más detalles

Experto Universitario Java Enterprise Spring

Experto Universitario Java Enterprise Spring Spring Sesión 6: Acceso remoto. Pruebas Indice Spring para acceso remoto Spring vs. EJB Comparación de los protocolos disponibles Acceso remoto con HttpInvoker Pruebas Acceso remoto. Pruebas 2012-2013

Más detalles

www.infoplc.net AUTOMATIONWORX GUÍA RÁPIDA ILC 150 ETH HMI

www.infoplc.net AUTOMATIONWORX GUÍA RÁPIDA ILC 150 ETH HMI www.infoplc.net AUTOMATIONWORX GUÍA RÁPIDA ILC 150 ETH HMI En esta guía veremos cómo implementar una comunicación entre un panel de operador OT 4M o BT05AM a través de Modbus TCP y el autómata ILC 150

Más detalles

Introducción al Proceso de Pruebas.

Introducción al Proceso de Pruebas. Introducción al Proceso de Pruebas. Javier Gutiérrez / javierj@us.es Introducción al proceso de pruebas Objetivo: repasar las ideas principales sobre las pruebas del software y, en concreto, las que usaremos

Más detalles

Introducción a la Programación en MATLAB

Introducción a la Programación en MATLAB Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión.m. Estos archivos son simple archivos

Más detalles

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando

Más detalles

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración:

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración: Caso Práctico: Diffie-Hellman sobre socket de C# Este caso práctico se abordará en el ámbito de aplicaciones cliente/servidor; programación con Socket. Se aplicará el lenguaje C#, el.net Framework 3.5

Más detalles

Cada capítulo o lección se divide normalmente en tres apartados :

Cada capítulo o lección se divide normalmente en tres apartados : Manual de iniciación Este manual pretende ayudar a los usuarios nuevos a dar los primeros pasos con el programa, así como a los que no sean usuarios a hacerse una idea de la forma de trabajo y la potencialidad

Más detalles

VECTORES EN EL ESPACIO. 1. Determina el valor de t para que los vectores de coordenadas sean linealmente dependientes.

VECTORES EN EL ESPACIO. 1. Determina el valor de t para que los vectores de coordenadas sean linealmente dependientes. VECTORES EN EL ESPACIO. Determina el valor de t para que los vectores de coordenadas (,, t), 0, t, t) y(, 2, t) sean linealmente dependientes. Si son linealmente dependientes, uno de ellos, se podrá expresar

Más detalles

Creación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!)

Creación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!) Creación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!) por Rodrigo Martínez Gazoni La idea de este tutorial es meternos en una de los servicios que ofrece Google en forma

Más detalles

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista:

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista: Tipos Abstractos de Datos: TAD Lista en educación Profesional 1.- Introducción Los tipos abstractos de datos son fundamentales para la informática puesto que de ellos se sirven todos los programas para

Más detalles

Prácticas de Programación

Prácticas de Programación Prácticas de Programación Tema 1. Introducción al análisis y diseño de programas Tema 2. Clases y objetos Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los tipos de datos Tema 6. Modularidad

Más detalles

Práctica 1 El juego de los chinos

Práctica 1 El juego de los chinos Práctica 1 El juego de los chinos Fecha de entrega: 6 de diciembre Según una teoría, el conocido como juego de los chinos nació en el año 1787 en un pequeño pueblo de León. Felipe Valdeón Triguero, un

Más detalles

Resumen de clase Ejemplos creacionales. Ideas de Diseño sobre ejercicios anteriores

Resumen de clase Ejemplos creacionales. Ideas de Diseño sobre ejercicios anteriores Resumen de clase Ejemplos creacionales Ideas de Diseño sobre ejercicios anteriores 1 cuatrimestre 2009 Contenido EJEMPLO CLIENTES DE UNA TARJETA DE CRÉDITO: ENUNCIADO...3 SOBRE EL DOMINIO...3 SOLUCIÓN

Más detalles

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,

Más detalles

Ahorcado online multijugador

Ahorcado online multijugador Ahorcado online multijugador Objetivo Que el alumno ponga en práctica los conocimientos teóricos y prácticos adquiridos en la Parte II de la asignatura de Programación Concurrente. La práctica podrá realizarse

Más detalles

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador). CAPÍTULO 4 Requerimientos de software Este capítulo presenta las herramientas necesarias para la construcción y ejecución de programas en el lenguaje de programación JAVA, los requerimientos mínimos de

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Operadores y Expresiones PRÁCTICA NÚM. [ 3 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0

Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 PROYECTO DE ESTRUCTURA REPETITIVA DO WHILE A c o n t i n u a c i ó n r e

Más detalles

Caso práctico Alquiler de películas en un vídeo-club

Caso práctico Alquiler de películas en un vídeo-club Caso práctico Alquiler de películas en un vídeo-club Adaptado de Refactoring Martin Fowler, 2000 Supongamos que tenemos que desarrollar una aplicación que gestione los alquileres de DVDs en un vídeo-club.

Más detalles

Programación estructurada

Programación estructurada 3. Funciones Programación estructurada Cuando un programa crece: Es importante mantenerlo ordenado No repetir código Agrupar el código según su función Dar nombre a las operaciones comunes var cantidad

Más detalles

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.

Más detalles

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES

JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES JUNIT MATERIAL ELABORADO POR: RUBBY CASALLAS/JUAN PABLO QUIROGA/GLORIA CORTÉS DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DE LOS ANDES 1 Objetivo del caso JUnit 2 Poder utilizar JUnit para realizar

Más detalles

Introducción a los Tipos Abstractos de Datos

Introducción a los Tipos Abstractos de Datos Página 1 de 8 Introducción a los Tipos Abstractos de Datos Introducción: Concepto de abstracción Abstracción funcional y abstracción de datos Construcción de tipos abstractos de datos Especificación de

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

ALGORITMICA Y PROGRAMACION POR OBJETOS I

ALGORITMICA Y PROGRAMACION POR OBJETOS I ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 2 Definiendo situaciones y manejando casos Marcela Hernández Hoyos Qué vamos a aprender en este nivel: Diferencia entre clase y objeto Modelar características

Más detalles

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

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

Metodología y Tecnología de la Programación

Metodología y Tecnología de la Programación Metodología y Tecnología de la Programación Curso 2008/09 Tema 7 Tipos de Datos Abstractos Temario 7.1 Concepto de Tipo de Datos Abstracto 7.2 Clasificación de Tipos de Datos Abstractos 7.3 Especificación

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

Trabajo Práctico N 4: Diseño por Contratos

Trabajo Práctico N 4: Diseño por Contratos 1. Defina los contratos de las siguientes clases: Trabajo Práctico N 4: Diseño por Contratos a. La clase Fecha representa una fecha en el formato dia, mes y año. Especificar los contratos para asegurar

Más detalles

JavaScript toma su sintaxis de los lenguajes de programación más conocidos, fundamentalmente C/C++, aunque también algo de Pascal.

JavaScript toma su sintaxis de los lenguajes de programación más conocidos, fundamentalmente C/C++, aunque también algo de Pascal. 1 JavaScript 1.1 Qué es JavaScript? JavaScript es un lenguaje interpretado. Es idóneo para trabajar en Web, ya que son los navegadores que utilizamos los que interpretan (y por tanto ejecutan) los programas

Más detalles

Introducción al lenguaje Java

Introducción al lenguaje Java Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno

Más detalles

Tema 5: Abstracción. Índice

Tema 5: Abstracción. Índice Índice 1 Generalización de funciones... 2 1.1 Ejemplo 1...2 1.2 Ejemplo 2...3 1.3 Ejemplo 3...3 2 Barreras de abstracción... 4 3 Referencias...9 En el primer tema de la asignatura vimos que una de las

Más detalles

Creando una webquests

Creando una webquests Creando una webquests 1. LO PRIMERO EL PROGRAMA Para crear paginas web necesitamos el software apropiado. Hay muchas formas y programas para hacerlo, pero por su facilidad de uso y por ser software libre

Más detalles

Euclides extendido y Test de primalidad probabiĺıstico

Euclides extendido y Test de primalidad probabiĺıstico Euclides extendido y Test de primalidad probabiĺıstico Taller de Álgebra I Verano de 2014 Lema de Bézout Recordemos este lema: Lema (Étienne Bézout) Sean a, b Z, alguno distinto de 0. Entonces existen

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

Programación Orientada a Objetos en JAVA

Programación Orientada a Objetos en JAVA Programación Orientada a Objetos en JAVA Jorge Pérez Introducción a la Computación Jorge Pérez Programación Orientada a Objetos en JAVA 1 / 36 Orientación a Objetos OO es un paradigma de modelación y programación

Más detalles

Blogger: herramienta de creación y gestión de blogs

Blogger: herramienta de creación y gestión de blogs Blogger: herramienta de creación y gestión de blogs Objetivo de aprendizaje Las personas participantes serán capaces de crear y gestionar un blog con Blogger. Existen numerosos servicios gratuitos para

Más detalles

gcc = (GNU C compiler). gdb = (GNU DeBugger).

gcc = (GNU C compiler). gdb = (GNU DeBugger). Capítulo 4b.- El debugador. Aunque un programa este sintácticamente bien escrito, es decir, el compilar lo comprende y es capaz de construir un binario a partir de él, puede ocurrir que el código no funcione

Más detalles

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO 1.- Objetivos del laboratorio Diseño de clases en C++ Comprensión y uso del TAD Árbol Binario de Búsqueda

Más detalles

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 1. LOS NÚMEROS ENTEROS. UNIDAD 1. LOS NÚMEROS ENTEROS. Al final deberás haber aprendido... Interpretar y expresar números enteros. Representar números enteros en la recta numérica. Comparar y ordenar números enteros. Realizar

Más detalles

Fundamentos de la Programación Orientada a Objetos Definición de Clases

Fundamentos de la Programación Orientada a Objetos Definición de Clases Fundamentos de la Programación Orientada a Objetos Definición de Clases Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense

Más detalles