Práctica 3. Búsqueda
|
|
- María Antonia Carmona Flores
- hace 6 años
- Vistas:
Transcripción
1 Práctica 3 Búsqueda
2 Vamos a continuar viendo algoritmos de búsqueda en grafos. En esta práctica nos centraremos en algoritmos de búsqueda informada. 1 Heurístico Ya hemos visto en teoría que este tipo de algoritmos necesitan lo que se conoce como función heurística. Esta función debe ser una estimación del coste que supone ir de un nodo cualquiera al nodo objetivo. Pensando en el problema de las ciudades, una buena función heurística sería la distancia que hay en línea recta desde cada ciudad a la ciudad objetivo (ese ha sido precisamente el heurístico utilizado). Trabajo: En la práctica anterior adaptaste el fichero CiudadesCompleto.java para resolver el problema de las ciudades en Rumanía. En aquel momento pusiste como heurístico 0 para todas las ciudades. Modifica, ahora, el valor del heurístico para adaptarlo a lo comentado en el párrafo anterior. 2 A* y primero el mejor Podemos ahora llamar a los algoritmos de búsqueda informada implementados en la librería busqueda.jar (actualmente, esta librería tiene implementados los algoritmos A* y primero el mejor). Para ello debemos añadir el siguiente código: System.out.println(" "); inicio = System.currentTimeMillis(); sol = PrimeroElMejor.Resuelve(a,"ciudades_primero_el_mejor.xml"); fin = System.currentTimeMillis(); System.out.println("Una solución por Primero el Mejor: "+sol); System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +" segundos"); System.out.println(" "); inicio = System.currentTimeMillis(); sol = AEstrella.Resuelve(a,"ciudades_aestrella.xml"); fin = System.currentTimeMillis(); System.out.println("Una solución por A*: "+sol); System.out.println("Y ha tardado: "+ ((fin-inicio)/1000.0) +" segundos"); System.out.println("Numero de pasos para la solución: "+sol.size()); Este código ejecuta ambos algoritmos ofreciendo, al finalizar, el camino propuesto por cada uno y el tiempo que han empleado para su cálculo. Ahora ya podemos compilar y ejecutar: javac classpath busqueda.jar CiudadesCompleto.java java classpath busqueda.jar;. CiudadesCompleto Trabajo: Utiliza estos dos algoritmos para resolver los dos problemas de las ciudades planteados Obtienen mejores caminos? Son más rápidos? Visualiza las trazas. Puedes Hacer lo mismo con el fichero CiudadesCompleto.java original (ya tenía un heurístico para el problema original) 3 NPuzzle Vamos a trabajar ahora con el famoso 8-puzzle. Ya sabéis que el 8-puzzle es un juego en el que hay 9 casillas y 8 fichas. El objetivo del juego es pasar de un estado inicial de las fichas a uno final mediante sucesivos movimientos de las diferentes fichas hacia la casilla vacía.
3 Imaginemos los siguientes estados inicial y final. Qué movimientos son necesarios para llegar alcanzar el objetivo? Estado Inicial Estado Final Para solucionar este problema podemos utilizar los algoritmos de búsqueda incluidos en la librería busqueda.jar. Para ello necesitamos definir la clase NPuzzle. Esta clase podemos descargarla del siguiente enlace: Código Para codificar este problema necesitamos cuatro campos: private int[][] puzzle; static private int[][]obje; private int fi; private int co; puzzle indica la situación del puzzle en el estado actual, obje la situación de las piezas en el objetivo y los campos fi y co se utilizan para almacenar la posición en la que no hay pieza. Se necesitan dos constructores: uno para instanciar el problema y otro para ir generando los nodos sucesores: public NPuzzle(int[][] matriz, int[][] obj){ puzzle = matriz; obje = obj; nombre = new String("N-Puzzle"); prof=0; for (int i=0; i < matriz.length; ++i){ for (int j=0; j < matriz[i].length; ++j){ if (matriz[i][j]==0){ fi = i; co = j; private NPuzzle (int[][] matriz, int p, int f, int c){ puzzle = matriz; prof = p; fi = f; co = c; Para saber si un nodo es objetivo, lo único que hay que hacer es ver si puzzle y obje tienen las piezas dispuestas de la misma manera: public boolean EsObjetivo(){ if (obje.length!=puzzle.length) return false; for (int i=0; i < obje.length; ++i) for (int j=0; j < obje[i].length; ++j) if (obje[i][j]!= puzzle[i][j]) return false; return true;
4 Para generar nodos sucesores, debemos crear una LinkedList de InfNodos. Un InfNodo contiene el nodo sucesor, el coste para ir del nodo actual al sucesor y un texto descriptivo de la acción. En el NPuzzle debemos controlar la posición sin ficha para saber qué sucesores tiene el nodo actual: public LinkedList<InfNodo> Sucesores(){ LinkedList<InfNodo> succ = new LinkedList<InfNodo>(); if((fi+1)<puzzle.length){ copia[fi][co] = copia[fi+1][co]; copia[fi+1][co] = 0; NPuzzle t = new NPuzzle(copia,prof+1,fi+1,co); + copia[fi][co] +" hacia arriba"))); if((co+1)<puzzle[0].length){ copia[fi][co] = copia[fi][co+1]; copia[fi][co+1] = 0; NPuzzle t = new NPuzzle(copia,prof+1,fi,co+1); + copia[fi][co] + " hacia izquierda"))); if((fi-1)>=0){ copia[fi][co] = copia[fi-1][co]; copia[fi-1][co] = 0; NPuzzle t = new NPuzzle(copia,prof+1,fi-1,co); + copia[fi][co] + " hacia abajo"))); if((co-1)>=0){ copia[fi][co] = copia[fi][co-1]; copia[fi][co-1] = 0; NPuzzle t = new NPuzzle(copia,prof+1,fi,co-1); + copia[fi][co] + " hacia derecha"))); return succ;
5 El heurístico utilizado para este problema es la suma de los movimientos de todas las piezas para alcanzar sus posiciones objetivo, conocida como la distancia Manhattan: public double Heuristico(){ // Algoritmo que calcula la suma de las distancias manhattan // hasta la solucion double suma=0; { { if(obje[i][j]!=puzzle[i][j]){ //Buscamos la posición correcta para la ficha en puzzle[i][j] int i2=0, j2=0; while(i2<obje.length && (obje[i2][j2]!=puzzle[i][j])){ j2++; if (j2 >= obje[i2].length) {i2++; j2=0; //En [i2][j2] está la posición correcta suma+=math.abs(i2-i)+math.abs(j2-j); return suma; Cuando se crea una nueva clase en java que herede de java.lang.object es necesario redefinir la función equals y la función hashcode. Esta última es necesaria para optimizar las ordenaciones de objetos. Debemos implementarla de manera que retorne un mismo entero para todos los nodos que sean iguales. En este caso usamos la siguiente codificación: Nodo * * * public int hashcode(){ int suma = 0, num; { num = 0; num += puzzle[i][j] * Math.pow(10,puzzle[i].length-(j+1)); suma+=num*(i+1); return suma; Redefinimos también la función equals: public boolean equals( Object c ){ if ( c instanceof NPuzzle ){ NPuzzle n = (NPuzzle)c; if (n.puzzle.length!=puzzle.length) return false; if (n.puzzle[i][j]!=puzzle[i][j]) return false; return true; return false;
6 Implementamos, también, la función Información. En este caso, la información que mostramos de cada nodo es la situación de las piezas en el nodo actual y la situación de las piezas que se quiere alcanzar, es decir, el nodo objetivo. public String Informacion(){ String retorno = new String(); { retorno= retorno + new String(puzzle[i][j]+" "); retorno = retorno + new String(" "); for (int j=0; j < obje[i].length; ++j) retorno= retorno + new String(obje[i][j]+" "); if(i!=(puzzle.length-1)) retorno= retorno + System.getProperty("line.separator"); return retorno; Y con esto ya tenemos definido todo lo necesario para solucionar el problema del 8-puzzle. Ahora ya podemos compilar y ejecutar: javac classpath busqueda.jar NPuzzle.java java classpath busqueda.jar;. NPuzzle Trabajo: Observa el tiempo que tarda en finalizar cada algoritmo Tardan menos los de búsqueda informada? Obtienen todos los algoritmos la misma solución? Visualiza las diferentes trazas para comprender el funcionamiento de los algoritmos. Cambia los estados inicial y final. 3.2 Cambiando la función heurística y la dimensión Hay, al menos, dos heurísticos tradicionales para el problema del NPuzzle. Uno es la suma de los movimientos de todas las piezas para alcanzar sus posiciones objetivo (distancia Manhattan) y el otro cuenta el número de piezas descolocadas respecto a su posición en el objetivo. Trabajo: Implementa el segundo heurístico y compara los tiempos de los algoritmos informados con ambos heurísticos. Qué heurístico ofrece mejores soluciones? Hasta ahora hemos trabajado en el problema del NPuzzle tratando de solucionar únicamente el problema del 8-puzzle. Sin embargo, si nos fijamos en la implementación, parece que no hay limitación en cuanto a la dimensión del puzzle. Te sientes capaz de adaptarlo para que resuelva el problema del 15-puzzle? Estado Inicial Estado Final Trabajo: Inténtalo! Los cambios que hay que hacer son mínimos. Únicamente tienes que modificar el programa principal
7 4 Otros Problemas Este problema consiste en colocar n reinas en un tablero de dimensión n por n sin que se ataquen entre ellas. Cómo plantearías la solución del problema de las NReinas? Piensa en ello.
Práctica 2. Búsqueda I
Práctica 2 Búsqueda I En esta práctica vamos a ver algunos algoritmos de búsqueda en grafos. Para ello vamos a utilizar una aplicación que nos permite programar diferentes problemas que pueden solucionarse
ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º
2. Ejercicio (3 puntos) Clases necesarias public class Empresa { LinkedList empleadospornss; LinkedListItr itrempleadospornss; public class RepartoAsignado { private String nssempleado; private String
Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño
Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos
Entiendo los métodos de Java equals y hashcode
Todos los días cuando programamos usamos objetos y en muchas ocasiones necesitamos comparar unos con otros. Para ello en muchas ocasiones usamos los métodos de de Java equals y hashcode. Estos métodos
HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.
HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la
Examen Teórico. Convocatoria de Febrero de 2015
Examen Teórico Convocatoria de Febrero de 2015 Nombre: DNI: Grupo: 1. Contesta de forma razonada a las siguientes cuestiones relacionadas con los ficheros.jar: a) Para qué se utilizan los ficheros con
Práctica 5c. Práctica 5c. José M. Ordax
Práctica 5c José M. Ordax chemi@javahispano.org 1 Copyright 2004 Arancha Ocaña Díaz-Ufano Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano
Tema 1. Herencia y Polimorfismo
ÍNDICE EDA. Unidad didáctica I: Conceptos de Java para Estructuras de Datos Tema 1. Herencia y Polimorfismo 1. Relaciones entre clases: Reutilización del software. 2. La Herencia como soporte Java del
ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:
Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz
Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos
Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de
Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.
Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está
PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar
Soluciones. boolean pruebaiteraseriegeometrica () { Serie s= new SerieGeometrica (1, 2); return (s.iterator() instanceof IteraSerieGeometrica); }
dit UPM Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Laboratorio de Programación 19 de Junio de 2002 Soluciones EJERCICIO 1 (UNA PÁGINA: UNA HOJA POR
Examen Teórico Convocatoria de Junio de 2012
Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica
SOBREESCRIBIR MÉTODOS EN JAVA: TOSTRING, EQUALS. EJEMPLOS Y EJERCICIOS RESUELTOS. COMPARAR OBJETOS. (CU00694B)
APRENDERAPROGRAMAR.COM SOBREESCRIBIR MÉTODOS EN JAVA: TOSTRING, EQUALS. EJEMPLOS Y EJERCICIOS RESUELTOS. COMPARAR OBJETOS. (CU00694B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero
Programación orientada a objetos
Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!
TEMA 5. Agenda. Herencia
TEMA 5 Herencia V1.3 Manuel Pereira González Agenda Implementación Métodos Heredados vs Sobreescritos La Clase Object Resumen 1 Introducción Herencia Una clase (subclase ó clase hija) hereda la estructura
Ejercicio 1 (proyecto prlistas, paquete listas)
PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.
Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Leonardo DaVinci. Piccasso La Tempestad. Mona Lisa
1. Ejercicio (3,5 puntos) a) Complentar la especificación public class Galeria { LinkedList cuadrosportitulo; LinkedList cuadrosporautor; LinkedListItr itrcuadrosportitulo; LinkedListItr itrcuadrosporautor;
FACULTAD DE INGENIERÍA
NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Estructuras de decisión PRÁCTICA NÚM. [ 5 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje
PROGRAMACIÓN GENÉRICA
PROGRAMACIÓN GENÉRICA Lenguajes de Programación - Orientación a Objetos: Progr. Genérica 1 Programación genérica Objetivo: escribir algoritmos genéricos, independientes de las clases concretas de los datos
ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:
Nombre y apellidos: Nota: NOTA FINAL: Nota Practica (1 punto) + Nota Examen (9 punto) Es indispensable aprobar el examen (4,5 puntos) para aprobar la asignatura (5 puntos) La práctica es opcional Duración:
PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica
INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C)
APRENDERAPROGRAMAR.COM INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C) Sección: Cursos Categoría: Lenguaje de programación
Soluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2005 1) Escribir una clase con un atributo privado que sea un array de
Introducción y conceptos de POO
Fernández Universidad Autónoma de Madrid 20 de febrero de 2009 Introducción Introducción En qué consiste la Programación Orientada a Objetos? Vocabulario básico Ejemplo sencillo En qué consiste la POO?
Colas Implementación con gestión estática de memoria
Colas Implementación con gestión estática de memoria Esquema general 0 1 2 3 n - 1... _primero = 0 _ultimo = 0 Esquema general * Añadir un elemento a la cola. 0 1 2 3 n - 1 'a'... 1) _vector[_ultimo] =
ALGORITMICA Y PROGRAMACION POR OBJETOS I
ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 1 Problemas, Soluciones y Programas Marcela Hernández Hoyos Solucionar un Problema = Construir un Programa Problema Programador Herramientas y Lenguajes Análisis
Examen de Programación II (Ingeniería Informática)
Examen de Programación II (Ingeniería Informática) Septiembre 2010 1) Lenguaje C (2 puntos) Escribir el módulo "elimina_substring" (ficheros elimina_substring.h y elimina_substring.c) que defina una única
Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática)
Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática) Primera parte (50% nota del examen) Septiembre 2009 1) Se desea hacer un método con la cabecera que se muestra abajo que cree y retorne
Prueba N o 1. Programación II
UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.
Programación Orientada a Objetos Curso 2014/2015. Práctica 11
Objetivos formativos Previo Programación Orientada a Objetos Curso 2014/2015 Práctica 11 - Nuevas características de Java 8: expresiones lambda, interfaces funcionales, streams. - Crea el paquete practica11
Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
Bloque II. Elementos del lenguaje de programación Java
Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida
Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones
Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Java Básico. Métodos estáticos
Java Básico Métodos estáticos Agregando métodos estáticos En un programa es deseable separar los algoritmos y asignarles un nombre. Cada algoritmo separado será llamado método. Cuando no necesitamos crear
Introducción: una simple colección
Introducción: una simple colección Implemente una clase denominada Lista. La clase deberá mantener una colección de números y proveer los siguientes i métodos: Listas dinámicas simplemente enlazadas Franco
Métodos CON valor de retorno
Métodos Estáticos C# Fundamentos de Programación. Objetivos del tema: Qué es un método? Qué métodos conoces? Métodos que NO devuelven valor. Métodos que SI devuelven un valor. Paso de parámetros. Variables
FUNDAMENTOS DE INFORMÁTICA
ÁREA DE LENGUAJES Y SISTEMAS INFORMÁTICOS DEPARTAMENTO DE INFORMÁTICA E INGENIERÍA DE SISTEMAS ESCUELA DE INGENIERÍA Y ARQUITECTURA FUNDAMENTOS DE INFORMÁTICA 1ª CONVOCATORIA (16-junio-2011) Ejercicio
Diseño de tipos Igualdad, representación, código, copia y relación de orden
Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones
ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º
1. Ejercicio (1 puntos) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 (a) Escribir la secuencia de ordenación del array A por medio del algoritmo de InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8, 7, 1,
ANEXO II: Resumen de uso de colecciones
ANEXO II: Resumen de uso de colecciones Este apartado muestra un resumen de uso de las colecciones. El estudio de las colecciones será completado en el tema 4 de la asignatura y en el ejercicio propuesto
FACULTAD DE INGENIERÍA
NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Herencia PRÁCTICA NÚM. [ 4 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje de Programación
UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación
UNADM Estructura de datos Actividad 2. Identificación de errores en métodos de ordenación Guillermo Duran Garcia AL12524075 Actividad 2. Identificación de errores en métodos de ordenación. La siguiente
CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE
CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE 1 Estructura de Datos 1. Logica de Programación 2. Uso de Algoritmos usando Lenguaje Java 3. Ingreso de datos 4. Sentencias de Control 1.
Sesión 7. TEMA 9 Extensión de clases: HERENCIA
Sesión 7. TEMA 9 Extensión de clases: HERENCIA Fundamentos de Informática José Jaime Noguera Noguera 6 de mayo de 2018 Contenidos 1 Introducción 2 Ejemplo 3 Código 4 Cuestiones 5 Tareas Temario Este es
Introducción. Introducción y conceptos de POO. En qué consiste la POO? Vocabulario. Definiciones
Introducción Fernández Universidad Autónoma de Madrid 20 de febrero de 2009 Introducción En qué consiste la Programación Orientada a Objetos? Vocabulario básico Ejemplo sencillo En qué consiste la POO?
Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016
Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Interfaces. Clase Object. Autoboxing. Copia de objetos. Igualdad
Soluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2004 1) Se desea crear una clase para hacer cálculos sobre el movimiento
Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016
Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Clase Object. Autoboxing. Igualdad de objetos. Copia de objetos.
Estructura de Datos Unidad 1: Repaso del Lenguaje Java
Estructura de Datos Unidad 1: Repaso del Lenguaje Java Introducción Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de 1991, con el que se van a
Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011
Tema 6 Patrones de Diseño Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción a los patrones de diseño. Patrón del Método plantilla. Patrón Composición. Patrón Estrategia. Clases anónimas
Examen Teórico. Convocatoria de Febrero de 2018
Examen Teórico Convocatoria de Febrero de 2018 Nombre: DNI: Grupo: 1. Dado un proyecto Java en Eclipse que tiene como clase principal proyecto.programa y requiere de la librería matemática de Apache commons-math.jar,
Caso de Estudio: TDA Racional
Un tipo de dato es un modelo matemático que especifica un conjunto de valores y un conjunto de operaciones sobre esos valores. El encapsulamiento es un mecanismo que permite dividir los programas en módulos
ARREGLOS CLASE VECTOR. Ing. Marina Cipolletti
ARREGLOS CLASE VECTOR Ing. Marina Cipolletti QUÉ ES UN ARREGLO? Es una estructura de datos. Almacena datos del mismo tipo en forma indexada. El tamaño se declara en un primer momento y no cambia en tiempo
INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C)
APRENDERAPROGRAMAR.COM INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C) Sección: Cursos Categoría: Lenguaje de programación Java nivel
Diseño y Programación Orientados a Objetos 29 de Abril de Primer Certamen
Primer Certamen Primera parte, sin apuntes (30 minutos; 1/3 de la nota): 1.- Responda brevemente y entregue en hoja con su nombre. a. Al redefinir un método en una subclase, es posible retornar un objeto
2ª Parte: Problemas (5 puntos sobre 10)
NOMBRE: APELLIDOS: NIA: GRUPO: 2ª Parte: Problemas (5 puntos sobre 10) Duración: 1 hora 45 minutos Puntuación máxima: 5 puntos Fecha: 17 de Junio de 2013 PROBLEMA 1 (3 puntos) El sistema de gestión de
Fundamentos de Programación
Fundamentos de Programación Arrays 18.10.2010 José A. Mañas Dpto. de Ingeniería de Sistemas Telemáticos http://www.dit.upm.es/~pepe/doc/fprg/ Arrays Cuando tenemos N datos del mismo
Examen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 31 de agosto de 2012 Disponer sobre la mesa en lugar visible un documento de identificación
TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE
MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE Los modificadores de acceso, como su nombre indica, determinan desde qué clases se puede acceder a un determinado elemento. En Java tenemos 4 tipos:
(b) Cuál es la desventaja principal de una heurística con aprendizaje? es más informada que otra función heurística optimista h 2 *?
UNIVERIDD REY JUN CRLO CURO 0-0 INTELIGENCI RTIFICIL Hoja de Problemas Tema Ejercicio : Conteste a las siguientes preguntas: (a) Cómo funciona una heurística con aprendizaje? olución: Una heurística con
GRAFOS. Tomado de: Joyanes Aguilar Luis, Estructuras de datos en Java. CASOS
GRAFOS Tomado de: Joyanes Aguilar Luis, Estructuras de datos en Java. CASOS 1.4 El recorrido del cartero Imaginemos un grafo que representa el mapa de las calles de un barrio. Una calle va de una esquina
IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++
IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++ Fichero nodo.h #ifndef NODO_H #define NODO_H const int cantidad_nodos = 10; class Nodo private: string dato; Nodo* siguiente; public: Nodo(); void setdato(string
Pilas Motivación
Capítulo 4 Pilas Las pilas son estructuras muy sencillas y poderosas, también conocidas como LIFO (last in, first out) por la forma en que se trabaja con ellas. Ejemplo de ellas son las pilas de charolas
UNIVERSIDAD MAYOR DE SAN SIMÓN FACULTAD DE CIENCIAS Y TECNOLOGÍA INGENIERÍA DE SISTEMAS BÚSQUEDA PRIMERO EL MEJOR
UNIVERSIDAD MAYOR DE SAN SIMÓN FACULTAD DE CIENCIAS Y TECNOLOGÍA INGENIERÍA DE SISTEMAS BÚSQUEDA PRIMERO EL MEJOR INTEGRANTES: Caricari Cala Aquilardo Villarroel Fernandez Fructuoso DOCENTE: Lic. Garcia
Bloque II. Elementos del lenguaje de programación Java
Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida
Examen Teórico. Convocatoria de Julio de 2015
Examen Teórico Convocatoria de Julio de 2015 Nombre: DNI: Grupo: 1. Sobre la ejecución de aplicaciones Java desde la línea de comandos: a) Explica el significado y uso del parámetro cp. b) Indica si la
Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez
Introducción a Java Dr. (c) Noé Alejandro Castro Sánchez Programas Java Applets Pueden correr en navegadores Web Agregan funcionalidad a páginas Web Se llega a restringir su funcionalidad (e. g., no pueden:
Fundamentos de Programación
Fundamentos de Programación Extensión de clases: herencia y polimorfismo 13.12.2010 José A. Mañas Dpto. de Ingeniería de Sistemas Telemá@cos hcp://www.lab.dit.upm.es/~fprg/ extensión
OBJETIVOS ÍNDICE BIBLIOGRAFÍA
OBJETIVOS Tema 9: GRAFOS Primera Parte Estructuras de Datos y Algoritmos Curso 2002/03 Definiciones formales de grafo y conceptos relacionados Estructuras de datos para representar grafos Algoritmos para
Multiplicación de matrices simétricas
Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =
ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS
ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS 2004-2005 PRACTICA 1: MEDICIÓN DEL TIEMPO. ALGORITMOS DE ORDENACIÓN Crear un conjunto de funciones que permitan la medición del tiempo de ejecución de los programas,
INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ
INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ Tema 3 Clases y Objetos Tema 4 Comunicación entre objetos. Algoritmos Tema 5 Herencia y abstracción de datos Tema 6 Diseño de clases TEMA 5: Herencia
Estructuras de Datos Clase 14 Árboles binarios de búsqueda
Estructuras de Datos Clase 14 Árboles binarios de búsqueda Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca,
PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }
PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)
Identidad, igualdad y equivalencia. Introducción a la programación orientada a objetos
Identidad, igualdad y equivalencia Introducción a la programación orientada a objetos Clases como tipos - 1 Cuando el analista o el diseñador de un sistema orientado a objetos especifica una clase, establece
Estructuras de Datos Clase 6 Listas e Iteradores (primera parte)
Estructuras de Datos Clase 6 Listas e Iteradores (primera parte) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía
Concurso: Cuánto sabes de JAVA?
Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos
16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz
168 A. García-Beltrán y J.M. Arranz 16. Herencia Objetivos: a) Definir el concepto de herencia entre clases b) Interpretar el código fuente de una aplicación Java donde aparecen clases relacionadas mediante
Clases abstractas e interfaces en Java
Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura
Examen de Programación 1. Viernes 31/enero/2014. Problema 1 o (2.5 puntos) Disponer un documento de identificación con fotografía sobre la mesa.
Examen de Programación 1. Viernes 31/enero/2014 Disponer un documento de identificación con fotografía sobre la mesa. Comenzar a resolver cada problema del examen en una hoja de papel diferente. Escribir
Programación Tema 4: Métodos. Programación DIT-UPM
Programación Tema 4: Métodos 1 Contenidos! 1. El concepto de método! 2. Definición: cabecera! 3. Definición: cuerpo! 4. Uso de métodos! 5. Métodos útiles 2 Métodos! Un método es un bloque de código con
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005
24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos
Introducción a Java - Ejercicios
Índice 1 Proyecto básico en Eclipse... 2 2 Clases abstractas y herencia... 2 3 Aprovechando los elementos de Object... 3 4 Recorrido de vectores y listas...4 5 Captura de excepciones... 5 6 (*) Lanzamiento
Fundamentos de Computadores y Lenguajes
Fundamentos de Computadores y Lenguajes 1. Elementos básicos de los lenguajes 2. Instrucciones de control 3. Tipos de datos 4. Métodos 5. Modularidad y Abstracción 6. Tratamiento de errores 7. Entrada/salida
Práctica 11d. Práctica 11d. José M. Ordax
Práctica 11d José M. Ordax chemi@javahispano.org 1 Copyright 2005 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano
Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática
Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Introducción. Conversión
1. (1 punto) Dado el siguiente fragmento de programa:
PROGRAMACIÓN I 7-junio-2004 1. (1 punto) Da el siguiente fragmento de programa: for (int i = 1; i = 0; j = j - 1) System.out.println (i + + j); a. Cuántas veces se
ArrayList en Java. Los principales métodos para trabajar con los ArrayList son los siguientes:
ArrayList en Java La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los Arrays, con la ventaja de que el número de elementos que almacena, lo hace de forma
Solución al Examen de Fundamentos de Computadores y Lenguajes
Solución al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Septiembre 2006 1) Se dispone de la siguiente clase enumerada. Escribir un método,
Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:
Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz
Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia
Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona
FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4
Trabajo Práctico Nº 4 Ejercicios Teóricos 1. Indique si las siguientes afirmaciones son verdaderas o falsas a. La programación orientada a objetos hace uso de clases y envío de mensajes entre objetos..
INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C)
APRENDERAPROGRAMAR.COM INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado
Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º
NOTA FINAL: Nota Practica (1 punto) + Nota Examen (9 punto) Es indispensable aprobar el examen (4,5 puntos) para sumar la puntuación de la práctica y para aprobar la asignatura es necesario una nota superior
Programación II Objetos en Java
Programación II Objetos en Java Definición Objeto: Conjunto de datos y métodos relacionados. Los objetos se alojan en una parte de la RAM reservada al proceso denominada memoria dinámica, y son referenciados