Programación Concurrente: Septiembre 2007 David Fernández-Amorós

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

Download "Programación Concurrente: Septiembre 2007 David Fernández-Amorós"

Transcripción

1 El juego del laberinto concurrente se juega en un tablero rectangular de n filas y m columnas. En cada casilla puede haber una pared, un espacio vacío o un coco. El objetivo de cada coco es salir del laberinto. Cada casilla tiene como máximo ocho posiciones adyacentes (incluyo las diagonales). Un coco se va movio dentro del tablero, siempre que tenga alguna casilla adyacente libre, hasta que consigue llegar a una de las casillas del rectángulo más externo, que se consideran la salida del laberinto. El desplazamiento sólo es posible a una casilla vacía. Cada coco mantiene una lista de las casillas por las que ha pasado. La siguiente casilla para un coco se calcula de la siguiente manera: Se analizan las direcciones de desplazamiento en el orden de las agujas del reloj, empezando por la dirección arriba y a la izquierda. Si la posición actual es (x,y), entonces la primera dirección es la que lleva a (x-1, y-1), después, la de (x,y-1), a continuación la de (x+1,y-1) y así sucesivamente. La primera dirección que proporcione una casilla libre y que no haya sido visitada se utiliza para moverse. Si todas las casillas vecinas han sido visitadas, entonces se levanta esta restricción y el coco se mueve en la primera dirección, según el orden explicado, en la que haya una casilla libre. Si no se encuentra ninguna casilla libre adyacente, el proceso de evaluación de casillas vuelve a empezar. Las casillas adyacentes no pueden cambiar mientras dura el proceso de evaluación de la situación, pero otros cocos pueden examinar el contenido de esas mismas casillas. Evidentemente, dos cocos distintos no pueden moverse al mismo tiempo hacia la misma casilla. Se pide simular el juego del laberinto concurrente mediante un programa concurrente escrito en pseudocódigo utilizando semáforos. Utilizar un único tipo de proceso: coco. Para seguir la simulación, los cocos deben emitir unos mensajes por pantalla. Cada mensaje debe incluir el número de coco, la posición que ocupa y las posiciones de las casillas que ha visitado. Cada coco debe emitir un mensaje indicando en qué posición del tablero empieza. Esta posición inicial se debe elegir aleatoriamente entre las casillas vacías, o bien al iniciarse el proceso, o bien en el programa principal. También deben emitirse mensajes cada vez que un coco decida moverse, especificando de dónde a dónde se produce el movimiento. Los cocos también deben emitir un mensaje antes de salir del laberinto. La simulación debe contar con unas estructuras de datos que permitan resolver razonablemente el problema. Además, se prestará atención para evitar las situaciones de interbloqueo, inanición y espera activa. Se debe procurar el máximo nivel de concurrencia entre los procesos. Si se identifica un problema-tipo (productores/consumidores o lectores/escritores) debe mencionarse explícitamente (incluyo, en su caso, la prioridad más adecuada) antes de proceder con el pseudocódigo. Es muy importante que el comportamiento de los cocos se ajuste al enunciado, tanto en los aspectos específicamente concurrentes como en los demás. Es muy importante leer con atención el enunciado para responder adecuadamente a lo que se nos pide. En principio, la forma óptima de simular el comportamiento que nos piden depería principalmente de la proporción de paredes frente a casillas vacías y a la 1

2 proporción de número de cocos frente a número de casillas vacías. Un programa que fuera muy eficiente en un tablero con muchos cocos y pocas casillas libres, donde podría haber varios cocos mirando la misma casilla, no lo sería en otro contexto donde hubiera pocos cocos, y por tanto, pocas posibilidades de que dos cocos quisieran leer la misma casilla al mismo tiempo. Afortunadamente, no tenemos que darle muchas vueltas a esta cuestión: el enunciado nos dice que debe ser posible que varios cocos evalúen la misma casilla. Esto encaja a la perfección con uno de los dos problemas-tipo de la asignatura: lectores y escritores. El esquema de los lectores y escritores es, en la práctica, la única manera en la que varios procesos pueden leer un recurso concurrentemente. Siempre que no se trate de un recurso de sólo lectura, es decir, de un constante. Si es posible que los procesos puedan leer y puedan escribir en un recurso, entonces o bien se bloquea el recurso antes de acceder a el, o bien tenemos un esquema de lectores y escritores, en el que existen unos protocolos de entrada a la lectura y de entrada a la escritura que preparan el acceso al recurso. Un problema bastante frecuente es el de leer variables compartidas sin pedir exclusión mutua. Esto es un error porque como hemos señalado en el párrafo anterior, si hay un proceso que puede modificar la variable, no podremos saber que el valor que hemos leído es correcto, tampoco podremos saber si ha cambiado desde el momento de la lectura. Otra cuestión interesante es la de la granularidad. Una posibilidad, un tanto simplista, es considerar el tablero como un único recurso. Otra posibilidad que aumenta considerablemente la concurrencia es considerar que cada casilla es un recurso distinto. Lo bueno de este enfoque es que no es mucho más complicado. Se trata de aplicar el esquema lectores y escritores a cada casilla. En este caso, hemos elegido la prioridad para la escritura, con el fin de evitar la inanición, aunque también hay argumentos a favor de la prioridad para la lectura. program laberinto de cocos; const N = 10; M = 15; Ncocos = 10; // Arrays para calcular facilmente las casillas adyacentes vecinas_x = {-1,0,1,1,1,0,-1,-1}; vecinas_y = {-1, -1, -1, 0, 1, 1, 1, 0}; var mutex_mensaje : semaphore; // Las variables del modelo de lectores y escritores mutex, lector, escritor : array [1..N, 1..M] of semaphore; nl, nle, nee : array [1..N, 1..M] of integer; escribio : array[1..n, 1..M] of boolean; // Variables para indices de bucles; i,j : integer; // Para guardar las posiciones iniciales de los cocos, // no se usan fueran del programa principal coordenada_x, coordenada_y : array[1..ncocos] of integer; tablero : array[1..n][1..m] of { vacia, pared, uncoco } 2

