Colas. 5.1 Implementación
|
|
|
- Encarnación Carmona Rubio
- hace 7 años
- Vistas:
Transcripción
1 Capítulo 5 Colas Las colas al igual que las pilas son un tipo especial de listas en las cuales los elementos se insertan por un lado y se eliminan por el otro. Es decir se sacan en el mismo orden en que entraron. En ocasiones suele referirse a ellas como estructuras FIFO (first in, first out). En la vida diaria tenemos las filas en las taquillas, en el banco, en el super etc. En computación se usan mucho por ejemplo, en sistemas operativos para listar los archivos que se desean imprimir (sin matar a nadie) denominadas colas de impresión, los buffers de lectura, etc. en la teoría de gráficas, etc. 5.1 Implementación La interfaz podría ser: interface Encolable { public boolean estávacía(); public void limpiar() ; public void agregar(object dato) ; public void eliminar() ; public Object tomar(); public java.util.iterator elementos(); Donde los métodos agregar. Inserta Un nuevo elemento colocandola al final de la cola. La posición de los otros elementos no se altera. 1
2 5.1. IMPLEMENTACIÓN 2 eliminar. Elimina el elemtno que está al inicio de la cola. Si la cola está vacía se genera un error. (NoSuchElementException). tomar. Devuelve el valor del primer elemento de la cola, sin alterar el estado de ésta. Este método no altera el estado de la cola. estávacía. Permite saber si la pila está vacía. limpiar. Vacia el contenido de una pila. Una implementación usando estructuras ligadas se presenta a continuación: /** * Cola usando nodos * Programo: Amparo López Gaona * Marzo 2006 */ public class Cola implements Encolable{ protected Nodo inicio; protected Nodo fin; private final Comparator prueba; /** Construye la cola */ public Cola() { inicio = null; fin = null; prueba = new DefaultComparator(); /** Construye una cola con el comparador proporcionado. */ public Cola(Comparator c) { inicio = null; fin = null; prueba = c; /** Prueba que la cola esté vacía. true si está vacía y false en otro caso.
3 5.1. IMPLEMENTACIÓN 3 */ public boolean estávacía() { return inicio == null; /** Crea una cola vacía. */ public void limpiar() { inicio = fin = null; /** Inserta en la cola, siempre por el final dato - elemento que será insertado */ public void agregar(object dato) { if (inicio == null) inicio = fin = new Nodo(dato); else { Nodo temp = new Nodo(dato); fin.sgte = temp; fin = temp; /** Devuelve el primer elemento de la cola Object - elemento del inicio de la cola */ public Object tomar() { if (inicio == null) return null; //La cola está vacía return inicio.elemento; /** Elimina el primer elemento de la cola */ public void eliminar() { if (inicio!= null) inicio = inicio.sgte; public java.util.iterator elementos() { return new MiIterador();
4 5.2. EJEMPLO 4 // Falta el iterador y el comparador por omisión 5.2 Ejemplo En esta sección se presenta el clásico problema del consumidor productor, sólo que muy reducido. El productor produce una cantidad de productos y los deposita en una banda (cola). El consumidor consume, de la banda, alguna otra cantidad de productos, esperando hasta que en la banda haya la cantidad suficiente. Si los productores y los consumidores son independientes cómo se comunican/sincronizan entre sí?. R. vía colas. Cada vez que se produce un artículo éste se coloca en una cola sin preocuparse del momento en que será consumido ni por quién. El consumidor consume de la cola y no se preocupa ni cuándo ni por quién fue producido. El ejemplo concreto consiste en simular el trabajo en un panadería que expende cajas con tres tipos de panes: conchas, donas y cuernos. Para ello se tienen tres tipos de panaderos cada uno especializado en producir un tipo de pan. Cada pan es colocado en una cola común y del otro lado un empacador los toma para colocarlos en una caja. La cantidad de elementos que se guardan en la caja está determinada por el peso de los mismos y la capacidad máxima de las cajas. Para resolver este problema se requieren varias clases: una para los panes, otra para las cajas, otra para los panaderos, otra para los empacadores y otra más para la panadería. Un pan se simula con su peso y nombre. Los únicos métodos que tiene son un constructor y el tostring que devuelve el nombre del pan. class Pan { private final double peso; privata final String nombre; public Pan (double pp, String n) { peso = pp; nombre = n; public double peso() {return peso; public String tostring () { return nombre; La clase de las cajas tiene el peso de la caja en cada momento y una
5 5.2. EJEMPLO 5 lista en la que se guardan los panes. (Aquí podría ir cualquier estructura incluyendo arreglo dinámico). Los métodos que tiene además del constructor son uno para ir guardando los panes en la caja, otro que proporciona el peso actual de la caja y otro método para mostrar lo que se tiene en ella, para ello se utiliza el iterador de la clase Lista. class Caja { private double pesoc; private Lista panes; private int pesomaximo; // peso actual de la caja // panes // Peso maximo de la caja public Caja () { pesoc = 0; panes = new Lista(); pesomaximo = 120; public Caja (int n) { pesoc = 0; panes = new Lista(); pesomaximo = n; public void guardapan (Pan p) { panes.insertar(p); pesoc += p.peso; public double peso () { return pesoc; public double pesomax() { return pesomaximo; public String tostring () { java.util.iterator e = panes.elementos(); String resultado = "Caja con "; while (e.hasnext()) resultado = resultado + e.next()+" ";
6 5.2. EJEMPLO 6 return resultado; La clase Panadero simula el comportamiento de un panadero, para ello se requiere especificar el tipo de pan que fabrica, el tiempo que le toma hacerlo y la cola en donde dejara el pan. Aquí se introduce un nuevo concepto: el de hilos. Hasta ahora toda la programación ha sido en forma secuencial desde la primera instrucción del main hasta la última. Ahora se va a escribir una clase que puede trabajar de manera concurrente, es decir, un poco independiente del flujo del programa principal. En java esto se conoce como un hilo. 1 Este nuevo programa o proceso requiere para su ejecución un método run que es el equivalente al main, en el sentido de inicialización, para ejecución no-concurrente. class Panadero extends Thread { private Cola banda; private Pan pas; private int tiempo; public Panadero (Cola c, Pan p, int t) { banda = c; pas = p; tiempo = t; public void run () { while (true) { banda.agregar(pas); try { sleep(tiempo); catch(exception e) { //Agrega un pan a la banda //Tiempo que tarda en hacer un pan La clase Empacador también va a trabajar de manera concurrente, aquí sólo necesita una cola como estructura del objeto. En el método run se simula el 1 Un hilo es un programa que corre dentro de otro.
7 5.2. EJEMPLO 7 llenado de la caja. Aquí se tiene la instrucción synchronized que especifica que en la cola denominada banda se hará el trabajo concurrente, para no intentar sacar de ella un pan mientras algún panadero está colocando alguno. class Empacador extends Thread { private Cola banda; private final int peso; public Empacador (Cola c, int p) { banda = c; peso = p; public void run () { int contadorcajas = 0; Caja micaja = new Caja(peso); while (contadorcajas <= 0) { synchronized (banda) { if (! banda.estávacía()) { Pan p = (Pan) banda.tomar(); double pesof = micaja.peso() + p.peso(); if (pesof > micaja.pesomax()) { System.out.println(miCaja+"\n\n"); micaja = new Caja(peso); micaja.agregapan(p); La clase Panadería se encarga de poner a trabajar a los panaderos y al empacador. Para ello se crea cada objeto y luego se llama al método start que a su vez se encarga de llamar implícitamente al método run. class Panaderia { public static void main (String [ ] args) { Cola colapastas = new Cola(); Panadero p1 = new Panadero (colapastas, new Pan(10.0, "galleta"), 10); Panadero p2 = new Panadero (colapastas, new Pan(25.0, "dona"), 70); Panadero p3 = new Panadero (colapastas, new Pan(20.0, "cuerno"), 50); Panadero p4 = new Panadero (colapastas, new Pan(30.0, "concha"), 60);
8 5.2. EJEMPLO 8 Empacador c = new Empacador(colaPastas,250); p2.start(); p3.start(); p4.start(); p1.start(); c.start(); Un ejemplo de ejecución de este programa es: Caja con dona cuerno concha galleta galleta galleta galleta galleta cuerno galleta concha galleta dona galleta galleta galleta Caja con cuerno galleta concha galleta galleta dona galleta cuerno galleta galleta galleta concha galleta galleta cuerno Caja con dona galleta galleta galleta concha galleta cuerno galleta galleta galleta dona galleta galleta concha cuerno galleta Caja con galleta galleta galleta dona galleta cuerno concha galleta galleta galleta galleta cuerno galleta galleta dona concha Caja con galleta galleta galleta cuerno galleta galleta concha galleta dona galleta cuerno galleta galleta galleta galleta concha galleta Backtracking El backtrack es una técnica que consiste en permitir elegir entre varias posibilidades un camino de solución y en caso de no ser correcto regresar al punto donde se tomó la decisión. Ejemplo: Encontrar la salida en un laberinto, como el siguiente: F _S
9 5.2. EJEMPLO 9 La representación del laberinto puede realizarse mediante el siguiente código: Figura 5.1: Con ello, el programa puede hacerse general leyendo de un archivo la configuración del laberinto. El laberinto del ejemplo usando la configuración descrita queda como sigue: _ _ 4 3_ 10 9_ 5_ _ 11 Para el programa se utiliza un arreglo visitado que marca el orden en que se visitan las celdas. Este arreglo tiene dos propósitos: dar una forma de indicar si una celda ya se ha visitado y proporcionar una representación del orden en el que se realiza la búsqueda. /** * Programa que muestra la salida de un laberinto (si la hay) ALG Octubre 2006 */ public class Laberinto { private int largo; private int ancho ;
10 5.2. EJEMPLO 10 private int [][] paredes = { {14, 12, 5, 4, 6, {10, 9, 4, 3, 10, {9, 5, 2, 13, 2, {14, 14, 10, 12, 2, {9, 1, 1, 3, 11, ; private int [][] visitado; public Laberinto () { largo = 5; ancho = 5; visitado = new int[5][5]; for (int i = 0; i < ancho; i++) for (int j = 0; j < largo; j++) visitado[i][j] = 0; public Laberinto (String file) throws IOException { DataInputStream in = new DataInputStream( new FileInputStream(file)); ancho = in.readint(); largo = in.readint(); paredes = new int[ancho][largo]; visitado = new int[ancho][largo]; for (int i = 0; i < ancho; i++) for (int j = 0; j < largo; j++) { paredes[i][j] = in.readint(); visitado[i][j] = 0; private void resolverlaberinto () { Deque que = new Deque(); que.agregarúltimo(new Punto(largo-1, ancho-1)); int contvisitas = 0; while (! que.estávacía()) { Punto p = (Punto) que.tomarúltimo();
11 5.2. EJEMPLO 11 que.eliminarúltimo(); if (visitado[p.obtenerx()][p.obtenery()] == 0) { visitado[p.obtenerx()][p.obtenery()] = ++contvisitas; mostrar(); if ((p.obtenerx() == 0) && (p.obtenery() == 0)) return; // Se llegó a la meta ponvecinos(p.obtenerx(), p.obtenery(), que); try {Thread.sleep(200); catch (Exception e) { System.err.println("No hay solución"); private void ponvecinos (int x, int y, Deque que) { if ((paredes[x][y] & 1) == 0) que.agregarúltimo(new Punto(x+1, y)); if ((paredes[x][y] & 2) == 0) que.agregarúltimo(new Punto(x, y+1)); if ((paredes[x][y] & 4) == 0) que.agregarúltimo(new Punto(x-1, y)); if ((paredes[x][y] & 8) == 0) que.agregarúltimo(new Punto(x, y-1)); public void mostrar() { System.out.println("El laberinto original tiene:"); for(int i = 0; i < largo; i++){ for (int j = 0; j < ancho; j++) System.out.print(paredes[i][j]+ " "); System.out.println(); System.out.println("\nSolución:\n"); for(int i = 0; i < largo; i++){ for (int j = 0; j < ancho; j++) System.out.print(visitado[i][j]+ " "); System.out.println();
12 5.2. EJEMPLO 12 public static void main (String [ ] args) { Laberinto mundo = new Laberinto(); mundo.mostrar(); mundo.resolverlaberinto(); Se utiliza una deque para mantener las celdas que están en espera de ser investigadas. Se inicializa con la celda inicial (la esquina inferior derecha) del laberinto. Se van removiendo elementos de la deque, si es un punto que no se ha visto, se marca como vistado. Luego todos los vecions de la celada actual se coloca en la deque. El método ponervecinos busca las celdas válidas verificando si los lados de la variable paredes están abiertos. Seguimiento del programa: Si se tuviera en la deque el elemento (3,4): I-> (3,4) <-F Se saca el elemento y se introducen sus vecinos: I-> (3,3) (2,4) (4,4) <-F Al introducir los vecinos no se verifica que hayan sido visitados previamente, esto se hace al sacarlos. Siempre se saca un sólo nodo y se introducen sus vecinos. Dos pasos más adelante se tiene el siguiente contenido: I-> (4,1) (3,2) (4,3) (3,3) (2,4) (4,4) <-F
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
Estructuras de Datos Clase 4 Pilas y colas
Estructuras de Datos Clase 4 Pilas y colas 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, Argentina Tipo
Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1
Interfaces Amparo López Gaona Septiembre de 2008 Amparo López Gaona () Interfaces Septiembre de 2008 1 / 1 Interfaces Las interfaces Java permiten al diseñador de clases establecer su forma definiendo
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)
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
Práctica 11e. Práctica 11e. José M. Ordax
Práctica 11e José M. Ordax [email protected] 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
Tipos abstractos de datos (TAD)
Capítulo 2 Tipos abstractos de datos (TAD) Objetivo: Introducir al alumno las estructuras de datos mediante el concepto de tipo abstracto de datos. En este capítulo se presenta una primera implementación
Las FILAS. ING PEDRO BELTRÁN CANESSA Estructuras de Datos 1
Las FILAS Estructuras de Datos 1 LA FILA (Conceptos...) Es un contenedor que utiliza el protocolo FIFO (First In, First Out) o bien, PEPS (Primeras Entradas, Primeras Salidas) Entrada Salida Estructuras
Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN
EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio
Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez
Algoritmos y Estructuras de Datos Iteradores Guillermo Román Díez [email protected] Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción 1/26 Iteradores Es muy común
Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte)
Estructuras de Datos Clase 7 Listas e Iteradores (segunda 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
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
CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS
CLASE 10 - ESTRUCTURAS DE DATOS DINÁMICAS 1 TEMAS A VER Listas simples genéricas Pilas Colas 2 LISTA SIMPLE GENÉRICA Una lista simple genérica nos permite crear listas de diferentes objetos: enteros, char,
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
Estructuras de Datos Clase 4 Pilas y colas
Estructuras de Datos Clase 4 Pilas y colas 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, Argentina Tipo
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
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.
Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés
Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Índice general:. Modelo y Aplicación de Lista con Punto de Interés
Programación concurrente y semáforos en Java
Programación concurrente y semáforos en Java En Java es posible ejecutar tareas en paralelo, utilizando hebras de control (hilos, threads). Este modo de programación permite tener un espacio de memoria,
Programación concurrente en Java
Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en
Práctica 10a. Práctica 10a. José M. Ordax
Práctica 10a José M. Ordax [email protected] 1 Copyright 2004 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano
2. Indica cuál de las siguientes afirmaciones es cierta:
Nombre:. Indica cuál de las siguientes afirmaciones es cierta: El diseño de un programa procedural está guiado por la división en tareas a realizar, mientras que el diseño orientado a objetos está dirigido
Estructuras de control selectivas
Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos
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
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA
Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá
Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011
Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011 Ejercicio 1 (2 puntos) SOLUCIONES class TarjetaDeCredito
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA PRACTICA 8 MONITORES BASADOS EN SEMÁFOROS
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
MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar
MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un
Estructuras de Datos
8 de marzo de 2011 1 2 3 4 5 Tipo de Dato Abstracto Un tipo de dato abstracto (TDA), corresponde a un conjunto de valores y un conjunto de operaciones sobre tales valores. s de TDA Enteros. Reales. Booleanos.
Sincronización por Colas en en Java
75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2013 Facultad de Ingeniería Universidad de Buenos Aires Sincronización por Colas en en Java Interface Collection Una interface
Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).
Ejecución de hebras En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Hebras vs. Procesos Los cambios de contexto son más costosos en
Estructuras de datos en memoria principal
Estructuras de datos Estructuras de datos en memoria principal Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile [email protected] Actualización: 11
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
PROGRAMACION I Archivos directos
PROGRAMACION I Archivos directos Un archivo relativo (directo) consiste en una colección de registros de longitud fija almacenados uno al lado del otro en un dispositivo de almacenamiento de acceso directo.
18. Interfaces Declaración de una interfaz
Programación orientada a objetos con Java 191 18. Interfaces Objetivos: a) Definir el concepto de interfaz b) Interpretar el código fuente de una aplicación Java donde aparecen interfaces c) Construir
1. Leer el primer número y almacenarlo en la raíz del árbol. 2. Repetir hasta encontrar un duplicado o el árbol esté vacío.
Capítulo 6 Árboles 6.1 Introducción Esta no es una estructura lineal, deben conocerlos de matemáticas finitas. Ejemplos: la tabla de contenido de un libro, los que se hacen en los torneos, los arboles
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
Tema 7. Colas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía. {badia, bmartine,
Tema 7. Colas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía {badia, bmartine, morales}@icc.uji.es Estructuras de datos y de la información Universitat Jaume
Soluciones Ejercicios Tema 7. Cambio de Signo Pila (3/3) if (!p.esvacia()) { d i l cambiasignopila(p); this.apilar(new Integer(-dato));
Cambio de Signo Pila (1/3) Soluciones Ejercicios Tema 7 Germán Moltó Martínez [email protected] Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica
Programación M.I. Gerardo Avilés Rosas Tercer Examen Parcial
Instrucciones: Leer cuidadosamente los enunciados que componen el examen antes de empezar a resolverlos. La entrega de este examen se hará el día 08 de junio de 2018. El examen se puede resolver de forma
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:
Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7
Programación IV. Guía 7 1 Tema: Grafos en C#. Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Objetivos Específicos Definir el concepto de Grafo. A partir de una clase agregar la
Ejercicios resueltos de programación
Ejercicios resueltos de programación Mariano Fernández López Escuela Politécnica Superior, Universidad San Pablo CEU 18 de marzo de 2015 Índice general 1. Implementación de un método recursivo 2 1.1. Enunciado.............................
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
Arquitecturas cliente/servidor
Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?
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
Construcciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Tema 4- Representación Enlazada
Tema 4- Representación Enlazada Tema 4: Representación Enlazada Índice general: 1. Representación Enlazada: Variables referencia Java como enlaces. 2. Listas Enlazadas Genéricas. Operaciones y costes.
Tipos de Datos Abstractos
Tipos de Datos Abstractos Facultad de Ciencias de la Computación Juan Carlos Conde R. Object-Oriented Programming I Contenido 1 Introducción 2 Estructura tipo LIFO 3 Estructura tipo FIFO 4 LISTAS Ligadas
Introducción a los Threads Java
75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2014 Facultad de Ingeniería Universidad de Buenos Aires Introducción a los Threads Java Para crear un nuevo Thread Se extiende la clase
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,
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
Tema 6. Threads: programas multitarea
Tema 6. Threads: programas multitarea Procesos e hilos Creación de threads Ciclo de vida de un thread Sincronización Prioridades Grupos de threads Relación de métodos Ejemplo sincronización 1 Procesos
EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas
Apellidos Nombre Firma NIA Grupo EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas Pregunta 1 (0,5 puntos).- Indicar si las siguientes afirmaciones
NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS
1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para
PROGRAMACIÓN EN JAVA
SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 3: Comunicación entre tareas. Modelo productor / consumidor. Objetivos Implementar una aplicación en Java en la que existan
Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas
Programación concurrente en Java. Breve introducción Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas Concurrencia en Java Hilos de ejecución Clase Thread e interfaz Runnable Pausas Interrupciones
Si bien hay gran cantidad de excepciones, todas derivan de la clase Exception, además de las excepciones ya manejadas, se pueden crear propias.
Práctica No. 6. Manejo de Excepciones Java permite el manejo de excepciones, esto permite que cuando ocurra algún error en tiempo de ejecución, se pueda evitar que el programa finalice de manera incorrecta.
Laboratorio I Java Threads (Silberschatz Galvin)
Laboratorio I Java Threads (Silberschatz Galvin) Un proceso es un programa ejecutandose dentro de su propio espacio de direcciones. Java es un sistema multiproceso, esto significa que soporta varios procesos
PRIMER EXAMEN PARCIAL. 5 de febrero de SOLUCIONES
FUNDAMENTOS DE PROGRAMACIÓN Curso: 2012/13 PRIMER EXAMEN PARCIAL. 5 de febrero de 2013. SOLUCIONES Versión:1.0.7 EJERCICIO 1: El tipo Beca a) 0,25 puntos public enum TipoBeca { ORDINARIA, MOVILIDAD, EMPRESA
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
Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.
Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos. Con relación a la Estructura LISTA Indicar objetos reales que se puedan modelar con dicha estructura. Listas de Ordenes de visitas
INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)
APRENDERAPROGRAMAR.COM INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) Sección: Cursos Categoría: Lenguaje de programación Java
Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez
Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.
Tema 2 Tipos abstractos de datos. 2.3 Cola de números enteros.
Tema 2 Tipos abstractos de datos. 2.3 Cola de números enteros. Especificación de TAD s. TAD Cola de Enteros. Definición del TAD Cola de Enteros: Estructura de Datos que contiene una serie de elementos
Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Estructura de datos Colas
Estructura de Datos Estructura de datos Colas Temario Unidad II 2.1 Definición y operaciones 2.2 Implementación estática 2.3 Implementación dinámica 2.4 Colas de prioridad 2.5 Casos de estudio 1 Definición
Examen de prácticas de Programación 1
Examen de prácticas de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 3 de septiembre de 2014 Tiempo para realizar el trabajo de programación propuesto:
Primitivas de Sincronización
Primitivas de Sincronización JUAN CARLOS CONDE RAMÍREZ DISTRIBUTED COMPUTING Introducción Todas las soluciones previas al problema de mutex fueron un desperdicio de algún modo: Si un proceso es incapaz
Programación de sistemas Pilas y Colas
Programación de sistemas Pilas y Colas Departamento de Ingeniería Telemática 1 Contenidos Pilas (stacks) Colas (queues) Colas dobles (deques double-ended queues) 2 Pilas Estructura de datos lineal Inserción
Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros
Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros Especificación de TAD s. TAD Pila de Enteros. desapilar 2 7 3 5 apilar Cima de la Pila Cima de la Pila Definición: Estructura de Datos que
dit Programación concurrente Sincronización condicional UPM
20151028 dit UPM Programación concurrente Sincronización condicional Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons
HERENCIA. Problema: Reparar el el coche. Jesús (Valencia) Luis, Mecánico (Valencia) Antonio, Servicio Técnico Ferrari (Madrid)
HERENCIA Lenguajes de Programación - Orientación a Objetos: Herencia 1 Problema: Reparar el el coche Jesús (Valencia) Reparar vehículo. Problema: no arranca Luis, Mecánico (Valencia) Método empleado Pedir
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
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
Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.
Threads o Hilos Los hilos son otra forma de crear la posibilidad de concurrencia de actividades; sin embargo, la gran diferencia es que los hilos comparten el código y el acceso a los datos. En cierta
Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo
Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia
Conceptos básicos de Orientación a Objetos, manejo con Eclipse.
Conceptos básicos de Orientación a Objetos, manejo con Eclipse. Arrancar Eclipse. Después de descomprimir la aplicación, dar doble clic sobre el ícono ejecutable para arrancar la aplicación. En caso de
Introducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
