• No se han encontrado resultados

Convenciones de código de proyectos

In document Programación. (página 177-180)

75.5 Códigos de errores de lenguajes de programación

76.3.3 Convenciones de código de proyectos

Estándares de codificación de GNU Guía de estilo para codificación en Mozilla Guía de estilo para el núcleo Linux Guía de estilo para el código de NetBSD

Eventos del ratón

Un evento del ratón es una acción realizada por el usua- rio de una interfaz de usuario utilizando el ratón de computadora(mouse). La interpretación de estas accio- nes mediante software desarrollado para ello, permite ejecutar unafunciónasociada a dicha acción.

Algunos ejemplos de eventos de ratón son:

• mouse over: se produce cuando elcursoro puntero del ratón se encuentra por encima de una determi- nada zona.

• mouse out: se produce cuando el cursor abandona

una determinada zona.

• mouse clicked: se produce cuando se pulsa un botón

del ratón.

• mouse double-clicked: se produce cuando se pulsa

dos veces en un intervalo pequeño de tiempo un mis- mo botón del ratón.

La programación de los eventos del mouse se lleva a cabo mediante llamadas a rutinas específicas que se ejecutan cuando se produce una acción. Además, la acción que se llevará a cabo será diferente dependiendo de en qué par- te de la pantalla se sitúe este, por ejemplo, si se pulsa el botón izquierdo y el puntero está en una parte externa a una aplicación, no ocurrirá nada, pero si por el contrario, en puntero se encuentra sobre un área que contiene un botón, al pulsar sobre el ratón se deberá ejecutar la rutina asociada a ese botón.

77.1 Véase también

Clic (informática) Doble clic

Capítulo 78

Exclusión mutua (informática)

Losalgoritmosde exclusión mutua (comúnmente abre- viada como mutex por mutual exclusion) se usan en

programación concurrentepara evitar el ingreso a sus sec- ciones críticas por más de un proceso a la vez. Lasección críticaes el fragmento de código donde puede modificar- se un recurso compartido.

La mayor parte de estos recursos son las señales, conta- dores, colas y otros datos que se emplean en la comuni- cación entre el código que se ejecuta cuando se da servi- cio a unainterrupcióny el código que se ejecuta el resto del tiempo. Se trata de un problema de vital importan- cia porque, si no se toman las precauciones debidas, una interrupción puede ocurrir entre dos instrucciones cua- lesquiera del código normal y esto puede provocar graves fallos.

La técnica que se emplea por lo común para conseguir la exclusión mutua es inhabilitar lasinterrupcionesdurante el conjunto de instrucciones más pequeño que impedi- rá la corrupción de la estructura compartida (la sección crítica). Esto impide que el código de la interrupción se ejecute en mitad de la sección crítica.

En un sistemamultiprocesadorde memoria compartida, se usa la operación indivisibletest-and-setsobre una ban- dera, para esperar hasta que el otro procesador la despeje. La operación test-and-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador. Así, cuando el código deja la sección crítica, se despeja la bandera. Esto se conoce comospin lockoespera activa.

Algunos sistemas tienen instrucciones multioperación in- divisibles similares a las anteriormente descritas para ma- nipular laslistas enlazadasque se utilizan para las colas de eventos y otrasestructuras de datosque lossistemas operativosusan comúnmente.

La mayoría de los métodos de exclusión mutua clásicos intentan reducir la latencia y espera activa mediante las colas ycambios de contexto. Algunos investigadores afir- man que las pruebas indican que estos algoritmos espe- ciales pierden más tiempo del que ahorran.

A pesar de todo lo dicho, muchas técnicas de exclu- sión mutua tienen efectos colaterales. Por ejemplo, los

semáforospermiten interbloqueos (deadlocks) en los que un proceso obtiene un semáforo, otro proceso obtiene el

semáforo y ambos se quedan a la espera de que el otro proceso libere el semáforo. Otros efectos comunes inclu- yen laInanición, en el cual un proceso esencial no se eje- cuta durante el tiempo deseado, y la inversión de priori-

dades, en el que una tarea de prioridad elevada espera por

otra tarea de menor prioridad, así como la latencia alta en la que la respuesta a las interrupciones no es inmediata. La mayor parte de la investigación actual en este campo, pretende eliminar los efectos anteriormente descritos. Si bien no hay un esquema perfecto conocido, hay un in- teresante esquema no clásico de envío de mensajes entre fragmentos de código que, aunque permite inversiones de prioridad y produce una mayor latencia, impide los inter- bloqueos.

Algunos ejemplos de algoritmos clásicos de exclusión mutua son:

• Elalgoritmo de Dekker.

• Elalgoritmo de Peterson.

78.1 Véase también

Cierre de exclusión mutuao locks

Semáforo(inventado porEdsger Dijkstra)

Monitor (concurrencia)(inventado por C. A. R. Hoare) (sin interbloqueos)

Expresión regular

Una expresión regular, a menudo llamada también re-

gex, es una secuencia de caracteres que forma un patrón

de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones. Por ejemplo, el grupo formado por las ca- denas Handel,Händely Haendel se describe con el patrón “H(a|ä|ae)ndel”. La mayoría de las formalizaciones pro- porcionan los siguientes constructores: una expresión re- gular es una forma de representar a loslenguajes regula- res(finitos o infinitos) y se construye utilizandocaracteres

delalfabetosobre el cual se define ellenguaje.

En informática, las expresiones regulares proveen una manera muy flexible de buscar o reconocer cadenas de texto.

79.1 Construcción de expresiones

regulares

Específicamente, las expresiones regulares se construyen utilizando los operadoresunión,concatenaciónyclausura de Kleene. Toda expresión regular tiene algún autómata finito asociado.

Alternación Una barra vertical separa las alternativas.

Por ejemplo,“marrón|castaño”se corresponde con

marrón o castaño.

Cuantificación Un cuantificador tras un carácter espe-

cifica la frecuencia con la que éste puede ocurrir. Los cuantificadores más comunes son ?, + y *:

? El signo de interrogación indica que el carácter

que le precede puede aparecer como mucho una vez. Por ejemplo, “ob?scuro”se corres- ponde con oscuro y obscuro.

+ El signo más indica que el carácter que le prece-

de debe aparecer al menos una vez. Por ejem- plo,“ho+la”describe el conjunto infinito hola,

hoola, hooola, hoooola, etcétera.

* El asterisco indica que el carácter que le prece-

de puede aparecer cero, una, o más veces. Por ejemplo,“0*42”se corresponde con 42, 042,

0042, 00042, etcétera.

Agrupación Los paréntesis pueden usarse para definir

el ámbito y precedencia de los demás operadores. Por ejemplo, "(p|m)adre”es lo mismo que “pa- dre|madre”, y "(des)?amor”se corresponde con

amor y con desamor.

Los constructores pueden combinarse libremente dentro de la misma expresión, por lo que“H(ae?|ä)ndel”equivale a “H(a|ae|ä)ndel”.

Lasintaxisprecisa de las expresiones regulares cambia según las herramientas y aplicaciones consideradas, y se describe con más detalle a continuación.

In document Programación. (página 177-180)