3 procedure entrada_lectura(x,y : integer); // Si se está escribio o existen escritores en espera // el lector debe ser bloqueado if (escribio[x,y] or nee[x,y] > 0) then nle[x,y] := nle[x,y] + 1; wait(lector[x,y]) nle[x,y] := nle[x,y] - 1; nl[x,y] := nl[x,y] + 1; if (nle[x,y] > 0) then // Desbloqueo encadenado signal(lector[x,y]) signal(mutex[x,y]) ; // entrada_lectura procedure entrada_escritura(x,y : integer); // Si se está escribio o existen lectores el escritor // debe ser bloqueado if (nl[x,y] > 0 or escribio[x,y]) then nee[x,y] := nee[x,y]+ 1; wait(escritor[x,y]); nee[x,y] := nee[x,y]- 1; escribio[x,y] = true; signal(mutex[x,y]) ; // entrada_escritura procedure salida_lectura(x,y : integer); nl[x,y] := nl[x,y] - 1; // Desbloquear un escritor si es posible if (nl[x,y] = 0 and nee[x,y] > 0) then signal(escritor[x,y]); ;// salida_lectura procedure cierra_escritura(x,y : integer); escribio[x,y] = false; // Desbloquear un escritor que esté a la espera. // Si no, desbloquear un lector en espera if (nee[x,y] > 0) then signal(escritor[x,y]); if (nle[x,y] > 0) then signal(lector[x,y]); // cierra_escritura process type coco(id : integer, coor_x, coor_y : integer); var l,k : integer; // Variables para bucles // La tabla es para uso interno del proceso, //la lista es para imprimir las casillas por las que paso tabla_visitadas : array[1..n][1..m] of boolean; lista_visitadas : array[1..maxlon] of record x,y : integer ; lon_visitadas : integer; // Longitud de la lista de visitadas // En la primera vuelta de inspección de las casillas adyacentes importa // si las hemos visitado ya o no, en la segunda vuelta no importa_visitadas : boolean; salir_de_bucle : boolean; // Nos dice si ya nos hemos movido de casilla o no estoy_mirando_casilla_adyacente_numero : integer; coordenada_x, coordenada_y, candidata_x, candidata_y : integer; 3

4 procedure escribir_lista_visitadas; var k : integer; for k := 1 to lon_visitadas do write('(', lista_visitadas.x[k], ','. lista_visitadas.y[k], ') '); writeln; ; // escribir_lista_visitadas coordenada_x := coor_x; coordenada_y := coor_y; for l:= 1 to N do for k:= 1 to M do tabla_visitadas = false; lon_visitadas = 1; // Primer mensaje wait(mutex_mensaje); writeln( Hola, soy el coco número ',id, y he comenzado en la posición (',coordenada_x,,,coordenada_y, ) ); signal(mutex_mensaje); tabla_visitadas[coordenada_x, coordenada_y] := true; lista_visitadas[lon_visitadas].x := coordenada_x; lista_visitadas[lon_visitadas].y := coordenada_y; // Mientras no estemos en el rectángulo del borde, es decir, en posición de terminar... while coordenada_x > 1 and coordenada_x < N and coordenada_y > 1 and coordenada_y < M) importa_visitadas := true; salir_del_bucle := false; while not salir_del_bucle estoy_mirando_casilla_adyacente_numero := 1; while estoy_mirando_casilla_adyacente_numero < 9 and not salir_de_bucle candidata_x := coordenada_x + vecinas_x[estoy_mirando_casilla_adyacente_numero]; candidata_y := coordenada_y + vecinas_y[estoy_mirando_casilla_adyacente_numero]; if (importa_visitadas and tabla_visitadas[candidata_x][candidata_y] = false) or not importa_visitadas then // Miramos si la casilla candidata esta vacia entrada_lectura(candidata_x, candidata_y); if (tablero[candidata_x, candidata_y] = vacia) then salida_lectura(candidata_x, candidata_y); // Pedimos bloqueo de escritura sobre la candidata // y sobre la casilla actual entrada_escritura(candidata_x,candidata_y); 4

