Scala Actors Tutorial Breve
|
|
- Mariano Coronel Valverde
- hace 5 años
- Vistas:
Transcripción
1 Scala Actors Tutorial Breve Author: Philipp Haller Spanish version: Juanjo Bazán (jjbazan.at. gmail.dot. com) Date: May 24, 2007 Introducción Con la llegada de los procesadores multi-core, la programación concurrente se está convirtiendo en indispensable. El instrumento principal que proporciona Scala para la concurrencia son los Actores(o actors). Los Actors son básicamente procesos concurrentes que se comunican a través del intercambio de mensajes. Puede verse también como un tipo de objetos activos en los que invocar a uno de sus métodos se corresponde con el envío de un mensaje. La librería de Actors de Scala proporciona envío de mensajes tanto asíncronos con síncronos(estos últimos se implementan mediante el intercambio de varios mensajes asíncronos). Es más, los actores pueden comunicarse utilizando futuros, en los que las peticiones se tratan de manera asíncrona, pero devuelven una representación (un futuro) que permite esperar a la respuesta. Este tutorial esta diseñado principalmente como un recorrido a través de varios ejemplos de programas completos que pueden ser compilados y ejecutados utilizando Scala versión 2.4 o posterior. Primer Ejemplo Nuestro primer ejemplo está formado por dos actores que intercambian una serie de mensajes y luego finalizan. El primer actor envía mensajes "ping" al segundo actor, que como respuesta envía mensajes "pong" (por cada mensaje "ping" recibido, un mensaje "pong"). Comenzamos definiendo los mensajes enviados y recibidos por nuestros actores. En este caso podemos usar objetos singleton(en programas más avanzados, los mensajes en general se parametrizan). Como queremos saber el tipo de cada mensaje mediante comparación de patrones, cada mensaje es un objeto a comparar con case: case object Ping case object Pong case object Stop El actor ping comienza el intercambio de mensajes enviando un mensjae Ping al actor pong. El mensaje Pong es la respuesta del actor pong. Cuando el actor ping ha enviado un cierto número de mensajes Ping, envía un mensaje Stop al actor pong. Todas las clases, objetos y traits(el equivalente a los interfaces de Java) de la librería de actores de Scala se encuentran en el paquete scala.actors. Desde este paquete importamos la clase Actor que vamos a extender para definir nuestros propios actores. Además, importamos todos los miembros del objeto Actor porque éste contiene muchas acciones útiles sobre actores:
2 import scala.actors.actor import scala.actors.actor._ Los actores son objetos normales que se crean instanciando subclases de la clase Actor. Definimos el comportamiento de los actores ping creando una subclase de Actor e implementando su método abstracto act: class Ping(count: int, pong: Actor) extends Actor { def act() { var pingsleft = count - 1 pong! Ping while (true) { receive { case Pong => if (pingsleft % 1000 == 0) Console.println("Ping: pong") if (pingsleft > 0) { pong! Ping pingsleft -= 1 else { Console.println("Ping: stop") pong! Stop exit() El constructor recibe como argumentos la cantidad de mensajes Ping a ser enviados y el actor pong. La llamada al método receive dentro del bucle infinito deja en suspenso al actor hasta que que se le envía un mensaje Pong. En ese caso el mensaje se elimina de la cola de entrada y se ejecuta la acción correspondiente(a la derecha de la flecha). En el caso de que pingsleft sea mayor que cero enviamos un mensaje a pong utilizando el operador!, y decrementamos el contador pingsleft. Si el contador pingsleft ha llegado a cero, enviamos un mensaje Stop a pong, y terminamos la ejecución del actor actual llamando a exit(). La clase para nuestro actor pong se define de manera similar: class Pong extends Actor { def act() { var pongcount = 0 while (true) { receive { case Ping => if (pongcount % 1000 == 0) Console.println("Pong: ping "+pongcount) sender! Pong pongcount = pongcount + 1 case Stop => Console.println("Pong: stop") exit() Hay un punto interesante que señalar: cuando se recibe un mensaje Ping, se envia un mensaje Pong al actor sender. Pero este actor no está definido en ninguna parte de nuestra clase! En realidad es un método de la clase Actor. Utilizando sender, uno puede hacer referencia al actor que envió el último mensaje recibido por el actor actual. Así se evita tener que pasar explicitamente el actor remitente como
3 argumento a los mensajes. Una vez definidas nuestras clases actor, estamos listos para crear la aplicación Scala que los use: object pingpong extends Application { val pong = new Pong val ping = new Ping(100000, pong) ping.start pong.start Análogamente a los Threads(también llamados hilos o hebras) de Java, los actores se ponen en marcha llamando a su método start. A ejecutar! Este ejemplo completo se incluye en la distribución de Scala, en doc/scaladevel/scala/examples/actors/pingpong.scala. Así es como se compila y se ejecuta: $ scalac pingpong.scala $ scala -cp. examples.actors.pingpong Pong: ping 0 Ping: pong Pong: ping 1000 Ping: pong Pong: ping Ping: stop Pong: stop Ahora sin hilos! Los Actors se ejecutan sobre un pool de threads/hilos. Inicialmente hay 4 threads disponibles. El pool va creciendo de tamaño si todos los threads están bloqueados pero todavía hay tareas pendientes de ser procesadas. Idealmente el tamaño del pool se corresponde con el número de procesadores de la máquina. Cuando los actores llaman a operaciones que bloquean hilos de ejecución, como receive (o incluso wait), el hilo que está ejecutando al actor actual (self) se bloquea. Por lo que básicamente el actor queda representado por un hilo bloqueado. Dependiendo del número de actores que quieras utilizar, deberías evitar estas situaciones, puesto que la mayoria de máquinas virtuales de Java sobre hardware estándar no pueden manejar más de unos pocos miles de hilos. Las operaciones que bloquean hebras se pueden evitar utilizando react para esperar mensaje nuevos(la versión basada en eventos de receive). De todas maneras hay un precio(en general pequeño) que pagar: react no devuelve valor de respuesta. Lo que en la práctica significa que al acabar la reacción a la llegada de un mensaje, uno ha de llamar a alguna función que contenga el resto de la computación a realizar por parte del actor. Nótese que usar react dentro de un bucle while no funciona. Pero, como un bucle es algo común, la librería proporciona soporte para ello en la forma de la función loop. Que se puede usar así: loop { case A =>... case B =>...
4 Las llamadas a react se pueden anidar, lo que permite recibir una secuencia de varios mensajes, así: case A =>... case B => // Si recibimos un mensaje B también queremos un C case C =>... Para hacer nuestros actores ping y pong libres de hilos, basta simplemente con reemplazar while(true) con loop, y receive con react. Por ejemplo, aquí vemos el método act modificado de nuestro actor pong: def act() { var pongcount = 0 loop { case Ping => if (pongcount % 1000 == 0) Console.println("Pong: ping "+pongcount) sender! Pong pongcount = pongcount + 1 case Stop => Console.println("Pong: stop") exit() Segundo Ejemplo En este ejemplo vamos a escribir una abstracción de productores, que proporcione un interfaz iterador estándar para obtener una serie de valores que se vayan produciendo Los productores específicos se definen implementando un método abstracto producevalues. Los valores individuales se generan mediante el método produce. Ambos métodos se heredan de la clase Producer. Por ejemplo, un productor que genera valores contenidos en un arbol binario en preorden, se puede definir así: class PreOrder(n: Tree) extends Producer[int] { def producevalues = traverse(n) def traverse(n: Tree) { if (n!= null) { produce(n.elem) traverse(n.left) traverse(n.right) Los productores se implementan como dos actores, un actor productor(producer) y un actor coordinador(coordinator). Aquí vemos como podemos implementar el actor productor: abstract class Producer[T] { protected def producevalues: unit protected def produce(x: T) { coordinator! Some(x) receive { case Next =>
5 private val producer: Actor = actor { receive { case Next => producevalues coordinator! None... Vease como hemos definido al actor producer.en esta ocasión no nos hemos molestado en crear una subclase de Actor y dar código a su método act. En vez de eso, simplemente definimos el comportamiento de actor directamente usando la función actor. Mucho más conciso! Es más, los actores definidos mediante la función actor comienzan automáticamente, sin necesidad de invocar su método start. Así pues, cómo funciona el productor? Cuando recibe un mensaje Next ejecuta el método(abstracto) producevalues que a su vez llama al método produce. Esto se traduce en el envío de una serie de valores, incluidos en mensajes de tipo Some al coordinador. La secuencia termina con un mensaje None. Some y None son los dos casos posibles de la clase estándar de Scala Option. El coordinador sincroniza las peticiones de los clientes y los valores que llegan desde el productor. Lo podemos implementar así: private val coordinator: Actor = actor { loop { case Next => producer! Next reply { receive { case x: Option[_] => x case Stop => exit('stop) Notese cómo cuando se recibe un mensaje Next usamos reply para devolver el valor de Option recibido desde el productor al actor que realizó la petición. Explicaremos esto en la siguiente sección... El interfaz Iterator Queremos crear productores que se puedan utilizar como un iterador normal. Para ello implementamos un método iterator que devuelve( sorpresa!) un iterador. Sus métodos hasnext and next envían mensajes al actor coordinador para cumplir su tarea. Vemoslo: def iterator = new Iterator[T] { private var current: Any = Undefined private def lookahead = { if (current == Undefined) current = coordinator!? Next current def hasnext: boolean = lookahead match { case Some(x) => true case None => { coordinator! Stop; false def next: T = lookahead match {
6 case Some(x) => current = Undefined; x.asinstanceof[t] Usamos un método privado lookahead para implementar la lógica del iterador. Mientras no se conozca el siguiente valor, la variable current tiene como valor Undefined, que no es más que un objeto que reserva el sitio en espera de ser utilizado: private val Undefined = new Object Lo interesante está en el método lookahead. Cuando el valor de current es Undefined significa que tenemos que conseguir el siguiente valor. Para ello usamos el operado de envíor de mensaje síncrono!?. Éste envía el mensaje Next a coordinator, pero en vez de devolver el control como un envío de mensaje normal(asíncrono), se queda esperando una respuesta del coordinador. Esta respuesta es el valor que devuelve!?. Un mensaje que se envía con!? se responde con reply. Fíjate que enviar un mensaje a sender no nos vale, porque!? espera recibir un mensaje por un canal de respuesta privado en vez de por la cola de entrada. Esto es necesario para diferenciar las respuestas "verdaderas" de las "falsas" respuestas que provengas de mensajes anteriores que pueda haber en la cola de entrada. El ejemplo de los productores también se incluye en la distribución de Scala en doc/scaladevel/scala/examples/actors/producers.scala.
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
Más detallesEstructura 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
Más detallesEjercicio 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.
Más detallesAlgoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez
Algoritmos y Estructuras de Datos Iteradores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción 1/26 Iteradores Es muy común
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión III La Sintaxis de Java II... 6 Estructuras de Control... 7 Estructuras de Selección... 8 Sentencia
Más detallesPROGRAMACIÓ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)
Más detallesProgramación orientada a objetos
Programación orientada a objetos Capítulo 4 Agrupar objetos Tutor: Manuel Fernández Barcell Centro Asociado de Cádiz http://prof.mfbarcell.es 4.2 La Colección de objetos Muchas aplicaciones requieren
Más detallesTema 6: Programación funcional en Scala. Sesión 17: Introducción a Scala (1)
Tema 6: Programación funcional en Scala Sesión 17: Introducción a Scala (1) Referencias Programming in Scala. Martin Odersky, Lex Spoon, Bil Venners. Ed. Artima. Programming Scala. Dean Wampler, Alex Payne.
Más detallesProgramació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
Más detallesEJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE ITERABLE DEL API DE JAVA Y MÉTODO ITERATOR. RECORRER COLECCIONES DE OBJETOS (CU00915C)
APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE ITERABLE DEL API DE JAVA Y MÉTODO ITERATOR. RECORRER COLECCIONES DE OBJETOS (CU00915C) Sección: Cursos Categoría: Lenguaje de programación
Más detallesArquitecturas 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?
Más detallesEstructuras 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
Más detallesTema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13
Tema III. Multihilo Desarrollo de Aplicaciones para Internet Curso 12 13 Índice 1.Introducción 2.Tipos de Concurrencia 3.Hilos en Java 4.Implementación de un SNB i. Sin Hilos ii. Con Hilos iii.con Pool
Más detallesAGRUPANDO OBJETOS (Parte-II)
AGRUPANDO OBJETOS (Parte-II) Por Corina Flores Villarroel corina@memi.umss.edu.bo UMSS - El ciclo while Un ciclo while es similar en su estructura y proposito al ciclo for-each Contiene una cabecera y
Más detallesPatrones de Diseño. Patrón de comportamiento Iterator. Técnicas de Programación - Curso 2007/08
Patrones de Diseño Patrón de comportamiento Iterator Técnicas de Programación - Curso 2007/08 Propósito Proporcionar acceso secuencial a los elementos de un agregado, sin exponer su representación interna
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...
Más detallesBENEMERITA 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
Más detallesGuillermo Román Díez
Concurrencia Creación de Procesos en Java Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia
Más detallesPatrones de Diseño. Patrón de comportamiento Iterator. Técnicas de programación - Curso 2008/09 (Esther Guerra Sánchez)
Patrones de Diseño Patrón de comportamiento Iterator Técnicas de programación - Curso 2008/09 (Esther Guerra Sánchez) Propósito Proporcionar acceso secuencial a los elementos de un agregado, sin exponer
Más detallesTema 2.- Objetos y mensajes
Tema 2.- Objetos y mensajes 1. Objetos y mensajes: mecanismo de envío de mensajes...2 2. SMALLTALK: EXPRESIONES...3 2.1. LITERALES: designan objetos constantes...3 2.2. NOMBRES DE VARIABLES: identifican
Más detallesUnidad 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
Más detallesLaboratorio 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
Más detallesINTERFACE 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
Más detallesConcurrencia Monitores. Guillermo Román Díez
Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de
Más detallesTema 9: Programación Orientada a Objetos. Sesión 28: Programación Orientada a Objetos (2)
Tema 9: Programación Orientada a Objetos Sesión 28: Programación Orientada a Objetos (2) Referencias Programming in Scala, by Martin Odersky: Capítulo 4: Classes and Objects Capítulo 10: Composition and
Más detallesThreads 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
Más detallesProgramación II 2do cuatrimestre 2017
Tecnología Java El propósito de esta clase es aplicar los conceptos de TAD y Complejidad en Java. A continuación se mencionan algunas herramientas que nos ayudaran a aplicar estos y otros conceptos que
Más detallesInterfaces. 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
Más detallesProgramación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores
Programación Orientada a Objetos Resumen de Temas Unidad 3: Constructores y destructores 3.1 Conceptos de métodos constructor y destructor Java inicializa siempre con valores por defecto las variables
Más detallesIntroducció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
Más detallesCurso Programación Java JSE 8 desde Cero Descripción Programación Java JSE 8 desde cero Curso Programación Java JSE 8
Curso Programación Java JSE 8 desde Cero Descripción: Nuestro curso Programación Java JSE 8 desde cero ofrece el curso de este nivel más completo, sin duda, en donde aprenderás la versión actual de Java,
Más detallesTIPO Y MÉTODO ITERATOR. ERROR JAVA.UTIL.CONCURRENT MODIFICATIONEXCEPTION. RESUMEN DE TIPOS DE BUCLES EN JAVA. (CU00667B)
APRENDERAPROGRAMAR.COM TIPO Y MÉTODO ITERATOR. ERROR JAVA.UTIL.CONCURRENT MODIFICATIONEXCEPTION. RESUMEN DE TIPOS DE BUCLES EN JAVA. (CU00667B) Sección: Cursos Categoría: Curso Aprender programación Java
Más detallesESTRUCTURAS DE CONTROL
ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De
Más detallesOperadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas
Más detallesPROGRAMACIÓ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
Más detallesFundamentos de la POO 1
Fundamentos de la POO 1 La correcta aplicación de los conocimientos de clases y objetos nos permitirán llegar a los objetivos planteados y a generar programas que puedan ser fáciles de comprender para
Más detallesEl programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a
Examen de Programación (13294) Convocatoria de Junio 2006 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena
Más detallesTareas en segundo plano AsyncTask Thread
Tareas en segundo plano AsyncTask Thread Programació De Dispositius Mòbils PRDM Cristobal Raya Giner 2015 Hilos de ejecución En una aplicación Android, todas las actividades, los servicios y los broadcast
Más detallesClases Abstractas e Interfaces
Clases Abstractas e Interfaces Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender a crear y utilizar clases y métodos abstractos
Más detallesExamen 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
Más detallesProgramació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!
Más detallesFundamentos 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
Más detallesFUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E)
APRENDERAPROGRAMAR.COM FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E) Sección: Cursos Categoría: Tutorial básico del programador web: JavaScript
Más detallesESTRUCTURA 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:
Más detallesSISTEMAS OPERATIVOS Manejo de procesos
SISTEMAS OPERATIVOS Manejo de procesos Amilcar Meneses Viveros ameneses@computacion.cs.cinvestav.mx Universidad de Occidente Presentación Concepto de proceso Despacho de procesos Operaciones sobre procesos
Más detallesProgramación concurrente Hebras
20151021 dit UPM Programación concurrente Hebras Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons Reconocimiento-NoComercial-Compar9rIgual
Más detallesEstructuras 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
Más detalles2. Tratamiento de objetos con JAVA
2. Tratamiento de objetos con JAVA David Contreras Bárcena (ETSI) - Comillas 71 2.1 Ciclo de Vida de los Objetos Los objetos tienen un tiempo de vida y consumen recursos durante el mismo. Cuando un objeto
Más detallesBENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN
BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACION CONCURRENTE PARALELA Y PRACTICA 3 (PARTE 1 Y 2) HILOS POSIX NOMBRE:
Más detallesProgramació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
Más detallesPrueba objetiva 2 - Clave a
Apellidos: Nombre: Matrícula: Normas Prueba objetiva 2 - Clave a Concurrencia 2010-2011 - Primer semestre Lenguajes, Sistemas Informáticos e Ingeniería de Software Este es un cuestionario que consta de
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión VIII Composición... 4 Herencia... 8 Herencia e Inicialización... 11 Constructor de Superclase...
Más detallesExamen 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
Más detallesColas. 5.1 Implementación
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
Más detallesTema 4: Gestión de Procesos
Tema 4: SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo de 2006 Índice Concepto
Más detallesCurso Programación Java JSE 7
Curso Programación Java JSE 7 Descripción: Nuestro curso Programación Java JSE 7 ofrece el curso de este nivel más completo, sin duda, en donde aprenderás la versión actual de Java, JSE 7, desde cero.
Más detallesTema 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
Más detallesApellidos: Nombre: Matrícula:
Apellidos: Nombre: Matrícula: Concurrencia (parte 2)/clave: a Curso 2016 2017 - Convocatoria Extraordinaria (Julio 2017) Grado en Ingeniería Informática / Grado en Matemáticas e Informática UNIVERSIDAD
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión IX Composición... 4 Herencia... 8 Herencia e Inicialización... 12 Constructor de Superclase...
Más detallesThreads LSUB. 30 de marzo de 2016 GSYC
Threads LSUB GSYC 30 de marzo de 2016 (cc) 2015 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada
Más detallesEXPRESIONES Y OPERADORES
EXPRESIONES Y OPERADORES Una expresión es un conjunto de operandos y operadores cuyo resultado puede ser evaluado. Las expresiones constituyen la base de cualquier aplicación y se construyen agrupando
Más detallesTema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL
Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,
Más detallesNode.JS Raspberry Pi (RPi) 2015/05/08 Juan V. Capella
Node.JS Raspberry Pi (RPi) 2015/05/08 Juan V. Capella Contenido Objetivo Introducción Operadores Tipos de datos Funciones Networking armpower.blogs.upv.es 2 Objetivo Aprender a instalar Node.js Conocer
Más detallesConcurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi
Concurrencia, exclusión mutua y sincronización Capítulo 5 HungriaBerbesi 1 Concurrencia Múltiples aplicaciones Aplicaciones estructuradas Estructura del sistema operativo 2 Concurrencia 3 Sección Crítica:
Más detallesQué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Más detallesSoluciones. 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
Más detallesUPM Concurrencia en Java
UPM Concurrencia en Java Juan Antonio de la Puente DIT/UPM Hebras (threads) Una hebra es un objeto de una subclase de java.lang.thread o una implementación de la interfaz Runnable El código que ejecuta
Más detallesSebastián García Galán
Universidad de Jaén E.U.P. Linares Dpto. Telecomunicaciones Área de Ingeniería Telemática Sebastián García Galán sgalan@ujaen.es Variables y tipos de datos Operaciones y operadores Clases y objetos Tipos
Más detallesLas clases están compuestas por un conjunto de miembros. (datos y funciones) también se conocen como (atributos y métodos)
Clases y Objetos Las clases están compuestas por un conjunto de miembros (datos y funciones) también se conocen como (atributos y métodos) Una clase se usa como el modelo que deben seguir los objetos Un
Más detallesUnidad 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á
Más detallesCarlos 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
Más detallesPROGRAMACIÓ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
Más detallesIntroducció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:
Más detallesMétodos con Parámetros
Métodos con Parámetros Hasta ahora, nuestra clase RobotInspector todavía no es muy útil. Ejemplo para colocar dos conos hicimos esto en la clase anterior. Lo que lográbamos es que el robot coloque dos
Más detallesProgramació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
Más detallesCONCEPTO Y DEFINICIÓN DE CLASE EN JAVA. OBJETOS DEL MUNDO REAL Y ABSTRACTOS. EJEMPLOS. EJERCICIO (CU00644B)
APRENDERAPROGRAMAR.COM CONCEPTO Y DEFINICIÓN DE CLASE EN JAVA. OBJETOS DEL MUNDO REAL Y ABSTRACTOS. EJEMPLOS. EJERCICIO (CU00644B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero
Más detallesEl programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a
Examen de Programación (13294) Convocatoria de Junio 2006 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena
Más detallesExamen 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
Más detallesMECANISMOS PARA SINCRONIZACIÓN. Semáforos
MECANISMOS PARA SINCRONIZACIÓN Semáforos Mecanismos para sincronización Una vez discutidos los principales problemas a enfrentar para coordinar procesos/hilos que comparten espacio de direccionamiento,
Más detallesFundamentos de Informática
Fundamentos de Informática Grados en Ingeniería Tutor: Antonio Serna UNED C.A. Illes Balears Sesión 03 Contenidos Recopilación de dudas y trabajos Composición de objetos (ArrayLists) Ejercicios: encuentra
Más detallesHerencia Java y Servicios Web I Master en Ingeniería Matemática
Herencia 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 Extensión mediante herencia.
Más detallesAPELLIDOS, Nombre: // Resto de s e r v i c i o s p ú b l i c o s e n t r e l o s que s e e n c u e n t r a n i n s e r t a r y // b o r r a r //...
APELLIDOS, Nombre: N o Matrícula: U.P.M. E.T.S.I.Inf Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software. Examen de Programación II. 27 de Marzo de 2014. Primer parcial. Realización:
Más detallesAlgoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Contenidos: 1. Definición de clases 2. Implementación de los métodos 3. Constructores y destructores 4. Objetos
Más detallesProgramació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
Más detallesCurso de Java Introducción a la Programación III
Curso de Java Introducción a la Programación III Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Operadores relacionales e igualdad 2 Estructuras de control condicional
Más detallesCiclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL
Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos
Más detallesTipos de Datos de python (2ª parte):
Tipos de Datos de python (2ª parte): Enteriormente hemos visto algunos de los tipos de datos que maneja python. Vimos: int, float, chr, str, bool También vimos como convertir datos a cada uno de estos
Más detallesIntroducción a C# y la plataforma.net
Introducción a y la plataforma.net Matías Malbergier 2013 Plataforma.NET.NET provee un set de herramientas (Framework) el cual permite desarrollar programas apuntando a múltiples plataformas y utilizando
Más detallesComunicación y sincronización
Comunicación y sincronización Son conceptos relacionados con la interacción entre los procesos La comunicación se refiere al paso de información de un proceso a otro La sincronización corresponde al cumplimiento
Más detallesParadigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa
Paradigmas de lenguajes de programación Introducción a la programación imperativa Algoritmos y Estructuras de Datos I Paradigma: Definición del modo en el que se especifica el cómputo (que luego es implementado
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM. Programación en Java Diciembre 2010 Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia
Más detallesClase 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
Más detallesUnidad 1: Gestión de Procesos
Unidad 1: Gestión de Procesos Tema 1, Concurrencia: Exclusión mutua y sincronización. 1.1 Problema de la sección crítica, alternativas al uso de semáforos: - Regiones críticas, Monitores, Variables de
Más detallesTitulació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;
Más detallesPrueba objetiva 2 (4F1M) - Clave a
Apellidos: Nombre: Matrícula: Normas Prueba objetiva 2 (4F1M) - Clave a Concurrencia 2010-2011 - Segundo semestre Dpto. de Lenguajes, Sistemas Informáticos e Ingeniería de Software Este es un cuestionario
Más detallesEstructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa
Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,
Más detallesExamen Teórico. Convocatoria de Febrero de 2016
Examen Teórico Convocatoria de Febrero de 2016 Nombre: DNI: Grupo: 1. Responde a las siguientes cuestiones: a) Un programador Java empaqueta el código de un proyecto en el fichero videojuego.jar cuya clase
Más detallesPOO: Clases y objetos
POO: Clases y objetos Programación de aplicaciones 1 Introducción En los lenguajes de programación orientados a objetos, tenemos la posibilidad de extender el lenguaje mediante la creación de nuevo tipos,
Más detalles2. 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
Más detalles