5 entrada_escritura(coordenada_x,coordenada_y); // Hay que darse cuenta de que despues de soltar el bloqueo // de lectura, otro coco puede haberse movido a la casilla, // por lo que nos toca comprobar si sigue vacía despues de // obtener el bloqueo de escritura. // Si la casilla candidata sigue vacia... if (tablero[candidata_x, candidata_y] = vacia) then tablero[candidata_x, candidata_y] := uncoco; tablero[coordenada_x, coordenada_y] := vacia; salida_escritura(coordenada_x, coordenada_y); salida_escritura(candidata_x, candidata_y); wait(mutex_mensaje); write( Soy el coco,id, y me muevo de la casilla (,coordenada_x,,, coordenada_y, ) hasta la (, candidata_x,,, candidata_y, ) y he pasado ya por: ); escribir_lista_visitadas; signal(mutex_mensaje); coordenada_x := candidata_x; coordenada_y := candidata_y; tablas_visitadas[coordenada_x, coordenada_y] := true; lon_visitadas := lon_visitadas + 1; lista_visitadas[lon_visitadas].x := coordenada_x; lista_visitadas[lon_visitadas].y := coordenada_y; salir_del_bucle := true; salida_escritura(coordenada_x, coordenada_y); salida_escritura(candidata_x, candidata_y); ; // if tablero[...] = vacia salida_lectura(candidata_x, candidata_y); // if (importa_visitadas...) estoy_mirando_casilla_adyacente_numero := estoy_mirando_casilla_adyacente_numero + 1; // while estoy_mirando_casilla_adyacente_numero if importa_visitadas = true then // Hemos terminado la primera vuelta de inspeccion // y seguimos sin casilla para mover importa_visitadas := false; // Hemos hecho las dos vueltas y no hemos encontrado nada salir_del_bucle := true; // while not salir_de_bucle; // while coordenada_x... wait(mutex_mensaje); writeln ( Soy el coco,id, como ya he llegado al borde del tablero me voy ); signal(mutex_mensaje); // process coco 5

6 var cocos : array[1..ncocos] of coco; // Programa principal for i:=1 to N do for j:=1 to M do tablero[i][j] := vacia; // Codigo para poner las paredes en su sitio... // Paredes colocadas init(mutex_mensaje, 1); // Ahora elegimos unas coordenadas iniciales para los cocos for i := 1 to Ncocos do repeat // Elegimos al azar dos numeros. La coordenada x entre 2 y N-1 y la y entre 2 y M - 1, // no queremos que la posición inicial esté en la zona de salida del tablero coordenada_x[i] = random (2..N-1); coordenada_y[i] = random(2..m-1); until tablero[coordenada_x[i]][coordenada_y[i]] = vacia; tablero[coordenada_x[i]][coordenada_y[i]] = uncoco; ; // Inicializamos las estructuras para los lectores y escritores for i:= 1 to N do for j:= 1 to M do init(mutex[i,j],1); init(escritor[i,j], 0); init(lector[i,j], 0); nl[i,j] = 0; nle[i,j] = 0; nee[i,j] = 0; escribio[i,j] = false; co for i := 1 to Ncocos do cocos[i] = coco(i, coordenada_x[i], coordenada_y[j]); co. 6

1. Equivalencia de herramientas. Implemente las primitivas de los buzones mediante monitores.(2pt).

1. Equivalencia de herramientas. Implemente las primitivas de los buzones mediante monitores.(2pt). 1. Equivalencia de herramientas. Implemente las primitivas de los buzones mediante monitores.(2pt). monitor mibuzon; const MAXBUZON =...; export s, receive, empty; buffer : array[1..maxbuzon] of item;

Más detalles

1. Enunciado. 2. Trabajo del alumno

1. Enunciado. 2. Trabajo del alumno 1. Enunciado El problema de las ocho reinas consiste en situar ocho reinas en un tablero de ajedrez de forma que ninguna de ellas ataque a otra. Una solución clásica consiste en generar todas las posiciones

Más detalles

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software. Junio 2008 Programación Concurrente 1/6 Normas Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software Este examen es un cuestionario

Más detalles

Lección 6: Ejemplos de programación con semáforos

Lección 6: Ejemplos de programación con semáforos Lección 6: Ejemplos de programación con semáforos El problema de la cena de los filósofos El problema de los lectores y escritores Ejercicios Gestión de concurrencia mediante paso de testigo (implementación

Más detalles

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 4. (2 p) Dos procesos A y B se ejecutan concurrentemente en un determinado sistema. El proceso A ejecuta unas tareas ( Tareas

Más detalles

Donde Condicion es una expresión booleana, es decir, que puede tomar el valor verdadero (true) o falso (false).

Donde Condicion es una expresión booleana, es decir, que puede tomar el valor verdadero (true) o falso (false). SETECIA REPETITIVA (SETECIA WHILE) Condicion while do Sentencia Donde Condicion es una expresión booleana, es decir, que puede tomar el valor verdadero (true) o falso (false). Valores

Más detalles

Tipos de datos definidos por el usuario. 1. Arreglos

Tipos de datos definidos por el usuario. 1. Arreglos Tipos de datos definidos por el usuario Al definirnos como programadores estamos declarándonos creadores de software y, como tal, tenemos necesidades de herramientas que nos sirvan para este trabajo que

Más detalles

EXAMENES RESUELTOS DE PROGRAMACION I

EXAMENES RESUELTOS DE PROGRAMACION I EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994 Soluciones no oficiales 1.- Cuál de las siguientes sentencias es incorrecta?: VAR A : ARRAY [0..3] OF ARRAY

Más detalles

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores PROGRAMACIÓN CONCURRENTE Tema 5 Monitores 1 Indice Definición de los monitores Sincronización condicional usando monitores Algunos problemas con monitores 2 Problemas de las regiones críticas condicionales

Más detalles

Mientras duerme, el barbero espera a ser despertado por un nuevo cliente.

Mientras duerme, el barbero espera a ser despertado por un nuevo cliente. 1. Enunciado Tres barberos trabajan en una barbería. La barbería cuenta con tres sillones de barbero, cada uno asignado a uno de los barberos. Cada barbero desarrolla el siguiente plan de trabajo: El barbero

Más detalles

Práctica de programación concurrente ETSI Informática, UNED David Fernández-Amorós 1.

Práctica de programación concurrente ETSI Informática, UNED David Fernández-Amorós 1. 1. Enunciado Cuando un enfermo quiere a ir al médico, hace lo siguiente; primero necesita que uno de los operadores esté libre. Hay cinco operadores. El operador le indica al enfermo su número de operador

Más detalles

Práctica de programación concurrente ETSI Informática, UNED David Fernández-Amorós 1.

Práctica de programación concurrente ETSI Informática, UNED David Fernández-Amorós 1. 1. Enunciado En el bingo hay un presentador y varios jugadores. Antes de comenzar el juego, cada cliente se genera aleatoriamente una cantidad de cartones entre 1 y 10. Obviamente, todos los números de

Más detalles

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades: Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades: La prueba es individual y sin material. La duración es 3 horas.

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos

Más detalles

Grafo acíclico orientado cuyos nodos corresponden a sentencias individuales.

Grafo acíclico orientado cuyos nodos corresponden a sentencias individuales. GRAFOS DE PRECEDENCIA Grafo acíclico orientado cuyos nodos corresponden a sentencias individuales. Un arco de un nodo Si al nodo Sj significa que la sentencia Sj puede ejecutarse sólo cuando ha acabado

Más detalles

U nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales

U nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales ARREGLOS Introducción Primero que todo, es importante conocer el concepto de estructura de datos. Una estructura de datos es "una colección de datos organizados de un modo particular." Las estructuras

Más detalles

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 4. (2 p) Dos procesos A y B se ejecutan concurrentemente en un determinado sistema. El proceso A ejecuta unas tareas ( Tareas

Más detalles

EJEMPLO DE PARTIDA. Pongo en la casilla: 4 El tablero queda como: X

EJEMPLO DE PARTIDA. Pongo en la casilla: 4 El tablero queda como: X El objetivo de este ejercicio es crear un programa que juegue a tres en raya contra un oponente humano. Tras cada movimiento el programa debe mostrar el tablero y permitir mover al humano. El programa

Más detalles

PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES.

PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES. PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES. Cinco filósofos pasan su vida pensando y comiendo. Los filósofos comparten una mesa circular rodeada por cinco sillas, una para cada uno de

Más detalles

Introducción al Lenguaje de Programación Ada

Introducción al Lenguaje de Programación Ada Instrumentación de Tiempo Real Introducción al Lenguaje de Programación Ada Mario Aldea Rivas Departamento de Electrónica y Computadores Universidad de Cantabria GRUPO DE COMPUTADORES Y TIEMPO REAL Mario

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

Trabajo Práctico Nº 4 Iteración

Trabajo Práctico Nº 4 Iteración Trabajo Práctico Nº 4 Iteración Ejercicio 1: Realice una traza y muestre la salida de cada secuencia de instrucciones. for i:= 0 to 0 do for i:= 1 to -1 do for i:= 1 downto 0 do Ejercicio 2: Escriba un

Más detalles

Programación de Sistemas Concurrentes y Distribuidos 1 a Convocatoria curso 12/13

Programación de Sistemas Concurrentes y Distribuidos 1 a Convocatoria curso 12/13 Programación de Sistemas Concurrentes y Distribuidos 1 a Convocatoria curso 12/13 5 de febrero de 2013 Dpto. de Informática e Ingeniería de Sistemas Universidad de Zaragoza Ejercicio 1 (1.5 ptos.) Considérese

Más detalles

Equivalencia de herramientas. Implementar las primitivas de los semáforos a partir de las regiones críticas condicionales. (2.5pt)

Equivalencia de herramientas. Implementar las primitivas de los semáforos a partir de las regiones críticas condicionales. (2.5pt) INGENIERÍA TÉCNICA en INFORMÁTICA de SISTEMAS ASIGNATURA: PROGRAMACIÓN CONCURRENTE CÓDIGO ASIGNATURA: 403182/533012 MATERIAL AUXILIAR: NINGUNO DURACIÓN: 2 horas Fecha 25 de Enero de 2005 CONTACTO : programacion.concurrente@lsi.uned.es

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN LABORATORIO SESIÓN 2

FUNDAMENTOS DE PROGRAMACIÓN LABORATORIO SESIÓN 2 FUNDAMENTOS DE PROGRAMACIÓN LABORATORIO SESIÓN 2 EJERCICIO 1 VALIDACIÓN DE DATOS DE ENTRADA Modificar el programa del cálculo del MCD de dos números enteros positivos para validar los datos de entrada

Más detalles

Uso de recursos compartidos

Uso de recursos compartidos Uso de recursos compartidos Cada proceso o hebra se ejecuta de forma independiente. Sin embargo, cuando varias hebras (o procesos) han de acceder a un mismo recurso, se ha de coordinar el acceso a ese

Más detalles

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura. Arreglos en Pascal 1.- Introducción a los Arreglos. Algunos de los tipos de datos que vimos eran los tipos INTEGER, CHAR, BOOLEAN, etc.. Un arreglo, mas que un tipo de dato es una estructura que nos permite

Más detalles

APUNTES DE CÁTEDRA: ARREGLOS MULTIDIMENSIONALES

APUNTES DE CÁTEDRA: ARREGLOS MULTIDIMENSIONALES Facultad de Ciencias Exactas, Ingeniería y Agrimensura (U.N.R.) Escuela de Ciencias Exactas y Naturales Departamento de Matemática Cátedra: Computación (L.M. - P.M.) Prof. responsable: Mgr. María del Carmen

Más detalles

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi

Concurrencia, 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 detalles

Ejercicios con Monitores

Ejercicios con Monitores Ejercicios con Monitores 57. Aunque un monitor garantiza la exclusión mutua, los procedimientos tienen que ser reentrantes. Explicar por qué. 58. Demostrar que incluso si la implementación del semáforo

Más detalles

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS Procesos concurrentes y problemas en la comunicación y la sincronización Contenido 2 Concurrencia. Condiciones de carrera. Exclusión mutua

Más detalles

EXAMENES RESUELTOS DE PROGRAMACION I

EXAMENES RESUELTOS DE PROGRAMACION I EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994, Reserva Soluciones no oficiales 1.- Determinar los valores reales válidos en Modula-2: a) 56.2F-54 y 2.2

Más detalles

El problema de los Filósofos

El problema de los Filósofos El problema de los Filósofos Problemas de Programación Concurrente Solución con Semáforos Para evitar una situación de interbloqueo se limita el número de filósofos en disposición de comer a 4. PROGRAM

Más detalles

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA ESTRUCTURA SECUENCIAL Es aquélla en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta

Más detalles

Primitivas de Sincronización (continuación) MONITORES: Primitiva de alto nivel, es a nivel de lenguajes como: ADA, PASCAL, JAVA.

Primitivas de Sincronización (continuación) MONITORES: Primitiva de alto nivel, es a nivel de lenguajes como: ADA, PASCAL, JAVA. Primitivas de Sincronización (continuación) MONITORES: Primitiva de alto nivel, es a nivel de lenguajes como: ADA, PASCAL, JAVA. Carácterísticas: Construcción de alto nivel. Estructura de datos estática:

Más detalles

*** SOLUCIONES *** SISTEMAS OPERATIVOS Examen Parcial 24 de Abril de 2010

*** SOLUCIONES *** SISTEMAS OPERATIVOS Examen Parcial 24 de Abril de 2010 Calificación SISTEMAS OPERATIVOS Examen Parcial 24 de Abril de 2010 1 2 3 4 Nombre *** SOLUCIONES *** Titulación Dispone de tres horas para realizar el examen 1 (5 puntos) Test. En cada uno de los siguientes

Más detalles

Nombre y Apellidos: Especialidad y Grupo:

Nombre y Apellidos: Especialidad y Grupo: Nombre y Apellidos: Especialidad y Grupo: FUNDAMENTOS DE INFORMÁTICA 15-septiembre-2003 PROGRAMA de Estructuras repetitivas y alternativas (2 puntos) 1. Dado el módulo EjForAni.bas, modificarlo para visualizar

Más detalles

Departamento de Informática Universidad de Valladolid Campus de Segovia. TEMA 4: TIPOS ABSTRACTOS DE DATOS (TADs)

Departamento de Informática Universidad de Valladolid Campus de Segovia. TEMA 4: TIPOS ABSTRACTOS DE DATOS (TADs) Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 4: TIPOS ABSTRACTOS DE DATOS (TADs) TIPOS ABSTRACTOS DE DATOS (TADs) Introducción Un contraejemplo completo Metodología de la

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Contents 1 Tipo subrango 2 1.1 Subrangos de enteros......................... 2 1.2 Subrangos de caracteres....................... 2 1.3 Operaciones con subrangos.....................

Más detalles

Calidad del Software. Ejercicios Tema 4 Conceptos de pruebas

Calidad del Software. Ejercicios Tema 4 Conceptos de pruebas Tema 4 Conceptos de Pruebas Calidad del Software Ejercicios Tema 4 Conceptos de pruebas Calidad del Software Enfoque de Caja Blanca: Prueba del camino básico FUNCIÓN PASCAL Especificar un conjunto de pruebas

Más detalles

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el???

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Apuntes elaborados por: Aaron Asencio, duardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Tema 9: rafos Los grafos no son más que la versión general de un árbol, es decir, cualquier nodo de

Más detalles

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación) Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación) Dr. http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca,

Más detalles

Prueba objetiva 2 - Clave b

Prueba objetiva 2 - Clave b Normas Prueba objetiva 2 - Clave b Concurrencia 2011-2012 - Segundo semestre Lenguajes, Sistemas Informáticos e Ingeniería de Software Este es un cuestionario que consta de 7 preguntas en 7 páginas. Todas

Más detalles

Lección 10: Ejemplos de programación con semáforos

Lección 10: Ejemplos de programación con semáforos Lección 10: Ejemplos de programación con semáforos El problema de la cena de los filósofos El problema de los lectores y escritores Ejercicios Gestión de concurrencia mediante paso de testigo (implementación

Más detalles

Programación de Sistemas Concurrentes y Distribuidos 2 a Convocatoria curso 12/13

Programación de Sistemas Concurrentes y Distribuidos 2 a Convocatoria curso 12/13 Programación de Sistemas Concurrentes y Distribuidos 2 a Convocatoria curso 12/13 13 de septiembre de 2013 Dpto. de Informática e Ingeniería de Sistemas Universidad de Zaragoza Ejercicio 1 (2.0 ptos.)

Más detalles

Secciones críticas y exclusión mutua

Secciones críticas y exclusión mutua Secciones críticas y exclusión mutua Lecturas: Andrews, secciones 3.1, 3.2, 3.3, 3.4 Ben-Ari, sección 2.2 Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la

Más detalles

Primer Parcial. Programación 1 Instituto de Computación Año 2017

Primer Parcial. Programación 1 Instituto de Computación Año 2017 Nº Parcial: Nombre: CI: Primer Parcial. Programación 1 Instituto de Computación Año 2017 a) -1919293949 b) -1-1-1-1-1-1 c) 01020304050 d) No imprime nada e) 012345 Respuesta: 3 Observaciones: Cada ejercicio

Más detalles

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Junio de 2016

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Junio de 2016 Trabajo Práctico - Junio de 2016 INSTRUCCIONES El trabajo práctico debe realizarse de manera individual. No debe realizarse en grupo. Se penalizará cualquier uso compartido de las soluciones propuestas

Más detalles

Procesamiento de Lenguajes (PL) Curso 2014/2015. Práctica 1: analizador descendente recursivo

Procesamiento de Lenguajes (PL) Curso 2014/2015. Práctica 1: analizador descendente recursivo Procesamiento de Lenguajes (PL) Curso 2014/2015 Práctica 1: analizador descendente recursivo Fecha y método de entrega La práctica debe realizarse de forma individual, como las demás prácticas de la asignatura,

Más detalles

Estructuras de Programación

Estructuras de Programación Apunte del curso ALGORITMOS y PROGRAMACIÓN (FI-UBA, Prof. Ing. F. J. LAGE, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez Estructuras de Programación Todo programa puede

Más detalles

28/10/2016. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias

28/10/2016. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias. Procesamiento de Secuencias Un tipo particular de problemas para el cual resulta adecuada la iteración es el procesamiento de secuencias de valores. Dra. Jessica Andrea Carballi jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de

Más detalles

Hay tres juegos, que se juegan utilizando las mismas fichas y tablero, pero con distintas estrategias, y complejidad:

Hay tres juegos, que se juegan utilizando las mismas fichas y tablero, pero con distintas estrategias, y complejidad: Serie 302 del Pacru Idiomas y más información Si esta información no está en su idioma, visite la página web www.pacru.com, seleccione el idioma que quiere e imprima las reglas. En este folleto tiene toda

Más detalles

Unidad 1: Gestión de Procesos

Unidad 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 detalles

REM Visualizar por pantalla los números de Fibonacci REM comprendidos dentro de los límites del intervalo [a,b]. REM

REM Visualizar por pantalla los números de Fibonacci REM comprendidos dentro de los límites del intervalo [a,b]. REM Nombre y Apellidos: Especialidad y Grupo: FUNDAMENTOS DE INFORMÁTICA 9-febrero-2001 PROGRAMA de Estructuras repetitivas y alternativas (2.5 puntos) 1. Los números de Fibonacci constituyen una serie en

Más detalles

Si L es recursivo, entonces es recursivamente numerable

Si L es recursivo, entonces es recursivamente numerable Si L es recursivo, entonces es recursivamente numerable Slide 19 program GeneraRec (output); procedure sgte (var x: string); (* calcula la siguiente x en el orden natural *) begin... end; var x: string;

Más detalles

Programación concurrente

Programación concurrente Programación concurrente Master de Computación I Conceptos y recursos para la programación concurrente: I.6 Sincronización basada en memoria compartida. J.M. Drake M. Aldea Procesos concurrentes y memoria

Más detalles

1.2.4 Listas enlazadas

1.2.4 Listas enlazadas 1.2.4 Listas enlazadas Las listas enlazadas son tipos de datos dinámicos que se construyen con nodos. Un nodo es un registro con al menos, dos campos, uno de ellos contiene las componentes y se le denomina

Más detalles

TEMA 7: INICIO A LA PROGRAMACIÓN CON SCRATCH

TEMA 7: INICIO A LA PROGRAMACIÓN CON SCRATCH TEMA 7: INICIO A LA PROGRAMACIÓN CON SCRATCH Scrath es un entorno de programación visual y multimedia destinado a la realización de secuencias animadas con o sin sonido y al aprendizaje de la programación.

Más detalles

INICIACIÓN A LA PROGRAMACIÓN: SCRATCH

INICIACIÓN A LA PROGRAMACIÓN: SCRATCH INICIACIÓN A LA PROGRAMACIÓN: SCRATCH Scrath es un programa gratuito que te permite trabajar online, en su web, o instalando el programa en tu propio ordenador. La versión online http://www.scartach.mit.edu,

Más detalles

SISTEMAS OPERATIVOS:

SISTEMAS OPERATIVOS: SISTEMAS OPERATIVOS: Lección 6: Procesos concurrentes y problemas en la comunicación y la sincronización Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García

Más detalles

ISO Tema 8,

ISO Tema 8, ISO Tema 8, 2017-2018 Pablo González Nalda Depto. de Lenguajes y Sistemas Informáticos 13 de abril de 2018 Modificado el 27 de abril de 2018 de la presentación 1 2 3 4 5 6 7 2 / 32 1 2 3 4 5 6 7 3 / 32

Más detalles

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Septiembre de 2017

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Septiembre de 2017 Trabajo Práctico - Septiembre de 2017 INSTRUCCIONES El trabajo práctico debe realizarse de manera individual. No debe realizarse en grupo. Se penalizará cualquier uso compartido de las soluciones propuestas

Más detalles

EJERCICIOS PARA EMPEZAR CON PHP

EJERCICIOS PARA EMPEZAR CON PHP EJERCICIOS PARA EMPEZAR CON PHP EJERCICIO 1: MOSTRAR VALORES Cargar en dos variables tu nombre, tu apellido y tu edad e insertarlos en la frase Mi nombre es y tengo años EJERCICIO 2: CALCULAR UN PORCENTAJE

Más detalles

Comunicación y sincronización

Comunicació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 detalles

El objetivo de este ejemplo es cargar 2 arrays aleatoriamente con Random y después mostrar la suma de esos arrays en un nuevo array.

El objetivo de este ejemplo es cargar 2 arrays aleatoriamente con Random y después mostrar la suma de esos arrays en un nuevo array. BIDIMENSIONALES VISUAL STUDIO ~ 1 ~ SUMA DE 2 ARRAYS El objetivo de este ejemplo es cargar 2 arrays aleatoriamente con Random y después mostrar la suma de esos arrays en un nuevo array. RANDOM Clase Random:

Más detalles

Tema 2.- Ordenación (Parte I)

Tema 2.- Ordenación (Parte I) En la elaboración de estos apuntes han participado los siguientes alumnos: Helena Hernández Obregón (Curso 200/2002), Eduardo Quevedo, Raquel González y Aarón Asencio (Curso 2003/200). Actualizado por

Más detalles

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Tipos y Estructuras de Control Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Datos: variables y constantes Tipos básicos: entero, real, char, lógico Estructuras de control

Más detalles

Práctica parcial: el juego del pinball, parte 1

Práctica parcial: el juego del pinball, parte 1 Programación I Práctica parcial: el juego del pinball, parte 1 (ENTREGA OBLIGATORIA) El objetivo de esta práctica es implementar un juego de pinball. Como sabréis el juego consiste en controlar los desplazamientos

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (3 puntos) Dado una lista L, cuyo contenido son números enteros y están ordenados en orden ascendente, escribir en Java un programa óptimo que crea y devuelve dos listas: una de pares y otra

Más detalles

Examen de Lenguajes de Alto Nivel

Examen de Lenguajes de Alto Nivel Examen de Lenguajes de Alto Nivel Septiembre 2004 Cuestiones (4 cuestiones, 4 puntos en total; contestar brevemente de forma razonada) 1) Se dispone del siguiente paquete con un procedimiento P que puede

Más detalles

Programa-Me 2013 Regional on line Problemas

Programa-Me 2013 Regional on line Problemas First, solve the problem. Then, write the code John Johnson. Programa-Me 2013 Regional on line Problemas 6 de marzo de 2013 Universidad Complutense de Madrid I.E.S. Antonio de Nebrija (Móstoles) http://www.programa-me.com

Más detalles

Primer Parcial. Programación 1 Instituto de Computación Año 2011

Primer Parcial. Programación 1 Instituto de Computación Año 2011 No. Parcial: Nombre: CI: Primer Parcial. Programación 1 Instituto de Computación Año 2011 Observaciones: Cada ejercicio tiene una única opción correcta. Una respuesta correcta suma 2 puntos Una respuesta

Más detalles

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura: 1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura: PROGRAM Nombre_del_programa; ZONA de DECLARACIONES ZONA de INSTRUCCIONES

Más detalles

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica. EQUIVALENCIAS BÁSICAS ENTRE PASCAL Y C A continuación se presentan algunas equivalencias básicas entre estos lenguajes de programación : Operadores en lenguaje C: Operador Descripción % Módulo = Asignación

Más detalles

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Sistemas Computacionales Sistemas Operativos Docente: M.G.A.

Más detalles

Apellidos: Nombre: Matrícula: UNIVERSIDAD POLITÉCNICA DE MADRID

Apellidos: Nombre: Matrícula: UNIVERSIDAD POLITÉCNICA DE MADRID Apellidos: Nombre: Matrícula: Concurrencia (parte 2)/clave: a Curso 2014/2015-2 o semestre (junio 2015) Grado en Ingeniería Informática / Grado en Matemáticas e Informática UNIVERSIDAD POLITÉCNICA DE MADRID

Más detalles

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa PROGRAMACIÓN 10. Prof. Dolores Cuiñas H. Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada APUNTES Nº 4 ESTRUCTURA SECUENCIAL GENERAL La estructura secuencial

Más detalles

Tema 7: Árbol Binario

Tema 7: Árbol Binario Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema 7: Árbol Binario En el árbol binario se combina lo mejor del array (acceso rápido a elementos,

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Más detalles

Estados de un proceso

Estados de un proceso Semáforos Estados de un proceso Inactivo Listo Ejecutando Completo Escribimos p.state := ready p. state := running Bloqueado Para indicar que un proceso cambia de estado Semáforo Es un tipo de dato abstracto

Más detalles

col Type mismatch línea 1 3A Type mismatch c$ + j línea 2

col Type mismatch línea 1 3A Type mismatch c$ + j línea 2 Nombre y Apellidos: Especialidad y Grupo: FUNDAMENTOS DE INFORMÁTICA 6-septiembre-2002 CUESTIÓN de Estructuras repetitivas y alternativas (2 puntos) 1. Suponiendo que el usuario teclea los datos 1, 2,

Más detalles

Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017

Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017 Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017 Para cada uno de los dos problemas siguientes, hay que explicar cómo se

Más detalles

1. Lenguaje Pascal. 2. Módulos de un Programa. 3. Tipos de Datos más utilizados. 4. Declaración de Variables

1. Lenguaje Pascal. 2. Módulos de un Programa. 3. Tipos de Datos más utilizados. 4. Declaración de Variables 1. Lenguaje Pascal Se procederá a la comparación de las estructuras de programación utilizadas en pseudocódigo con las respectivas en lenguaje Pascal. Para ello, se seguirá de manera análoga a la descripción

Más detalles

EJERCICIOS DE GRAFOS DE JUEGO

EJERCICIOS DE GRAFOS DE JUEGO Universidad de lcalá Departamento de iencias de la omputación lgoritmia y omplejidad EJERIIOS DE GRFOS DE JUEGO Ejercicio 1). Se dispone de una matriz M de tamaño Fx (F es la cantidad de filas y la cantidad

Más detalles

Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:

Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es: 25. Algoritmos heurísticos 25.1 Concepto de heurística. Se denomina heurística al arte de inventar. En programación se dice que un algoritmo es heurístico cuando la solución no se determina en forma directa,

Más detalles

Tema 6. Gestión de Interbloqueo

Tema 6. Gestión de Interbloqueo Tema 6. Gestión de Interbloqueo Introducción (I) Protocolo de acceso a recursos compartidos: Solicitud. Utilización. Liberación. El sistema operativo suspende a los procesos cuyas solicitudes no pueden

Más detalles

UTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010

UTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010 Práctico de Pascal Nº 2 Ejercicios para la ejercitación del Lenguaje Pascal Objetivo: Es que los alumnos conozcan un lenguaje de programación, donde puedan ejercitar los conocimiento adquiridos hasta ahora

Más detalles

La Máquina de Acceso Aleatorio (Random Access Machine)

La Máquina de Acceso Aleatorio (Random Access Machine) La Máquina de Acceso Aleatorio (Random Access Machine) Nuestro modelo de cómputo secuencial es la máquina de acceso aleatorio (RAM, Random Access Machine) mostrada en la Figura 2.1, y que consiste de:

Más detalles

FUNDAMENTOS DE OBJECT PASCAL

FUNDAMENTOS DE OBJECT PASCAL FUNDAMENTOS DE OBJECT PASCAL 1. ASPECTOS GENERALES DE LA SINTAXIS Los bloques de código quedan delimitados por y end. Se usa punto y coma como separador de sentencias de código. Comentarios: - ias líneas:

Más detalles

Estructuras de Control. Secuencia y Selección

Estructuras de Control. Secuencia y Selección Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 Contents 1 Estructuras de control 2 1.1 Clasificación.............................. 2 1.2 La secuencia..............................

Más detalles

Prueba objetiva 2 - Clave a

Prueba 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 detalles

Prueba objetiva 2 (4F1M) - Clave a

Prueba 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 detalles

Sentencias iterativas

Sentencias iterativas Sentencias iterativas 1. Objetivos Al finalizar esta actividad, serás capaz de: 1. Utilizar adecuadamente la sentencia while para generar la repetición en la ejecución de grupos de sentencias 2. Motivación

Más detalles

Arboles. Definiciones formales: 1) un árbol es un grafo acíclico finito T (P, E) tal que. P = E + 1 => todo arco es desconectante.

Arboles. Definiciones formales: 1) un árbol es un grafo acíclico finito T (P, E) tal que. P = E + 1 => todo arco es desconectante. Arboles Definición: Es una estructura acíclica que, en algún sentido puede ser considerado el siguiente paso en la jerarquía de complejidad estructural. Los árboles tienen son de amplia aplicación en el

Más detalles

Ubound y Lbound en Visual Basic. Conocer índice superior e inferior de arrays (arreglos) Ejemplos y ejercicios. (CU00343A)

Ubound y Lbound en Visual Basic. Conocer índice superior e inferior de arrays (arreglos) Ejemplos y ejercicios. (CU00343A) aprenderaprogramar.com Ubound y Lbound en Visual Basic. Conocer índice superior e inferior de arrays (arreglos) Ejemplos y ejercicios. (CU00343A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha

Más detalles

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Ciclos. 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 detalles

Modelo de Cómputo. Programación concurrente

Modelo de Cómputo. Programación concurrente Programa concurrente Programa concurrente: conjunto finito de procesos (secuenciales). Un proceso secuencial está escrito con un conjunto finito de acciones atómicas. Ejecución: una secuencia de acciones

Más detalles

1. Equivalencia de herramientas. Implemente las primitivas de las regiones críticas condicionales con semáforos. (2pt).

1. Equivalencia de herramientas. Implemente las primitivas de las regiones críticas condicionales con semáforos. (2pt). 1. Equivalencia de herramientas. Implemente las primitivas de las regiones críticas condicionales con semáforos. (2pt). La respuesta a esta pregunta se encuentra en el texto base de la asignatura em las

Más detalles

Ingeniería del Software II Ejercicios de OCL

Ingeniería del Software II Ejercicios de OCL Ingeniería del Software II Ejercicios de OCL Se dispone de un sistema cliente-cliente (no cliente-servidor) que permite jugar al ajedrez entre dos personas situadas en diferentes máquinas. La Figura 1

Más detalles