0% encontró este documento útil (0 votos)
702 vistas300 páginas

Topicos Selectos Programacion ISC

Cargado por

Inya Reyes
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
702 vistas300 páginas

Topicos Selectos Programacion ISC

Cargado por

Inya Reyes
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

Tpicos selectos de Programacin

Unida Temas Subtemas d 1 Tipos de datos 1.1 Agregacin de datos (struct). definidos por el usuario. 1.2 Uniones de datos (union). 1.3 Registros variantes. 1.4 Tipos de datos enumerados. 1.5 Manejo de bits. 1.6 Campos de bits. 1.7 Operaciones con Bits ( AND, OR, NOT, XOR). 2 3 Creacin de componentes y libreras dinmicas Programacin concurrente multihilo. 2.1 Creacin de componentes. 2.2 Creacin de libreras dinmicas. 3.1 Concepto de Hilo. 3.2 Comparacin de un programa de flujo nico contra uno de flujo mltiple. 3.3 Creacin y control de hilos. 3.3.1 Atributos de hilos. 3.3.2 Creacin e Inicializacin de hilos. 3.3.3 Arranque de hilos. 3.3.4 Manipulacin de hilos. 3.3.5 Suspensin de hilos. 3.3.6 Parada de hilos. 3.4 Sincronizacin de hilos. 3.4.1 Mutex. 3.4.2 Semforos. 3.4.3 Barreras (Barrier). 4.1 Creacin de interfaz grfica para usuarios. 4.1.1 Librera de interfaz grfica (APIs). 4.1.2 Aplicaciones GUI. 4.2 Computacin grfica. 4.2.1 rea de dibujo. 4.2.2 Primitivas de dibujo (lnea, arco, circulo, colores, rellenos, imgenes). 5.1 Introduccin a la multimedia. 5.2 Componentes de un sistema multimedia. 5.3 Formatos de archivo multimedia. 5.4 Creacin y manipulacin de objetos con formatos de archivo grfico comunes (GIF, TIFF, JPEG, WMF).

Interfaz Grfica de Usuario (GUI).

Multimedia.

5.5 Creacin y manipulacin de objetos con formatos de animacin y video comunes (AVI, QUICKTIME, MPEG, GIF animado). 5.6 Creacin y manipulacin de objetos con formatos de audio (compresin de sonido, formato MIDI, MP3). 5.7 Integracin de los elementos multimedia. 5.8 Interactividad. 6 Programacin de puertos e interrupciones. 6.1 Interrupciones. 6.2 Generalidades de los puertos. 6.3 Puerto serial y sus variantes. 6.3.1 USB. 6.3.2 Infrarrojo. 6.3.3 Fire wire. 6.4 Paralelo y sus variantes. 6.5 Interrupciones que intervienen en cada puerto. 6.5.1 Direcciones bases. 6.5.2 Registros. 6.6 Envo y recepcin de los datos. 6.7 Ejemplos de programacin entre puertos y dispositivos.

Unidad 1. Tipos de datos definidos por el usuario.


1.8 Agregacin de datos (struct).

Estructuras
En C una estructura es una coleccin de variables que se referencian bajo el mismo nombre. Una estructura proporciona un medio conveniente para mantener junta informacin que se relaciona. Una definicin de estructura forma una plantilla que se puede usar para crear variables de estructura. Las variables que forman la estructura son llamados elementos estructurados. Generalmente, todos los elementos en la estructura estn relacionados lgicamente unos con otros. Por ejemplo, se puede representar una lista de nombres de correo en una estructura. Mediante la palabra clave struct se le indica al compilador que defina una plantilla de estructura.
struct direc {

};

char nombre[30]; char calle[40]; char ciudad[20]; char estado[3]; unsigned int codigo;

Con el trozo de cdigo anterior no ha sido declarada ninguna variable, tan slo se ha definido el formato. Para declarar una variable, se har como sigue:
struct direc info_direc;

Se pueden declarar una o ms variables cuando se define una estructura entre ) y ;. Por ejemplo:
struct direc { char nombre[30]; char calle[40]; char ciudad[20]; char estado[3]; unsigned int codigo; } info_direc, binfo, cinfo;

observar que direc es una etiqueta para la estructura que sirve como una forma breve para futuras declaraciones. Como en este ltima declaracin se indican las variables con esta estructura, se puede omitir el nombre de la estructura tipo. Las estructuras pueden ser tambin preinicializadas en la declaracin:
struct direc info_direc={"Vicente Fernandez","Fantasia 2000","Dorado","MMX",12345};

Para referenciar o accesar un miembro (o campo) de una estructura, C proporciona el operador punto ., por ejemplo, para asignar a info_direc otro cdigo, lo hacemos como:
info_direc.codigo=54321;

7.1.1 Definicin de nuevos tipos de datos


Se sealo previamente (seccin 2.4.1) que typedef se puede usar para definir nuevos nombres de datos explictamente, usando algunos de los tipos de datos de C, donde su formato es: typedef <tipo> <nombre>; Se puede usar typedef para crear nombres para tipos ms complejos, como una estructura, por ejemplo:
typedef struct direc { char nombre[30]; char calle[40]; char ciudad[20]; char estado[3]; unsigned int codigo; } sdirec; sdirec info_direc={"Vicente Fernandez","Fantasia 2000","Dorado","MMX",12345};

en este caso direc sirve como una etiqueta a la estructura y es opcional, ya que ha sido definido un nuevo tipo de dato, por lo que la etiqueta no tiene mucho uso, en donde sdirec es el nuevo tipo de datos e info_direc es una variable del tipo sdirec, la cual es una estructura. Con C tambin se pueden tener arreglos de estructuras:
typedef struct direc { char nombre[30]; char calle[40]; char ciudad[20]; char estado[3]; unsigned int codigo; } info_direc; info_direc artistas[1000];

por lo anterior, artistas tiene 1000 elementos del tipo info_direc. Lo anterior podra ser accesado de la siguiente forma:
artistas[50].codigo=22222;

Estructuras en C 1.-Una Estructura es una coleccin de variables simples, que pueden contener diferentes tipos de datos. Es un tipo de dato definido por el usuario. Son tambin conocidas como Registros. Ayudan a organizar y manejar datos complicados en programas debido a que agrupan diferentes tipos de datos a las que se les trata como una sola unidad en lugar de ser vistas como unidades separadas.

1.1-La Declaracin de estructuras en programas C es un nuevo tipo de datos denominado tipo Estructura y declarar una variable de este tipo. En la definicin del tipo de estructura, se especifican los elementos que la componen as como sus tipos. Cada elemento es llamado miembro (similar a un campo de un registro).

Despus de definir un tipo estructura, se puede declarar una o ms variables de ese tipo de la siguiente forma: struct tipo_estructura [variables];

Definicin de variables de esta estructura : struct a, b; O tambin se pueden definir la estructura y sus variables al mismo tiempo:

1.2-El Acceso a los Miembros de la Estructura es por medio del operador Punto de la siguiente manera:

Los miembros de las Estructuras tambin se pueden Inicializar individualmente o bien, todos simultneamente. La inicializacin individual es por medio del operador punto, para la estructura completa es con caracteres llaves y los valores de los miembros separados por coma. Iniciando solo por miembros: [Link]=1234; Iniciando Estructura completa: Articulo a={1234, "escoba", 23, 1.50};

1.3-Arreglos de Estructuras pueden ser construidas, es decir, conceptuar a los elementos de un arreglo como estructuras, esto se puede hacer de la siguiente manera:

Para tener acceso a una determinada estructura , se indexa el nombre de la estructura de la siguiente manera: alumnos[i].nombre; aqu sabemos el nombre del alumno que se encuentra en la posicin i del arreglo, y de esta manera para todos los datos. Si se desea inicializar los valores, se podra hacer de la siguiente manera: Struct [Link][5]={96147523, "Luis", 22, "m", pino 45};

Estructuras Anidadas. El siguiente ejemplo muestra una estructura anidada. Las estructuras que hemos visto han sido muy sencillas aunque tiles. Es posible definir estructuras conteniendo docenas y an cientos miles de elementos pero sera ventajoso para el programador no definir todos los elementos en una pasada sino utilizar una definicin de estructura jerrquica.

La primera estructura contiene tres elementos pero no le sigue ninguna variable definida, slo una estructura, pero como incluimos un nombre al principio de la estructura, la estructura es llamada persona. La palabra persona puede utilizarse para referirse a la estructura pero no a cualquier variable de ste tipo de estructura, se trata por lo tanto de un nuevo tipo que hemos definido y lo podemos utilizar de la misma manera en que usamos un int, char o cualquier otro tipo que existe en C. La nica restriccin es que ste nuevo tipo debe estar siempre asociado con la palabra clave struct.

La siguiente definicin de estructura contiene tres campos siendo el segundo la estructura previamente definida la cual llamamos persona. La variable de tipo persona se llama descripcion, as la nueva estructura contiene dos variables simples, calificacion y una cadena llamada comida, y la estructura llamada descripcion. Como descripcion contiene tres variables, la nueva estructura tiene entonces cinco variables, a sta estructura le hemos dado el nombre de datos, lo cual es otro tipo definido. Finalmente, dentro de la funcin main ( ) definimos un array de 53 variables cada una con la estructura definida por el tipo datos, y cada una con el nombre estudiante, en total hemos definido 53 veces 5 variables, cada una de las cuales es capaz de almacenar datos. Como tenemos la definicin de un nuevo tipo podemos utilizarla para a su vez definir dos variables. Las variables maestro y sub estn definidas en la lnea 20 como variables de tipo datos por lo que cada una de stas dos variables contienen 5 campos en los cuales podemos almacenar datos. En las lneas 22 a 26 del programa asignamos valores a cada uno de los campos de maestro. El primero es el campo calificacion y es manejado como las otras estructuras que hemos estudiado porque no forma parte de la estructura anidada. Enseguida deseamos asignar un valor a edad el cual es parte de la estructura anidada. Para acceder a ste campo empezamos con el nombre de la variable maestro al cual le concatenamos el nombre del grupo descripcion, y entonces debemos definir en cul campo de la estructura anidada estamos interesados por lo que concatenamos el nombre de la variable edad. El estado de los maestros se manejan de la misma manera que su edad pero los ltimos dos campos son cadenas asignadas utilizando la funcin strcpy ( ). Observe que los nombres de las variables en la funcin strcpy ( ) se consideran como una unidad aunque estn compuestas de varias partes. Compile y ejecute el programa, probablemente obtenga un aviso sea de error advertencia respecto a un desbordamiento de memoria. Lo que sto significa es que el programa requiere ms memoria que la asignada por el compilador por lo que es necesario incrementar el tamao de stacks, el mtodo para hacer sto vara de un compilador a otro.

Estructuras de datos
struct Es anloga al constructor record de Pascal. Su sintaxis es: struct nombre { tipo miembro1; tipo miembro2; ... } identificador1, identificador2, ...; Nombre es el nombre de la estructura y los identificadores corresponden a variables del tipo de la estructura. Tanto el nombre como las variables pueden no existir. Los miembros son las componentes de la estructura. La forma de declarar variables del tipo definido en la estructura es: [cualificador] struct nombre identificador1, identificador2, ...; Para acceder a los campos de la estructura se usa la misma tcnica que en Pascal: [Link] Se admite el uso de estructuras dentro de la declaracin de otra estructura ya que los miembros, en general, pueden tener cualquier tipo. struct fecha { int mes; int da;

int ao; }; /* Estructura fecha */ struct cuenta { int cuen_no; char cuen_tipo; float saldo; struct fecha ultimo_pago; } cliente[100]; /* Estructura cuenta y declaracin */ struct cuenta clientes[20]; clientes[0].cuen_no = cliente[99].ultimo_pago.anio; Figura 6 Ejemplo de struct

1.9 Uniones de datos (union).

Una union es una variable la cual podra guardar (en momentos diferentes) objetos de diferentes tamaos y tipos. C emplea la sentencia union para crear uniones por ejemplo:
union numero { short shortnumero; long longnumero; double floatnumero; } unumero;

con lo anterior se define una unin llamada numero y una instancia de esta llamada unumero. numero es la etiqueta de la unin y tiene el mismo comportamiento que la etiqueta en la estructura. Los miembros pueden ser accesados de la siguiente forma:
printf("%ld\n",[Link]);

con la llamada a la funcin se muestra el valor de longnumero. Cuando el compilador de C esta reservando memoria para las uniones, siempre crear una variable lo suficientemente grande para que quepa el tipo de variable ms largo de la unin. Con la finalidad de que el programa pueda llevar el registro del tipo de la variable unin usada en un momento dado, es comn tener una estructura (con una unin anidada) y una variable que indica el tipo de unin. Se muestra un ejemplo de lo anterior:
typedef struct { int maxpasajeros; } jet; typedef struct { int capac_elev; } helicoptero;

typedef struct { int maxcarga; } avioncarga; typedef union { jet jetu; helicoptero helicopterou; avioncarga avioncargau; } transporteaereo; typedef struct { int tipo; int velocidad; transporteaereo descripcion; } un_transporteaereo

en el ejemplo se define una unin base de transporte areo el cual puede ser un jet, un helicptero o un avion de carga. En la estructura un_transporeaereo hay un miembro para el tipo, que indica cual es la estructura manejada en se momento.

Uniones en C
2.-Uniones. Las uniones son similares a las estructuras, con la diferencia de que en las uniones se almacenan en los campos solapndose unos con otros en la misma disposicin; al contrario que en las estructuras, al contrario que en las estructuras, donde los campos se almacenan unos a continuacin de otros. En esencia, las uniones sirven para ahorrar espacio en memoria. Para Almacenar los miembros de una unin, se requiere una zona de memoria igual a la que ocupa el miembro mas largo de la unin. Todos los miembros son almacenados en el mismo espacio de memoria y comienzan en la misma direccin. El valor almacenado es sobreeescrito cada vez que se asigna un valor al mismo miembro o a un miembro diferente, aqu radica la diferencia con las estructuras.

2.1- La Declaracin de Unioneses similar a la de las estructuras:

Despus de definir un tipo union, se puede declarar una o mas variables de ese tipo de la siguiente forma: union tipo_union [variables]; Una declaracin union define un tipo. La llave derecha que temina la lista de miembros puede ser seguida por una lista de variables de la siguiente manera:

Dicho de una forma simple, una unin le permite manejar los mismos datos con diferentes tipos, utilizar el mismo dato con diferente nombre, a continuacin le presento un ejemplo:

En ste ejemplo tenemos dos elementos en la unin, la primera parte es el entero llamado valor el cual es almacenado en algn lugar de la memoria de la computadora como una variable de dos bytes. El segundo elemento est compuesto de dos variables de tipo char llamadas primero y segundo. Estas dos variables son almacenadas en la misma ubicacin de almacenamiento que valor porque sto es precisamente lo que una unin hace, le permite almacenar diferentes tipos de datos en la misma ubicacin fsica. En ste caso Usted puede poner un valor de tipo entero en valor y despus recobrarlo en dos partes utilizando primero y segundo, sta tcnica es utilizada a menudo para empaquetar bytes cuando, por ejemplo, combine bytes para utilizarlos en los registros del microprocesador. La unin no es utilizada frecuentemente y casi nunca por programadores principiantes, en este momento no necesita profundizar en el empleo de la unin as que no dedique mucho tiempo a su estudio, sin embargo no tome a la ligera el concepto de la unin, podra utilizarlo a menudo.

[Link]
union Es una construccin anloga al registro con variante de Pascal. Al igual que las estructuras constan de varios miembros aunque stos comparten la misma ubicacin de memoria. Se usa para hacer referencia a una misma rea de memoria de varias

formas. El tamao de la unin es el tamao del miembro mayor. La forma de declarar una unin es: modificador union nombre { tipo miembro1; tipo miembro2; ... } identificador1, identificador2, ...; La forma de declarar variables del tipo unin es: cualificador union nombre variable1, variable2, ...; union palabra { Se declaran 4 variables unsigned char l[2]; a,b,c y d unsigned int x; A cada variable se puede } a,b,c,d; acceder como entero (x) o como 2 bytes (l[2]). a.x = 65535U; a.x es un entero a.l[0] = 0; a.l[0] es un byte a.l[1] = 255; a.l[1] es un byte Cunto vale a.x en este punto? Figura 7 Ejemplo de unin

1.10Registros variantes.

Una union es una variable la cual podra guardar (en momentos diferentes) objetos de diferentes tamaos y tipos. C emplea la sentencia union para crear uniones por ejemplo:
union numero { short shortnumero; long longnumero; double floatnumero; } unumero;

con lo anterior se define una unin llamada numero y una instancia de esta llamada unumero. numero es la etiqueta de la unin y tiene el mismo comportamiento que la etiqueta en la estructura. Los miembros pueden ser accesados de la siguiente forma:
printf("%ld\n",[Link]);

con la llamada a la funcin se muestra el valor de longnumero. Cuando el compilador de C esta reservando memoria para las uniones, siempre crear una variable lo suficientemente grande para que quepa el tipo de variable ms largo de la unin.

Con la finalidad de que el programa pueda llevar el registro del tipo de la variable unin usada en un momento dado, es comn tener una estructura (con una unin anidada) y una variable que indica el tipo de unin. Se muestra un ejemplo de lo anterior:
typedef struct { int maxpasajeros; } jet; typedef struct { int capac_elev; } helicoptero; typedef struct { int maxcarga; } avioncarga; typedef union { jet jetu; helicoptero helicopterou; avioncarga avioncargau; } transporteaereo; typedef struct { int tipo; int velocidad; transporteaereo descripcion; } un_transporteaereo

en el ejemplo se define una unin base de transporte areo el cual puede ser un jet, un helicptero o un avion de carga. En la estructura un_transporeaereo hay un miembro para el tipo, que indica cual es la estructura manejada en se momento. typedef Permite definir un nuevo tipo de datos en funcin de los ya existentes. Es anlogo a las declaraciones type de Pascal. La forma general de definir un nuevo tipo es: typedef tipo nuevo-tipo; nuevo-tipo es el nombre del tipo que se va a definir y tipo puede ser todo lo complicado que se quiera siempre que est definido con los tipos ya existentes. typedef struct { int mes; int da; int anio; } fecha; /* Declaracin de un nuevo

tipo llamado fecha */ fecha hoy; /* Declaracin de una variable de tipo fecha */ typedef unsigned char byte; /* Tipo byte de Pascal */ typedef unsigned int word; /* Tipo word de Pascal */ Figura 8 Ejemplos de typedef

Registros variantes
Tipos / Registros / Tipos / Punteros / A objetos Registros variantes Discriminados Puede interesar que un registro contenga partes de su estructura que puedan variar en funcin de otras. Para ello se definen los registros variantes que son un tipo especial de registros discriminados en los que la existencia de algunos campos depende del valor del discriminante. Por ejemplo:
declare type TTipoVuelo is (MILITAR, CIVIL, ENEMIGO, DESCONOCIDO); type TRegistroVuelo (Clasif: TTipoVuelo) is record Velocidad: Float; Detalles: String(1..100); case Clasif is when CIVIL => null; when MILITAR => Origen, Destino: String(1..10); when ENEMIGO | DESCONOCIDO => NivelAmenaza: Integer; end case; end record; Vuelo1: TRegistroVuelo (MILITAR); begin [Link] := "Francia "; end; Ilegal sera [Link] := 1; pues dicho campo slo para DESCONOCIDO o ENEMIGO.

es vlido

Si el discriminante lleva un valor por defecto entonces el registro es variante durante su ciclo de vida (es mutable), si no, el valor del discriminante se fija en su declaracin y no vara durante la vida del objeto. Los registros variantes en cierto modo estn sobrepasados por la extensin de los tipos etiquetados, sin embargo an son tiles en casos simples como aquellos en los que se conocen todas las posibilidades y no se desea que alguien aada una derivacin a posteriori. [Link] %C3%B3n_en_Ada_/_Texto_completo#Registros_variantes

1.11Tipos de datos enumerados.

Una enumeracin es un conjunto de constantes enteras con nombre y especifica todos los valores legales que puede tener una variable del tipo enum. La forma como se define una enumeracin es de forma parecida a como se hace con las estructuras, usando la palabra clave enum para el comienzo de un tipo de enumeracin. Su formato es:
enum

nombre_enum { lista_de_enumeracin } lista_de_variables;

Es opcional nombre_enum y lista_de_variables. La primera se usa para declarar las variables de su tipo. El siguiente fragmento define una enumeracin llamada disco que declara almacenamiento para ser de ese tipo.
enum almacenamiento { diskette, dd, cd, dvd, cinta }; enum almacenamiento disco;

Con la siguiente definicin y declaracin son vlidas las siguientes sentencias:


disco = cd; if ( disco == diskette ) printf("Es de 1440 Kb\n");

Se inicializa el primer smbolo de enumeracin a cero, el valor del segundo smbolo a 1 y as sucesivamente, a menos que se inicialice de otra manera. Por tanto,
printf("%d %d\n", dd, cinta)

muestra 1 4 en la pantalla. Se puede especificar el valor de uno o ms smbolos usando un inicializador. Para hacerlo, poner un signo igual y un valor entero despus del smbolo. Por ejemplo, lo siguiente asigna el valor 250 a cd
enum disco { diskette, duro, cd=250, dvd, cinta };

Por lo tanto los valores de los smbolos son los siguientes: diskette 0 duro 1 cd 250 dvd 251 cinta 252 C soporta cuatro especificadores de clase de almacenamiento. Son auto extern

static register Estos especifcadores le dicen al compilador como almacenar la variable que sigue. El especificador de almacenamiento precede a la declaracin de variable que tiene el formato general: especif_almac especif_tipo lista_variables; Se usa el especificador auto para declarar variables locales. Sin embargo, raramente se usa porque las variables locales son auto por defecto. Las variables static son variables permanentes en su propia funcin o archivo. Se diferencian de las variables globales porque son desconocidas fuera de sus funciones o archivo, pero mantienen sus valores entre llamadas. Esta caracterstica las hace tiles cuando se escriben funciones generales y bibliotecas de funciones. Variables static locales. Una variable esttica local es una variable local que retienen su valor entre llamadas de funcin, ya que C les crea un almacenamiento permanente. Si lo anterior no se pudiera hacer, entonces se tendran que usar variables globales -que abrira la puerta a posibles efectos laterales-. Un ejemplo de una funcin que requerira tales variables es un generador de series de nmeros que produce un nmero nuevo basado en el ltimo. A continuacin se muestra un ejemplo en donde se analiza el comportamiento de una variable auto y una variable static
void stat(); /* Prototipo de la funcion */ main() { int i; for (i=0; i<5; ++i) stat(); } void stat() { auto int a_var = 0; static int s_var = 0; printf("auto = %d, static = %d \n", a_var, s_var); ++a_var; ++s_var;

La salida del cdigo anterior es:


auto auto auto auto auto = = = = = 0, 0, 0, 0, 0, static static static static static = = = = = 0 1 2 3 4

Como se puede observar la variable a_var es creada cada vez que se llama a la funcin. La variable s_var es creada en la primera llamada y despus recuerda su valor, es decir, no se [Link]

enum Es anlogo a un tipo enumerado de Pascal. Sirve para especificar los miembros de un determinado tipo. enum nombre { miembro0 = valor0 , miembro1 = valor1 , ... } variable1, variable2, ... Las expresiones = valorX son opcionales, encargndose el compilador de asignar un valor constante a cada miembro que no la posea. enum colores {negro =-1,azul, cian, magenta, rojo = 2, blanco} fondo, borde; enum colores primer_plano; fondo = cian; Figura 9 Ejemplo de enum [Link]

1.12Manejo de bits.
Operadores de manejo de Bits Contenido 1 Sinopsis 2 Complemento a uno ~ 3 Desplazamiento izquierda << 4 Desplazamiento derecha >> 1 Sinopsis C++ dispone de 6 operadores para manejo de bits que realizan dos tipos de operaciones. Los tres primeros son operadores unarios que realizan manipulaciones en los bits del operando. Los tres siguientes son operadores binarios que realizan comparaciones lgicas entre los bits de ambos operandos, similares a las que realizan los operadores lgicos entre objetos booleanos ( 4.9.8). Son los siguientes:

5 AND lgico & 6 OR exclusivo ^ 7 OR inclusivo | 8 Asignaciones compuestas con operadores de bits

Complemento a uno

*.

<< >> & ^ |

Desplazamiento a izquierda Desplazamiento a derecha AND; compara dos bits *. .

XOR (OR exclusivo); compara dos bits OR inclusivo; compara dos bits *.

*.

Recordar que: A pesar de su nombre: "Operadores para manejo de bits", no perder de vista que todos ellos exigen operandos de tipo entero int ( 2.2.1a), que puede ser de cualquiera de sus variantes (short, long, signed o unsigned) y enumeraciones ( 4.8). Es decir, el material de partida son bytes, uno o varios, dependiendo del tipo de entero utilizado. Si los operandos no son enteros el compilador realiza la conversin pertinente ( 2.2.5). El resultado es siempre un entero del mismo tipo que los operandos. La Librera Estndar de plantillas (STL) dispone de una clase especfica bitset ( 5.1.1e1) para realizar operaciones de manejo de bits con entidades que no estn restringidas a las longitudes de los tipos enteros. Algunos de estos operadores, sealados con asterisco (*), tienen una doble posibilidad de representacin en el C++ Estndar ( 4.9.8). Son los que cuentan con un smbolo y una palabra clave. El primero (complemento ~ ) es el nico operador unario (los dems son binarios). Este smbolo es utilizado tambin como identificador de los destructores ( 4.11.2d2) No confundir los operadores de bits, & y |, con los operadores lgicos && y || ( 4.9.8) &, >>, << son sensibles al contexto (en lo relativo al tratamiento del signo) & puede ser tambin el operador de referencia de punteros ( 4.9.11b), y declarador de referencia ( 4.2.3) La librera Estndar C++ ha sobrecargado los operadores << y >> para los tipos bsicos, de forma que pueden ser utilizados como operadores de salida y entrada ( 5.3.1)

El resultado de los operadores AND, XOR y OR es independiente del orden de colocacin de sus operandos. Los operadores que gozan de esta propiedad se denominan asociativos. Viene a ser equivalente a la propiedad conmutativa de ciertos operadores aritmticos. 2 ~ Complemento a uno (palabra clave compl) Este operador unitario invierte cada bit del operando; 0 es convertido en 1 y viceversa. Sintaxis: ~cast-expresion Ejemplo: signed int s1 = ~2; int s1 = compl 2; signed int s2 = ~s1 + 2; // equivale a: signed

En la primera lnea, el complemento a uno de 2 es asignado al entero con signo s1. Tenga en cuenta que el resultado de este operador cambia el signo del operando, de ah el "signed". La representacin binaria de los los complementos a uno de los decimales 0, 1 y 2 son los que se expresan (para simplificar los representamos como un octeto): 0 == 0000 0000 1 == 0000 0001 2 == 0000 0010 ~ 0 == 1111 1111 ~ 1 == 1111 1110 ~ 2 == 1111 1101

En el epgrafe dedicado a las Formas de Representacin binaria ( 2.2.4a) se indic que en C++Builder los tipos enteros negativos se representan internamente como complemento a dos, de forma que la representacin interna de -1, -2 y -3 es: -1 == 1111 1110 + 0000 0001 == 1111 1111 -2 == 1111 1101 + 0000 0001 == 1111 1110 -3 == 1111 1100 + 0000 0001 == 1111 1101 Se comprueba as, que: ~ 0 == -1 ~ 1 == -2 ~ 2 == -3 Para verificarlo, escribimos un pequeo programa: #include <iostream.h> short signed cero = 0, uno = 1, dos = 2; int main (void) { cout << "~0 == " << ~cero << endl; cout << "~1 == " << ~uno << endl;

cout << "~2 == " << ~dos << endl; } Salida: ~0 == -1 ~1 == -2 ~2 == -3 3 << Desplazamiento a izquierda Este operador binario realiza un desplazamiento de bits a la izquierda. El bit ms significativo (ms a la izquierda) se pierde y se le asigna un 0 al menos significativo (el de la derecha). El operando derecho indica el nmero de desplazamientos que se realizarn. Recurdese que los desplazamientos no son rotaciones; los bits que salen por la izquierda se pierden, los que entran por la derecha se rellenan con ceros. Este tipo de desplazamientos se denominan lgicos en contraposicin a los cclicos o rotacionales. Sintaxis: expr-desplazada << expr-desplazamiento Descripcin: El patrn de bits de expr-desplazada sufre un desplazamiento izquierda del valor indicado por la expr-desplazamiento. Ambos operandos deben ser nmeros enteros o enumeraciones ( 4.8). En caso contrario el compilador realiza una conversin automtica de tipo. El resultado es del tipo del primer operando. expr-desplazamiento debe ser un entero positivo y menor que la longitud del primer operando (una vez promovido a entero). En caso contrario el resultado es indefinido (depende de la implementacin). Ejemplo: unsigned long x = 10; int y = 2; unsigned long z = x << y; El resultado del desplazamiento de 2 bits sobre el unsigned long x es asignado al unsigned long y sin que sea necesario ningn "casting" para el tipo resultante. Segn las premisas anteriores, los desplazamientos izquierda de valor unitario aplicados sobre los nmeros 0, 1, 2 y -3 producen los siguientes resultados: 0 == 0000 0000 == 0 1 == 0000 0001 == 2 2 == 0000 0010 == 4 0 << 1 == 0000 0000 1 << 1 == 0000 0010 2 << 1 == 0000 0100

-3 == 1111 1101 == - 6

-3 << 1 == 1111 1010

Para comprobarlo utilizamos una versin del programa anterior: #include <iostream.h> short signed cero = 0, uno = 1, dos = 2; int main (void) { cout << "0 << 1 == " << (cero << 1) << endl; cout << "1 << 1 == " << (uno << 1) << endl; cout << "2 << 1 == " << (dos << 1) << endl; } Salida: 0 << 1 == 0 1 << 1 == 2 2 << 1 == 4 Como puede comprobar el lector con cualquier otro ejemplo, el resultado del desplazamiento izquierda equivale a multiplicar por 2 el valor de la expr-desplazada. 4 >> Desplazamiento a derecha; Sintaxis: expr-desplazada >> expr-desplazamiento Ejemplo: unsigned long x = 10; unsigned long z = x >> 2; Descripcin: El patrn de bits de expr-desplazada sufre un desplazamiento derecho del valor indicado por la expr-desplazamiento. Como en el caso anterior, ambos operandos deben ser nmeros enteros o enumeraciones. En caso contrario el compilador realiza una conversin automtica de tipo. El resultado es del tipo del primer operando. expr-desplazamiento debe ser un entero positivo y menor que la longitud del primer operando (una vez promovido a entero). En caso contrario el resultado es indefinido (depende de la implementacin). El bit menos significativo (a la derecha) se pierde, pero hay que advertir que si expr-desplazada es un entero con signo y este es negativo, el resultado depende de la implementacin. Nota: En C++Builder y GNU-C++, el signo se mantiene, lo que significa que el desplazamiento se realiza contando con el signo, el nuevo bit ms significativo ser 0 si se trata de un nmero positivo y 1 si el nmero es negativo ( 2.2.4a). Por lo dems el comportamiento de este operador es anlogo al anterior (desplazamiento izquierda). Por ejemplo:

0 == 0000 0000 == 0 2 == 0000 0010 == 1

0 >> 1 == 0000 0000 2 >> 1 == 0000 0001

-2 == 1111 1110 -2 >> 1 == 1111 1111 == -1 (C++Builder & GNU-C++) -16 == 1111 0000 -16 >> 2 == 1111 1100 == -4 (C++Builder & GNU-C++) Para comprobarlo utilizamos una versin modificada del programa anterior: #include <iostream.h> short signed cero = 0, dos = 2, mdos = -2; int main (void) { cout << "0 >> 1 == " << (cero >> 1) << endl; cout << "2 >> 1 == " << (dos >> 1) << endl; cout << "-2 >> 1 == " << (mdos >> 1) << endl; } Salida: 0 >> 1 == 0 2 >> 1 == 1 -2 >> 1 == -1 Puede comprobarse que el resultado del desplazamiento derecha equivale a dividir por 2 el valor de la expr-desplazada. Ejemplos complementarios en la Librera de Ejemplos (Manejo de bits 9.4) y Orden de Almacenamiento ( 2.2.6a). 5 & AND lgico (palabra clave bitand) Este operador binario compara ambos operandos bit a bit y como resultado devuelve un valor construido de tal forma que cada bits es 1 si los bits correspondientes de los operandos estn a 1. En caso contrario devuelve 0 (ver ejemplo). Sintaxis: AND-expresion & equality-expresion Ejemplo: int x = 10, y = 20; int z = x & y; // equivale a: int z = x bitand y; En este caso el resultado del AND lgico entre los enteros 10 y 20 se aplicara al entero z. Segn las reglas del enunciado, el operador & aplicado entre los valores 2 y -2 resultara: 2 == 0000 0010 -2 == 1111 1110 -----------------0000 0010 == 2

Comprobacin: #include <iostream.h> int main (void) { cout << "2 & -2 == " << (2 & -2) << endl; } Salida: 2 & -2 == 2 Este operador se utiliza para verificar el estado de los bits individuales de un nmero, al que llamaremos incognita, mediante comparacin con un patron cuya disposicin de bits es conocida. La expresin puede ser: if (incognita & patron) { /* concordancia con el patrn */ } else { /* desacuerdo con el patrn */ } Ejemplo: Supongamos que una tarjeta de adquisicin proporciona una seal en una posicin de memoria de valor conocido. El valor depositado es un unsigned short que contiene el estado de 8 sensores de tipo ON/OFF, cuyos estados corresponden con los bits ms bajos (0 == OFF, 1 == ON). Nos interesa disparar un proceso si los sensores 2 y 5 se activan simultneamente. Sabemos ( 2.2.4a) que el unsigned short tiene un patrn de bits: 0XXX XXXX XXXX XXXX. En este caso nos interesa detectar cuando adopta el siguiente aspecto: 0XXX XXXX XXX1 XX1X. Sabemos tambin que 0000 0000 0000 0010 y 0000 0000 0001 0000 son los patrones de bits de los unsigned short 2 y 16. Con estos datos podemos construir el siguiente bucle en nuestro programa: volatile unsigned short* muestra = valor; *muestra = 0; const unsigned short bit2 = 2, bit5 = 16; while( 1 ) { // bucle continuo if ( (*muestra & bit2) && (*muestra & bit5) ) { proceso() } } Observe el uso de volatile ( 4.1.9) en la definicin del puntero muestra. Observe tambin que si la condicin hubiese sido la activacin indistinta de los sensores 2 o 5, el bucle podra ser: volatile unsigned short* muestra = valor; *muestra = 0; const unsigned short bit2y5 = 18; while( 1 ) { // bucle continuo if ( *muestra & bit2y5 ) { proceso() } } 6 ^ XOR OR exclusivo (palabra clave xor) El funcionamiento de este operador binario es parecido al AND lgico , salvo que en este caso el resultado es 1 si ambos bits son complementarios (uno es 0 y el otro 1). En caso contrario devuelve 0. Sintaxis expr-OR-exclusiva ^ AND-expresion Ejemplo:

int x = 10, y = 20; int z = x ^ y; xor y;

// equivale a: int z = x

Segn el enunciado, el operador ^ aplicado entre los valores 7 y -2 resultara: 7 == 0000 0111 -2 == 1111 1110 -----------------1111 1001 == -7 Comprobacin: #include <iostream.h> int main (void) { cout << "7 ^ -2 == " << (7 ^ -2) << endl; } Salida: 7 ^ -2 == -7 Como ejemplo supongamos una continuacin del anterior aadiendo la condicin de que, cuando se produce la condicin de disparo, debemos depositar un valor 1 en el bit 10 de la direccin de la tarjeta, para que esta (que suponemos bidireccional) conecte un servomotor. Sabemos que el valor 0XXXX XXXX XXXX XXXX de la tarjeta debe ser cambiado entonces a 0XXXX XX1X XXXX XXXX, que es el valor que escribiremos en la posicin de memoria correspondiente. Esto puede conseguirse sumando 512 al valor mostrado por la tarjeta siempre que el bit 10 sea cero. Es decir, si su forma binaria es 0XXX XX0X XXXX XXXX. En caso contrario no es necesario hacer nada, ya que entonces hay un 1 en la posicin deseada ( 0XXX XX1X XXXX XXXX ). La condicin para la accin es por tanto que: ( *muestra & 0000 0010 0000 0000 ) == 0 [1] Modificamos adecuadamente el cdigo del ejemplo anterior aadindole una sentencia: volatile unsigned short* muestra = valor; *muestra = 0; const unsigned short bit2 = 2, bit5 = 16, bit10 = 512; while( 1 ) { // bucle continuo if ( (*muestra & bit2) && (*muestra & bit5) ) { if (*muestra ^ bit10) *muestra = *muestra + bit10; } } 7 | OR inclusivo (palabra clave bitor) Este operador binario tiene un funcionamiento parecido a los anteriores (AND y XOR), salvo que en este caso el resultado es 1 si alguno de ellos est a 1. En caso contrario devuelve 0 (ver ejemplo). Sintaxis expr-OR-inclusiva | expr-OR-exclusiva

Ejemplo: int x = 10, y = 20; int z = x | y; // equivale a: int z = x bitor y; Segn el enunciado, el operador | aplicado entre los valores 6 y 13 resultara: 6 == 0000 0110 13 == 0000 1101 -----------------0000 1111 == 15 Comprobacin: #include <iostream.h> int main (void) { cout << "6 | 13 == " << (6 | 13) << endl; } Salida: 6 | 13 == 15 Ejemplo #include <iostream> using namespace std; #define CS_VREDRAW 0x0001 #define CS_HREDRAW 0x0002 typedef unsigned short WORD; void main() { // =============== WORD style = CS_HREDRAW | CS_VREDRAW; cout << "Estilo: " << style << endl; } Salida: Estilo: 3 8 Asignaciones compuestas con operadores de bits Salvo el complemento a uno (~) que es unitario, los dems operadores de menejo de bits pueden combinarse con la asignacin simple (=) para dar lugar a una asignacin compuesta ( 4.9.2). Recuerde que: x &= y; // equivale a: x = (x & y); x ^= y; // equivale a: x = (x ^ y); x |= y; // equivale a: x = (x | y); x <<= y; // equivale a: x = (x << y); x >>= y; // equivale a: x = (x >> y); Ejemplo. #include <iostream.h> int main() { signed int x = 2, y = 7, z = 6, a = 2, b= -2; x &= -2; y ^= -2; z |= 13; a <<= 1;

b >>= 1; cout << "Valor cout << "Valor cout << "Valor cout << "Valor cout << "Valor } Salida: Valor Valor Valor Valor Valor x y z a b = = = = = 2 -7 15 4 -1

x y z a b

= = = = =

" " " " "

<< << << << <<

x y z a b

<< << << << <<

endl; endl; endl; endl; endl;

8.1 El Estndar C++ permite una representacin explcita (mediante palabra clave) para alguna de estas asignaciones compuesta ( 4.9.8). Son las siguientes: &= and_eq |= or_eq ^= xor_eq Ejemplo: x and_eq -2; y xor_eq -2; z or_eq 13; // equivale a: x &= -2; // equivale a: y ^= -2; // equivale a: z |= 13;

Comentario: En el cuadro se muestra un cuadro sinptico con los resultados de aplicar los operadores AND, XOR y OR entre dos enteros caractersticos (los valores 0 y 1): E1 E2 E1 & E2 E1 ^ E2 E1 | E2 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1

9 En ocasiones los operadores de bits se utilizan para compactar la informacin, logrando que un tipo bsico (por ejemplo un long) almacene magnitudes ms pequeas mediante aprovechamientos parciales de los bits disponibles ( 2.2.4). Considere el significado de las siguientes macros ( 4.9.10b) utilizadas por el compilador MS Visual C++ que expresan valores de color en programas MS Windows:

#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD) ((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) #define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)| ((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE) (m))<<16))|(((DWORD)(BYTE)(c))<<24))) Los valores compactados pueden ser restituidos de nuevo mediante las manipulaciones adecuadas: #define GetRValue(rgb) ((BYTE)(rgb)) #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) #define GetBValue(rgb) ((BYTE)((rgb)>>16)) #define #define #define #define GetKValue(cmyk) GetYValue(cmyk) GetMValue(cmyk) GetCValue(cmyk) ((BYTE)(cmyk)) ((BYTE)((cmyk)>> 8)) ((BYTE)((cmyk)>>16)) ((BYTE)((cmyk)>>24))

Comentario: Algunas de las etiquetas utilizadas (como COLORREF, DWORD o BYTE) son a su vez typedefs ( 3.2.1a), muy comunes en la programacin para los entornos Windows ( Ejemplo). Las expresiones del tipo (WORD)(w) son expresiones de modelado de tipos ( 4.9.9). Observe la codificacin RGB en la que el color est representado por sus tres componentes [2] Rojo (Red), verde (Green) y azul (Blue). Est claro que los valores de cada componente pueden ocupar un mximo de 8 bits en la expresin resultante, de forma que pueden estar comprendidos entre 0 y 256 ( 0.1). En la codificacin CMYK el color est representado por cuatro componentes: Cian (Cyan), magenta (Magenta), amarillo (Yellow) y negro (black). Los valores de cada componente pueden estar igualmente comprendidos entre 0 y 256, aunque el valor "resultante" es sensiblemente mayor que en la codificacin RGB. En ambos casos el resultado es modelado de forma que produzca un COLORREF, que en dicho compilador corresponde a un unsigned long cuyo tamao es de 4 bytes ( 4.9.13). 8.1 Ejemplo #include <iostream> using namespace std; typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD; typedef DWORD COLORREF; #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD) ((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) #define GetRValue(rgb) ((BYTE)(rgb)) #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) #define GetBValue(rgb) ((BYTE)((rgb)>>16))

void main() { // ================= int r = 10, g = 20, b = 30; unsigned long rgbColor = RGB(r, g, b); cout << "Color compuesto: " << rgbColor << endl; unsigned int rColor, gColor, bColor; rColor = GetRValue(rgbColor); gColor = GetGValue(rgbColor); bColor = GetBValue(rgbColor); cout << "Rojo: " << rColor << endl; cout << "Verde: " << gColor << endl; cout << "Azul: " << bColor << endl; } Salida: Rojo: 10 Verde: 20 Azul: 30

[Link]

Operadores para manejo de bits


Exixten seis operadores para manejo de bits: 1. & AND de bits 2. | OR inclusivo de bits 3. ^ OR exclusivo de bits 4. << corrimiento a la izquierda 5. >> corrimineto a la derecha 6. ~ complemento a uno (unario)

AND (&)
La funciAND" activa los bits resultantes cuando los bits de los dos operandos son 1, de otra forma el resultado es =. Entonces si se coloca en la los dos operandos y se realiza la funciAND", se puede ver que los dos bits de mayor peso (los bits situados m a la izquierda de cada n?) son 1, as os bits resultantes de cada uno es 1. Los dos bits de menor peso se eval?0 porque al menos uno de los dos operandos es 0:

1101 & 1100 --------1100

OR
La operaciR inclusiva (|) significa que si uno de los dos operandos es 1 el resultado es 1. Tabla 6-1. Ejemplo de OR inclusivo Operador1 Operador2 Resultado 0 0 1 0 1 0 0 1 1

1 1 1 El OR exclusivo significa que si los dos operandos son diferentes el resultado es 1, de otra forma es resultado es 0 Tabla 6-2. Ejemplo de OR exclusivo Operador1 Operador2 Resultado 0 0 1 1 0 1 0 1 0 1 1 0

Corrimiento de bits
Tanto el operador de corrimiento a la izquierda (<<) como el operador de corrimiento a la derecha (>>), solo desplazan los bits del operando de la izquierda el n? de posiciones indicadas por el operador de la derecha. Los desplazamientos ocurren en la direcci indicada por el propio operador. Por ejemplo 13 >> 1 desplaza los bits del entero 13 una posici la derecha as/P > 13 = 1101 1101 >> 1 = 0110 0110 = 6

Complemento a uno
El operador unario "~" da el complemento a uno de un entero; esto es, convierte cada bit 1 en un bir 0 y viceversa. Por ejemplo Tabla 6-3. Complemento a Uno

Operador Resultado 1 0 0 1

[Link]

1.13Campos de bits. 1.14Operaciones con Bits ( AND, OR, NOT, XOR).

Unidad 2. Creacin de componentes y libreras dinmicas


2.3 Creacin de componentes.
Conceptos de Visual Basic y Visual C#
Crear componentes
Hay tantas formas de enfocar un problema de programacin como programadores y la creacin de componentes propios es slo una tarea de programacin ms. Teniendo esto en cuenta, los pasos siguientes presentan un enfoque bastante completo.

Para crear un componente 1. Determine qu desea que haga el componente o qu funcin desempear en la aplicacin. Si tiene un componente ms complejo y necesita un modelo de objetos, esboce el modelo. Para obtener ms informacin, vea Recomendaciones sobre Modelo de objetos componentes Si es necesario, divida la funcionalidad entre el componente y los objetos secundarios o estructuras de su modelo de objetos. Para obtener informacin detallada, vea Clases anidadas en componentes. Determine la clase o componente que mejor se presta a ser utilizada como clase base para el componente. En general, la clase base implementar ya muchas de las propiedades y mtodos que necesitar la clase. Si tiene objetos secundarios, determine la clase o componente que mejor se presta a ser utilizada como clase base para ellos. Determine qu funcionalidad puede proporcionar el componente mediante la incorporacin de componentes de las clases de .NET Framework. Si necesita separar subconjuntos de la funcionalidad del componente en forma de interfaces, determine qu clases necesitan implementarlas. Exprese la funcionalidad en forma de propiedades, mtodos y eventos del componente y de sus objetos secundarios o estructuras subsidiarias. Para obtener ms informacin, vea Implementar propiedades, mtodos, miembros y eventos en componentes.

2. 3.
4. 5. 6. 7.

8. 9.

Asigne los niveles de acceso adecuados (Public, Private, etc). Para obtener ms informacin, vea Formas de implementar la funcionalidad de los componentes. 10. Pruebe y depure el componente. A medida que agregue las funciones, agregue nuevas funciones al proyecto para probarlas. 11. Repita este proceso para refinar el diseo.

[Link] url=/library/SPA/vbcon/html/[Link]

Introduccin
Lo que me gustara explicarte son cosas como la creacin de controles ActiveX (OCX) y libreras (DLL) ActiveX, que al fin y al cabo son conceptos bastante similares, cuando las explique vers que es as. Tambin tengo pensado, siguiendo en esta mima lnea de "automatizacin" de Visual Basic, a explicarte cmo modularizar o "trocear" tus aplicaciones en componentes ActiveX, de forma que puedas crear componentes (controles o libreras ActiveX) que sean totalmente funcionales y que puedas usar de forma independiente en distintas aplicaciones. Para no confundirte mucho, vamos a empezar a repasar algunos "conceptos" de los que hablaremos en esta y prximas entregas, para que cuando te encuentres con esos "trminos" no te hagas un lo... (traduzco: no te confundas).

Componentes.
Empecemos por explicar qu significa eso de componentes. Segn la documentacin de la MSDN Library que se incluye con Visual Studio 6.0 (VB 6.0), un componente es: Cualquier software compatible con Automatizacin, por lo que puede usarse mediante programacin en una aplicacin personalizada. Incluye controles ActiveX, servidores de Automatizacin basados en Visual Basic y servidores de Automatizacin basados en Visual C. Antes de "explicarte" o aclararte que significa esto, veamos lo que dice la documentacin sobre Automatizacin: Una tecnologa que permite que las aplicaciones proporcionen objetos de una forma coherente a otras aplicaciones, herramientas de programacin y lenguajes de macros. Ahora que tenemos definidos dos de los conceptos que aparecen en la documentacin de Visual Basic, te explicar con lenguaje lo ms llano posible qu significa esto de los componentes. Desde la versin 4.0 de Visual Basic, este lenguaje permite crear aplicaciones compatibles con lo que antes se llamaba automatizacin OLE, (OLE: Object Linking and Embedding, vinculacin e incrustacin de objetos), ese nombre ahora es ms conocido como automatizacin COM (o simplemente como COM). Las siglas COM significan Component Object Model que traducido sera algo as como modelo de objetos componentes. Siguiendo mi bsqueda de definiciones en las diferentes "documentaciones" de Microsoft, me he encontrado tambin con esta otra sobre COM: COM es el "modelo de objetos" fundamental sobre el que se generan OLE (Object Linking and Embedding, Vinculacin e incrustacin de objetos) y los controles ActiveX. COM permite que un objeto exponga

su funcionalidad a otros componentes y aloje aplicaciones. Define cmo el objeto se expone a s mismo y cmo funciona dicha exposicin en procesos y en redes. Adems, COM define el ciclo de vida del objeto. No es que no quiera explicarte lo que significan todas estas "siglas", es que prefiero que leas lo que la documentacin "algunas" veces te dice y despus te lo aclaro, para que lo digieras mejor... si es posible. Lo que debe quedarte claro, es que un componente es un "trozo" de cdigo que podemos usar en cualquier aplicacin. La peculiaridad de los componentes es que son totalmente operativos por s mismos, te aclaro esto para que no pienses que al decir que es un trozo de cdigo, una rutina (funcin o procedimiento) podra ser un componente, ya que eso no es totalmente cierto. Los componentes COM son programas que permiten ser utilizados desde otro programas mediante automatizacin. Por regla general, los componentes suelen ser libreras (o si lo prefieres bibliotecas) ActiveX (DLL), controles ActiveX (OCX) e incluso ejecutables ActiveX (EXE). Nota: Puede que en esta y siguientes entregas, simplemente utilice la palabra componente, pero cuando lo haga me referir a componentes de automatizacin (o componentes COM), ya que en el mundo de .NET tambin se usa el trmino componente y su uso no se refiere precisamente a un "objeto" de automatizacin. No hace falta que te diga que no es lo mismo un EXE ActiveX que un EXE normal, por la sencilla razn de que si un EXE normal fuese lo mismo... desde hace tiempo que estaramos creando componentes COM. Igualmente no es lo mismo una DLL normal que una DLL ActiveX, ya que una DLL "normal" simplemente tiene funciones que podemos usar en nuestras aplicaciones, pero estas se usan directamente, sin la intervencin de COM, tal es el caso de las DLLs del API de Windows las cuales podemos usar en cualquier programa. Por otro lado las DLL ActiveX son libreras que se pueden usar slo con lenguajes que puedan trabajar con Automatizacin OLE (o COM). Visual Basic est totalmente "adherido" a la automatizacin, es decir, entiende cmo crear objetos contenidos en componentes COM (de automatizacin) y, lo ms importante, tambin puede crear componentes COM para que puedan ser usados desde otros lenguajes "adheridos" a la automatizacin. Por tanto, Visual Basic podr crear libreras (DLL) de automatizacin (componentes COM), pero no podr crear libreras "normales". Aclaro este punto, porque a pesar de que la extensin sea la misma para una librera normal y una de automatizacin, nuestro querido VB no podr crear ficheros con la extensin DLL que se puedan usar de la misma forma que las libreras del API de Windows o las creadas por compiladores como C/C++ e incluso Delphi. Las libreras creadas por Visual Basic siempre son libreras de automatizacin. Despus de estas aclaraciones, vamos a seguir con las explicaciones de porqu pueden ser tiles estos componentes COM, aunque cuando hable de componentes (o componentes COM) me estar refiriendo normalmente a "cdigo" que podemos usar desde cualquier aplicacin de automatizacin, y ese "cdigo" normalmente estar compilado en la forma de una librera (DLL). Realmente no es "cdigo", al menos como se entiende por cdigo cuando se dice "cdigo fuente", sino a cdigo compilado o cdigo binario, es decir, un cdigo fuente que se ha compilado.

Qu ventajas tiene la creacin y utilizacin de componentes?


Si has llegado a esta entrega nmero 47, (sin saltarte ninguna), ya habrs estado usando algunos componentes de automatizacin, por ejemplo ADO (ActiveX Data Objects) es un componente de automatizacin, el cual nos permite crear objetos para poder acceder a las bases de datos. Tambin habrs usado "componentes" en la forma de libreras del API de Windows. Y por supuesto que habrs usado "componentes" en la forma de controles OCX. Por tanto la utilidad de usar "componentes" es obvia, si ya hay alguno que nos sirva para nuestra aplicacin, lo usamos y no tenemos que programar ni una lnea para tener la funcionalidad que ese componente nos ofrece. Por otro lado, la creacin de un componente nos permite escribir un cdigo que "posiblemente" nos servir para usarlo en ms de una aplicacin, adems de que ese mismo componente podemos distribuirlo para que otros programadores puedan usarlo. El "posiblemente" lo he entrecomillado, porque si creamos un componente no quiere decir que "forzosamente" tengamos que usarlo en ms de una aplicacin, ya que es muy posible que simplemente lo usemos una vez y nada ms, pero eso no es un impedimento para que lo "encapsulemos" en un componente (librera DLL o control OCX). Cual sera la ventaja de crear un componente aunque slo nos sirva para una aplicacin? La ventaja es que si en un futuro queremos hacer cambios en el cdigo de ese componente, slo tendremos que distribuir esa librera y no el resto de la aplicacin, incluso (aunque ese tema no lo trataremos en este curso) puede ser que ese componente se ejecute desde un servidor, con lo cual simplemente actualizndolo en el servidor, el resto de las aplicaciones "cliente" que lo utilicen estarn actualizados "a la ltima". La ventaja tambin es evidente, ya que si no tuvisemos el cdigo "troceado", tendramos que compilar toda la aplicacin, de esta forma slo tendramos que compilar el componente y distribuirlo... cuando digo distribuirlo, en la mayora de los casos, simplemente ser "copiar y pegar" esa librera en el directorio que estaba y nada ms. S, ya se lo que estars pensando, y si an no lo ests pensando, este pensamiento te "llegar" cuando sepas algo de la creacin de componentes ActiveX, y como no es plan de esperar el tiempo necesario para que sepas algo de componentes, te explico cual sera ese pensamiento al que me refiero: Pregunta/pensamiento: Si tengo que compilar el componente y distribuirlo, qu problema hay con compilar toda la aplicacin y distribuirla? Respuesta de tu "subconsciente Guille": Pues ninguno. Precisamente por eso te lo "recalco", porque como no hay ninguna diferencia, (salvo que el componente sea uno que resida en un servidor y entonces si que habra diferencia), puedes pensar que para qu complicarme la vida haciendo componentes, cuando es mejor escribir todo el cdigo junto, que con total seguridad me dar menos quebraderos de cabeza? Y si tienes este ltimo pensamiento "pasars" de crear y usar componentes, y si es eso lo que va a ocurrir... que puetas, (ltimamente el Guille se est volviendo algo ms recatado y ahora en lugar de decir coo, dice puetas, que es casi lo mismo pero suena menos grosero), hago yo aqu tratando de explicarte todo esto? Pues eso, aunque no los uses, o no pretendas usarlos, emppate de qu va todo esto de los componentes y "aprende" a usarlos aunque pienses que no te ser realmente til. A la larga lo agradecers, de verdad. Es como lo de usar Option Explicit, cuando te acostumbras a declarar todas las variables, ya no puedes "vivir" sin declararlas, lo mismo que cuando te acostumbras a indentar el cdigo, si no est indentado, parece que ni lo entiendes... (Este Guille no tiene remedio! tena que aprovechar la coyuntura para darte un par de consejillos de los suyos.)

Otra de las cosas que vamos a ir viendo con todo esto de los componentes, sern cosas relacionadas con la programacin orientada a objetos, aunque si bien es cierto que el Visual Basic no es un lenguaje orientado a objetos, podemos hacer cosas que "casi" parezcan... por supuesto estoy hablando del Visual Basic 6.0 (y anteriores), ya que el Visual Basic .NET si que es un lenguaje orientado a objetos. Todo esto es debido a que la creacin de componentes ActiveX nos permitir entrar un "poco" en esa dinmica, por aquello de que la creacin de componentes nos permitir "granular" nuestra aplicacin en trozos (que al fin y al cabo sern clases que se convertirn en objetos). Ya se que esto no ser Programacin Orientada a Objetos, (as en maysculas o en negrita), pero al menos te dar una idea de cmo podra ser... y sobre todo, como es ahora mismo si te atreves a entrar en el mundo de .NET, que al fin y al cabo debera ser el lenguaje que deberas usar, as que... no se que haces perdiendo el tiempo en este curso si ya tenas que estar en el de Visual Basic .NET. Dicho todo esto, quiero que prepares cuerpo y mente para lo que seguir y, si ves que no ests totalmente preparado, (o preparada), es que va siendo hora de que empieces de nuevo por la entrega uno de este curso, te leas la ayuda del Visual Basic o te dediques a otra cosa, ya que... mejor o peor, (segn quien opine), en las 46 entregas anteriores te he explicado un montn de cosas, las cuales, si las has "aderezado" con alguna otra lectura, seguro que te permitir empezar a adentrarte en el mundillo de la programacin con Visual Basic, que al fin y al cabo es lo que este "curso" ha pretendido y pretende.

[Link]

2.4 Creacin de libreras dinmicas.


Libreras Nota: Tenga en cuenta que este captulo no trata de caractersticas que puedan considerarse estndar del lenguaje C++, sino de particularidades (aunque muy extendidas) de algunas plataformas. Concretamente de los entornos de programacin C++ para los Sistemas Windows de Borland y del propio Microsoft. Tenga en cuenta tambin, que en informtica, el concepto "Librera" es muy general, y no est asociado a ningn lenguaje concreto (aunque C y C++ las utilizan ampliamente). De hecho, es posible (y frecuente) utilizar libreras desde un lenguaje, que han sido escritas en otro. Por ejemplo, buena parte de las libreras de C++Builder, la denominadas VCL "Visual Component Library", han sido desarrolladas en Pascal ( 4.11.8b). 1 Sinopsis Al tratar de la construccin de un programa ( 1.4) sealamos que en ocasiones no se desea construir un ejecutable, al menos no en el sentido tradicional del trmino, sino una librera, y que estas libreras son trozos de cdigo que contienen alguna funcionalidad pre-construida que puede ser utilizada por un ejecutable. Por supuesto, las libreras contienen en su interior variables y funciones. Si, como suponemos, son libreras C+

+, lo ms probable es que estas variables y funciones estn encapsuladas en forma de clases ( 4.11). En general, el trmino librera se utiliza para referirse a un conjunto de mdulos objeto .obj (resultados de compilacin) agrupados en un solo fichero que suele tener las extensiones .LIB, .OBJ, .BPI [6] y .DLL. Estos ficheros permiten tratar las colecciones de mdulos como una sola unidad, y representan una forma muy conveniente para el manejo y desarrollo de aplicaciones grandes, adems de ser un concepto muy frtil para la industria del software, ya que permiten la existencia de las libreras de los propios compiladores ( 5) y de un mercado de utilidades y componentes adicionales. Son las denominadas libreras 3pp (de terceras partes), en referencia a que no son incluidas de forma estndar con los compiladores ni creadas por el programador de la aplicacin. En este sentido el software se parece a cualquier otro mercado de componentes. Adems de las libreras ms o menos extensas que acompaan a los compiladores, pueden adquirirse otras, que permiten aadir a nuestros programas las funcionalidades ms diversas sin necesidad de ser un experto en cada rea de la programacin y sin necesidad de que tengamos que estar reinventando la rueda constantemente. 2 Tipos En lo que respecta al lenguaje C++, existen dos tipos fundamentales de libreras: Estticas y Dinmicas, que aunque comparten el mismo nombre genrico "Librera" en realidad se refieren a conceptos distintos. 3 Libreras estticas Denominadas tambin libreras-objeto, son colecciones de ficheros objeto .obj (compilados) agrupados en un solo fichero de extensin .LIB y .OBJ. Los prototipos ( 4.4.1) de las funciones utilizadas en estas libreras, junto con algunas macros y constantes predefinidas que facilitan su uso, se agrupan en ficheros denominados "de cabecera" ( 4.4.1), porque es tradicin utilizar las primeras lneas del programa para poner las directivas #include ( 4.9.10g) que los incluirn en el fuente durante la fase de preprocesado ( 1.4). As pues, las libreras estticas se componen de uno o varios ficheros .lib, .obj o .bpi junto con uno o varios ficheros de cabecera (generalmente .h). Durante la fase de compilacin, el enlazador incluye en el ejecutable los mdulos correspondientes a las funciones de librera que hayan sido utilizadas en el programa, de forma que entran a formar parte del ejecutable, de ah su nombre: Libreras enlazadas estticamente [1] ( 1.4.4). Dejando aparte consideraciones de comodidad y rapidez, el resultado de utilizar una de tales libreras no se diferencia en nada al que puede obtenerse programando las funciones o clases correspondientes y compilndolas como un mdulo ms de nuestra aplicacin.

Nota: El compilador Borland C++ dispone de una herramienta especfica para la creacin y manejo de libreras estticas; el ejecutable [Link] ( 1.4.0w1). 3.1 Diccionario Junto con los diversos mdulos que las componen, las libreras estticas incluyen una especie de ndice o diccionario con informacin sobre su contenido. Este diccionario sirve para incrementar la velocidad de enlazado cuando el "Linker" debe incluir alguno de sus mdulos en un ejecutable, e incluye una tabla con los nombres de todos los recursos pblicos de los diversos mdulos (estos smbolos deben ser distintos). Por "pblicos" nos referimos a que pueden ser accedidos desde el exterior por los usuarios de la librera. 4 Libreras dinmicas Otra forma de aadir funcionalidad a un ejecutable son las denominadas libreras de enlazado dinmico (repasar en 1.4.4 el significado de "Enlazado dinmico"), generalmente conocidas como DLLs, acrnimo de su nombre en ingls ("Dynamic Linked Library"). Estas libreras se utilizan mucho en la programacin para el SO Windows. Este Sistema contiene un gran nmero de tales libreras de terminacin .DLL, aunque en realidad pueden tener cualquier otra terminacin .EXE, .FON, .BPI, .DRV etc. Cualquiera que sea su terminacin, de forma genrica nos referiremos a ellas como DLLs, nombre por el que son ms conocidas. Nota: La programacin tradicional de aplicaciones Windows utilizando la API del Sistema ( 1.7.1) es en realidad una sucesin de llamadas a este tipo de libreras externas. De hecho, este Sistema Operativo es en realidad un conjunto de tales DLLs. La mayora de los ficheros de disco asociados con el sistema son de este tipo, y se ha llegado a afirmar que escribir una DLL es escribir una extensin del propio Windows ( PW2E Petzold p.878).

5 Diferencias: Librera Esttica "versus" Dinmica Las diferencias ms relevantes de las libreras dinmicas respecto a las estticas son fundamentalmente dos: Las libreras estticas quedan incluidas en el ejecutable, mientras las dinmicas son ficheros externos, con lo que el tamao de la aplicacin (nuestro ejecutable) es mayor en el primer caso que en el segundo. Esto puede ser de capital importancia en aplicaciones muy grandes, ya que el ejecutable debe ser cargado en memoria de una sola vez [3].

Las libreras dinmicas son ficheros independientes que pueden ser invocados desde cualquier ejecutable, de modo que su "funcionalidad" puede ser compartida por varios ejecutables. Esto significa que solo se necesita una copia de cada fichero de librera (DLL) en el Sistema. Esta caracterstica constituye la razn principal de su utilizacin, y es tambin origen de algunos

inconvenientes, principalmente en sistemas como Windows en los que existen centenares de ellas. Como consecuencia de las diferencias citadas se derivan otras. Por ejemplo:

Si se realizan modificaciones en los mdulos de una librera esttica, es necesario recompilar todos los ejecutables que la utilizan, mientras que esto no es necesario en el caso de una librera dinmica. Durante la ejecucin de un ejecutable, las libreras estticas que hubiesen intervenido en su construccin no necesitan estar presentes, en cambio las dinmicas deben estar en el mismo directorio o en el camino de bsqueda ("Path" [7]). Las libreras estticas solo se utilizan en la fase de construccin del ejecutable. Las dinmicas se utilizan durante la ejecucin.

6 Utilizar Libreras Desde la ptica del programador C++, la utilizacin de Libreras comprende dos aspectos totalmente diferenciados: Su utilizacin y quizs la construccin de alguna de ellas si nuestras aplicaciones son medianamente grandes. En cuanto al primer punto, es seguro que como mnimo utilice algunas de la "Librera Estndar" ( 5). En cuanto a su construccin, si se dedica a esto de programar en C++, antes o despus pondr manos a la obra. Por cierto: Hay empresas de software cuya principal actividad es precisamente fabricar y vender libreras (ya hemos indicado que el mercado de las 3pp es todo un "mundillo" dentro de la informtica). Cualquiera que sea el caso, tanto la utilizacin como la construccin, son diferentes segn se trate de libreras estticas o dinmicas. En las pginas que siguen se describe en detalle el caso de las segundas. Empezaremos por una descripcin general de su funcionamiento ( 1.4.4b0), para continuar con la descripcin de los pasos necesarios para construir una de tales DLLs ( 1.4.4b1). A continuacin exponemos los detalles de su utilizacin, incluyendo un ejemplo de construccin de un ejecutable que utiliza los recursos de una librera dinmica ( 1.4.4b2).

[Link]

Conceptos
Segn vamos haciendo programas de ordenador, nos damos cuenta que algunas partes del cdigo se utilizan en muchos de ellos. Por ejemplo, podemos tener varios programas que utilizan nmeros complejos y las funciones de suma, resta, etc son comunes. Tambin

es posible, por ejemplo, que nos guste hacer juegos, y nos damos cuenta que estamos repitiendo una y otra vez el cdigo para mover una imagen (un marcianito o a Lara Croft) por la pantalla. Sera estupendo poder meter esas funciones en un directorio separado de los programas concretos y tenerlas ya compiladas, de forma que podamos usarlas siempre que queramos. Las ventajas enormes de esto son:

No tener que volver a escribir el cdigo (o hacer copy-paste). Nos ahorraremos el tiempo de compilar cada vez ese cdigo que ya est compilado. Adems, ya sabemos que mientras hacemos un programa, probamos y corregimos, hay que compilar entre muchas y "ms muchas" veces. El cdigo ya compilado estar probado y ser fiable. No las primeras veces, pero s cuando ya lo hayamos usado en 200 programas distintos y le hayamos ido corrigiendo los errores.

La forma de hacer esto es hacer libreras. Una librera son una o ms funciones que tenemos ya compiladas y preparadas para ser utilizadas en cualquier programa que hagamos. Hay que tener el suficiente ojo cuando las hacemos como para no meter ninguna dependencia de algo concreto de nuestro programa. Por ejemplo, si hacemos nuestra funcin de mover la imagen de Lara Croft, tendremos que hacer la funcin de forma que admita cualquier imagen, ya que no nos pegara nada Lara Croft dando saltos en un juego estilo "space invaders".

Cmo tenemos que organizar nuestro cdigo

Para poder poner nuestro cdigo en una librera, necesitamos organizarlo de la siguiente manera: Uno o ms ficheros fuente .c con el cdigo de nuestras funciones. Uno o ms ficheros de cabecera .h con los tipos (typedefs, structs y enums) y prototipos de las funciones que queramos que se puedan utilizar. Como siempre, vamos a hacer un ejemplo. Los ficheros seran estos: libreria1.h #ifndef _LIBRERIA_1_H #define _LIBRERIA_1_H int suma (int a, int b); int resta (int a, int b); #endif libreria1.c int suma (int a, int b) { return a+b; } int resta (int a, int b) { return a-b;

} Es un fichero con un par de funciones simples de suma() y resta(). Un detalle importante a tener en cuenta, son los #define del fichero de cabecera (.h). Al hacer una librera, no sabemos en qu futuros programas la vamos a utilizar ni cmo estarn organizados. Supongamos en un futuro programa que hay un fichero de cabecera fichero1.h que hace #include del nuestro. Imaginemos que hay tambin un fichero2.h que tambin hace #include del nuestro. Finalmente, con un pequeo esfuerzo ms, imaginemos que hay un tercer fichero3.c que hace #include de fichero1.h y fichero2.h, es decir, ms o menos lo siguiente: fichero1.h #include <libreria1.h> ... fichero2.h #include <libreria1.h> ... fichero3.c #include <fichero1.h> #include <fichero2.h> ...

Cuando compilemos fichero3.c, dependiendo de lo que haya definido en libreria1.h, obtendremos un error. El problema es que al incluir fichero1.h, se define todo lo que haya en ese fichero, incluido lo de libreria1.h. Cuando se incluye fichero2.h, se vuelve a intentar definir lo contenido en libreria1.h, y se obtiene un error de que esas definiciones estn definidas dos veces. La forma de evitar este problema, es meter todas las definiciones dentro de un bloque #ifndef - #endif, con el nombre (_LIBRERIA_1_H en el ejemplo) que ms nos guste y distinto para cada uno de nuestros ficheros de cabecera. Es habitual poner este nombre precedido de _, acabado en _H y que coincida con el nombre del fichero de cabecera, pero en maysculas. Dentro del bloque #ifndef - #endif, hacemos un #define de ese nombre (no hace falta darle ningn valor, basta con que est definido) y luego definimos todos nuestros tipos y prototipos de funciones. Cuando incluyamos este fichero por primera vez, _LIBRERIA_1_H no estar definido, as que se entrar dentro del bloque #ifndef - #endif y se definirn todos los tipos y prototipos de funciones, incluido el mismo _LIBRERIA_1_H. Cuando lo incluyamos por segunda vez, _LIBRERIA_1_H ya estar definido (de la inclusin anterior), por lo que no se entrar en el bloque #ifndef - #endif, y no se redefinir nada por segunda vez. Es buena costumbre hacer esto con todos nuestros .h, independientemente de que sean o no para libreras. Si te fijas en algn .h del sistema vers que tienes este tipo de cosas hasta aburrir. Por ejemplo, en /usr/include/stdio.h, lo primero que hay despus de los comentarios, es un #ifndef _STDIO_H.

Librerias estticas y dinmicas

En linux podemos hacer dos tipos de libreras: estticas y dinmicas. Una librera esttica es una librera que "se copia" en nuestro programa cuando lo compilamos. Una vez que tenemos el ejecutable de nuestro programa, la librera no sirve para nada (es un decir, sirve para otros futuros proyectos). Podramos borrarla y nuestro programa seguira funcionando, ya que tiene copia de todo lo que necesita. Slo se copia aquella parte de la librera que se necesite. Por ejemplo, si la librera tiene dos funciones y nuestro programa slo llama a una, slo se copia esa funcin. Una librera dinmica NO se copia en nuestro programa al compilarlo. Cuando tengamos nuestro ejecutable y lo estemos ejecutando, cada vez que el cdigo necesite algo de la librera, ir a buscarlo a sta. Si borramos la librera, nuestro programa dar un error de que no la encuentra. Cules son las ventajas e inconvenientes de cada uno de estos tipos de libreras? Un programa compilado con libreras estticas es ms grande, ya que se hace copia de todo lo que necesita. Un programa compilado con libreras estticas se puede llevar a otro ordenador sin necesidad de llevarse las libreras. Un programa compilado con libreras estticas es, en principio, ms rpido en ejecucin. Cuando llama a una funcin de la librera, la tiene en su cdigo y no tiene que ir a leer el fichero de la librera dinmica para encontrar la funcin y ejecutarla. Si cambiamos una librera esttica, a los ejecutables no les afecta. Si cambiamos una dinmica, los ejecutables se ven afectados. Esto es una ventaja si hemos cambiado la librera para corregir un error (se corrige automticamente en todos los ejecutables), pero es un inconveniente si tocar eso nos hace cambiar los ejecutables (por ejemplo, hemos aadido un parmetro ms a una funcin de la librera, los ejecutables ya hechos dejan de funcionar). Qu tipo de librera uso entonces? Es como siempre una cuestin de compromiso entre las ventajas y los inconvenientes. Para programas no muy grandes y por simplicidad, yo suelo usar libreras estticas. Las dinmicas estn bien para programas enormes o para libreras del sistema, que como estn en todos los ordenadores con linux, no es necesario andar llevndoselas de un lado a otro. En unix las libreras estticas suelen llamarse libnombre.a y las dinmicas [Link], donde nombre es el nombre de nuestra librera.

Compilar y enlazar con libreras estticas

Una vez que tenemos nuestro cdigo, para conseguir una librera esttica debemos realizar los siguientes pasos: Obtener los ficheros objeto (.o) de todos nuestros fuentes (.c). Para ello se compilan con cc -c fuente.c -o fuente.o. La opcin -c le dice al compilador que no cree un ejecutable, sino slo un fichero objeto. Aqu pongo el compilador cc, porque es el que he usado para el ejemplo, pero puede usarse gcc, o el g++ (para C++) o uno de fortran, pascal, etc. Crear la librera (.a). Para ello se usa el comando ar con los siguientes parmetros: ar -rv libnombre.a fuente1.o fuente2.o ... La opcin -r le dice al comando ar que tiene que insertar (o reemplazar si ya estn dentro) los ficheros objeto en la librera. La opcin -v es "verbose", para que muestre informacin mientras est haciendo las cosas. A continuacin se ponen todos los fichero objeto que deseemos. ar es en realidad un comando mucho ms genrico que todo esto y sirve para empaquetar cualquier tipo de fichero (no slo ficheros objeto). Tiene adems opciones para ver qu ficheros hay dentro, borrar algunos de ellos, reemplazarlos, etc. Hacer todo este proceso a mano cada vez puede ser un poco pesado. Lo habitual es hacer un fichero de nombre Makefile en el mismo directorio donde estn los fuentes de la librera y utilizar make para compilarla. Si no sabes de qu estoy hablando, chale un ojo a la paginilla de los makefiles. Afortundamente, las reglas implcitas de make ya saben hacer libreras estticas. El fichero Makefile quedara tan sencillo como esto: Makefile CFLAGS=-I<path1> -I<path2> ... libnombre.a: libnombre.a (objeto1.o ojbeto2.o ...) En CLAGS debes poner tantas opciones -I<path> como directorios con ficheros .h tengas que le hagan falta a los fuente de la librera para compilar. La librera depende de los ficheros objetos que hay dentro de ella. Eso se pone poniendo el nombre de la librera y entre parntesis los ficheros objeto. Hay algunas verisones de make que slo admiten un fichero objeto dentro de los parntesis. Debe ponerse entonces libnombre.a: libnombre.a(objeto1.o) libnombre.a(objeto2.o) ... Ya tenemos la librera. Ahora, al compilar nuestro programa con el compilador, debemos decirle dnde estn las libreras y cuales son. La orden de compilacin quedara entonces $ cc -o miprograma miprograma.c -I<path1> -I<path2> ... -L<path1> -L<path2> ... -llibreria1 -llibreria2 Los -I<path> son para indicar dnde estn los ficheros de cabecera necesarios para la compilacin (tanto propios del programa como los de nuestras libreras). Los -L<path> son para indicar los directorios en los que se encuentran las libreras.

Los -llibreria son para indicar que se debe coger esa librera. En el comando slo ponemos "librera". El prefijo lib y la extensin .a ya la pone automticamente el compilador. Hay un detalle importante a tener en cuenta. Las libreras deben ponerse de forma que primero est la de ms alto nivel y al final, la de ms bajo nivel. Es decir, tal cual lo tenemos en el ejemplo, libreria1 puede usar funciones de libreria2, pero no al revs. El motivo es que al compilar se van leyendo las libreras consecutivamente y cargando de cada una de ellas slo lo necesario. Vamos a verlo con un ejemplo Supongamos que miprograma.o llama a la funcion1 de libreria1 y esta funcion1 llama a funcion2 de libreria2. El compilador lee miprograma.o. Como este necesita funcion1, la apunta como "necesaria". Luego lee libreria1. Busca en las funciones necesarias, encuentra funcion1 y la carga. Como funcion1 llama a funcion2, apunta funcion2 como funcin necesaria. Luego lee libreria2 y como funcion2 es necesaria, la carga. Todo correcto. Supongamos ahora que le hemos dado la vuelta al orden, que hemos puesto -llibreria2 antes que -llibreria1. El compilador lee miprograma.c. Como este necesita funcion1, se apunta como "necesaria". Luego lee libreria2. Como funcion1 no es de esta libreria y no hay ms funciones "necesarias" (hasta ahora), ignora libreria2 y no carga nada de ella. Luego lee libreria1, carga funcion1 y ve que esta necesita funcion2. Apunta funcion2 como necesaria pero ... ya se han acabado las librerias. Se obitiene un error de "linkado" en el que dice que "no encuentro funcion2". Esto nos dice tambin que tenemos que tener un cierto orden a la hora de disear libreras. Debemos hacerlas teniendo muy claro que unas pueden llamar a otras, pero no las otras a las unas, es decir, organizarlas como en un arbol. Las de arriba pueden llamar a funciones de las de abajo, pero no al revs. Existe una pequea trampa, pero no es muy elegante. Consiste en poner la misma librera varias veces en varias posiciones. Si en el supuesto que no funcionaba hubiesemos puesto otra vez al final -llibreria2, habra compilado.

Compilar y "enlazar" con libreras dinmicas

Para compilar los mismos ficheros, pero como librera dinmica, tenemos que seguir los siguientes pasos: Compilar los fuentes, igual que antes, para obtener los objetos. Crear la librera con el comando ld. Las opciones para este comando seran ld -o [Link] objeto1.o objeto2.o .... -shared. La opcin -o [Link] le indica el nombre que queremos dar a la librera. La opcin -shared le indica que debe hacer una librera y no un ejecutable (opcin por defecto). objeto1.o, objeto2.o ... son los ficheros objeto que queremos meter en la librera.

Igual que antes, hacer esto a mano puede ser pesado y se suele hacer un Makefile para compilar con make. Al igual que antes, si no sabes de que estoy hablando, ah tienes la paginilla de los makes. Desgraciadamente, las reglas implcitas no saben hacer libreras dinmicas (o, al menos, yo no he visto cmo), as que tenemos que trabajar un poco ms en el Makefile. Quedara algo as como: Makefile [Link]: objeto1.c objeto2.c ... cc -c -o objeto1.o objeto1.c cc -c -o objeto2.o objeto2.c ... ld -o [Link] objeto1.o objeto2.o ... -shared rm objeto1.o objeto2.o ... La librera depende de los fuentes. Se compilan para obtener los .o (habra que aadir adems las opciones -I<path> que fueran necesarias), se construye la librera con ld y se borran los objetos generados. He hecho depender la librera de los fuentes para que se compile slo si se cambia un fuente. Si la hago depender de los objetos, como al final los borro, siempre se recompilara la librera. El comando ld es ms especfico que ar, y no he encontrado opciones para modificar o borrar los objetos que hay dentro de la librera. No queda ms remedio que construir la librera entera cada vez que se modifique algo. Una vez generada la librera, para enlazar con ella nuestro programa, hay que poner: cc -o miprograma miprograma.c -I<path1> -I<path2> ... -L<path1> -L<path2> ... -Bdynamic -llibreria1 -llibreria2 El comando es igual que el anterior de las libreras estticas con la excepcin del -Bdynamic. Es bastante habitual generar los dos tipos de librera simultneamente, con lo que es bastante normal encontrar de una misma librera su versin esttica y su versin dinmica. Al compilar sin opcin -Bdynamic puden pasar varias cosas: Existen liblibreria.a y [Link]. Se coge por defecto liblibreria.a Slo existe una de ellas. Se coge la que existe. No existe ninguna de ellas. Error. La opcin -Bdynamic cambia el primer caso, haciendo que se coja [Link] en vez de liblibreria.a. La opcin -Bdynamic afecta a todas las libreras que van detrn en la lnea de compilacin. Para volver a cambiar, podemos poner -Bstatic en cualquier momento. Una vez compilado el ejecutable, nos falta un ltimo paso. Hay que decirle al programa, mientras se est ejecutando, dnde estn las libreras dinmicas, puesto que las va a ir a buscar cada vez que se llame a una funcin de ellas. Tenemos que definir la variable de entorno LD_LIBRARY_PATH, en la que ponemos todos los directorios donde haya libreras dinmicas de inters.

$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path1>:<path2>:<path3> $ export LD_LIBRARY_PATH Siendo <path> los directorios en los que estn las libreras dinmicas. Se ha puesto el $LD_LIBRARY_PATH pata mantener su valor anterior y aadirle los nuevos directorios.

[Link]
Guia bsica para la creacin de libreras estticas y dinmicas en entorno GNU/Linux. Table of Contents 1. Introduccin 2. Libreras estticas 2.1. Creacin de una librera esttica 2.2. Uso de una librera esttica 3. Libreras dinmicas 3.1. Creacin de una librera dinmica 3.2. Uso de una librera dinmica 3.3. Versin de una librera dinmica 3.3.1. Utilidad ldd 3.3.2. Utilidad ldconfig 4. Enlace dinmico en tiempo de ejecucin 4.1. Ejemplo de enlace dinmico 5. Precarga de smbolos Referencias

1. Introduccin
Las libreras son una forma sencilla y versatil de modularizar y reutilizar cdigo. En este documento se aborda el proceso de creacin de libreras tanto estticas como dinmicas, sus posibles usos y los recursos mnimos necesarios para gestionarlas de forma adecuada. Los detalles de implementacin y uso de las utilidades del sistema se obvian a propsito para no hacer este documento innecesariamente largo. Para solucionar cualquier duda sobre el uso de alguna funcin o utilidad mencionada ser necesario recurrir a documentos complementarios como puede ser el manual en lnea de GNU/Linux, la utilidad info u otro tipo de documentacin.

2. Libreras estticas

Una librera esttica no es ms que un conjunto de ficheros objeto empaquetados en un nico archivo. Para crear una librera esttica debemos seguir los siguientes pasos:

Codificar los mdulos de la forma habitual. Obtener los ficheros objeto utilizando el compilador. Empaquetar los ficheros objeto que integran la librera por medio de la utilidad ar.

Por convenio, los nombres de todas las libreras estticas comienzan por lib y tienen .a por extensin. Aunque estas restricciones no son obligatorias, es poco recomendable saltrselas pues el entorno ofrece facilidades de uso si se siguen dichas normas.

2.1. Creacin de una librera esttica


Supongamos que disponemos de los ficheros fich1.c y fich2.c que contienen el cdigo de las funciones que deseamos incluir en la librera libfich.a. Para obtener los ficheros objeto compilamos como siempre:
$ gcc -c -o fich1.o fich1.c

$ gcc -c -o fich2.o fich2.c

A continuacin empaquetamos los ficheros obtenidos con ar (un empaquetador similar a tar).
$ ar rcs libfich.a fich1.o fich2.o

El significado de las opciones que se le dan a ar es el siguiente: Table 1. s construir un ndice del contenido. c crear el paquete si no existe. r reemplazar los ficheros si ya existan en el paquete. Otras opciones de ar que pueden resultar tiles son: Table 2. t lista el contenido de un paquete (o librera). x extrae un fichero de un paquete (o librera).

2.2. Uso de una librera esttica


Para utilizar las funciones y smbolos contenidos en una librera esttica es necesario enlazar dichos smbolos cuando se monta un ejecutable. Para ello, debemos indicar al compilador qu libreras queremos utilizar y el lugar donde se encuentran. Si hemos escrito un programa apli1.c que hace uso de la librera que hemos creado en el punto anterior y queremos compilarlo debemos hacer lo siguiente: Primero compilamos el programa:
$ gcc -c -o apli1.o apli1.c

teniendo presente que en la compilacin deben estar en ruta los ficheros de interfaz (.h) de la librera. De no ser as debe indicarse al compilador donde se encuentran dichos ficheros mediante la opcin -I, algo como:
$ gcc -c -o apli1.o apli1.c -Idir_lib

Despus se monta el programa con la librera indicando donde est y cual es su nombre:
$ gcc -o apli1 apli1.o -Ldir_lib -lfich

Consideraciones:

En el ejemplo se supone que la librera y su fichero de interfaz se encuentran en un directorio llamado dir_lib. La opcin -I se usa para indicar donde se encuentran ficheros de interfaz. La opcin -L sirve para indicar el directorio donde se encuentra la librera. La opcin -l es para indicar los nombres de la libreras que se van a usar, pero no debe escribirse ni el prefijo lib ni la extensin .a ya que el compilador espera que se sigan las normas de nombrado anteriormente citadas.

A continuacin se muestra un fichero makefile que permite automatizar todo el proceso, tanto la creacin de la librera como del programa. En este caso se supone que todos los ficheros necesarios se encuentran en el directorio actual.
CC=gcc CFLAGS=-Wall -ggdb -I./ LDFLAGS=-L./ LDLIBS=-lfich all: libfich.a apli1 apli1: apli1.o libfich.a: fich1.o fich2.o $(AR) rcs $@ $^

3. Libreras dinmicas
La utilizacin de objetos dinmicos supone dejar pendiente en el montaje de la aplicacin el enlace de dichos objetos. Cuando la aplicacin est en ejecucin, y slo entonces, se produce el enlace (dinamic binding) con los objetos contenidos en la librera. La creacin de libreras dinmicas corre a cargo del enlazador o montador (en nuestro caso el ld) aunque tambin es posible indicar al compilador las opciones necesarias para el montaje y de ese modo, ser l quien se encargue de pasarselas al montador.

3.1. Creacin de una librera dinmica


Cuando se crea un objeto dinmico es necesario que dicho cdigo objeto sea independiente de la posicin, para conseguir este tipo de cdigo debe especificarse al compilador la opcin -fPIC (Position Independent Code). Dicho flag debe indicarse tanto en la compilacin como en el montaje de la librera.
$ gcc -fPIC -c -o fich1.o fich1.c $ gcc -fPIC -c -o fich2.o fich2.c

Para montar los objetos es necesario adems indicar la opcin -shared para que el resultado sea un fichero objeto 'compartible'.
$ gcc -shared -fPIC -o [Link] fich1.o fich2.o

Para compilar la librera dinmica puede utilizarse un makefile como este:


CC=gcc CFLAGS=-Wall -ggdb -fPIC LDFLAGS=-fPIC -shared [Link]: fich1.o fich2.o $(CC) $(LDFLAGS) -o $@ $^

En este caso, la librera tiene como extensin .so que significa shared object.

3.2. Uso de una librera dinmica


Para utilizar esta librera desde un programa no hay que hacer nada adicional; es exactamente igual que en el caso de la librera esttica. Al hacer uso de una librera, el compilador busca primero una versin dinmica (.so), si no la encuentra entonces busca la versin esttica. Si se tienen las dos versiones de una librera y se quiere utilizar la versin esttica debe indicarse al montador el flag -static. Cuando un programa utiliza libreras dinmicas, el asistema necesita localizarlas en tiempo de ejecucin (al contrario que con las libreras estticas). Los lugares donde un programa busca las libreras dinmicas son los siguientes (en este orden):

En los directorios de la variable LD_LIBRARY_PATH. En el fichero [Link]. En los directorios /usr/lib y /lib. En los directorios contenidos en el fichero [Link].

Si el programa no encuentra la librera que necesita imprimir un mensaje de error con el siguiente aspecto:
$ ./apli1 apli1: error in loading shared libraries: [Link]: cannot open shared object file: No such file or directory

Normalmente, lo ms adecuado, es utilizar la variable de entorno LD_LIBRARY_PATH para indicar en qu directorios debe buscar:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/dir_lib

De este modo debe funcionar correctamente.

3.3. Versin de una librera dinmica


Una de las grandes ventajas del uso de libreras dinmicas, a parte de tener ficheros ejecutables ms pequeos, es que podemos modificar la implementacin de las libreras sin tener que recompilar los programas. Para diferenciar las libreras que han sufrido modificaciones se utilizan los nmeros de versin que tienen el siguiente significado (si se tiene una librera [Link].x.y.z siendo x, y, z nmeros de versin): Table 3. (major number) permite saber que todas las versiones con el mismo valor para este x nmero son compatibles. (release) Cambia cuando se hace alguna modificacin que afecta al interfaz de la y librera. (epoch) Cambia cuando se arregla algn error o cambia alguna caracterstica interna de z la librera. Para que los nmeros de versin no sean slo el nombre del fichero de la librera sino que las utilidades del sistema puedan gestionar dicha informacin es necesario indicar al enlazador el nombre y versin de la librera para que lo incluya en el interior del archivo .so. Para que los nmeros de versin no sean slo el nombre del fichero de la librera sino que las utilidades del sistema puedan gestionar dicha informacin es necesario indicar al enlazador el nombre y versin de la librera para que lo incluya en el interior del archivo .so. Para pasar valores al enlazador desde el compilador se utiliza el flag -Wl escribiendo a continuacin las opciones que queremos pasar al enlazador separadas por comas en lugar de por espacios. Veamos cmo crear la librera [Link] del ejemplo anterior de manera que sea la versin [Link].1.0.0.
$ gcc -Wl,-soname,[Link].1.0.0 -shared -fPIC -o [Link].1.0.0 fich1.o fich2.o

Con un makefile sera:


CC=gcc CFLAGS=-Wall -ggdb -fPIC LDFLAGS=-fPIC -shared [Link].1.0.0: fich1.o fich2.o $(CC) -Wl,-soname,$@ $(LDFLAGS) -o $@ $^

El problema de utilizar estos nombres es que cuando se compila un programa que utiliza una librera dinmica el compilador busca un fichero con extensin .so simplemente. Para solucionar esto, basta con crear un enlace simblico con el nombre que el compilador est buscando, es decir:
$ ln -s [Link].1.0.0 [Link]

Si compilamos un programa con una librera para la que se ha especificado un soname con los 3 nmeros, el programa slo funcionar si encuentra exactamente esa versin. Sin embargo podemos especificar un soname ms genrico incluyendo slo 1 o 2 de los nmeros de versin. De este modo el programa funcionar sin recompilar con cualquiera de las versiones de la librera con tal que coincida el soname con el que fue compilado. Este sistema permite cambiar a versiones ms recientes de las libreras de una forma limpia y rpida. El inconveniente es que necesitamos nuevos enlaces simblicos pues el programa en ejecucin buscar una librera con el soname con el que fue compilado. Veamos un ejemplo:
$ gcc -Wl,-soname,[Link].1.0 -shared -fPIC -o [Link].1.0.0 a.o

Hemos creado una librera con nombre [Link].1.0.0 y soname liba.1.0 a partir del objeto a.o. Para compilar un programa con esta librera debe existir un enlace [Link] que apunte a [Link].1.0.0 despus ya podemos compilar el programa. Sera algo como:
$ ln -s [Link].1.0.0 [Link] $ gcc -o apli2 apli2.o -L. -la

Pero cuando intentamos ejecutar la aplicacin obtenemos el siguiente error:


$ ./apli2 apli2: error in loading shared libraries: [Link].1.0: cannot open shared object file: No such file or directory

Esto ocurre aunque el directorio est en el LD_LIBRARY_PATH. Para arreglarlo hay que rear un enlace del siguiente modo:
$ ln -s [Link].1.0.0 [Link].1.0

3.3.1. Utilidad ldd


Podemos saber con que versin est compilado un programa por medio del programa ldd; Veamos como funciona:
$ ldd apli2 [Link].1.0 => /home/user/[Link].1.0 (0x40023000) [Link].6 => /lib/[Link].6 (0x40025000) [Link].2 => /lib/[Link].2 (0x4010d000) /lib/[Link].2 => /lib/[Link].2 (0x40000000)

Si ahora modificamos la librera y creamos una nueva versin llamada [Link].1.0.2 pero antenemos el soname [Link].1.0 la aplicacin seguir funcionando sin ms que cambiar el nlace simblico para que apunte a la nueva librera.

3.3.2. Utilidad ldconfig


Como el asunto de los enlaces puede llegar a ser muy tedioso existe una utilidad llamada dconfig que hace todo esto por nosotros. Como siempre, veamos como automatizar todo con un makefile:
CC=gcc CFLAGS=-Wall -ggdb -fPIC

LDFLAGS=-fPIC -shared NOMBRE_LIB=[Link].1.0.0 SONAME=[Link].1.0 $(NOMBRE_LIB): a.o $(CC) -Wl,-soname,$(SONAME) $(LDFLAGS) -o $@ $^ ln -s $(NOMBRE_LIB) [Link] ldconfig -vn ./ clean: $(RM) *.o core [Link]*

4. Enlace dinmico en tiempo de ejecucin


Cuando un programa se enlaza con una librera dinmica, este obtiene informacin de como debe manipular los objetos que en ella se encuentran para cuando llegue el momento de la ejecucin. Existe otra posibilidad de utilizar el cdigo que contiene una librera dinmica. Este mtodo permite definir la interfaz de acceso a una librera y en tiempo de ejecucin acceder a la librera sin tener ningn conocimiento previo. Esta es la forma en la que habitualmente se implementan los plugins. El acceso se consigue por medio de las siguientes funciones:
void* dlopen( const char* nomfich, int indicador );

const char* dlerror( void );

Abre la librera dinmica nomfich (debe ser la ruta absoluta) y devuelve un manejador de la librera. El argumento indicador es el modo en que se cargar la librera. Devuelve una cadena con la descripcin del ltimo error ocurrido.

void* dlsym( void* manejador, char* smbolo );

int dlclose( void* manejador );

Devuelve la direccin del smbolo cuyo nombre corresponde con el argumento simbolo ubicado en la librera referenciado por manejador, que es un valor devuelto dlopen(). Descarga la librera dinmica referenciada por medio de manejador.

4.1. Ejemplo de enlace dinmico


Disponemos de una librera dinmica llamada [Link] compilada a partir del siguiente cdigo:
#include <stdio.h> void rehola(int i) { printf("Hola mundo por %d vez.\n", i); }

Y tenemos un fichero con el siguiente cdigo llamado apli3.c:


#include <stdio.h> #include <dlfcn.h> #define RUTA_LIBHOLA "/home/user/[Link]" int main(){ int i = 3;

void *pLibHola; /* manejador de la libreria libhola */ void (*pFuncion)(int); /* smbolo que importamos de libhola */ if ((pLibHola = dlopen(RUTA_LIBHOLA, RTLD_LAZY)) ==NULL) { fprintf(stderr, dlerror()); return 1; } if ((pFuncion = dlsym(pLibHola, "rehola")) == NULL) { fprintf(stderr, dlerror()); return 1; } if ((pFuncion = dlsym(pLibHola, "rehola")) == NULL) { fprintf(stderr, dlerror()); return 1; } pFuncion(i); dlclose(pLibHola); return(0);

Este cdigo se compila simplemente con:


$ gcc -o apli3 apli3.c -ldl

La opcin -ldl es necesaria para poder utilizar la librera [Link] que es la encargada de implementar los enlaces dinmicos, pero en ningn momento se han hecho referencias a la librera libhola, slo al lugar donde se encuentra. Si ejecutamos el programa vemos lo siguiente:
$ ./apli3 Hola mundo por 3 vez.

5. Precarga de smbolos
Esta es otra posibilidad ms para utilizar cdigo externo de forma dinmica. Consiste en cargar una librera dinmica antes de un programa. Dicha librera dinmica contendr smbolos referenciados por el programa. Supongamos que un programa apli4 hace uso del smbolo FuncionG que se encuentra en la librera dinmica [Link]. Pues bien, podemos escribir una librera diferente [Link] que implemente la FuncionG a condicin de que cumpla su prototipo, pero cuya funcionalidad puede ser completamente distinta. Despus, con este mtodo, se puede hacer que el programa utilice el smbolo que hay en nuestra librera en lugar del que hay en la librera [Link]. Hay dos formas para conseguir dicho comportamiento:

Utilizar la variable de entorno LD_PRELOAD de la siguiente manera:


$ LD_PRELOAD=/home/user/[Link] apli4

Por medio del fichero /etc/[Link] que contendr los nombres de las libreras cuyos smbolos se les dar prioridad en la carga.

En el documento Depuracin Avanzada en GNU/Linux, de esta misma serie de documentos, aparecen varios ejemplos del uso de este mtodo.

Referencias
[1] Escuela Superior de Informtica, Aplicaciones de desarrollo en GNU/Linux, 2001. [2] [Link]

[Link]

Unidad 3. Programacin concurrente multihilo.


3.5 Concepto de Hilo.

Programacin concurrente
Se llama "hilo" a un flujo de programa que se ejecuta a la vez que otros. En un programa "multihilo", es decir que tiene varios hilos, hay varios flujos ejecutndose a la vez. El concepto de simultaneidad se ha implementado de distintas formas. Hay tres variantes principales. Cuando se habla de "procesos" cada flujo de ejecucin tiene una copia particular de la memoria del programa. Si dos procesos tienen que comunicarse, han de usar mecanismos de IPC (Comunicacin Entre Procesos = "Inter Process Communication") como sockets, tuberas ("pipes") o ficheros proyectados en memoria ("memory mapped files"). Es el mismo tipo de comunicacin que usan dos programas distintos. Cuando hablamos de "hilos" el aislamiento es menor. Hay una sola copia del programa en memoria (aunque cada hilo tiene su pila) y todos los hilos pueden usar la memoria global como propia. En los programas con varios hilos hay que tener cuidado para evitar el acceso simultneo de dos hilos a la misma zona de memoria, lo que podra provocar corrupcin de datos. Se usan "semforos" o "secciones crticas" para "proteger" un recurso. Esto es asegurar que slo un hilo a la vez est en posesin del recurso protegido". Hay una tercera forma llamada "corrutina". Para ser exactos no podemos decir que haya simultaneidad, ms bien intercalacin. Hay varios flujos de programa, pero slo uno de ellos est activo a la vez. El flujo activo completa alguna tarea y l mismo cede el control saltando a otra corrutina que sigue ejecutndose donde lo dej la ltima vez. En esto se diferencia de hilos y procesos, en los cuales los flujos de ejecucin son detenidos externamente por mecanismos del sistema operativo. Las corrutinas comparten toda la memoria excepto la pila. Pero recordemos que no son realmente simultneas. No es necesario usar semforos ni secciones crticas. Simplemente el cdigo debe ejecutar de un tirn ciertas tareas que no se pueden quedar a medias. En la prctica son mucho ms seguras que los hilos.

Cada uno de estos tres sabores de simultaneidad es mejor para un tipo de aplicacin. Si el programa no necesita apenas comunicacin entre los diversos flujos, lo ms sencillo es crear varios procesos, o sea ejecutar varias copias del programa simultneas e independientes. La ventaja de los hilos es el acceso ms cmodo a la informacin compartida. Tan cmodo como acceder a una variable global. Pero tambin es ms inseguro. La programacin concurrente es difcil. Es importante mantener el esquema sencillo, porque a la mnima complicacin se pueden producir bloqueos mutuos y otras sorpresas. Las corrutinas son malas para programar "demonios" (programas en segundo plano), que pueden tener que atender peticiones de otros programas en paralelo. Por lo dems son preferibles a los procesos por velocidad y a los hilos por seguridad. En realidad s que hay otra pega: que hay pocos lenguajes que las implementen. Lenguajes tan populares como C++, Java y Delphi no las tienen.

[Link]

Conceptos Bsicos sobre Hilos


El multihilo soportado en Java gira alrededor del concepto de hilo. La cuestin es, qu es un hilo? De forma sencilla, un hilo es un nico flujo de ejecucin dentro de un proceso. Pero ser mejor comenzar desde el principio, un proceso es un programa ejecutndose dentro de su propio espacio de direcciones. lava es un sistema multiproceso, esto significa que soporta varios procesos corriendo a la vez dentro de sus propios espacios de direcciones. Estamos ms familiarizados con el trmino multitarea, el cual describe un escenario muy similar al multiproceso. Por ejemplo, consideremos la cantidad de aplicaciones que corren a la vez dentro de un mismo entorno grfico. Mientras escribo esto, est corriendo Microsoft Word adems de Internet Explorer, Windows Explorer, CD Player y el Volumen Control. Estas aplicaciones son todas procesos ejecutados dentro de Windows 98. De esta forma, se puede pensar que los procesos son anlogos a las aplicaciones o a programas aislados, pero cada proceso tiene asignado espacio propio de ejecucin dentro del sistema. Un hilo es una secuencia de cdigo en ejecucin dentro del contexto de un proceso. Los hilos no pueden ejecutarse ellos solos; requieren la supervisin de un proceso padre para [Link] de cada proceso hay varios hilos ejecutndose. Por ejemplo, Word puede tener un hilo en background chequeando automticamente la gramtica de lo que estoy escribiendo, mientras otro hilo puede estar salvando automticamente los cambios del documento en el que estoy trabajando. Como Word, cada aplicacin (proceso) puede correr varios hilos los cuales estn realizando diferentes tareas. Esto significa que los hilos estn siempre asociados con un proceso en particular. Los hilos a menudo son conocidos o llamados procesos ligeros. Un hilo, en efecto, es muy similar a un proceso pero con la diferencia de que un hilo siempre corre dentro del contexto de otro programa. Por el contrario, los procesos mantienen su propio espacio de

direcciones y entorno de operaciones. Los hilos dependen de un programa padre en lo que se refiere a recursos de ejecucin Java es un lenguaje de programacin que incorpora hilos en el corazn del mismo lenguaje. Comnmente, los hilos son implementados a nivel de sistema, requiriendo una interfaz de programacin especfica separada del ncleo del lenguaje de programacin. Esto es lo que ocurre con CIC++ programando en Windows, porque se necesita usar la interfaz de programacin Win32 para desarrollar aplicaciones Windows multihilo. Java se presenta como ambos, como lenguaje y como sistema de tiempo de ejecucin (runtime), siendo posible integrar hilos dentro de ambos. El resultado final es que se pueden usar hilos Java como standard, en cualquier plataforma.

Clases Relacionadas con los Hilos


El lenguaje de programacin Java proporciona soporte para hilos a travs de una simple interfaz y un conjunto de clases. La interfaz de Java y las clases que incluyen funcionalidades sobre hilos son las siguientes: Thread Runnable Object Thread

Thread
La clase Thread es la clase responsable de producir hilos funcionales para otras clases. Para aadir la funcionalidad de hilo a una clase simplemente se deriva la clase de Thread y se ignora el mtodo run. Es en este mtodo run donde el procesamiento de un hilo toma lugar, ya menudo se refieren a l como el cuerpo del hilo. La clase Thread tambin define los mtodos start y stop, los cuales te permiten comenzar y parar la ejecucin del hilo, adems de un gran nmero de mtodos tiles.

Runnable
Java no soporta herencia mltiple de forma directa, es decir, no se puede derivar una clase de varias clases padre. Esto nos plantea la duda sobre cmo podemos aadir la funcionalidad de Hilo a una clase que deriva de otra clase, siendo sta distinta de Thread. Para lograr esto se utiliza la interfaz- Runnable. La interfaz Runnable proporciona la capacidad de aadir la funcionalidad de un hio a una clase simplemente implementando la interfaz, en lugar de derivndola de la clase Thread. Las clases que implementan la interfaz Runnable proporcionan un mtodo run que es ejecutado por un objeto hilo asociado que es creado aparte. Esta es una herramienta muy til y a menudo es la nica salida que tenemos para incorporar multihilo dentro de las

clases. Esta cuestin ser tratada ms ampliamente en el apartado de Creacin de hilos.

Object
Aunque, estrictamente hablando, no es una clase de apoyo a los hilos, la clase objeto proporciona unos cuantos mtodos cruciales dentro de la arquitectura multihilo de Java. Estos mtodos son wait, notify y notifyAll. El mtodo wait hace que el hilo de ejecucin espere en estado dormido hasta que se le notifique que contine. Del mismo modo, el mtodo notify informa a un hilo en espera de que contine con su ejecucin. El mtodo notifyAll es similar a notify excepto que se aplica a todos los hilos en espera. Estos tres mtodos solo pueden ser llamados desde un mtodo o bloque sincronizado (o bloque de sincronizacin).
}

Grupos de Hilos
Todo hilo de ejecucin en Java debe formar parte de un grupo. La clase ThreadGroup define e implementa la capacidad de un grupo de hilos. Los grupos de hilos permiten que sea posible recoger varios hilos de ejecucin en un solo objeto y manipularlo como un grupo, en vez de individualmente. Por ejemplo, se pueden regenerar los hilos de un grupo mediante una sola sentencia. Cuando se crea un nuevo hilo, se coloca en un grupo, bien indicndolo explcitamente, o bien dejando que el sistema lo coloque en el grupo por defecto. Una vez creado el hilo y asignado a un grupo, ya no se podr cambiar a otro grupo. Si no se especifica un grupo en el constructor, el sistema coloca el hilo en el mismo grupo en que se encuentre el hilo de ejecucin que lo haya creado, y si no se especifica en grupo para ninguno de los hilos, entonces todos sern miembros del grupo "main", que es creado por el sistema cuando arranca la aplicacin Java. En la ejecucin de los ejemplos de esta seccin, se ha podido observar la circunstancia anterior. Por ejemplo, el resultado en pantalla de uno de esos ejemplos es el que se reproduce a continuacin: % java java1002 Thread[hiloA,5,main] Thread[hiloB,5,main] Thread[main,5,main] Como resultado de la ejecucin de sentencias del tipo: [Link]( [Link]() ); Para presentar la informacin sobre el hilo de ejecucin. Se puede observar que aparece el nombre del hilo, su prioridad y el nombre del grupo en que se encuentra englobado. La clase Thread proporciona constructores en los que se puede especificar el grupo del hilo que se esta creando en el mismo momento de instanciarlo, y tambin mtodos como setThreadGroup(), que permiten determinar el grupo en que se encuentra un hilo de ejecucin.

Estados de un Hilo de Ejecucin


Durante el ciclo de vida de un hilo, ste se puede encontrar en diferentes estados. La figura siguiente muestra estos estados y los mtodos que provocan el paso de un estado a otro. Este diagrama no es una mquina de estados finita, pero es lo que ms se aproxima al funcionamiento real de un hilo.

Nuevo Thread
La siguiente sentencia crea un nuevo hilo de ejecucin pero no lo arranca, lo deja en el estado de Nuevo Thread: Thread MiThread = new MiClaseThread(); Thread MiThread = new Thread( new UnaClaseThread,"hiloA" ); Cuando un hilo est en este estado, es simplemente un objeto Thread vaco. El sistema no ha destinado ningn recurso para l. Desde este estado solamente puede arrancarse llamando al mtodo start(), o detenerse definitivamente, llamando al mtodo stop(); la llamada a cualquier otro mtodo carece de sentido y lo nico que provocar ser la generacin de una excepcin de tipo IllegalThreadStateException.

Ejecutable
Ahora obsrvense las dos lneas de cdigo que se presentan a continuacin: Thread MiThread = new MiClaseThread(); [Link](); La llamada al mtodo start() crear los recursos del sistema necesarios para que el hilo puede ejecutarse, lo incorpora a la lista de procesos disponibles para ejecucin del sistema y llama al mtodo run() del hilo de ejecucin. En este momento se encuentra en el estado Ejecutable del diagrama. Y este estado es Ejecutable y no En Ejecucin, porque cuando el hilo est aqu no esta corriendo. Muchos ordenadores tienen solamente un procesador lo que hace imposible que todos los hilos estn corriendo al mismo tiempo. Java implementa un tipo de scheduling o lista de procesos, que permite que el procesador sea compartido entre todos los procesos o hilos que se encuentran en la lista. Sin embargo, para el propsito que aqu se persigue, y en la mayora de los casos, se puede considerar que este estado es realmente un estado En Ejecucin, porque la impresin que produce ante el usuario es que todos los procesos se ejecutan al mismo tiempo.

Cuando el hilo se encuentra en este estado, todas las instrucciones de cdigo que se encuentren dentro del bloque declarado para el mtodo run(), se ejecutarn secuencialmente.

Parado

El hilo de ejecucin entra en estado Parado cuando alguien llama al mtodo suspend(), cuando se llama al mtodo sleep(), cuando el hilo est bloqueado en un proceso de entrada/salida o cuando el hilo utiliza su mtodo wait() para esperar a que se cumpla una determinada condicin. Cuando ocurra cualquiera de las cuatro cosas anteriores, el hilo estar Parado. Por ejemplo, en el trozo de cdigo siguiente: Thread MiThread = new MiClaseThread(); [Link](); try { [Link]( 10000 ); } catch( InterruptedException e ) { ; } la lnea de cdigo que llama al mtodo sleep(): [Link]( 10000 ); hace que el hilo se duerma durante 10 segundos. Durante ese tiempo, incluso aunque el procesador estuviese totalmente libre, MiThread no correra. Despus de esos 10 segundos. MiThread volvera a estar en estado Ejecutable y ahora s que el procesador podra hacerle caso cuando se encuentre disponible. Para cada una de los cuatro modos de entrada en estado Parado, hay una forma especfica de volver a estado Ejecutable. Cada forma de recuperar ese estado es exclusiva; por ejemplo, si el hilo ha sido puesto a dormir, una vez transcurridos los milisegundos que se especifiquen, l solo se despierta y vuelve a estar en estado Ejecutable. Llamar al mtodo resume() mientras est el hilo durmiendo no servira para nada. Los mtodos de recuperacin del estado Ejecutable, en funcin de la forma de llegar al estado Parado del hilo, son los siguientes: Si un hilo est dormido, pasado el lapso de tiempo Si un hilo de ejecucin est suspendido, despus de una llamada a su mtodo resume() Si un hilo est bloqueado en una entrada/salida, una vez que el comando de entrada/salida concluya su ejecucin Si un hilo est esperando por una condicin, cada vez que la variable que controla esa condicin vare debe llamarse al mtodo notify() o notifyAll()

Muerto
Un hilo de ejecucin se puede morir de dos formas: por causas naturales o porque lo maten (con stop()). Un hilo muere normalmente cuando concluye de forma habitual su mtodo run(). Por ejemplo, en el siguiente trozo de cdigo, el bucle while es un bucle finito -realiza la iteracin 20 veces y termina-: public void run() { int i=0; while( i < 20 ) { i++; [Link]( "i = "+i ); } } Un hilo que contenga a este mtodo run(), morir naturalmente despus de que se complete el bucle y run() concluya. Tambin se puede matar en cualquier momento un hilo, invocando a su mtodo stop(). En el trozo de cdigo siguiente: Thread MiThread = new MiClaseThread();

[Link](); try { [Link]( 10000 ); } catch( InterruptedException e ) { ; } [Link](); se crea y arranca el hilo MiThread, se duerme durante 10 segundos y en el momento de despertarse, la llamada a su mtodo stop(), lo mata. El mtodo stop() enva un objeto ThreadDeath al hilo de ejecucin que quiere detener. As, cuando un hilo es parado de este modo, muere asncronamente. El hilo morir en el momento en que reciba ese objeto ThreadDeath. Los applets utilizarn el mtodo stop() para matar a todos sus hilos cuando el navegador con soporte Java en el que se estn ejecutando le indica al applet que se detengan, por ejemplo, cuando se minimiza la ventana del navegador o cuando se cambia de pgina.

El mtodo isAlive()

El interfaz de programacin de la clase Thread incluye el mtodo isAlive(), que devuelve true si el hilo ha sido arrancado (con start()) y no ha sido detenido (con stop()). Por ello, si el mtodo isAlive() devuelve false, sabemos que estamos ante un Nuevo Thread o ante un thread Muerto. Si devuelve true, se sabe que el hilo se encuentra en estado Ejecutable o Parado. No se puede diferenciar entre Nuevo Thread y Muerto, ni entre un hilo Ejecutable o Parado.

Scheduling
Java tiene un Scheduler, una lista de procesos, que monitoriza todos los hilos que se estn ejecutando en todos los programas y decide cuales deben ejecutarse y cuales deben encontrarse preparados para su ejecucin. Hay dos caractersticas de los hilos que el scheduler identifica en este proceso de decisin. Una, la ms importante, es la prioridad del hilo de ejecucin; la otra, es el indicador de demonio. La regla bsica del scheduler es que si solamente hay hilos demonio ejecutndose, la Mquina Virtual Java (JVM) concluir. Los nuevos hilos heredan la prioridad y el indicador de demonio de los hilos de ejecucin que los han creado. El scheduler determina qu hilos debern ejecutarse comprobando la prioridad de todos ellos, aquellos con prioridad ms alta dispondrn del procesador antes de los que tienen prioridad ms baja. El scheduler puede seguir dos patrones, preemptivo y no-preemptivo. Los schedulers preemtivos proporcionan un segmento de tiempo a todos los hilos que estn corriendo en el sistema. El scheduler decide cual ser el siguiente hilo a ejecutarse y llama al mtodo resume() para darle vida durante un perodo fijo de tiempo. Cuando el hilo ha estado en ejecucin ese perodo de tiempo, se llama a suspend() y el siguiente hilo de ejecucin en la lista de procesos ser relanzado (resume()). Los schedulers no-preemtivos deciden que hilo debe correr y lo ejecutan hasta que concluye. El hilo tiene control total sobre el sistema mientras est en ejecucin. El mtodo yield() es la forma en que un hilo fuerza al scheduler a comenzar la ejecucin de otro hilo que est esperando. Dependiendo del sistema en que est corriendo Java, el scheduler ser de un tipo u otro, preemtivo o nopreemptivo.

Prioridades

El scheduler determina el hilo que debe ejecutarse en funcin de la prioridad asignada a cada uno de ellos. El rango de prioridades oscila entre 1 y 10. La prioridad por defecto de un hilo de ejecucin es NORM_PRIORITY, que tiene asignado un valor de 5. Hay otras dos variables estticas disponibles, que son MIN_PRORITY, fijada a 1, y MAX_PRIORITY, que tiene un valor de 10. El mtodo getPriority() puede utilizarse para conocer el valor actual de la prioridad de un hilo.

Hilos Demonio
Los hilos de ejecucin demonio tambin se llaman servicios, porque se ejecutan, normalmente, con prioridad baja y proporcionan un servicio bsico a un programa o programas cuando la actividad de la mquina es reducida. Los hilos demonio son tiles cuando un hilo debe ejecutarse en segundo plano durante largos perodos de [Link] ejemplo de hilo demonio que est ejecutndose continuamente es el recolector de basura (garbage collector). Este hilo, proporcionado por la Mquina Virtual Java, comprueba las variables de los programas a las que no se accede nunca y libera estos recursos, devolvindolos al sistema. Un hilo puede fijar su indicador de demonio pasando un valor true al mtodo setDaemon(). Si se pasa false a este mtodo, el hilo de ejecucin ser devuelto por el sistema como un hilo de usuario. No obstante, esto ltimo debe realizarse antes de que se arranque el hilo de ejecucin (start()). Si se quiere saber si un hilo es un hilo demonio, se utilizar el mtodo isDaemon().

Diferencia entre hilos y fork()


fork() en Unix crea un proceso hijo que tiene su propia copia de datos y cdigo del padre. Esto funciona correctamente si no hay problemas de cantidad de memoria de la mquina y se dispone de una CPU poderosa, y siempre que se mantenga el nmero de procesos hijos dentro de un lmite manejable, porque se hace un uso intensivo de los recursos del sistema. Los applets Java no pueden lanzar ningn proceso en el cliente, porque eso sera una fuente de inseguridad y no est permitido. Las aplicaciones y los applets deben utilizar hilos de ejecucin. La multitarea pre-emptiva tiene sus problemas. Un hilo puede interrumpir a otro en cualquier momento, de ah lo de pre-emptive. Fcilmente puede el lector imaginarse lo que pasara si un hilo de ejecucin est escribiendo en un array, mientras otro hilo lo interrumpe y comienza a escribir en el mismo array. Los lenguajes como C y C++ necesitan de las funciones lock() y unlock() para antes y despus de leer o escribir datos. Java tambin funciona de este modo, pero oculta el bloqueo de datos bajo la sentencia synchronized: synchronized int MiMetodo(); Otro rea en que los hilos son muy tiles es en los interfaces de usuario. Permiten incrementar la respuesta del ordenador ante el usuario cuando se encuentra realizando complicados clculos y no puede atender a la entrada de usuario. Estos clculos se pueden realizar en segundo plano, o realizar varios en primer plano (msica y animaciones) sin que se d apariencia de prdida de rendimiento.

Ejemplo de animacin
Este es un ejemplo de un applet, [Link], que crea un hilo de animacin que nos presenta el globo terrqueo en rotacin. Aqu se puede ver que el applet crea

un hilo de ejecucin de s mismo, concurrencia. Adems, [Link]() llama al start() del hilo, no del applet, que automticamente llamar a run(): import [Link].*; import [Link]; public class java1006 extends Applet implements Runnable { Image imagenes[]; MediaTracker tracker; int indice = 0; Thread animacion; int maxAncho,maxAlto; Image offScrImage; // Componente off-screen para doble buffering Graphics offScrGC; // Nos indicar si ya se puede pintar boolean cargado = false; // Inicializamos el applet, establecemos su tamao y // cargamos las imgenes public void init() { // Establecemos el supervisor de imgenes tracker = new MediaTracker( this ); // Fijamos el tamao del applet maxAncho = 100; maxAlto = 100; imagenes = new Image[33]; // Establecemos el doble buffer y dimensionamos el applet try { offScrImage = createImage( maxAncho,maxAlto ); offScrGC = [Link](); [Link]( [Link] ); [Link]( 0,0,maxAncho,maxAlto ); resize( maxAncho,maxAlto ); } catch( Exception e ) { [Link](); } // Cargamos las imgenes en un array for( int i=0; i < 33; i++ ) { String fichero = new String( "Tierra"+[Link](i+1)+".gif" ); imagenes[i] = getImage( getDocumentBase(),fichero ); // Registramos las imgenes con el tracker [Link]( imagenes[i],i ); } try { // Utilizamos el tracker para comprobar que todas las // imgenes estn cargadas [Link](); } catch( InterruptedException e ) { ; } cargado = true; } // Pintamos el fotograma que corresponda

public void paint( Graphics g ) { if( cargado ) [Link]( offScrImage,0,0,this ); } // Arrancamos y establecemos la primera imagen public void start() { if( [Link]( indice ) ) [Link]( imagenes[indice],0,0,this ); animacion = new Thread( this ); [Link](); } // Aqu hacemos el trabajo de animacin // Muestra una imagen, para, muestra la siguiente... public void run() { // Obtiene el identificador del thread Thread thActual = [Link](); // Nos aseguramos de que se ejecuta cuando estamos en un // thread y adems es el actual while( animacion != null && animacion == thActual ) { if( [Link]( indice ) ) { // Obtenemos la siguiente imagen [Link]( imagenes[indice],0,0,this ); indice++; // Volvemos al principio y seguimos, para el bucle if( indice >= [Link] ) indice = 0; } // Ralentizamos la animacin para que parezca normal try { [Link]( 200 ); } catch( InterruptedException e ) { ; } // Pintamos el siguiente fotograma repaint(); } } } En el ejemplo se pueden observar ms cosas. La variable thActual es propia de cada hilo que se lance, y la variable animacion la estarn viendo todos los hilos. No hay duplicidad de procesos, sino que todos comparten las mismas variables; cada hilo de ejecucin, sin embargo, tiene su pila local de variables, que no comparte con nadie y que son las que estn declaradas dentro de las llaves del mtodo run(). La excepcin InterruptedExcepcion salta en el caso en que se haya tenido al hilo parado ms tiempo del debido. Es imprescindible recoger esta excepcin cuando se estn implementando hilos de ejecucin, tanto es as, que en el caso de no recogerla, el compilador generar un error.

Comunicacin entre Hilos

Otra clave para el xito y la ventaja de la utilizacin de mltiples hilos de ejecucin en una aplicacin, o aplicacin multithreaded, es que pueden comunicarse entre s. Se pueden disear hilos para utilizar objetos comunes, que cada hilo puede manipular independientemente de los otros hilos de ejecucin. El ejemplo clsico de comunicacin de hilos de ejecucin es un modelo productor/consumidor. Un hilo produce una salida, que otro hilo usa (consume), sea lo que sea esa salida. Entonces se crea un productor, que ser un hilo que ir sacando caracteres por su salida; y se crea tambin un consumidor que ir recogiendo los caracteres que vaya sacando el productor y un monitor que controlar el proceso de sincronizacin entre los hilos de ejecucin. Funcionar como una tubera, insertando el productor caracteres en un extremo y leyndolos el consumidor en el otro, con el monitor siendo la propia tubera.

Productor
El productor extender la clase Thread, y su cdigo es el siguiente: class Productor extends Thread { private Tuberia tuberia; private String alfabeto = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public Productor( Tuberia t ) { // Mantiene una copia propia del objeto compartido tuberia = t; } public void run() { char c; // Mete 10 letras en la tubera for( int i=0; i < 10; i++ ) { c = [Link]( (int)([Link]()*26 ) ); [Link]( c ); // Imprime un registro con lo aadido [Link]( "Lanzado "+c+" a la tuberia." ); // Espera un poco antes de aadir ms letras try { sleep( (int)([Link]() * 100 ) ); } catch( InterruptedException e ) {;} } } } Notar que se crea una instancia de la clase Tuberia, y que se utiliza el mtodo [Link]() para que se vaya construyendo la tubera, en principio de 10 caracteres.

Consumidor

Ahora se reproduce el cdigo del consumidor, que tambin extender la clase Thread:

class Consumidor extends Thread { private Tuberia tuberia; public Consumidor( Tuberia t ) { // Mantiene una copia propia del objeto compartido tuberia = t; } public void run() { char c; // Consume 10 letras de la tubera for( int i=0; i < 10; i++ ) { c = [Link](); // Imprime las letras retiradas [Link]( "Recogido el caracter "+c ); // Espera un poco antes de coger ms letras try { sleep( (int)([Link]() * 2000 ) ); } catch( InterruptedException e ) {;} } } } En este caso, como en el del productor, se cuenta con un mtodo en la clase Tuberia, [Link](), para manejar la informacin.

Monitor

Una vez vistos el productor de la informacin y el consumidor, solamente queda por ver qu es lo que hace la clase Tuberia. Lo que realiza la clase Tuberia, es una funcin de supervisin de las transacciones entre los dos hilos de ejecucin, el productor y el consumidor. Los monitores, en general, son piezas muy importantes de las aplicaciones multihilo, porque mantienen el flujo de comunicacin entre los hilos. class Tuberia { private char buffer[] = new char[6]; private int siguiente = 0; // Flags para saber el estado del buffer private boolean estaLlena = false; private boolean estaVacia = true; // Mtodo para retirar letras del buffer public synchronized char recoger() { // No se puede consumir si el buffer est vaco while( estaVacia == true ) { try { wait(); // Se sale cuando estaVacia cambia a false } catch( InterruptedException e ) { ; } } // Decrementa la cuenta, ya que va a consumir una letra siguiente--; // Comprueba si se retir la ltima letra if( siguiente == 0 ) estaVacia = true; // El buffer no puede estar lleno, porque acabamos // de consumir estaLlena = false; notify();

// Devuelve la letra al thread consumidor return( buffer[siguiente] ); } // Mtodo para aadir letras al buffer public synchronized void lanzar( char c ) { // Espera hasta que haya sitio para otra letra while( estaLlena == true ) { try { wait(); // Se sale cuando estaLlena cambia a false } catch( InterruptedException e ) { ; } } // Aade una letra en el primer lugar disponible buffer[siguiente] = c; // Cambia al siguiente lugar disponible siguiente++; // Comprueba si el buffer est lleno if( siguiente == 6 ) estaLlena = true; estaVacia = false; notify(); } } En la clase Tuberia se pueden observar dos caractersticas importantes: los miembros dato (buffer[]) son privados, y los mtodos de acceso (lanzar() y recoger()) son sincronizados. Aqu se observa que la variable estaVacia es un semforo, como los de toda la vida. La naturaleza privada de los datos evita que el productor y el consumidor accedan directamente a stos. Si se permitiese el acceso directo de ambos hilos de ejecucin a los datos, se podran producir problemas; por ejemplo, si el consumidor intenta retirar datos de un buffer vaco, obtendr excepciones innecesarias, o se bloquear el proceso. Los mtodos sincronizados de acceso impiden que los productores y consumidores corrompan un objeto compartido. Mientras el productor est aadiendo una letra a la tubera, el consumidor no la puede retirar y viceversa. Esta sincronizacin es vital para mantener la integridad de cualquier objeto compartido. No sera lo mismo sincronizar la clase en vez de los mtodos, porque esto significara que nadie puede acceder a las variables de la clase en paralelo, mientras que al sincronizar los mtodos, s pueden acceder a todas las variables que estn fuera de los mtodos que pertenecen a la clase. Se pueden sincronizar incluso variables, para realizar alguna accin determinada sobre ellas, por ejemplo: sincronized( p ) { // aqu se colocara el cdigo // los threads que estn intentando acceder a p se pararn // y generarn una InterruptedException } El mtodo notify() al final de cada mtodo de acceso avisa a cualquier proceso que est esperando por el objeto, entonces el proceso que ha estado esperando intentar acceder de nuevo al objeto. En el mtodo wait() se hace que el hilo se quede a la espera de que le llegue un notify(), ya sea enviado por el hilo de ejecucin o por el sistema. Ahora que ya se dispone de un productor, un consumidor y un objeto compartido, se necesita una aplicacin que arranque los hilos y que consiga que todos hablen con el mismo objeto que estn compartiendo. Esto es lo que hace el siguiente trozo de cdigo, del fuente [Link]: class java1007 { public static void main( String args[] ) { Tuberia t = new Tuberia(); Productor p = new Productor( t );

Consumidor c = new Consumidor( t ); [Link](); [Link](); } } Compilando y ejecutando esta aplicacin, se podr observar en modelo que se ha diseado en pleno funcionamiento.

Monitorizacin del Productor

Los programas productor/consumidor a menudo emplean monitorizacin remota, que permite al consumidor observar el hilo del productor interaccionando con un usuario o con otra parte del sistema. Por ejemplo, en una red, un grupo de hilos de ejecucin productores podran trabajar cada uno en una workstation. Los productores imprimiran documentos, almacenando una entrada en un registro (log). Un consumidor (o mltiples consumidores) podra procesar el registro y realizar durante la noche un informe de la actividad de impresin del da anterior. Otro ejemplo, a pequea escala podra ser el uso de varias ventanas en una workstation. Una ventana se puede usar para la entrada de informacin (el productor), y otra ventana reaccionara a esa informacin (el consumidor). Peer, es un observador general del sistema.

[Link]

Hilos en Glib.
Los hilos permiten que un programa realice varias tareas simultneamente. Tradicionalmente, los sistemas operativos tipo UNIX/linux han usado los procesos para este propsito. No obstante, stos son mucho ms pesados (requieren ms recursos) que los hilos. Sin embargo, cada sistema operativo ha implementado de una forma diferente el concepto de hilo y, como resultado, las implementaciones no son compatibles, aunque sean muy parecidas. sto implica que si, se desea usar hilos en el programa ser necesario proveer de una implementacin diferente para cada sistemas operativo tipo UNIX. GLib solventa este problema ocultando las implementaciones especificas de cada plataforma y proveyendo de un API que puede ser accedido de la misma forma desde cualquier sistema operativo. No obstante, internamente se usar las llamadas nativas disponibles en la plataforma donde se encuentre la aplicacin. Es decir, GLib abstrae la implementacin de los hilos. Antes de entrar en materia, es necesario hacer una observacin: todos los hilos que un programa crea, comparten el mismo espacio de

direcciones; esto es, se podr acceder a las variables globales de nuestro programa (para lectura y escritura) desde cualquier hilo.

Hilos y Multihilo
Considerando el entorno multithread (multihilo), cada thread (hilo, flujo de control del programa) representa un proceso individual ejecutndose en un sistema. A veces se les llama procesos ligeros o contextos de ejecucin. Tpicamente, cada hilo controla un nico aspecto dentro de un programa, como puede ser supervisar la entrada en un determinado perifrico o controlar toda la entrada/salida del disco. Todos los hilos comparten los mismos recursos, al contrario que los procesos, en donde cada uno tiene su propia copia de cdigo y datos (separados unos de otros). Grficamente, los hilos (threads) se parecen en su funcionamiento a lo que muestra la figura siguiente:

Hay que distinguir multihilo (multithread) de multiproceso. El multiproceso se refiere a dos programas que se ejecutan "aparentemente" a la vez, bajo el control del Sistema Operativo. Los programas no necesitan tener relacin unos con otros, simplemente el hecho de que el usuario desee que se ejecuten a la vez. Multihilo se refiere a que dos o ms tareas se ejecutan "aparentemente" a la vez, dentro de un mismo programa. Se usa "aparentemente" en ambos casos, porque normalmente las plataformas tienen una sola CPU, con lo cual, los procesos se ejecutan en realidad "concurrentemente", sino que comparten la CPU. En plataformas con varias CPU, s es posible que los procesos se ejecuten realmente a la vez. Tanto en el multiproceso como en el multihilo (multitarea), el Sistema Operativo se encarga de que se genere la ilusin de que todo se ejecuta a la vez. Sin embargo, la multitarea puede producir programas que realicen ms trabajo en la misma cantidad de tiempo que el multiproceso, debido a que la CPU est compartida entre tareas de un mismo proceso. Adems, como el multiproceso est implementado a nivel de sistema operativo, el programador no puede intervenir en el planteamiento de su ejecucin; mientras que en el caso del multihilo, como el programa debe ser diseado expresamente para que pueda soportar esta caracterstica, es imprescindible que el autor tenga que planificar adecuadamente la ejecucin de cada hilo, o tarea.

Actualmente hay diferencias en la especificacin del intrprete de Java, porque el intrprete de Windows '95 conmuta los hilos de igual prioridad mediante un algoritmo circular (round-robin), mientras que el de Solaris 2.X deja que un hilo ocupe la CPU indefinidamente, lo que implica la inanicin de los dems.

Concurrencia: Programas que pueden correr al mismo tiempo compartiendo recursos y datos. En un programa concurrente dos o mas procesos pueden comenzar a ejecutarse al mismo tiempo, pero si en un dado momento requieren simultneamente u recurso unico, concurren por l. Los programas corren en paralelo. Los hilos o procesos ligeros son una parte de cdigo o miniprograma que puede ser ejecutada independientemente, de forma que una aplicacin o un applet puede tener varios hilos ejecutndose simultneamente y efectuando distintas tareas; estos hilos se encuentran dentro de un programa y son parte de l. Los hilos, a veces tambin llamados contextos de ejecucin, pueden ser utilizados para la implementacin de algoritmos paralelos o procesos concurrentes, sin ser necesario disponer de equipos con estructura de multiprocesador. En el caso de un solo procesador, los procesos ligeros incorporan mecanismos para compartirlo, establecindose prioridades entre ellos y tambin facilidades de sincronizacin, cuando es necesario. Multiproceso se refiere a dos programas que se ejecutan "aparentemente" a la vez, bajo el control del sistema operativo. Multihilo se refiere a que dos o mas tareas se ejecutan "aparentemente" a la vez, dentro de un mismo programa. Los procesos se ejecutan en realidad "concurrentemente", dado que comparten la cpu. Ciclo de Vida de una Thread

Cada hilo, despus de su creacin y antes de su destruccin, estar en uno de cuatro estados: recien creada, "corrible", bloqueada, o muerta. Recin creada (New thread): entra aqu inmediatamente despues de su creacin. Es decir luego del llamado a new. En este estado los datos locales son ubicados e iniciados. Luego de la invocacin a start(), el hilo pasa al estado "corrible". Corrible (Runnable): Aqu el contexto de ejecucin existe y el hilo puede ocupar la CPU en cualquier momento. Este estado puede subdividirse en dos: Corriendo y encolado. La transicin entre estos dos estados es manejado por lel itinerador de la mquina virtual.

Nota: Un hilo que invoca al mtodo () voluntariamente se mueve asimisma al estado encolado desde el estado corriendo. Bloqueada (not Runnable): Se ingresa cuando: se invoca suspend(), el hilo invoca el mtodo wait() de algn objeto, el hilo invoca sleep(), el hilo espera por alguna operacin de I/O, o el hilo invoca join() de otro hilo para espera por su trmino. El hilo vuelve al estado Corrible cuando el evento por que espera ocurre. Muerta (Dead): Se llega a este estado cuando el hilo termia su ejecucin (concluye el mtodo run) o es detenida por otro hilo llamando al su mtodo stop(). Esta ltima accin no es recomendada. Planificacin de hilos: Para solucionar el problema de comparticion de recursos se puede asignar distintas prioridades a los hilos. Se puede modificar la prioridad de un hilo en cualquier momento despus de su creacin usando el metodo: setPriority() getPriority(). La prioridad de un hilo tiene el efecto de:
1. Si hay 2 hilos para ejecutarse, se ejecuta primero el de mayor prioridad. 2. Si hay 1 hilo ejecutndose y entra un hilo de mayor prioridad, el primer hilo sale de ejecucin y entra este ultimo.

Hilos demonio: Son hilos de muy baja prioridad (llamados servicios) que normalmente se ejecutan en periodos muy largos usando pocos recurso. Para crear un demonio se usa setDaemon():true o false. Clase Thread: Maneja hilos de ejecucin. Hay metodos que controlan si el hilo esta ejecutado, durmiendo, en suspenso o detenido. Metodos bsicos:
1. sleep(milis): Pone en suspenso un hilo en ejecucin durante un cierto tiempo. 2. start(): Pone a ejecutar un hilo. Crea un hilo de sistema y ejecuta. Luego llama al metodo run(). 3. run(): Lleva el cuerpo del hilo. Es llamado por el metodo start(). Normalmente es un bucle. Hay que redefinirlo. 4. suspend(): Detiene el hilo, pero no lo destruye. Puede ejecutarse de nuevo. [Link] instancia. 5. resume(): Reanuda el hilo de ejecucin detenido. [Link] instancia. 6. interrupt(): Detiene el hilo de ejecucin, normalmente no se usa, se deja que el hilo termine su correcta ejecucin. 7. join(): Fuerza al hilo a esperar la finalizacion de los hilos asociados.

HILOS

Es un aspecto importante de los procesos, debido, entre otras cuestiones, porque define la productividad mxima del servidor medida en solicitudes de cliente manejadas por segundo. Este nmero estar en funcin del nmero de hilos que el servidor disponga. Por ejemplo, supongamos que en un computador servidor con un solo procesador cada solicitud de cliente necesita 2 mlseg. de proceso y 8 mlseg. de entrada-salida sin cach a disco.

Si solo dispone de un hilo para realizar todo el proceso, el tiempo de retorno para una solicitud es 2+8 = 10 mlseg. promedio, o sea que puede atender a 100 clientes/seg. Cualquier mensaje de solicitud que llegue mientras el servidor est manejando una solicitud es insertado en la cola del puerto del servidor. Si en cambio dispone de dos hilos que se manejen en forma independiente, es decir, cada uno se puede planificar cuando el otro pasa a estado bloqueado por operaciones de E/S, se incrementa la productividad del servidor. Si todas las solicitudes al disco se envan en serie a 8 mlseg. por proceso, la productividad es 1.000/8 = 125 solicitudes/seg. Si agregamos la existencia de una cach de disco, el servidor mantiene los bloques ledos en bfferes dentro de su espacio de direcciones; el hilo encargado de obtener datos examina previamente la cach compartida evitndose el acceso a disco si los datos estn all. Considerando una tasa de aciertos del 75%, el tiempo de E/S por solicitud se reduce a 2 mlseg., incrementndose la productividad terica a 500 solicitudes/seg. Considerando que el tiempo de uso del procesador se incrementa 2,5 mlseg. por bsquedas de datos en la cach, el procesador puede gestionar 1.000/2,5 = 400 solic/seg. La productividad se puede incrementar por medio del uso de multiprocesadores de memoria compartida con mltiples hilos planificados para procesadores mltiples. Si el servidor del ejemplo anterior se ejecuta en un multiprocesador con dos procesadores, con hilos planificados independientemente sobre los procesadores, se podrn procesar solicitudes en paralelo hasta un mximo de dos hilos. La productividad aumenta en este caso a 444 solic/seg. ARQUITECTURAS PARA SERVIDORES MULTI-HILO Para vincular solicitudes a hilos en un servidor se resume un informe de Schmidt de 1.998, describiendo las arquitecturas basadas en hilos de diferentes implementaciones del Agente de Solicitud de Objetos de CORBA llamado ORB, Object Request Broker. Cada ORB procesa solicitudes que llegan a travs de un conjunto de sockets activos. (La figura muestra una de las posibles arquitecturas basadas en hilos, la Arquitectura de Asociacin de Trabajadores). En la Arquitectura de Asociacin de Trabajadores, en su forma ms simple, el servidor durante la inicializacin, crea un conjunto fijo de hilos de trabajadores para procesar solicitudes. El mdulo receptor y gestor de cola se implementa normalmente como un hilo de E/S que recibe solicitudes de un grupo de sockets o puertos y las sita en una cola para ser recuperadas por los trabajadores. Puede que en ciertos casos sea necesario manejar jerarqua de solicitudes, por ejemplo segn el cliente que enve la solicitud. Esto se puede gestionar mediante mltiples colas, de forma que el trabajador pueda examinar las colas en orden de prioridad. Las desventajas de esta arquitectura son su escasa flexibilidad y el alto nivel de conmutaciones entre la E/S y los hilos de trabajo al manejar la cola compartida. En la Arquitectura de Hilo-por-Solicitud, el hilo de E/S genera un nuevo hilo de trabajo para cada solicitud y ese trabajador se elimina a s mismo cuando ha procesado la

solicitud asociada a un objeto remoto. Esta arquitectura tiene la ventaja de que los hilos no compiten por acceder a una cola compartida y la productividad se maximiza dado que el hilo de E/S puede generar tantos trabajadores como solicitudes tenga. Su desventaja es la sobrecarga debido a las operaciones de creacin y destruccin de hilos. La Arquitectura de Hilo-por-Conexin asocia un hilo por conexin. El servidor crea un hilo trabajador cuando un cliente realiza una conexin y lo destruye cuando se cierra la misma. En el intervalo, el cliente puede realizar mltiples solicitudes sobre la conexin, cuyos destinos pueden ser uno o ms objetos remotos. La Arquitectura de Hilo-por-Objeto asocia un hilo a cada objeto remoto. Un hilo de E/S recibe las solicitudes y las inserta en las colas para los trabajadores, con la diferencia de que en este caso existe una cola por cada objeto. En cada una de las dos ltimas arquitecturas el servidor se beneficia de pequeas sobrecargas en la gestin de hilos en comparacin con la de hilo-por-solicitud.
HILOS DENTRO DE LOS CLIENTES

Los hilos pueden ser tan tiles para los clientes como para los servidores. Proceso cliente con dos hilos: el primer hilo genera resultados que se van a enviar al servidor mediante una invocacin a mtodo remoto, no necesitando, sin embargo una respuesta. Las invocaciones a mtodos remotos normalmente bloquean al que invoca, incluso aunque no sea estrictamente preciso esperar. Este proceso cliente puede aadir un segundo hilo, el cual realiza las invocaciones a los mtodos remotos y se bloque mientras el primer hilo puede continuar computando nuevos resultados. El primer hilo deposita sus resultados en bferes que son vaciados por el segundo hilo. nicamente se bloquea cuando todos los bferes estn llenos. La cuestin de clientes multihilo es evidente tambin en el ejemplo de los navegadores Web. El usuario sufre retardos significativos mientras se cargan las paginas; es por lo tanto esencial para los navegadores la gestin de mltiples solicitudes concurrentes a paginas Web.

HILOS FRENTE A MULTIPLES PROCESOS La utilidad de los hilos permite que la computacin se solape con la entrada-salida y, para el caso de un multiprocesador, con otros cmputos. Se puede obtener el mismo solapamiento mediante la utilizacin de mltiples procesos mono-hilo. La razn por la cual se prefiere el proceso multihilo es: la creacin y gestin de los hilos es mas barata que la de procesos y la de uso compartido de recursos se puede conseguir de forma ms eficiente entre hilos que entre procesos ya que los hilos comparten entornos de ejecucin. Algunos de los principales componentes del estado que deben gestionarse para entornos de ejecucin e hilos: un entorno de ejecucin tiene un espacio de direcciones, interfaces de comunicacin, recu7rsos de alto nivel del tipo de archivos abiertos y objetos para la sincronizacin de hilos como los semforos; adems debe mantener una relacin de los hilos que se asocian a dicho entorno. Un hilo tiene una prioridad de planificacin, un estado de ejecucin (como bloqueado o preparado), los valores almacenados correspondientes a los registros del procesador cuando el hilo esta bloqueado y el estado

relacionado con la gestin de interrupciones software del hilo. Una interrupcin software es un evento que provoca la interrupcin del hilo. Si el hilo tiene asignado un procedimiento de gestin se le transfiere el control. Las seales en UNS son ejemplos de interrupciones software. El entorno de ejecucin y los hilos se asocian con pginas que pertenecen al espacio de direcciones mantenido en memoria principal, mientras que los datos e instrucciones se almacenan en el cach hardware. Comparacin entre procesos e hilos: - la creacin de un nuevo hilo dentro de un proceso existente es mas barata que la creacin de un proceso. - La conmutacin a hilo diferente dentro del mismo proceso es mas barata que la conmutacin entre hilos de diferentes procesos. Los hilos dentro de un proceso pueden compartir datos y otros recursos de forma ms adecuada y eficiente que con procesos separados. - Sin embargo, los hilos dentro de un proceso no estn protegidos entre ellos.

Considrese el coste de creacin de un nuevo hilo dentro de un entorno de ejecucin existente. La principal tarea consiste en asignar una regin para la pila y proporcionar los valores iniciales de los registros del procesador y de al prioridad y estado de ejecucin del hilo. Debido a la existencia de un entorno de ejecucin solo se debe colocar un identificador para el en el registro que describe al hilo. La sobrecarga asociada a la creacin de un proceso es considerablemente mayor que la asociada a la creacin de un nuevo hilo. Es preciso crear en primer lugar un entorno de ejecucin, incluyendo las tablas del espacio de direcciones. Anderson y otro citan valores alrededor de 11 milisegundos para la creacin de un proceso UNS y sobre 1 milisegundo para la creacin de un hilo sobre la misma arquitectura de procesador CVAX ejecutando un ncleo Topaz; en cada caso el tiempo medido supone que la entidad creada realiza exclusivamente una invocacin a un procedimiento vaco antes de terminar. Cuando la nueva entidad realiza una tarea significativa en lugar de la invocacin al procedimiento nulo, se producen costes a largo plazo que tienden a ser mayores para un nuevo proceso que para un nuevo hilo dentro de un proceso ya existente. En un ncleo que soporte memoria virtual, el nuevo proceso generara faltas de pginas segn vaya accediendo por primera vez a datos e instrucciones. Por otro lado para el caso de la ejecucin de un hilo las sobrecargas a largo plazo tambin pueden ocurrir, pero tienden a ser menores. Cuando el hilo accede al cdigo y a los datos que han sido utilizados recientemente por otros hilos del mismo proceso, automticamente se aprovecha del hecho de que dichos datos ya residen en cada cach hardware o bien en la memoria principal. La segunda ventaja de prestaciones de los hilos se refiere a la conmutacin entre hilos, es decir la sustitucin de un hilo por otro en un cierto procesador. Esto puede generarse varias veces durante la vida del hilo. La conmutacin entre hilos que comparten el mismo entorno de ejecucin es mas barata que la de los hilos que pertenecen a

diferentes procesos. Las sobrecargas asociadas a la conmutacin de hilos corresponden a la planificacin y al cambio de contexto. Un contexto de procesador esta formado por los valores de los registros del procesador como el contador del programa y el dominio de proteccin actual del hardware: el espacio de direcciones y el modo de proteccin del procesador. El cambio de contexto es la transicin entre contextos que ocurre cuando se conmuta entre hilos o cuando un nico hilo realiza una llamada al sistema o genera otro tipo de excepcin. Supone realizar las siguientes tareas: - almacenamiento del registro de estado original del procesador y carga del nuevo estado. En algunas situaciones se realiza una transferencia a un nuevo dominio de proteccin: a esto se lo llama transicin de dominio

La conmutacin al ncleo o a otro hilo que pertenece al mismo entorno de ejecucin a travs del ncleo, supone la realizacin de una transicin de dominio. El coste es as mayor aunque, si el ncleo esta vinculado al espacio de direcciones del cliente, es aun relativamente bajo. Cuando se conmuta entre hilos que pertenecen a diferentes entornos de ejecucin se generan mayores sobrecargas. Los costes a largo plazo debidos a la ocupacin de las entradas del cach hardware y de las pginas de memoria principal tienden a aplicarse cuando ocurre la mencionada transicin de dominio. Los valores presentados por Anderson y otros son de 1.8 milisegundos para realizar una conmutacin entre procesos UNS y de 0.4 milisegundos para la conmutacin entre hilos pertenecientes al mismo entorno de ejecucin realizada en el ncleo Topaz. Del proceso clientes con dos hilos, el primer hilo genera los datos y se los pasa al segundo hilo el cual genera una invocacin a un mtodo remoto o bien una llamada a procedimiento remoto. Ambos hilos pueden acceder a datos a travs de variables compartidas. La ventaja esta en la comodidad y eficiencia del uso compartido de datos. Los hilos que comparten un espacio de direcciones y que no han sido codificados en un lenguaje de tipos seguros no estn protegidos entre ellos. Un hilo errneo puede modificar de forma arbitraria los datos de otro hilo, provocando que este falle. Si se requiere proteccin, o bien se utiliza un lenguaje de tipos seguro o bien es preferible utilizar mltiples procesos en lugar de mltiples hilos.

PROGRAMACIN DE HILOS
La programacin de hilos equivale a la programacin concurrente, tal y como ha sido estudiada tradicionalmente, por ejemplo, en el mbito de los sistemas operativos. La mayor parte de la programacin de hilos se realiza en lenguajes de programacin convencionales como C aumentados con bibliotecas de hilos. Un ejemplo es el paquete de Hilos para C (C Threads) desarrollado para el sistema operativo Mach. Algunos lenguajes proporcionan un soporte directo para hilos, como Ada95, Modula-3 y, de forma ms reciente, Java (Oaks y Wong 1999). A continuacin explicaremos someramente los hilos de Java. De la misma forma que en cualquier implementacin de hilos, Java proporciona mtodos para la creacin, destruccin y sincronizacin de hilos. La clase de Java Thread

incluye el constructor y los mtodos de gestin mostrados en la Figura 6.8. Los mtodos de sincronizacin Thready Object estn en la Figura 6.9. [Link](int milisegundos) Bloquea el hilo invocador durante el tiempo especificado hasta que el hilo haya terminado. [Link]() Interrumpe el hilo: le obliga a volver desde una llamada a mtodo bloqueante como sleep(). [Link](long milisegundos, int nanosegundos) Bloquea el hilo invocador hasta que una llamada realizada a notify() o notifyAll() en el objeto despierte el hilo, o bien el hilo sea interrumpido, o bien el tiempo especificado sa haya cumplido. [Link](), [Link]() Despierta, respectivamente, uno o todos los hilos que han invocado a wait() en el objeto.

3.6 Comparacin de un programa de flujo nico contra uno de flujo mltiple. Programas de flujo nico
Un programa de flujo nico o mono-hilvanado (single-thread) utiliza un nico flujo de control (thread) para controlar su ejecucin. Muchos programas no necesitan la potencia o utilidad de mltiples flujos de control. Sin necesidad de especificar explcitamente que se quiere un nico flujo de control, muchos de los applets y aplicaciones son de flujo nico. Por ejemplo, en la archiconocida aplicacin estndar de saludo: public class HolaMundo { static public void main( String args[] ) { [Link]( "Hola Mundo!" ); } } Aqu, cuando se llama a main(), la aplicacin imprime el mensaje y termina. Esto ocurre dentro de un nico hilo de ejecucin (thread). Debido a que la mayor parte de los entornos operativos no solan ofrecer un soporte razonable para mltiples hilos de control, los lenguajes de programacin tradicionales, tales como C++, no incorporaron mecanismos para describir de manera elegante situaciones de este tipo. La sincronizacin entre las mltiples partes de un programa se llevaba a cabo mediante un bucle de suceso nico. Estos entornos son de tipo sncrono, gestionados por sucesos. Entornos tales como el de Macintosh de Apple, Windows de Microsoft y X11/Motif fueron diseados en torno al modelo de bucle de suceso.

Programas de flujo mltiple

En la aplicacin de saludo, no se ve el hilo de ejecucin que corre el programa. Sin embargo, Java posibilita la creacin y control de hilos de ejecucin explcitamente. La utilizacin de hilos (threads) en Java, permite una enorme flexibilidad a los programadores a la hora de plantearse el desarrollo de aplicaciones. La simplicidad para crear, configurar y ejecutar hilos de ejecucin, permite que se puedan implementar muy poderosas y portables aplicaciones/applets que no se puede con otros lenguajes de tercera generacin. En un lenguaje orientado a Internet como es Java, esta herramienta es vital. Si se ha utilizado un navegador con soporte Java, ya se habr visto el uso de mltiples hilos en Java. Habr observado que dos applets se pueden ejecutar al mismo tiempo, o que puede desplazar la pgina del navegador mientras el applet contina ejecutndose. Esto no significa que el applet utilice mltiples hiloss, sino que el navegador es multihilo, multihilvanado o multithreaded. Los navegadores utilizan diferentes hilos ejecutndose en paralelo para realizar varias tareas, "aparentemente" concurrentemente. Por ejemplo, en muchas pginas web, se puede desplazar la pgina e ir leyendo el texto antes de que todas las imgenes estn presentes en la pantalla. En este caso, el navegador est trayndose las imgenes en un hilo de ejecucin y soportando el desplazamiento de la pgina en otro hilo diferente. Las aplicaciones (y applets) multihilo utilizan muchos contextos de ejecucin para cumplir su trabajo. Hacen uso del hecho de que muchas tareas contienen subtareas distintas e independientes. Se puede utilizar un hilo de ejecucin para cada subtarea. Mientras que los programas de flujo nico pueden realizar su tarea ejecutando las subtareas secuencialmente, un programa multihilo permite que cada thread comience y termine tan pronto como sea posible. Este comportamiento presenta una mejor respuesta a la entrada en tiempo real. Vamos a modificar el programa de saludo creando tres hilos de ejecucin individuales, que imprimen cada uno de ellos su propio mensaje de saludo, [Link]: // Definimos unos sencillos hilos. Se detendrn un rato // antes de imprimir sus nombres y retardos class TestTh extends Thread { private String nombre; private int retardo; // Constructor para almacenar nuestro nombre // y el retardo public TestTh( String s,int d ) { nombre = s; retardo = d; } // El metodo run() es similar al main(), pero para // threads. Cuando run() termina el thread muere public void run() { // Retasamos la ejecucin el tiempo especificado try { sleep( retardo ); } catch( InterruptedException e ) { ; } // Ahora imprimimos el nombre [Link]( "Hola Mundo! "+nombre+" "+retardo ); }

public class MultiHola { public static void main( String args[] ) { TestTh t1,t2,t3; // Creamos los threads t1 = new TestTh( "Thread 1",(int)([Link]()*2000) ); t2 = new TestTh( "Thread 2",(int)([Link]()*2000) ); t3 = new TestTh( "Thread 3",(int)([Link]()*2000) ); // Arrancamos los threads [Link](); [Link](); [Link](); }

3.7 Creacin y control de hilos.

Creacin de Hilos
En Java, los hilos comparten el mismo espacio de memoria. Incluso comparten gran parte del entorno de ejecucin, de modo que la creacin de nuevos hilos es mucho ms rpida que la creacin de nuevos procesos. La ventaja que proporcionan los hilos es la capacidad de tener ms de un camino de ejecucin en un mismo programa. As, con un nico proceso, ejecutndose una J VM (Java Virtual Machine), habr siempre ms de un hilo, cada uno con su propio camino de ejecucin. En cuanto al proceso de creacin de hilos, son dos los mecanismos que nos permiten llevarlo a cabo en Java: implementando la interfaz Runnable, o extendiendo la clase Thread, esto es, creando una subclase de esta clase. En ambos casos, se deber definir un mtodo run que ser el incluya las instrucciones que se ejecutarn en el thread y se pueden definir prioridades aunque no se puede confiar en que la maquina virtual escoja para ejecutar,- siempre, el de mayor prioridad por lo que no se pueden utilizar para basar en ellas el scheduler e un sistema de tiempo real Creacin de un hilo: la clase Thread
class Repeticion extends Thread { prvate int repeticiones; private String mensaje; Repeticion (String msg, int n) { mensaje = msg; repeticiones = n; } public void run () { for (int i = 1; i <= repeticiones; i++) [Link] (mensaje + " " + i);

} public static void main (String args[]) { Repeticion r1 = new Repeticion ("Rojo", 5); Repeticion r2 = new Repeticion ("Azul", 80); [Link] (); [Link] (); }

En el caso de crear un hilo extendiendo la clase Thread, se pueden heredar los mtodos y variables de la clase padre. Si es as, una misma subclase solamente puede extender o derivar una vez de la clase padre Thread. Esta limitacin de Java puede ser superada a travs de la implementacin de Runnable. Creacin de un hilo: la interfaz Runnable
class Repeticion2 implements Runnable { private int repeticiones; private String mensaje; Repeticion2 (String msg, int n) { mensaje = msg; repeticiones = n; } public void run () { for (int i = 1; i <= repeticiones; i++) [Link] (mensaje + " " + i); } } public static void main (String args[]) { Repeticion rl = new Repeticion ("Rojo", 5); Thread r2 = new Thread (new Repeticion2 ("Azul", 80)); r1. start (); r2. start ();

Estado y Control de Hilos


Estados de un Hilo
El comportamiento de un hilo depende del estado en que se encuentre, este estado define su modo de operacin actual, por ejemplo, si esta corriendo o no. A continuacin proporcionamos la relacin de estados en los que puede estar un hilo Java. New Runnable Blocked Dead

3.7.1Atributos de hilos. 3.7.2Creacin e Inicializacin de hilos.

Inicializacin y Creacin de Hilos.


Antes de poder usar cualquier funcin de manejo de hilos, hay que preparar el sistema para ejecutar estas operaciones, es decir, es necesario inicializar el sistema de hilos, nada ms sencillo. vtable) Void g_thread_init ( ; GThreadFunctions * vtable ; En la mayora de las ocasiones bastar con que el parmetro pasado al sistema de hilos sea nulo, de esta forma GLib se encargar de buscar los parmetros ms apropiados. Es importante no llamar a esta funcin ms de una vez pues, si esto sucediese, la ejecucin de nuestro programa sera abortada. Para evitar esto la forma ms sencilla es hacer:
if (!g_thread_supported ()) g_thread_init (NULL);

Despus, el sistema estar listo para realizar cualquier operacin que requiera el uso de hilos. Para empezar, se crear un hilo: GThread *hilo:
hilo = g_thread_create (funcion_hilo, NULL, FALSE, NULL);

A partir de este punto, el procedimiento funcion_hilo se ejecutar en un hilo diferente, el programa continuar su ejecucin normal y, en paralelo a l, se ejecutar esta funcin.

New
Un hilo esta en el estado new la primera vez que se crea y hasta que el mtodo start es llamado. Los hilos en estado new ya han sido inicializados y estn listos para empezar a trabajar, pero an no han sido notificados para que empiecen a realizar su trabajo.

3.7.3Arranque de hilos. Arrancar y Parar Threads


Ahora que ya se ha visto por encima como se arrancan, paran, manipulan y agrupan los hilos de ejecucin, el ejemplo un poco ms grfico, [Link], implementa un contador. El progama arranca un contador en 0 y lo incrementa, presentando su salida tanto en la pantalla grfica como en la consola. Una primera ojeada al cdigo puede dar la impresin de que el programa empezar a contar y presentar cada nmero, pero no es as. Una revisin ms profunda del flujo de ejecucin del applet, revelar su verdadera identidad. En este caso, la clase java1004 est forzada a implementar Runnable sobre la clase Applet que extiende. Como en todos los applets, el mtodo init() es el primero que se ejecuta. En init(), la variable contador se inicializa a cero y se crea una nueva instancia de la clase Thread. Pasndole this al constructor de Thread, el nuevo hilo ya conocer al objeto que va a correr. En este caso this es una

referencia a java1004. Despus de que se haya creado el hilo, necesitamos arrancarlo. La llamada a start(), llamar a su vez al mtodo run() de la clase, es decir, a [Link](). La llamada a start() retornar con xito y el hilo comenzar a ejecutarse en ese instante. Observar que el mtodo run() es un bucle infinito. Es infinito porque una vez que se sale de l, la ejecucin del hilo se detiene. En este mtodo se incrementar la variable contador, se duerme 10 milisegundos y enva una peticin de refresco del nuevo valor al applet. Es muy importante dormirse en algn lugar del hilo, porque sino, el hilo consumir todo el tiempo de la CPU para su proceso y no permitir que entren mtodos de otros hilos a ejecutarse. Otra forma de detener la ejecucin del hilo sera hacer una llamada al mtodo stop(). En el contador, el hilo se detiene cuando se pulsa el ratn mientras el cursor se encuentre sobre el applet. Dependiendo de la velocidad del ordenador, se presentarn los nmeros consecutivos o no, porque el incremento de la variable contador es independiente del refresco en pantalla. El applet no se refresca a cada peticin que se le hace, sino que el sistema operativo encolar las peticiones y las que sean sucesivas las convertir en un nico refresco. As, mientras los refrescos se van encolando, la variable contador se estar todava incrementando, pero no se visualiza en pantalla. El uso y la conveniencia de utilizacin del mtodo stop() es un poco dudoso y algo que quiz debera evitarse, porque puede haber objetos que dependan de la ejecucin de varios hilos, y si se detiene uno de ellos, puede que el objeto en cuestin estuviese en un estado no demasiado consistente, y si se le mata el hilo de control puede que definitivamente ese objeto se dae. Una solucin alternativa es el uso de una variable de control que permita saber si el hilo se encuentra en ejecucin o no, por ello, en el ejemplo se utiliza la variable miThread que controla cuando el hilo est en ejecucin o parado. La clase anidada ProcesoRaton es la que se encarga de implementar un objeto receptor de los eventos de ratn, para detectar cuando el usuario pulsa alguno de los botones sobre la zona de influencia del applet.

Runnable
Cuando se llama al mtodo start de un hilo nuevo, el mtodo run es invocado y el hilo entra en el estado runnable. Este estado podra llamarse "running" porque la ejecucin del mtodo run significa que el hilo esta corriendo. Sin embargo, debemos tener en cuenta la prioridad de los hilos. Aunque cada hilo est corriendo desde el punto de vista del usuario, en realidad todos los hilos, excepto el que en estos momentos esta utilizando la CPU, estn en el estado runnable (ejecutables, listos para correr) en cualquier momento dado. Uno puede pensar conceptualmente en el estado runnable como si fuera el estado "numing", slo tenemos que recordar que todos los hilos tienen que compartir los recursos del sistema.

Arranque de un hilo
En el contexto de las aplicaciones, sabemos que es main la primera funcin que se invoca tras arrancar, y por tanto, lgicamente, es el lugar ms apropiado para crear y arrancar otros hilos. La lnea de cdigo:
tl = new TestTh( "Thread 1",(int)([Link]*2000) );

Siendo TestTh una subclase de la clase Thread (o una clase que implemente la interfaz Runnable) crea un nuevo hilo. Los dos argumentos pasados, sin mayor relevancia, satisfarn el prototipo del constructor de la clase y se utilizarn para la inicializacin del objeto. Al tener control directo sobre los hilos, tenemos que arrancarlos explcitamente. Como ya se coment anteriormente, es la funcin miembro start la que nos permite hacerlo. En nuestro ejemplo sera:
[Link];

start, en realidad es un mtodo oculto en el hilo que llama al mtodo run.

3.7.4Manipulacin de hilos.
Manipulacin de un hilo
Si todo fue bien en la creacin del objeto TestTh (tl), ste debera contener un hilo, una traza de ejecucin vlida, que controlaremos en el mtodo run del objeto. El cuerpo de esta funcin miembro viene a ser el cuerpo de un programa como ya los conocemos. Digamos que es la rutina main a nivel de hilo. Todo lo que queremos que haga el hilo debe estar dentro del mtodo run. Cuando finalice run, finalizar tambin el hilo que lo ejecutaba. IMPLEMENTACIN DE HILOS En general cada dominio de tiempo real tiene sus propios requisitos de planificacin de hilos. Es por lo tanto deseable que a veces las aplicaciones implementen sus propias polticas de planificacin. Muchos ncleos dan soporte para procesos multihilo de forma nativa. Estos ncleos proporcionan las llamadas al sistema de creacin y gestin de hilos, y planifican de forma individual los hilos. Otros ncleos disponen nicamente de la abstraccin de procesos monohilo. Los procesos multihilo deben entonces implementarse en una biblioteca de procedimientos enlazada a los programas de aplicacin. En estos casos el ncleo no conoce estos hilos de nivel de usuario y por lo tanto no puede planificarlos independientemente. Una biblioteca en tiempo de ejecucin de hilos organiza su planificacin. Un hilo podra bloquear al proceso si se realiza una llamada bloqueante al sistema, de forma que debe usarse la entrada - salida asncrona del ncleo subyacente. Anlogamente la implementacin puede utilizar los temporizadores proporcionados por el ncleo y las posibilidades de interrupciones software para realizar el uso compartido de los tiempos entre hilos. Cuando el ncleo no tiene soporte para procesos multihilo, las implementaciones al nivel de usuario de los hilos adolecen de estos problemas: Los hilos de un cierto proceso no pueden aprovecharse de la existencia de un multiprocesador. Un hilo que genera una falta de pgina bloquea el proceso completo y todos los hilos dentro de l. Los hilos de diferentes procesos no pueden planificarse de acuerdo a un nico criterio de prioridad

relativa. Sin embargo las implementaciones de hilos del nivel de usuario tienen ventajas significativas sobre las implementaciones al nivel ncleo: Algunas operaciones sobre hilos son bastante ms baratas. Por ejemplo la conmutacin entre hilos pertenecientes al mismo proceso no supone necesariamente una llamada al sistema, es decir, una interrupcin interna que es relativamente cara. Debido a que el mdulo de planificacin de hilos se implementa fuera del ncleo, puede personalizarse de forma que se adapte a los requisitos particulares de una cierta aplicacin. Pueden soportarse muchos ms hilos de nivel de usuario de los que el ncleo puede proporcionar por defecto. Es posible combinar las ventajas de las implementaciones de hilos de nivel usuario y de nivel de ncleo. Una posible aproximacin es la de permitir al cdigo de nivel de usuario proporcionar indicaciones de planificacin al planificador de hilos del ncleo. Otra posibilidad es un tipo de planificacin jerrquica. Cada proceso crea uno a ms hilos de nivel de ncleo. Tambin soporta hilos de nivel de usuario. Un planificado de nivel de usuario asigna cada hilo de nivel de usuario a un hilo de nivel de ncleo. Este esquema puede explotar los multiprocesadores y se beneficia del hecho de que algunas operaciones de creacin y conmutacin de hilos se realizan al nivel de usuario. La desventaja de ste esquema es su falta de flexibilidad: si un hilo se bloquea en el ncleo entonces a todos los hilos de nivel de usuario asignados a l se les impide la ejecucin, independientemente de si tienen o no la posibilidad de ejecutarse. Varios proyectos de investigacin han desarrollado esquemas de planificacin jerrquica ms avanzados para obtener mayor eficiencia y flexibilidad. La idea conductora de estos diseos es que un planificador de nivel de usuario no slo necesita del ncleo simplemente un conjunto de hilos soportados ya por el ncleo sobre los que se puedan vincular hilos de nivel de usuario. El planificado de nivel de usuario tambin necesita que el ncleo le notifique los eventos relevantes en sus decisiones de planificacin. Diseo de activaciones del planificador: Es una implementacin de un sistema de planificacin jerrquico basado en eventos. Considera que los principales componentes del sistema son un ncleo ejecutndose en un computador con uno o ms procesadores y un conjunto de programas de aplicacin ejecutndose sobre l. Cada proceso de aplicacin contiene un planificador de nivel de usuario que se encarga de gestionar los hilos dentro del proceso. El ncleo es responsable de la asignacin de procesadores virtuales de procesos. El nmero de procesadores virtuales asignados a un proceso depende de diferentes factores como los requisitos de la aplicacin, sus prioridades relativas y la demanda total en los procesadores. Se llaman procesadores virtuales porque el ncleo puede asignar procesadores fsicos diferentes a cada proceso a lo largo del tiempo, mientras se garantice el nmero de procesadores asignados. El nmero de procesadores virtuales asignados a un proceso puede variar. Los procesos pueden devolver un procesador virtual que han dejado de necesitar; adems pueden solicitar procesadores virtuales extra. Una activacin del planificador es una llamada desde el ncleo a un proceso que sirve para notificar al planificador del proceso la ocurrencia de un evento. El ncleo crea una activacin del planificador cargando los registros fsicos del procesador con un contexto que provoca la ejecucin de cdigo en el proceso, en una direccin de procedimiento designada por el planificador de nivel de usuario. Una activacin del planificador puede de esta forma considerarse como una unidad de asignacin de tiempo en un procesador virtual. El planificador de nivel de usuario tiene la tarea de asignar sus hilos preparados al conjunto de activaciones del planificador que en ese momento se estn ejecutando en

l. El nmero de activaciones del planificador es como mximo el nmero de procesadores virtuales que el ncleo ha asignado al proceso. Los cuatro tipos de eventos que el ncleo notifica al planificador de nivel de usuario (planificador) son los siguientes: Procesador virtual asignado: el ncleo asigna un nuevo procesador virtual al proceso; el planificador puede cargar el SA (Activacin del planificador) para recomenzar su ejecucin. SA bloqueado: un SA se ha bloqueado en el ncleo y ste est utilizando un nuevo SA para notificarlo el planificador. SA desbloqueado: un SA que ha estado bloqueado en el ncleo se ha desbloqueado y esta preparado para ejecutarse de nuevo al nivel de usuario. SA apropiado: el ncleo ha arrebatado el SA especificado al proceso.

En cada uno de estos eventos, el ncleo esta notificando de estos eventos al SA de notificacin. Para crear un SA de notificacin, el ncleo puede asignar a un procesador virtual nuevo al proceso o bien apropiarse de otro SA en mismo proceso, en el segundo caso la apropiacin debe ser notificada para as volver a recalcular las asignaciones correspondientes de hilos a SA. El esquema de planificacin jerrquica es ms flexible ya que el planificador de proceso de nivel de usuario puede asignar hilos a SA mediante cualquier poltica de conjunto de eventos de bajo nivel. En tanto el ncleo sigue con su comportamiento normal, ya que no influye en nada el comportamiento del planificador de nivel de usuario, pero ayuda al planificador mediante la notificacin de eventos y proporcionando el estado de los registros de los hilos bloqueados y desalojados. [Link] [Link]#Hilos

3.7.5Suspensin de hilos. Suspender y Reanudar Threads


Una vez que se para un hilo de ejecucin, ya no se puede rearrancar con el comando start(), debido a que stop() concluir la ejecucin del hilo. Por ello, en ver de parar el hilo, lo que se puede hacer es dormirlo, llamando al mtodo sleep(). El hilo estar suspendido un cierto tiempo y luego reanudar su ejecucin cuando el lmite fijado se alcance. Pero esto no es til cuando se necesite que el hilo reanude su ejecucin ante la presencia de ciertos eventos. En estos casos, el mtodo suspend() permite que cese la ejecucin del hilo y el mtodo resume() permite que un mtodo suspendido reanude su ejecucin. En la versin modificada del ejemplo anterior, [Link], se modifica el applet para que utilice los mtodos suspend() y resume(): El uso de suspend() es crtico en ocasiones, sobre todo cuando el hilo que se va a suspender est utilizando recursos del sistema, porque en el momento de la suspensin los va a bloquear, y esos recursos seguirn bloqueados hasta que no se reanude la ejecucin del hilo con resume(). Por ello, deben utilizarse mtodos alternativos a estos, por ejemplo, implementando el uso de variables de control que vigiles peridicamente el estado en que se encuentra el hilo actual y obren el consecuencia.

public class java1005 extends Applet implements Runnable { ... class ProcesoRaton extends MouseAdapter { boolean suspendido; public void mousePressed( MouseEvent evt ) { if( suspendido ) [Link](); else [Link](); suspendido = !suspendido; } } ... Para controlar el estado del applet, se ha modificado el funcionamiento del objeto Listener que recibe los eventos del ratn, en donde se ha introducido la variable suspendido. Diferenciar los distintos estados de ejecucin del applet es importante porque algunos mtodos pueden generar excepciones si se llaman desde un estado errneo. Por ejemplo, si el applet ha sido arrancado y se detiene con stop(), si se intenta ejecutar el mtodo start(), se generar una excepcin IllegalThreadStateException. Aqu podemos poner de nuevo en cuarentena la idoneidad del uso de estos mtodos para el control del estado del hilo de ejecucin, tanto por lo comentado del posible bloqueo de recursos vitales del sistema, como porque se puede generar un punto muerto en el sistema si el hilo de ejecucin que va a intentar revivir el hilo suspendido necesita del recurso bloqueado. Por ello, es ms seguro el uso de una variable de control como suspendido, de tal forma que sea ella quien controle el estado del hilo y utilizar el mtodo notify() para indicar cuando el hilo vuelve a la vida.

[Link] Bloked
El estado not running se aplica a todos los hilos que estn parados por alguna razn. Cuando un hilo est en este estado, est listo para ser usado y es capaz de volver al estado runnable en un momento dado. Los hilos pueden pasar al estado not running a travs de varias vas. A continuacin se citan diferentes eventos que pueden hacer que un hilo est parado de modo temporal. El mtodo suspend ha sido llamado El mtodo sleep ha sido llamado El mtodo wait ha sido llamado El hilo esta bloqueado por YO

Para cada una de estas acciones que implica que el hilo pase al estado not running hay una forma para hacer que el hilo vuelva a correr. A continuacin presentamos la lista de eventos correspondientes que pueden hacer que el hilo pase al estado runnable. ..SI un hilo est suspendido, la invocacin del mtodo resume ..Si un hilo est durmiendo, pasarn el nmero de milisegundos que se ha especificado que debe dormir ., Si un hilo est esperando, la llamada a notify o notifyAll por parte del objeto por el que espera Si un hilo est bloqueado por UO, la finalizacin de la operacin 1/O en cuestin

Suspensin de un Hilo
La funcin miembro suspend de la clase Thread permite tener un control sobre el hilo de modo que podamos desactivarlo, detener su actividad durante un intervalo de tiempo indeterminado, a diferencia del uso de la llamada al sistema sleep, que simplemente lleva al hilo a un estado de "dormido", y siempre durante un nmero de milisegundos concreto. Este mtodo puede resultar til si, construyendo un applet con un hilo de animacin, queremos permitir al usuario detener (que no finalizar) la animacin, hasta que ste decida reanudarla. Este mtodo no detiene la ejecucin permanentemente. El hilo es suspendido indefinidamente y para volver a activarlo de nuevo necesitamos realizar una invocacin a la funcin miembro resume. 12

3.7.6Parada de hilos.

Dead
Un hilo entra en estado dead cuando ya no es un objeto necesario. Los hilos en estado dead no pueden ser resucitados y ejecutados de nuevo. Un hilo puede entrar en estado dead a travs de dos vas: ..El mtodo run termina su ejecucin. ..El mtodo stop es llamado. La primera opcin es el modo natural de que un hilo muera. Uno puede pensar en la muerte de un hilo cuando su mtodo run termina la ejecucin como una muerte por causas naturales. En contraste a esto, est la muerte de un hilo "por causa" de su mtodo stop. Una llamada al mtodo stop mata al hilo de modo asncrono. Aunque la segunda opcin suene un poco brusca, a menudo es muy til. Por ejemplo, es bastante comn que los applets maten sus hilos utilizando el mtodo stop cuando el propio mtodo stop del applet ha sido invocado. La razn de esto es que el mtodo stop del applet es llamado normalmente como respuesta al hecho de que el usuario ha abandonado la pgina web que contena el applet y no es adecuado dejar hilos de un applet corriendo cuando el applet no est activo, as que es deseable matar los hilos.

Parada de un Hilo
Ya conocemos los mtodos de control de hilos que nos permiten arrancarlos, suspenderlos y reanudarlos. El ltimo elemento de control que se necesita sobre hilos es el mtodo stop, utilizado para terminar la ejecucin de un hilo de forma permanente: [Link]; Sealar que esta llamada no destruye el hilo, sino que detiene su ejecucin, y sta no puede reanudarse con el mtodo start. Cuando se desasignen las variables que se usan en el hilo, el objeto hilo (creado con new) quedar marcado para eliminarlo y el garbage collector (recolector de basura de Java) se encargar de liberar la memoria que utilizaba. Tiene sentido su utilidad, por ejemplo, en aplicaciones complejas que necesiten un control sobre cada uno de los hilos que se lancen. Por ltimo, un mtodo de control de hilos que nos permite comprobar si una instancia est viva (el hilo se ha arrancado y an no se ha detenido) o no (bien no se arranc; bien ya finaliz). Estamos hablando de la funcin miembro isAlive. [Link]; Devolver true en caso de que el hilo tl est vivo, es decir, ya se haya llamado a su mtodo run y no haya sido parado con un stop ni haya terminado el mtodo run en su ejecucin. En otro caso, lgicamente, devolver false.

3.8 Sincronizacin de hilos.


Mtodos constructor y de gestin hilos en Java.

SINCRONIZACIN DE HILOS
Cuando tenemos varios hilos, muchas veces deseamos que stos pueden compartir datos, por lo tanto, es indispensable saber sincronizar sus actividades. En muchas situaciones, hilos que se ejecutan concurrentemente comparten informacin y deben considerar el estado de las actividades de los dems hilos. Un modelo muy comn de tales conjuntos de hilos es conocido como escenarios de productor/consumidor, donde el productor genera un flujo de datos que es consumido por un consumidor. La programacin de un proceso multi-hilo debe realizarse de forma cuidadosa. La principal dificultad consiste en el uso compartido de objetos y en las tcnicas utilizadas para la coordinacin y cooperacin de los hilos. Las variables locales de cada hilo en sus mtodos son privadas del hilo, es decir, los hilos tienen pilas privadas. Los segmentos de cdigo dentro de un programa que accedan el mismo objeto desde hilos separados (concurrentes) se llaman regiones crticas. Java provee algunos mtodos ms para coordinar las actividades de los hilos, como notifyAll, wait, etc. Suponga, por ejemplo, las colas compartidas descritas previamente en esta seccin, las cuales tienen hilos de E/S e hilos de trabajo utilizados para transferir las solicitudes en arquitecturas de servidores basadas en hilos. Pueden aparecer condiciones de competencia (race conditions) cuando los hilos manipulan concurrentemente estructuras de datos del tipo de colas. Las solicitudes que residen en las colas pueden perderse o duplicarse. A no ser que los punteros de manipulacin de los hilos hayan sido cuidadosamente coordinados. Java proporciona a programadores la palabra clave synchronized para designar un monitor, que es un recurso de sincronizacin de hilos muy conocido. Los programadores designan mtodos completos o bien bloques de cdigo de tamao arbitrario como pertenecientes a un monitor asociado a un objeto individual. La garanta de un monitor viene del hecho de que como mximo un hilo puede ejecutarse dentro de un monitor en cualquier instante. Podramos seriar las acciones de los hilos de E/S y trabajadores en nuestro ejemplo designando los mtodos aadirA() y eliminarDe() en la clase Cola como mtodos synchronized. Todos los accesos a variables dentro de dichos mtodos se realizan con exclusin mutua respecto a las invocaciones de estos mtodos. Java permite bloquear y despertar hilos a travs de objetos arbitrarios que actan como variables de condicin. Un hilo que necesita bloquearse en espera de una cierta condicin invoca un mtodo wait(). Todos los objetos implementan este mtodo, ya que pertenecen a la clase raz de Java llamada Objet. Otro hilo invocara notify() para desbloquear como mximo un hilo, o bien invocar a notifyAll() para desbloquear todos los hilos en espera sobre el mismo objeto. Ambos mtodos de notificacin pertenecen tambin a la clase Objet. Como ejemplo, cuando un hilo trabajador descubre que ya no hay mas solicitudes parar procesar, invoca wait() en la instancia Cola. Cuando posteriormente el hilo de E/S aada una solicitud a la cola, invocar el mtodo notify() de gestin de colas, para despertar al trabajador. Los mtodos de sincronizacin de Java se muestran en la Figura 6.9. Adems de las primitivas de sincronizacin mencionadas, el mtodo join() bloquea al que invoca hasta la terminacin del hilo destino. El mtodo interrupt() es til para despertar prematuramente un hilo en espera. Todas las primitivas estndar de sincronizacin,

como tos semforos, pueden implementarse en Java. Sin embargo es preciso hacerlo cuidadosamente ya que la garanta del monitor de Java se aplica nica mente a cdigo de objetos declarado como synchronized: una clase tendr una mezcla de mtodos synchronized y no-synchronized. Adems el monitor implementado en un objeto Java tiene una nica variable de condicin implcita mientras que en general un monitor puede tener varias variables de condicin. [Link](int milisegundos) Bloquea el hilo invocador durante el tiempo especificado hasta que el hilo haya terminado. [Link]() Interrumpe el hilo: le obliga a volver desde una llamada a mtodo bloqueante como sleep(). [Link](long milisegundos, int nanosegundos) Bloquea el hilo invocador hasta que una llamada realizada a notify() o notifyAll() en el objeto despierte el hilo, o bien el hilo sea interrumpido, o bien el tiempo especificado sa haya cumplido. [Link](), [Link]() Despierta, respectivamente, uno o todos los hilos que han invocado a wait() en el objeto. Llamadas de sincronizacin de hilos en Java.

TIEMPOS DE VIDA DE LOS HILOS


Cada nuevo hilo se crea en la misma mquina virtual Java (JVM. Java Virtual Machine) que su creador y en estado SUSPENDIDO. Una vez que ha pasado a estado PREPARADO con el mtodo start(). Ejecuta el mtodo run() de un objeto designado en su constructor. JVM y los hilos que hay sobre l se ejecutan en un proceso sobre el sistema operativo subyacente. Los hilos pueden tener asignada una prioridad de forma que las implementaciones de Java que soportan prioridades ejecutarn cada hilo de forma preferente al resto de hilos con menor prioridad. Un hilo finaliza su vida cuando vuelve del mtodo run(), o bien cuando se invoca el mtodo destroy(). Los programas pueden gestionar los hilos en grupos. Cada hilo pertenece a un grupo, al que se le asigna en el momento de su creacin. Los grupos de hilos son tiles cuando varias aplicaciones coexisten en la misma JVM. Un ejemplo de su uso es la seguridad: por defecto un hilo en un cierto grupo no puede gestionar operaciones sobre un hilo en otro grupo. De esta forma un hilo de una cierta aplicacin no puede, de forma maliciosa, interrumpir un hilo del entorno de ventanas del sistema (AWT). Los grupos de hilos tambin facilitan el control de las prioridades relativas de los hilos (en las implementaciones de Java que soporten prioridades). Esto es til para visualizadores que ejecuten applets y para los servidores Web que ejecuten los programas llamados servlets, los cuales crean pginas Web de forma dinmica. Un hilo no privilegiado dentro de un applet o servlet nicamente puede crear un nuevo hilo que pertenezca a su propio grupo, o a un grupo de menor prioridad creado dentro del suyo: las restricciones exactas dependen del administrador de seguridad (Securitv Manager)

que est activo. Los visualizadores y los servidores pueden asignar hilos pertenecientes a diferentes applets o servlets a diferentes grupos y establecer la prioridad mxima de cada grupo en su conjunto (incluyendo los grupos descendientes). Para un hilo de applet o de servlet no existe forma de ignorar las prioridades de grupo impuestas por el gestor de hilos, ya que no pueden ser modificadas mediante llamadas a setPriority().

start()
Nuevo Nuevo

yield() run() run()


El m odo run termina MUERE MUERE SUSPENDID SUSPENDID O O

Planificacin de hilos Planificacin apropiativa: un hilo puede suspenderse en cualquier punto para dejar paso a otro hilo, incluso aunque el hilo pueda seguir en ejecucin. Planificacin no apropiativa: un hilo se ejecuta hasta l mismo realiza una invocacin al sistema de gestin de hilos, siendo en ese momento cuando el sistema puede desalojarle para planificar otro hilo. La ventaja de la planificacin no apropiativa es que cualquier seccin de cdigo que no contenga una llamada al sistema de gestin de hilos es automticamente una seccin crtica. As se pueden evitar cmodamente las condiciones de competencia. Por otro lado, los hilos planificados de forma no apropiativa no pueden aprovechar los sistemas multiprocesador, ya que se ejecutan de forma exclusiva. Es preciso tener cuidado con las secciones de cdigo grandes que no contengan llamadas al sistema de gestin de hilos. El programador puede necesitar insertar invocaciones que permitan que otros hilos puedan planificarse y progresar en su trabajo. Los hilos planificados de forma no apropiativa no son aptos para su uso en aplicaciones en tiempo real, ya que en stas los eventos llevan asociados tiempos absolutos en los que deben procesarse.

Sincronizacin
El problema de la sincronizacin de hilos tiene lugar cuando varios hilos intentan acceder al mismo recurso o dato. A la hora de acceder a datos comunes, los hilos necesitan establecer cierto orden, por ejemplo en el caso del productor consumidor. Para asegurarse de que hilos concurrentes no se estorban y operan

correctamente con datos (o recursos) compartidos, un sistema estable previene la inanicin y el punto muerto o interbloqueo. La inanicin tiene lugar cuando uno o ms hilos estn bloqueados al intentar conseguir acceso a un recurso compartido de ocurrencias limitadas. El interbloqueo es la ltima fase de la inanicin; ocurre cuando uno o ms hilos estn esperando una condicin que no puede ser satisfecha. Esto ocurre muy frecuentemente cuando dos o ms hilos estn esperando a que el otro u otros se desbloquee, respectivamente. A continuacin se presenta un ejemplo, el problema del Productor/Consumidor, con la intencin de explicar de una forma ms prctica el concepto y las situciones de sincronizacin de hilos.

Ejemplo: problema del productor-consumidor


El productor genera un entero entre 0 y 9 (inclusive), lo almacena en un objeto "CubbyHole", e imprime el nmero generado. Para hacer ms interesante el problema de la sincronizacin, el productor duerme durante un tiempo aleatorio entre 0 y 100 milisegundos antes de repetir el ciclo de generacin de nmeros.
class Productor extends Thread { private CubbyHole cubbyhole; private int numero; public Productor(CubbyHole c, int numero) { cubbyhole = c; [Link] = numero; } public void run() { for (int i = 0; i < 10; i++) { [Link](i); [Link]("Productor#"+[Link]+"pone:"+i); try { sleep((int)([Link] * } catch (InterruptedException e) { } } } }

100));

El consumidor, por su parte, est "hambriento", consume todos los enteros de CubbyHole (exactamente el mismo objeto en que el productor puso los enteros en primer lugar) tan pronto como estn disponibles. 16
class Consumidor extends Thread prvate CubbyHole cubbyhole; private int numero; public Consumidor(CubbyHole c, int numero) { cubbyhole = c; [Link] = numero; }

public void runo { int value = 0; for (int i = 0; i < 10; i++) { value = [Link]; [Link]("Consumidor#"+[Link]+"obtiene: "+value); } }

En este ejemplo, el Productor y el Consumidor comparten datos a travs de un objeto CubbyHole comn. Observar que ninguno de los dos hace ningn tipo de esfuerzo para asegurarse de que el consumidor obtiene cada valor producido una y slo una vez. La sincronizacin entre estos dos hilos realmente ocurre a un nivel inferior, dentro de los mtodos geto y puto del objeto CubbyHole. Sin embargo, asumamos por un momento que estos dos hilos no estn sincronizados y veamos los problemas potenciales que podra provocar esta situacin. Un problema sera el que se dara cuando el Productor fuera ms rpido que el Consumidor y generara dos nmeros antes de que el Consumidor tuviera una posibilidad de consumir el primer nmero. As el Consumidor se saltara un nmero. Parte de la salida se podra parecer a esto.
Consumidor #1 obtiene: 3 Productor #1 pone: 4 Productor #1 pone: 5 Consumidor #1 obtiene: 5

Otro problema podra aparecer si el consumidor fuera ms rpido que el productor y consumiera el mismo valor dos o ms veces. En esta situacin el Consumidor imprimir el mismo valor dos veces y podra producir una salida como esta.
Productor #1 pone: 4 Consumidor #1 obtiene: 4 Consumidor #1 obtiene: 4 Productor #1 pone: 5

De cualquier forma, el resultado es errneo. Se quiere que el consumidor obtenga cada entero producido por el productor y slo una vez. Los problemas como los descritos anteriormente, se llaman "condiciones de carrera". Se alcanzan cuando varios hilos ejecutados asncronamente intentan acceder a un mismo objeto al mismo tiempo y obtienen resultados errneos. Para prevenir estas condiciones en nuestro ejemplo Productor/Consumidor, el almacenamiento de un nuevo entero en CubbyHole por el Productor debe estar sincronizado con la recuperacin del entero por parte del Consumidor. El Consumidor debe consumir cada entero exactamente una vez. El programa productor-consumidor utiliza dos mecanismos diferentes para sincronizar los hilos Productor y Consumidor; los monitores, y los mtodos notifyo y wait.

Monitores
A los objetos como CubbyHole, a los que acceden varios hilos, son llamados "condiciones variables". Una de las formas de controlar el acceso a estas condiciones variables y de, por tanto, sincronizar los hilos, son los monitores. Las secciones crticas son los segmentos del cdigo donde los hilos concurrentes acceden a las condiciones variables. Estas secciones, en Java, se marcan normalmente con la palabra reservada synchronized:
Synchronized int MiMetodoo;

Generalmente, las secciones crticas en los programas de Java son los mtodos. Sin embargo el uso indiscriminado de synchronized viola los fundamentos de la programacin objetuaL por lo que es mejor utilizar synelironized slo a nivel de mtodos. Java asocia un solo monitor a cada objeto que tiene un mtodo sincronizado. En el ejemplo anterior del productorconstm-iidor tiene dos mtodos de sincronizacin: puto, que cambia el valor de Obby~o y geto, para recuperar el valor actual. Este sera el cdigo fuente del objeto (lubhpdlohn utilizando las tcnicas de sincronizacin nuevas:
class CubbyHole { prvate nt contents; private boolean avalable = false; public synchronized int get() { whle (avalable == false) { try { wait(); } catch (InterruptedException e) { } } available = false; notify(); return contents;

public synchronized void put(int value) { while (available == true) { try { wait(); } catch (InterruptedExcepton e) { } contents value; available true; notify(); } }

La variable contents tiene el valor actual de CubbyHole y available indica si se puede recuperar o no el valor. Cuando available es verdadero, el productor an no ha acabado de producir. CubbyHole tiene dos mtodos de sincronizacin, y Java proporciona un solo monitor para cada ejemplar de CubbyHole (incluyendo el compartido por el Productor y el Consumidor). Siempre que el control entra en un mtodo sincronizado, el hilo que ha llamado al mtodo adquiere el monitor del objeto al cual pertenece el mtodo.

Otros hilos no pueden llamar a un mtalo sincronizado del mismo objeto mientras el monitor no sea liberado. Cuando el Productor invoca el mtodo puto de CubbyHole, adquiere el monitor del objeto CubbyHole y por lo tanto el Consumidor no podr llamar a geto de CubbyHole y se quedar bloquedo (existe un mtodo, waito, que libera temporalmente el monitor). De igual forma sucede cuando el Consumidor invoca geto.
public synchronized void put(int value) { // El productor adquiere el monitor while (available == true) { try { wait(); } catch (InterruptedException e) { contents = value; available = true; notify(); // lo notifica al Productor // El productor libera el monitor } public synchronized int get() { // El consumidor adquiere el monitor while (available == false) { try { wait(); // espera que el Productor invoque a notify() } catch (InterruptedException e) { } available = false; notify(); return contents; // el Consumidor libera el monitor }

o o o

Sincronizacin: Cuando dos hilos necesitan usar el mismo objeto aparecen las operaciones entrelazadas que pueden corromper (daar) los datos. La solucion es sincronizar el acceso a esa region. Cuando hay multiples hilos que pueden acceder a una misma region se utiliza el "bloqueo" de la misma, que consiste en darle el acceso y control total solo a un hilo. El bloqueo comienza cuando se ejecuta el metodo (synchronized) y finaliza cuando termina el metodo ya sea por return o por una terminacin anormal (excepciones). Comunicacin entre hilos: Aparte de la sincronizacion, se usa la comunicacin entre hilos para solucionar los problemas de comparticion de datos. Los hilos se notifican entre si la finalizacion o comienzo de las acciones.
Metodos utilizados para la comunicacin: Wait(): Deja al hilo esperando hasta que ocurra alguna condicion. Hasta que otro hilo le notifique que ocurrio algo. Notify(): Notifica al hilo que espera que hay algun cambio que podria satisfacer esa condicion. Notifyall(): Notifica a todos los hilos en espera (wait).

Modelo productor consumidor: Un hilo produce una salida que otro hilo usa o consume.

En la programacin secuencial no hay problema ya que si el productor se ejecuta primero, luego el consumidor tiene lo que el productor le envia. En la programacin concurrente si hay problema ya que los dos corren al mismo tiempo cul es el que corre primero?el productor o el consumidor? Si el productor corre mas rpido que el consumidor se pueden perder datos, ya que el consumidor no los puede tomar a la misma velocidad. Si el consumidor es mas rpido querr tomar los datos que el productor todava no ha producido. La solucin a este problema es contar con una clase que controle y supervise y sincronice al productor y consumidor, esta clase la denominaremos "monitor". Finalizacin de hilos:
Que el metodo run() retorne normalmente Que el metodo run() finalice bruscamente Que el metodo destroy() se invoque. Que el programa termine normalmente.

[Link]

3.8.1Mutex.
Cmo hacer que un hilo espere a que termine otro
Vamos a hacer un ejemplo de cdigo en el que un hilo espera a que termine otro y recoge el valor que este le devuelve. Cualquier hilo puede esperar por cualquier otro hilo, no necesariamente tiene que ser el hilo padre el que espere por el hijo. En el ejemplo el hilo padre espera por el hijo, as que en el texto se seguir esa convencin. A veces es necesario hacer que un hilo espere a otro/s hilo/s. Por ejemplo, supongamos que varios hilos estn realizando un clculo y es necesario el resultado el resultado de todos ellos para obtener el resultado total. El hilo encargado de este resultado total debe esperar a que todos los dems hilos terminen. Sin embargo, no todos los hilos son susceptibles de ser esperados. Hay hilos a los que el sistema libera automticamente todos sus recursos cuando terminan. Con otros, sin embargo, no lo hace. El que el sistema haga una cosa u otra, depende de los atributos que le hayamos pasado a la hora de crear el hilo con pthread_create(). Por los primeros hilos, los que se liberan automticamente, no podemos esperar. Por los segundos, los que mantienen sus recursos, s podemos esperar. De hecho, si algn hilo no espera a que termine, sus recursos nunca se liberarn (salvo que se liberen explicitamente con la funcin pthread_detach()). Si ponemos los atributos de creacin a NULL, el hilo es por defecto "esperable". De todas formas, vamos a poner explcitamente el atributo para ver cmo funciona. Los atributos de un hilo son de tipo pthread_attr_t. Para rellenar esta estructura con sus valores por defecto, tenemos la funcin pthread_attr_init(). El cdigo para obtener los atributos con su valor por defecto es

pthread_attr_t atributos; ... pthread_attr_init (&atributos);


Ahora podemos cambiar cualquiera de los campos de esta estructura con funciones especficas para ello. En concreto, nos intersa la funcin pthread_attr_setdetachstate(), que es la que permite cambiar esta caracterstica. Hay dos valores posibles para el atributo, PTHREAD_CREATE_JOINABLE y PTHREAD_CREATE_DETACHED. Con el primer valor podemos esperar por el hilo, con el segundo se libera automticamente. El cdigo quedara

pthread_attr_setdetachstate (&atributos, PTHREAD_CREATE_JOINABLE);


Con esto ya podemos crear un thread al que se puede esperar con la funcin pthread_create(). Echa un ojo al ejemplo de la pgina de procesos e hilos para ver cmo se crea un hilo con esta funcin. Slo hay que sustituir el NULL por &atributos. Nuestro thread termina cuando sale de la funcin que est ejecutando o llamando a pthread_exit(). Si se hace de la primera manera, el sistema se encarga de llamar automticamente a pthread_exit(). Si lo llamamos nosotros explcitamente, tenemos posibilidad de devolver un resultado al que espere que terminemos. El cdigo para salir del thread es

pthread_exit ((void *)"Ya t");


El parmetro que se pasa es el valor que se devolver al hilo que espera. Como es un void *, puede ser un puntero a cualquier cosa que queramos. En el ejemplo lo hemos puesto a una cadena de caracteres fija. OJO!, aqu no se pueden devolver punteros a variables locales, ya que al terminar el hilo y salir de la funcin, la variable local deja de existir. El "pobre" que recoja el puntero, lo tendr apuntando a una zona de memoria que puede contener valores no vlidos. As que o devolvemos punteros a variables que no desaparezcan (globales, estticas, etc) o a zonas de memoria que el propio hilo haya creado con malloc() (luego el hilo que espera deber liberarlas con free()). El hilo que espera, debe llamar a la funcin pthread_join(). Esta llamada hace que el hilo se "duerma" hasta que el otro hilo termine. Si el otro hilo ya haba terminado, la funcin pthread_join() sale inmediatamente. La funcin pthread_join() admite dos parmetros. El primero es el identificador pthread_t del hilo por el que queremos esperar. El segundo es un void **. Si le ponemos algo que no es NULL, en l nos devolver lo que ha devuelto el hilo hijo. En nuestro ejemplo, como sabemos que nos van a devolver un char *, lo declararemos y eso ser lo que pasemos.

pthread_t idHilo; char *valorDevuelto = NULL; ... pthread_join (idHilo, (void **)&valorDevuelto);
Esto es lo bsico. En espera.c tienes el cdigo de ejemplo. Puedes bajarte ese fichero, el Makefile, quitarles la extensin .txt y compilar con make espera. Luego ejecutas espera y vers como el hilo hijo espera 1 segundo y termina devolviendo una cadena. El padre, mientras tanto, se ha quedado bloqueado esperando la terminacin del hijo. Luego escribe en pantalla el valor devuelto.

Acceso sincronizado a recursos comunes

Vamos a hacer un ejemplo de cmo dos hilos esperan el uno por el otro para acceder a los datos de un array de enteros. Uno de los hilos (el del main) pone todos los items del array con el valor 0, luego los rellena todos con el valor 1, despus 2 y as sucesivamente. El otro hilo verifica que todos los valores sean iguales al de la posicin 0, es decir, todos iguales, dando un error si no lo son. Si no hay ningn tipo de sincronizacin, es fcil (cuanto mayor sea el array ms fcil) que el hilo que escribe no haya terminado y empiece a leer el otro hilo, dando errores ya que no todos los items contendrn el mismo valor. En general, al estar los dos hilos ejecutndose de forma independiente, es posible que uno intente acceder (leer o escribir) a una estructura de datos (o un fichero o cualquier otro recurso) cuando el otro hilo no ha acabado (de leer o escribir) en dicha estructura. Si, por ejemplo, uno de ellos empieza a escribir datos en una estructura y cuando est a medias el otro hilo se pone a leer, este segundo leera datos incoherentes. En mutex.c, y compilando con Makefile y el comando make sinmutex se genera un ejecutable sinmutex. Ejecutndolo vers un ejemplo el ejemplo de cmo ocurre esto con un array de 1000 enteros. Acuerdate de quitar los .txt Para sincronizar todo esto estn los mutex (EXclusin MUTua, pero en ingls, del revs). Un mutex es como un semforo que deja o no pasar al hilo. Antes de acceder a la estructura de datos, el hilo debe mirar el semforo. Si el semfor est rojo, el hilo se queda bloqueado hasta que se ponga verde. Si est verde, el hilo podr acceder a la estructura de datos y el semforo se pone rojo en cuanto pase este hilo. Una vez que termine de acceder a la estructura de datos, el hilo debe acordarse de poner verde el semforo. Para crear uno de estos semforos tenemos la funcin pthread_mutex_init(). A esta funcin se le pasa un pthread_mutex_t * que luego servir de identificador del semforo (podemos crear tantos como necesitemos). Un segundo parmetro de la funcin son los atributos de creacin del semforo. Vale poner NULL para un comportamiento por defecto. El cdigo para crear un mutex es:

pthread_mutex_t mutexBuffer; ... pthread_mutex_init (&mutexBuffer, NULL);


Con el comportamiento por defecto, un mutex puede ponerlo en verde cualquier hilo, no necesariamente el que lo ha puesto rojo. Se puede cambiar este comportamiento con el segundo parmetro de pthread_mutex_init(). Con el comportamiento por defecto, slo tiene efecto el poner rojo o verde el semforo. Se puede cambiar este comportamiento para que se pueda poner rojo varias veces seguidas, de forma que cada vez se pone "ms rojo". Para que finalmente se ponga verde, hace falta ponerlo verde tantas veces como se puso rojo anteriormente. Esto es un comportamiento recurisvo y sirve para hilos que utilicen recursivdad. pthread_mutex_init() siempre devuelve 0. Una vez inicializado el mutex, cuando un hilo quiera acceder a una estructura de datos que est protegida por este mutex, debe llamar a la funcin pthread_mutex_lock(), pasndole el identificador del mutex. Si el semforo est verde, se pone rojo y la funcin retorna inmediatamente, con lo que el hilo, en las siguientes lneas de cdigo puede acceder a la estructura de datos. Cuando termine con la estructura de datos, debe volver a poner verde el semforo, llamando a la funcin pthread_mutex_unlock(), pasando de nuevo el identificador del mutex. El cdigo quedara

pthread_mutex_lock (mutexBuffer); /* aqu se accede a la estructura de datos */ pthread_mutex_unlock (mutexBuffer);


La funcin pthread_mutex_lock() puede bloquear al hilo hasta que alguien ponga el semforo verde y esto, puede ser para toda la vida (depende de los otros hilos). Si es muy importante que un hilo no se quede bloqueado esperando un mutex, se puede llamar a la funcin pthread_mutex_trylock(), que se comorta igual que pthread_mutex_lock(), pero no deja bloqueado al hilo en caso de estar el semforo rojo, sino que devuelve un error. El hilo que llama a esta funcin, debe verificar si se ha producido ese error o no antes de acceder a los datos. Con esto queda todo listo. Cuando no se necesite ms el mutex, se libera con pthread_mutex_destroy(). Con el mismo fuente de mutex.c y el mismo Makefile, pero compilando con make conmutex, se genera el ejecutable conmutex, que soluciona el problema de sinmutex. Los #ifdef que hay metidos por el cdigo son para que se compilen o no las llamadas a las pthread_mutex_*().

[Link]

3.8.2Semforos. 3.8.3Barreras (Barrier). ANEXOS:

Planificacin y Prioridad de Hilos


Planificacin (Scheduling)
Java tiene un Planificador (Scheduler), una lista de procesos, que muestra por pantalla todos los hilos que se estn ejecutando en todos los programas y decide cules deben ejecutarse y cules deben encontrarse preparados para su ejecucin. Hay dos caractersticas de los hilos que el planificador tiene en cuenta en este proceso de decisin. ..La prioridad del hilo (la ms importante). ..El indicador de demonio (que pasaremos a explicar en los siguientes apartados). La regla bsica del planificador es que si solamente hay hilos demonio ejecutndose, la Mquina Virtual Java (JVM) concluir. Los nuevos hilos heredan la prioridad y el indicador de demonio de los hilos que los han creado. El planificador determina qu hilos debern ejecutarse comprobando la prioridad de todos los hilos. Aquellos con prioridad ms alta dispondrn del procesador antes de los que tienen prioridad ms baja. El planificador puede seguir dos patrones, preventivo y no preventivo. Los planificadores preventivos proporcionan un

segmento de tiempo a todos los hilos que estn corriendo en el sistema. El planificador decide cul ser el siguiente hilo a ejecutarse y llama a resume para darle vida durante un perodo fijo de tiempo. Cuando finaliza ese perodo de tiempo, se llama a su mtodo suspend y el siguiente hilo en la lista de procesos ser relanzado mediante su mtodo resume. Los planificadores no preventivos, en cambio, deciden qu hilo debe correr y lo ejecutan hasta que concluye. El hilo tiene control total sobre el sistema mientras est en ejecucin. El mtodo yield es un mecanismo que permite a un hilo forzar al planificador para que comience la ejecucin de otro hilo que est esperando. Dependiendo del sistema en que est corriendo Java, el planificador ser preventivo o no preventivo. El planificador de hilos no est especificado tan rigurosamente como el resto de clases en Java, y en este asunto hay, sin duda, diferencias de un sistema a otro. Por ejemplo, la versin del JDK 1.0.2 de Solafs es una versin no preventiva, a diferencia del planificador de Win32, que s lo es. [Esto es exactamente lo opuesto a lo que nos esperbamos.] Un planificador no preventivo no interrumpir un hilo en ejecucin, de forma muy parecida al comportamiento de Windows 3.1. El planificador de hilos Java de Win32 s interrumpir los hilos en ejecucin, dando lugar a una planificacin ms fiable. Por ejemplo, si se arrancan dos hilos con grandes bucles de ejecucin bajo un sistema Solaris, el hilo que arranc antes completar su tarea antes de que el otro consiga arrancar. Pero en Windows95 o NT, el segundo hilo s consigue turno de ejecucin.

Prioridad
Cada hilo tiene una prioridad, que no es ms que un valor entero entre 1 y 10, de modo que cuanto mayor el valor, mayor es la prioridad. El planificador determina el hilo que debe ejecutarse en funcin de la prioridad asignad, a cada uno de ellos. Cuando se crea un hilo en Java, ste hereda la prioridad de su padre, el hilo que lo ha creado. A partir de aqu se le puede modificar su prioridad en cualquier momento utilizando el mtodo setPriority . Las prioridades de un hilo varan en un rango de entero: comprendido entre MIN_PRIORITY y MAX_PRIORITY (anbas definidas en la clase Thread) El entero ms alto designar la prioridad ms alta y el ms bajo, como es de esperar, la menor Se ejecutar primero el hilo de prioridad superior, el llamado "Ejecutables", y slo cuando ste para, abandona o se convierte en "No Ejecutable", comienza la ejecucin de en hilo de prioridad inferior. Si dos hilos tienen la misma prioridad, el programador elige uno de ello! en alguna forma de competicin. El hilo seleccionado se ejecutar hasta que: ..Un hilo comprioridad mayor pase a ser "Ejecutable". * En sistemas que soportan tiempo-compartido, termina su tiempo. ..Abandone, o termine su mtodo run. Luego, un segundo hilo puede ejecutarse, y as continuamente hasta que el intrprete abandone. El algoritmo del sistema de ejecucin de hilos que sigue Java es de tipo preventivo. S en un momento dado un hilo que tiene una prioridad mayor a cualquier otro hilo que se est; ejecutando pasa a ser "Ejecutable", entonces el sistema elige a este nuevo hilo.

Hilos Demonio (Daemon)


Un proceso demonio es un proceso que debe ejecutarse continuamente en modo background (en segundo plano), y generalmente se disea para responder a peticiones de otros procesos a travs de la red. La palabra "daemon" (proveniente de la palabra griega "ghost') es propia de UNIR, pero no se utiliza de este mismo modo en Windows. En Windows NT, los demonios se denominan "servicios". Cuando los servicios atienden peticiones, se conocen como la parte "Servidor" de una arquitectura Cliente/Servidor. Los hilos demonio tambin se llaman servicios, porque se ejecutan, normalmente, con prioridad baja y proporcionan un servicio bsico a un programa o programas cuando la actividad de la mquina es reducida. Un ejemplo de hilo demonio que est ejecutndose continuamente es el recolector de basura (garbage conector). Este hilo, proporcionado por la Mquina Virtual Java, comprueba las variables de los programas a las que no se accede nunca y libera estos recursos; devolvindolos al sistema.

Un hilo puede fijar su indicador de demonio pasando un valor trae al mtodo setDaemono. Si se pasa false a este mtodo, el hilo ser devuelto por el sistema como un hilo de usuario. No obstante, esto ltimo debe realizarse antes de que se arranque el hilo con el mtodo startO.

[Link]

LOS THREADS O PROGRAMACIN MULTIHILO A. Introduccin Durante la ejecucin de los programas existen muchas operaciones que precisan de una espera; en busca de una interaccin con el exterior, dejando pasar el tiempo, esperando a que otro proceso acabe... Java permite que estos tiempos desaprovechados sean utilizados por el programador para realizar determinadas tareas, y as aprovechar el microprocesador durante toda la ejecucin del programa. Para ello implementa el concepto de threads, o hilos de control del programa. Mediante el uso de varios threads, se consigue ejecutar varios procesos en paralelo, de forma que cuando uno de ellos est esperando algn evento, permita que el microprocesador ejecute alguno de los otros threads en espera. Cuando el evento que el primer thread esperaba sucede, de nuevo se intercambian los threads para que el primer thread contine su ejecucin. Todo esto viene a suplir a la tcnica de exclusin mutua denominada utilizacin de semforos, extendida entre los programadores de C en UNIX. B. Utilizacin de thread Para crear un thread, se ha de implementar una clase, extendiendo la clase base Runnable, y crear un objeto de la clase Thread. Este objeto representar un nuevo hilo de control, que ser accionado cuando invoquemos al mtodo start() del thread. En ese momento este hilo se activar, ejecutando (si el planificador de hilos considera que es el momento), el mtodo run() de la clase en que todo esto suceda. Por ejemplo, el siguiente programa utiliza dos hilos, el hilo general main, y el hilo thDemo que creamos:

import [Link].*; import [Link].*; class ThreadDemo implements Runnable { ThreadDemo() { Thread thDemo = new Thread( this, "ThDemo" ); [Link](); } public void run() { try { [Link](3000); } catch( InterruptedException e ) { } [Link]("Saliendo del hilo hijo"); } public static void main( String args[] ){ new ThreadDemo(); try { for ( int i = 5 ; i >0 ; i-- ) { [Link](" Seg: " + i ); [Link](1000); } } catch( InterruptedException e ) { } [Link]("Saliendo del main"); } } Ambos hilos esperan utilizando el mtodo sleep() de la clase Thread; thDemo tres segundos, y main cinco segundos. Java utilizar los tres

segundos de thDemo para ir esperando los tres primeros segundos del hilo main. Por lo tanto la salida por pantalla al ejecutar el programa es: prompt> java ThreadDemo Seg: 5 Seg: 4 Seg: 3 Saliendo del hilo hijo Seg: 2 Seg: 1 Saliendo del hilo main C. Sincronizacin de threads Durante la ejecucin de un programa, muchas veces varios procesos han de realizar tareas de una forma sincronizada, actuando en un determinado orden. Para ello en Java se utilizan la palabra reservada syncronized, en la declaracin de los procesos con este tipo de caractersticas. Los procesos declarados como syncronized mediante la utilizacin de excepciones, y de las funciones wait() y notifiy(), respectivamente esperarn a que otro proceso acabe antes de continuar su ejecucin. A continuacin se va a ir viendo cmo implementar el clsico problema de exclusin mutua conocido como el problema del productor/consumidor, en el que dos procesos han de acceder a una cola comn, en la que el proceso productor inserta elementos en la pila, y el proceso consumidor ha de ir consumiendo los elementos en la pila, cada vez que sean insertados: class ColaSincronizada { int n; boolean bandera = false; synchronized int obten() { if ( !bandera ) try wait(); catch( InterruptedException e ); [Link]( "Obtenido: " + n ); bandera = false; notify(); return n; } synchronized void coloca( int paramN ) {

if ( bandera ) try wait(); catch( InterruptedException e ); n = paramN; bandera =true; [Link]( "Colocado: " + n ); notify(); } } class Productor implements Runnable { ColaSincronizada colaProductor; Productor( ColaSincronizada paramCola ) { colaProductor = paramCola; new Thread( this, "Producer" ).start(); } public void run() { int i = 0; while ( true ) // Bucle infinito [Link]( i++ ); } } class Consumidor implements Runnable { ColaSincronizada colaConsumidor; Consumidor( ColaSincronizada paramCola ) { colaConsumidor = paramCola; new Thread( this, "Consumidor" ).start();

} public void run() { while ( true ) // Bucle infinito [Link]( ); } } public static void main( String args[] ) { ColaSincronizada colaLocal = new ColaSincronizada(); new Productor( colaLocal ); new Consumidor( colaLocal ); } La salida del programa ser: Colocado: 1 Obtenido: 1 Colocado: 2 Obtenido: 2 Colocado: 3 Obtenido: 3 . . . D. Y mucho ms La utilizacin de programacin concurrente y de los hilos de Java con toda su potencia va mucho ms all de los objetivos de este tutorial. Lo que aqu se ha visto es simplemente una introduccin para que el lector sea consciente de cul es la potencia de este tipo de programacin. La utilizacin de los threads se extiende con mtodos para que el programador controle la alternancia de los hilos. Estos mtodos son:

suspend(); Bloquea temporalmente la ejecucin de un hilo. resume(); Activa un hilo bloqueado. stop(); Finaliza la ejecucin de un hilo.

[Link] Sincronizacin entre hilos.


Como ya se ha dicho, las variables globales del programa van a poder ser accedidas desde cualquier hilo. Esto es una gran ventaja, pues compartir informacin entre todas las hilos ser muy sencillo; no

obstante, todo tiene su parte negativa: habr que tener cuidado a la hora de acceder a estos valores, porque puede que un hilo intente modificar alguna variable cuando otro hilo est leyendo esa misma variable, en cuyo caso, el resultado sera impredecible. Es necesario que los hilos se sincronicen para acceder a estas variables. Existen varios mtodos los sincronizacin disponibles:

Cerrojos (Mutex) Cerrojos estticos (Static Mutex) Variables Condicin

Cerrojos: son llaves mutuamente exclusivas, que permiten conocer si se puede o no acceder a una determinada variable. Si una variable est protegida por un cerrojo, se podr consultar el estado de la llave para conocer si est siendo accedida por otro hilo en ese instante. Si no lo estuviese, ser posible obtener la llave, hacer las operaciones precisas sobre esa variable, y despus abrir la llave de nuevo para que otro hilo pueda acceder a la variable.
g_mutex_new g_mutex_lock g_mutex_trylock g_mutex_unlock g_mutex_free

Los cerrojos estticos (Static Mutex) son iguales que las anteriores, pero no necesitan ser creadas en tiempo de ejecucin; son creadas cuando el programa es compilado.
g_static_mutex_init g_static_mutex_lock g_static_mutex_trylock g_static_mutex_unlock g_static_mutex_get_mutex g_static_mutex_free

Condiciones:

UTF-8: las letras del mundo.


Antes de explicar el uso de las funciones que proporciona GLib para el uso de cadenas UTF-8, sera conveniente repasar una serie de conceptos que sern tiles para una mejor conmprensin.

Unicode: Una forma de representacin (UCS).


ISO establece un estndar en el que define el conjunto de caracteres universal conocido como UCS. Este conjunto de caracteres asegura la compatibilidad con otros conjuntos de caracteres, de forma que se puedan usar distintas funciones para pasar de un determinado lenguaje a UCS y de este al lenguaje original sin perder contenido.

Gracias al Unicode se pueden representar la enorme mayora de lenguajes conocidos, tales como latn, griego, cirlico, hebreo y as un largo etctera. Unicode es un conjunto de caracteres de 16 bits, es decir, posee 65536 posibles combinaciones, representando cada una de estas combinaciones un carcter. Un valor o carcter UCS o Unicode, indistintamente llamado de una forma u otro, englobar todos estos lenguajes, partiendo en otras codificaciones ms pequeas como BMP (Basic Multilingual Plane) o Plane 0, subconjunto de 16 bits, al igual que otros como UTF-16, de 16 bits, o UTF-8, de 8 bits, ambos utilizados posteriormente por la GLib tanto para comprobaciones de tipos de caracteres como para conversiones entre distintos subconjuntos Unicode, tales como UTF8 y UTF-16.

Qu es Unicode.
Al principio, se intentaron dar dos intentos de conseguir un conjunto de caracteres: el proyecto de estandarizacin ISO 10646 antes comentado y el proyecto Unicode, pero pronto se comprob que no era bueno tener dos proyectos en marcha y los dos conjuntos de caracteres diferentes se unieron formando una nica tabla de caracteres que fue la de Unicode con las extensiones dadas por la ISO 10646 pasando a ser llamado indistintamente Unicode o ISO 10646. Con el paso del tiempo ha habido modificaciones de Unicode adiciones de caracteres y clasificaciones en subconjuntos como pueden ser el ampliamente usado ASCII, UTF-8, UTF-16 y BMP entre otros.

Qu es UTF-8.
En GLib existe soporte para UTF-8 debido a sus compatibilidades con el resto de cdigos, ya que su codificacin engloba en sus primeros 7 bits el tan conocido ASCII. La codificacin UTF-8 est definida en el ISO 10646.

Los primeros 7 bits son utilizados para la codificacin de ASCII, para la compatibilidad con ste por su uso extendido. De forma qu,e desde 0000 a 007F (128 caracteres), se usan para la codificacin ASCII de 7 bits. Los caracteres mayores a 007F son utilizados para el soporte a otros lenguajes. Los bytes FE y FF no son utilizados para la codificacin UTF-8.

Conversiones del juego de caracteres.


En determinadas ocasiones, los programas necesitan el uso de ms de un juego de caracteres para un correcto tratamiento de los datos que maneja. Para que esto sea posible sin conflictos ni confusiones,

GLib proporciona un til conjunto de funciones para la conversin entre juegos de caracteres.

Nombres de archivos y UTF-8.


Con todo lo explicado anteriormente, es evidente que el juego de caracteres usado para representar nombres de archivos y el juego de caracteres UTF-8 que podamos usar en nuestros programas puede diferir bastante. Para solventar esto existen las funciones g_filename_to_utf8 y g_filename_from_utf8, que realizan la conversin de nombre de archivo a UTF-8 y de UTF-8 a nombre de archivo, respectivamente.
gchar * g_filename_to_utf8 (

cadena_a_convertir, longitud_de_cadena, bytes_leidos, bytes_escritos, error);

const gchar * cadena_a_convertir; gssize gsize * gsize * GError ** longitud_de_cadena; bytes_leidos; bytes_escritos; error; cadena_a_convertir , longitud_de_cadena, bytes_leidos, bytes_escritos, error); cadena_a_convertir ; gssize longitud_de_cadena; gsize * bytes_leidos; gsize * bytes_escritos; GError ** error; Como se puede observar, el uso de las dos funciones es idntica porque devuelven la cadena convertida al nuevo juego de caracteres const gchar *

gchar * g_filename_from_utf8 (

o NULL en caso de que ocurra un error. Los parmetros bytes_leidos, bytes_escritos y error son parmetros de salida, devolviendo respectivamente los bytes convertidos con xito, los bytes que ocupa la cadena tras la transformacin y el posible error que se pueda producir.

Configuracin local de caracteres y UTF-8.


De forma parecida al tratamiento de nombres de archivo, las funciones g_locale_to_utf8 y g_locale_from_utf8 convierten cadenas en el juego de caracteres usado internamente por el sistema a cadenas en UTF-8 y viceversa.
gchar * g_locale_to_utf8 (

cadena_a_convertir, longitud_de_cadena, bytes_leidos, bytes_escritos, error);

const gchar * cadena_a_convertir; gssize gsize * gsize * GError ** longitud_de_cadena; bytes_leidos; bytes_escritos; error; cadena_a_convertir, longitud_de_cadena, bytes_leidos, bytes_escritos, error); const gchar * cadena_a_convertir; gssize longitud_de_cadena; gsize * bytes_leidos; gsize * bytes_escritos; GError ** error; El uso de las funciones es idntico al descrito con g_filename_to_utf8 y g_filename_from_utf8.

gchar * g_locale_from_utf8 (

Otras funciones relacionadas con conversin de cadenas.


Adems de las funciones de conversin de cadenas, GLib provee adems de un conjunto de funciones destinadas a servir de ayuda y apoyo al tratamiento de cadenas en UTF-8. La funcin g_get_charset es til para conocer el juego de caracteres que esta usando el sistema sobre el que se ejecuta el programa, pudiendo evitar transformaciones redundantes. juego_de_caracteres ) gboolean g_get_charset ( ; G_CONST_RETURN gchar ** juego_de_caracteres ; La funcin devuelve TRUE si el juego de caracteres que usa el sistema es el UTF-8 y FALSE en cualquier otro caso. juego_de_caracteres es un parmetro de salida que devulve el juego de caracteres usado por el sistema en formato cadena. La funcin g_utf8_validate sirve determinar si una cadena de caracteres est ya en formato UTF-8 o no.
gboolean g_utf8_validate (

cadena_a_validar, longitud, final);

cadena_a_validar ; gssize longitud; const gchar ** final; El parmetro cadena_a_validar es la cadena que se quiere validar. longitud es el nmero mximo de caracteres que queremos que valide, puede ser NULL si queremos validar la cadena entera; por ltimo, en el ltimo parmetro, la funcin devuelve un puntero al ltimo carcter que ha podido validar. La funcin devuelve TRUE o FALSE dependiendo de si la cadena pasada cumple el formato UTF-8 o no. gchar *

Como hacer plugins.


Una de las cosas que pueden interesar a la hora de hacer una aplicacin es crear un mtodo por el cual se pueda aplicar extensiones. sto se conoce por el nombre de plugin. Para los desarrolladores habituales, el trmino "plugin" no debera resultar desconocido, ya que existen aplicaciones en GNOME, como por ejemplo gedit, gnumeric o algunos reproductores multimedia que aprovechan este mtodo para extender la funcionalidad de la aplicacin. Para entender cmo funcionan los plugins, hay que tener claro el concepto de "smbolo". En una librera, a cada funcin o variable se le da un nombre nico (smbolo). Los smbolos que interesan ahora, son

los que se exportan, que sern los que se utilicen para enlazarla. Por ejemplo, cuando en un cdigo se llama a una funcin, lo que sehace es especificar el smbolo de la librera y, en consecuencia, a la funcin que se desea. sto se hace automticamente a la hora de programar. Pero tambin se puede hacer manualmente. O sea, se puede especificar una librera en concreto (el plugin) y llamar a una funcin en concreto. De este modo se podra crear muchas libreras (plugins), que adems implementen una funcin comn en todas ellas y se podra cargar manualmente esa funcin de cualquiera de los plugins. Para luego ejecutarla dentro de el programa. sto se ver mucho ms claro ms adelante, con el ejemplo de esta seccin. Para realizar este tipo de acciones se dispone de GModuleste es un sistema que permitir la carga dinmica de smbolos. Adems, siguiendo con una de las mximas de GLib, este sistema es portable. Lo que nos permitir cargar smbolos en sistemas como Linux, Solaris, Windows, HP-UX. Para la utilizacin de GModule es necesario tener presente dos cosas. La primera es que, en el momento de la compilacin, se debe indicar que se va a usar GModule, y para ello se indicar en el pkg-config que incluya la librera gmodule-2.0. Y por supuesto incluir la linea:
#include <gmodule.h>

La otra tiene que ver con detectar si el sistema operativo en el que se trabaja, soporta este tipo de acciones. Y para ello se usar la funcin g_module_supported que detectar si se puede hacer uso de las siguientes funciones y devolver TRUE si es as.
gboolean g_module_support ();

void ;

Abrir una librera.


Si el sistema en el que se trabaja soporta el uso de GModule, el siguiente paso ser abrir la librera de la cual posteriormente se extraer el smbolo deseado. Para ello se debe indicar de alguna manera la posicin en nuestro sistema de la librera (plugin) que se desea abrir. Y con este fin, se usara la funcin g_module_build_path, con la que podremos construir la ruta exacta donde se encuentra la misma. Esta funcin devolver una cadena con la ruta anteriormente nombrada.
gchar * g_module_build_path (

directorio, nombre_del_modulo ) ;

const gchar * directorio; const gchar * nombre_del_modulo ;

En el primer parmetro de esta funcin se debe especificar el directorio donde se encuentra la librera que se desea abrir. Y en el segundo, el nombre de la misma. Pero hay que tener claro que slo el nombre, ya que la funcin se encargar de poner la extensin de la librera segn el sistema operativo en el que este corriendo GLib. Por ejemplo, en Linux colocar la extensin ".so" y en Windows ".dll". Una vez que se obtiene la ruta devuelta por g_module_build_path, lo siguiente ser cargar la librera. Y para ello est la siguiente funcin. ruta_de_la_libreria GModule * g_module_open ( , bandera ); ruta_de_la_libreria ; GModuleFlags bandera ; El parmetro bandera puede contener dos valores, un cero o la macro G_MODULE_BIND_LAZY. El primer valor, el cero, significa que, cuando se ejecuta esta funcin, se cargan todos los smbolos de la librera. Mientras que con el segundo valor, slo lo har cuando sea necesario. Otra cosa a tener en cuenta es el resultado de esta funcin. Como se puede observar, devuelve un puntero a una estructura GModule. Esta estructura es opaca a la visin del desarrollador, pero servir en posteriores funciones como referencia a la librera que hemos abierto. En el caso de que GModule sea igual a NULL, sto significar que la funcin no lo ha conseguido. const gchar *

Obtener un smbolo determinado.


Ahora ha llegado el momento de obtener el smbolo que se desee de la librera. Como se dijo antes, estos smbolos pueden ser funciones, estructuras o variables que hayan sido exportadas en la librera (plugin), as que, de momento, se dar por hecho que existe el smbolo al que se va a llamar con la siguiente funcin.
gboolean g_module_symbol (

modulo , smbolo , puntero_al_simbolo ) ;

GModule * modulo ; const gchar * smbolo ; gpointer * puntero_al_simbolo ; Esta funcin recibir como parmetros el puntero a la estructura GModule, que hace referencia a la librera que anteriormente se ha abierto. Despus se introduce el nombre del smbolo que se desea obtener y, para terminar, la funcin devolver en su tercer parmetro

un puntero al smbolo que se haya solicitado. En el caso que se haya solicitado una funcin, devolver un puntero a esa funcin. Y si lo que se ha solicitado es una variable devolver un puntero a la misma. Para terminar slo queda decir que el valor boolean que devuelve, verifica si la funcin se ha cumplido con xito o no.

Preparar el plugin.
Con las funciones anteriores se ha clarificado el trabajo que se ha de realizar para llamar al smbolo de la librera (plugin). Ahora queda tratar la parte contraria, la del plugin. Se ha de tener en cuenta que para que la funcin g_module_symbol encuentre el smbolo que se reclame, este ha de estar declarado de alguna manera. Y para este acto se usa la macro G_NODULE>G_MODULE_EXPORT. Esta macro, escrita delante de una variable o funcin, realiza la funcin que se desea, la de exportar el smbolo. De este modo, ya ser posible referenciar el smbolo deseado desde la funcin g_module_symbol. Dentro de la preparacin de plugin con GModule existe una manera de inicializar el plugin. Para ello se deber declarar una funcin llamada g_module_check_init. Dentro de esa funcin, es posible declarar acciones para la inicializacin del plugin. Pero esta funcin deber seguir estrictamente este prototipo. modulo ) const gchar* (*GModuleCheckInit) ( ; GModule * modulo ;

En el momento en el que se abra la librera (plugin) con la funcin g_module_open, sta buscar esta funcin y la ejecutar. En el caso que esta funcin no est declarada, simplemente habr abierto la librera. En el caso de que exista la funcin, podr retornar NULL si ha sido exitosa la inicializacin o un cadena de caracteres con la informacin del error contenida en ella. Y al igual que se puede especificar una manera de inicializar el plugin, tambin se puede especificar la manera en la que finalizar. Para ello se deber especificar una funcin llamada g_module_unload. Y, al igual que la anterior, deber seguir el siguiente prototipo. void modulo ) (*GModuleUnload) ; ( GModule * modulo ;

Ejemplo de uso de GModule.


Llegados a este punto, es hora demostrar prcticamente todo lo anteriormente explicado. Para ello se usar el siguiente ejemplo, que consta de cuatro archivos. Uno de ellos es un Makefile, que nos

ayudar a compilar dicho ejemplo y har ms familiar el uso de la herramienta make. El siguiente ejemplo explicar cmo funciona un plugin. Para ello se cuenta, por un lado, con una aplicacin, correspondiente a los ficheros modulo.c y modulo.h. Esta aplicacin llamar al plugin generado por el fichero plugin.c, que cuando lo compilemos se llamar [Link]. La aplicacin exportar una estructura llamada info_plugin y una funcin llamada escribe. Dentro de la aplicacin, se llamar a los smbolos anteriormente citados y se modificar el contenido de la estructura. Una vez ese contenido ha sido modificado, se llamar al puntero a funcin correspondiente al smbolo de la funcin escribe. Cuando esta funcin se ejecuta dentro de la aplicacin, lo que realmente se esta ejecutando es la funcin escribe, que imprime por pantalla el contenido de la estructura. [Link]

Unidad 4. Interfaz Grfica de Usuario (GUI).


4.3 Creacin de interfaz grfica para usuarios.

Interfaz de usuario
La creacin de las interfaces de usuario ha sido un rea del desarrollo de software que ha evolucionado drmaticamente a partir de la dcada de los setentas. La interfaz de usuario es el vnculo entre el usuario y el programa de computadora. Una interfaz es un conjunto de comandos o menes a travs de los cuales el usuario se comunica con el programa, [Myers, 1996b]. Esta es una de las partes ms importantes de cualquier programa ya que determina que tan fcilmente es posible que el programa haga lo que el usuario quiere hacer. Un programa muy poderoso con una interfaz pobremente elaborada tiene poco valor para un usuario no experto. La elaboracin de una interfaz de usuario, bien diseada, exige una gran dedicacin pues generalmente las interfaces son grandes, complejas y difciles de implementar, depurar y modificar. Hoy en da las interfaces de manipulacin directa (tambin llamadas interfaces grficas de usuario, GUI por sus siglas en ingls) son prcticamente universales. Las interfaces que utilizan ventanas, conos y menes se han convertido en estndard en los materiales computacionales ([Shneiderman, 1998]) . La interfaz representa el punto de encuentro entre el usuario y la computadora. En esta interaccin, el usuario juzga la utilidad de la interfaz; el hardware y el software se convierten en simples herramientas sobre los cuales fue construida la interfaz. La definicin de interfaz en si misma es un tanto arbitraria, aunque esto depende de la naturaleza de la tarea que se tiene enfrente.

Existen muchos tipos de software para la creacin de interfaces de usuario [Myers, 1996b]. El sistema de ventanas permite la divisin de la pantalla en diferentes regiones rectangulares, llamadas ``ventanas''. El sistema de ventanas XWindows para Unix divide la funcionalidad de la ventana en dos capas: el sistema de ventanas, el cual es la interfaz funcional, y el administrador de ventanas. El sistema de ventanas provee de procedimientos que permiten a la aplicacin el dibujar figuras en la pantalla y sirve como medio de entrada de las acciones del usuario. El administrador de ventanas le permite al usuario final el mover las ventanas por la pantalla, y es el responsable de desplegar las lneas de ttulo, bordes e conos alrededor de las ventanas. La parte central de un sistema de ventanas es el conjunto de herramientas (toolkit) , el cual contiene los objetos grficos (widgets) ms empleados tales como menes, botones, barras de scroll, y campos para entrada de texto. El toolkit generalmente se conecta a los programas de aplicacin a travs de una serie de procedimientos definidos por el programador. La funcin de estos procedimientos es el decidir la forma en que se comportarn los objetos grficos. Ejemplos de toolkits son el Motif/X11 y los widgets definidos en los toolboxes para Windows y Macintosh. Se ha investigado mucho sobre los toolkits, produciendo algunos como Garnet, Amulet, InterViews, Tcl/Tk, Java y las bibliotecas de objetos grficos de QT. Los toolkits virtuales le permiten a una aplicacin el que esta sea escrita una sola vez y que se pueda ejecutar en diferentes sistemas operativos, como Windows, MacOS o Unix. Otro nombre para estos toolkits es de ``sistemas de desarrollo multiplataforma''. Como se ha mencionado, para el diseo de la interfaz de usuario del generador automtico de mallas se utilizarn las redes de petri. Uno de los objetivos principales de este trabajo de tesis es el de contar con un programa generador automtico de mallas, el cual debe de tener un desempeo altamente eficiente sin importar la plataforma computacional en la que se ejecute. Para lograr ese objetivo se utilizaron nicamente lenguajes de programacin que cuentan con compiladores o interpretes para las arquitecturas de computacin ms populares, como son plataformas UNIX, Windows 95/98/NT y MacOS. Para la implementacin de los algoritmos de optimizacin se eligi al lenguaje C. Este lenguaje de programacin cuenta con compiladores para distintas plataformas. El lenguaje C es un lenguaje procedural de propsito general con una sintxis compacta y con caractersticas de ejecucin muy eficientes, adems de ser un lenguaje altamente porttil. Otra gran ventaja es el hecho de que se cuentan con herramientas de depuracin muy poderosas, lo que facilita la deteccin de errores. Durante la primera fase del proyecto se realiz un prototipo del generador, cuya interfaz grfica fue realizada con el Tool Command Language / Tool Kit (Tcl/Tk), el cual es un lenguaje de programacin de alto nivel, el cual funciona a base de scripts, y permite la elaboracin de objetos grficos de una manera muy sencilla. Este es un lenguaje multiplataforma, por lo que es ideal para la implementacin del generador de mallas en la etapa de pruebas. Tcl/Tk es un lenguaje interpretado, y debido a que este proyecto requiere de una gran cantidad de operaciones

de graficacin, se anticipa que este prototipo ser algo lento, pero cumplir ampliamente con la funcin de realizar pruebas y modificaciones rpidamente. La interfaz grfica fue elaborada con las bibliotecas de objetos de QT . Estas son unas bibliotecas elaboradas en C++, por lo que la integracin con las funciones de optimizacin hechas en C ser natural. QT es un conjunto de herramientas multiplataforma que es soportado por la mayora de las plataformas UNIX y Windows. Los elementos grficos son implementados de una manera sencilla y se tiene un control muy amplio en cuanto a desempeo y presentacin de estos.

[Link]

4.3.1Librera de interfaz grfica (APIs).

Interfaz grfica de usuario


De Wikipedia, la enciclopedia libre.
(Redirigido desde Interfaz grfica) Interfaz grfica de usuario (GUI) es un mtodo para facilitar la interaccin del usuario con el ordenador o la computadora a travs de la utilizacin de un conjunto de imgenes y objetos pictricos (iconos, ventanas..) adems de texto. Surge como evolucin de la lnea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno grfico. GUI es un acrnimo del vocablo ingls Graphical User Interface Douglas Engelbart, adems de inventor del ratn de ordenador, desarrollo la primera interfaz grfica en los aos 1960 en [Link]. en los laboratorios de XEROX. Fue introducida posteriormente al pblico en las computadoras Apple Macintosh en 1984, y a las masas hasta 1993 con la primera versin popular del sistema operativo Windows 3.0.

[Link]

Programacion de interfaces graficas de usuario (desde abajo)


hiei | 03 Junio, 2005 00:57 Si te interesa saber como esta hecha una interfaz grfica (GUI, por graphic user interfaz) y como puedes hacer una tu, este texto es para ti. Ya que es un tema bastante extenso ir desarrollndolo en varias partes, esta es la primera

Programacin de GUIs desde abajo (1)


De todo lo que me ha llamado la atencin a lo largo de los aos ha sido la programacin grfica y las interfaces de usuario. Este es un rea poco tratada en las bibliografas ya que tiene que ver con los interiores de los sistemas operativos (aunque no seria una razn valida a mi entender). Hasta no hace mucho, la programacin de sistemas operativos y todo lo que tenia que ver con estos era algo reservado para los grandes catedrticos (La catedral) de la programacin y estaba relegado a las universidades. Hoy por hoy (y aunque a muchos les pese) existi un muchacho llamado Linus Torvalds que hizo un ncleo y el proyecto GNU (junto con mucha otra gente) la otra parte. Su cdigo esta libre para ser visto por todos y hoy cualquiera puede tomar el cdigo de los *NIX libres y hacer el propio suyo empezando desde cero. Ya es propiedad de los mercaderes del basar. Este es mi aporte para que halla mas informacin sobre las interfaces grficas Primera mirada: Una GUI se basa en un concepto muy simple. Percibir eventos, procesarlos y actuar en consecuencia. Este mecanismo tan simple, repetido muchas veces por segundo es lo que hace la mayor parte de la magia de las GUIs. Podemos dividir el proceso en tres partes fundamentales: 1. Toma de eventos (GETEVENT) 2. Procesamiento (HANDLEVENT) 3. Actualizacin (FLUSH) Esto, encerado en un ciclo LOOP (WHILE, DO ... WHILE, etc) controlado por una variable (a uno la variable mantiene el ciclo, a cero lo termina) es el corazn del sistema. El ciclo debe ser continuo y sin interrupciones (no debe haber ninguna funcin que se congele en otro ciclo interno (aunque puede haber excepciones, ya veremos mas adelante) La fase 1 (GETEVENT) se encarga de leer los dispositivos de entrada y definir los eventos que se generaron como la pulsacin del ratn, su movimiento, la pulsacin de una tecla, etc. bsicamente existen dos tipos de eventos: 1. Eventos externos: Se generan por una entrada del usuario (teclado, ratn, otros perifricos) 2. Eventos internos: Son generados por partes internas al mecanismo de la GUI (repintado de un rea especifica,

finalizacin de un temporizador, movimiento de ventanas, etc. La fase 2 (HANDLEVENT) se encarga de leer estos eventos e interpretarlos generando mas eventos o cambiando estados internos de variable de los distintos componentes que componen la GUI (ventanas, cajas de texto, mens, botones, etc.) Por ejemplo, cuando se detecta que se a presionado sobre un botn, se cambia una variable interna que indica que, ese boto, esta presionado. La Fase 3 se encarga de actualizar visualmente el aspecto de la interfaz para que concuerde con los nuevos estados (si es que hubo cambios) tomados por los componentes durante la fase anterior. Esta ultima fase puede ser muy simple o directamente no existir. En este ultimo caso es la fase 2 la que se encarga de hacer la actualizacin a medida que detecta los cambios en los objetos (cajas, botones, ventanas, etc.) que componen la interfaz. Ir describiendo, mas adelante, cada uno de los mecanismos en detalle, ahora me interesa dar una vista general de como seria el sistema de la GUI. El programa con interfaz grfica no es como los programas de consola comunes, se base en detectar los eventos que se generan dentro de la interfaz por lo que su cdigo no esta condensado en ninguna funcin en especial. Es un conglomerado de pequeos trozos de cdigo intercomunicndose entre si para lograr el objetivo deseado. El cdigo se encarga de levantar la interfaz grfica, e iniciar el ciclo anteriormente tratado. Cuando el ciclo termine, termina el programa. El cdigo propio del programa se ejecuta como respuesta a los eventos que se generan en la GUI, pero no por iniciativa propia (a lo sumo como respuesta a un evento peridico emitido cada cierto tiempo) Resumiendo, nuestro programa hara, bsicamente tres acciones: 1. Iniciar la interfaz grfica y crear los elementos de esta (cajas, botones, ventanas, etc.) 2. Entrar al ciclo principal del que no retornara hasta que el programa termine. 3. Destruir lo que se creo anteriormente (de esto se debera encargar la GUI, nosotros solo deberamos pedicelo con alguna funcin) El cdigo propio de nuestro programa se ejecutara pasndole un puntero a una funcin al componente que genere el evento. Por ejemplo, para detectar la pulsacin de un botn, al crearlo, este debera permitirnos pasarle la direccin de la funcin que ser llamada cuando se detecte que se pulso.

Es la GUI la que debe conducir la ejecucin del programa y no nuestros algoritmos. Estos solo deben estar enfocados en resolver el/los problemas para lo que esta hacho el programa que estemos realizando. [Link] on_de_interfaces_graficas_de_usuario_desde_abajo.html

API
De Wikipedia, la enciclopedia libre.
Una API (del ingles Application Programming Interface - Interfaz de Programacin de Aplicaciones, interfaz de programacin de la aplicacin) es un conjunto de especificaciones de comunicacin entre componentes software. Representa un mtodo para conseguir abstraccin en la programacin, generalmente (aunque no necesariamente) entre los niveles o capas inferiores y los superiores del software. Uno de los principales propsitos de una API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evitndose el trabajo de programar todo desde el principio. Las APIs asimismo son abstractas: el software que proporciona una cierta API generalmente es llamado la implementacin de esa API. Por ejemplo, se puede ver la tarea de escribir "Hola Mundo" sobre la pantalla en diferentes niveles de abstraccin: 1. Haciendo todo el trabajo desde el principio: 1. Traza, sobre papel milimetrado, la forma de las letras (y espacio) "H,o,l,a, ,M,u,n,d,o". 2. Crea una matriz de cuadrados negros y blancos que se asemeje a la sucesin de letras. 3. Mediante instrucciones en ensamblador, escribe la informacin de la matriz en la memoria intermedia ("buffer") de pantalla. 4. Mediante la intruccin adecuada, haz que la tarjeta grfica realice el volcado de esa informacin sobre la pantalla. 2. Por medio de un sistema operativo para hacer parte del trabajo: 1. Carga una fuente tipogrfica proporcionada por el sistema operativo. 2. Haz que el sistema operativo borre la pantalla. 3. Haz que el sistema operativo dibuje el texto "Hola Mundo" usando la fuente cargada. 3. Usando una aplicacin (que a su vez usa el sistema operativo) para realizar la mayor parte del trabajo: 1. Escribe un documento HTML con las palabras "Hola Mundo" para que un navegador Web como Mozilla o Internet Explorer pueda representarlo en el monitor.

Como se puede ver, la primera opcin requiere ms pasos, cada uno de los cuales es mucho ms complicado que los pasos de las opciones siguientes. Adems, no resulta nada prctico usar el primer planteamiento para representar una gran cantidad de informacin, como un artculo enciclopdico sobre la pantalla, mientras que el segundo enfoque simplifica la tarea eliminando un paso y haciendo el resto ms sencillos y la tercera forma simplemente requiere escribir "Hola Mundo". Sin embargo, las APIs de alto nivel generalmente pierden flexibilidad; por ejemplo, resulta mucho ms difcil en un navegador web hacer girar texto alrededor de un punto con un contorno parpadeante que programarlo a bajo nivel. Al elegir usar una API se debe llegar a un cierto equilibrio entre su potencia y simplicidad y su prdida de flexibilidad. Ejemplos de APIs: Microsoft Win32 API SUN J2EE APIs API for SCSI device interfacing The Carbon APIs for the Macintosh OS Common Object Request Broker Architecture (CORBA) Obtenido de "[Link]

Qu es un API?
API es la abreviatura de Aplication Programming Interface. Un API no es ms que una serie de servicios o funciones que el Sistema Operativo ofrece al programador, como por ejemplo, imprimir un caracter en pantalla, leer el teclado, escribir en un fichero de disco, etc. Visto desde la perspectiva del cdigo mquina, el API aparece como una serie de llamadas (en otros sistemas operativos se hace mediante saltos a supervisor; en OS/2 se implementan como Far Calls), mientras que si lo vemos desde la de un lenguaje de alto nivel, el API aparece como un conjunto de procedimientos y funciones. El API de OS/2 se halla subdividido en varios grupos, segn su funcionalidad. Para saber a qu API pertenece una llamada determinada, basta con mirar sus tres primeras letras: DOS: esta API ofrece los servicios genricos de todo Sistema Operativo multitarea, como abrir y cerrar ficheros y colas, leer y escribir en ellos, crear nuevos THREADS, semforos, etc. KBD, VIO y MOU: estas tres APIs dan acceso a los denominados subsistemas, que son las partes encargadas de virtualizar el acceso a los dispositivos. El API KBD se encarga de la lectura del teclado, el API MOU del ratn, y el API VIO del acceso a la pantalla en modo texto. Todo esto se puede hacer tambin a travs del API DOS, pero el usar los subsistemas da mayor comodidad al usuario, y mayor rapidez a los programas, a costa de una perdida de portabilidad del programa. WIN: este API es el que da acceso al Presentation Manager, el gestor de ventanas de OS/2. Permite crear programas de tipo grfico.

[Link]

SWT: el nuevo sistema de desarrollo de GUIs en Java.

4.3.2Aplicaciones GUI.

Contribuido por Ivn Garca Puebla martes, 17 mayo 2005

El Standard Widget Toolkit (SWT) ha sido creado por IBM como reemplazo de la Java Abstract Windowing Toolkit (AWT) y Swing. De manera ms precisa, el SWT es un conjunto de widgets para desarrolladores Java que ofrece una API portable y una integracin muy ligada con la interfaz grfica de usuario nativa al sistema operativo de cada plataforma. As, cada plataforma debe adaptar el SWT para los grficos nativos suyos. Esto parece que entra en contradiccin con la filosofa de Java de ser independiente de la plataforma, pero ofrece ventajas en la unicidad del aspecto del GUI diseado sea cual sea la plataforma sobre la que se ejecute. Hasta el momento los entornos a los que se ha portado SWT son Windows, Linux GTK, Linux Motif, Solaris Motif, AIX Motif, HPUX Motif, Photon QNX, y Mac OS X. Los grficos en Java han tenido una larga y exitosa evolucin: empez con el bsico AWT, vindose ampliado por el potente paquete Swing. Actualmente se est empezando a imponer SWT. Describamos brevemente la evolucin de cada uno de ellos: AWT (Abstract Windowing Toolkit) fue el primer acercamiento de Java al desarrollo de interfaces grficas (GUI). Permite mostrar ventanas con controles variados como cajas de texto y botones. Las GUIs con AWT son fciles de desarrollar, y usan los controles propios del sistema operativo en el que se programa, por ejemplo, en windows aparecer una ventana de texto tpica de windows, en Mac, una ventana con sus respectivas caractersticas, etc. Pero algunos sistema operativos difieren de otros en el conjunto de controles, por lo que Sun solo implement los controles comunes a los sistemas operativos a los que se dirige Java, que por lo general, es un conjunto reducido y simple respecto de los realmente disponibles. Swing fue introducido posteriormente motivado por la creciente demanda de los desarrolladores de tener una implementacin no nativa, esto es, independiente de la plataforma, de controles de ms alto nivel como rboles, tablas y texto. Con esto se gana en funcionalidad, pero con el inconveniente de hacer las aplicaciones Java con Swing demasiado especficas de Java. Sun aadi una emulacin look and feel para aproximar el aspecto de las aplicaciones swing al sistema operativo sobre las que se ejecuta, pero no abarca las nuevas versiones de los sistemas operativos (Windows Me, 2000 en adelante, por ejemplo). Adems, al estar implementado sobre Java y no de forma nativa en el sistema operativo, los tiempos de respuesta de las interfaces Swing son sensiblemente ms lentas que las nativas. SWT (Standard Widget Toolkit) ofrece un conjunto de elementos que hacen uso directo de los controles nativos a travs de la Interfaz Nativa de Java (JNI). Si los controles no estn ofrecidos por el sistema operativo, SWT crea los suyos propios segn las necesidades. Esto significa que se necesita cdigo nativo para poder funcionar en cada sistema operativo, pero IBM ha sido capaz de adaptar SWT a un buen nmero de sistemas. Es muy destacable la importancia de SWT porque es el entorno grfico de desarrollo que viene con Eclipse y debe ser utilizado en los plug-ins desarrollados para el mismo. Eclipse es una herramienta de desarrollo altamente potente, libre distribucin, cdigo abierto y adaptable a cualquier lenguaje de programacin. Para saber ms sobre Eclipse vistese su pgina [Link].

SWT se compone esencialmente de tres elementos: 1. En el nivel inferior se encuentra una librera nativa que interacciona directamente con el sistema operativo. Es la denominada JNI, la Java Native Interface. Al ser la parte ms dependiente de la plataforma, debe ser portada en funcin de la misma.

2. 3.

Por encima de la anterior capa est la clase Display, la interfaz por la que el SWT se comunica con la interfaz grfica. El nivel superior lo forma la clase Shell, representa el tipo de ventana de ms alto nivel y

que es donde se alojan los widgets, controles o componentes. El shell es la parte de la interfaz que est directamente controlada por el sistema de ventanas del sistema operativo. La clase Shell es hija de la clase Display, en cuyo caso es la ventana o marco principal a partir de la cual se construye el resto de la interfaz, o bien hija de otro shell, siendo el ejemplo ms comn las ventanas de dilogo. Para mostrar lo anterior, estudiemos el siguiente ejemplo "Hola mundo":

import [Link].*; public class HelloWorld { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); [Link]("Hola Mundo"); [Link](200, 100); [Link](); while (![Link]()) { if (![Link]()) [Link](); } [Link](); } }
Conforme a lo explicado anteriormente, identificamos en el cdigo las siguientes partes:

Display display = new Display();


Representa la pantalla y su conexin con el sistema gestor de ventanas del sistema operativo en el que nos encontramos. El objeto display contendr a su vez una lista de objetos shell.

Shell shell = new Shell(display); [Link](); El shell equivale a una ventana abierta sobre la pantalla. Es la clase raz de los componentes y
controles. Prestemos atencin al siguiente fragmento:

while (![Link]()) { if (![Link]()) [Link](); }


Es el denominado bucle de eventos. Ha de ser programado explcitamente y su funcin es detectar y ejecutar eventos. Es la forma en que liberamos la CPU para otros menesteres ajenos a la interfaz grfica cuando no se han producido eventos a los que dedicar ciclos de proceso para atender. Por ltimo observamos que los recursos del sistema han de ser liberados por el programador:

[Link]();
La liberacin del objeto display conlleva la finalizacin de todos los shells hijos contenidos. Este artculo slo pretende ser una breve introduccin a los fundamentos de SWT. Para conseguir las libreras SWT y ms informacin el mejor lugar de inicio es [Link]/swt. Ultima actualizacin ( jueves, 19 mayo 2005 )

[Link] option=com_content&task=view&id=54&Itemid=41

4.4 Computacin grfica. 4.4.1rea de dibujo.


Paintbrush
El Paintbrush es un programa para crear dibujos sencillos, en el que se puede utilizar el mouse (preferiblemente) o el teclado para dibujar. Para iniciar el Paintbrush, abra el grupo de accesorios y toque el icono del Paintbrush, aparecer el siguiente cuadro: rea de dibujo Cuadro de herramientas

Cuadro de ancho de lnea

Paleta de colores

En el cuadro del Paintbrush podemos identificar cuatro elementos: 1. El rea de dibujo es el rea utilizada para el diseo de los dibujos. 2. La caja o cuadro de herramientas contiene las herramientas que se pueden utilizar dentro del Paintbrush para crear o modificar dibujos. 3. La paleta de colores contiene los colores disponibles, en monitores monocromticos solo se dispone de tonalidades de grises. 4. El cuadro ancho de lnea contiene los diferentes anchos de lneas disponibles para dibujar. Para crear un dibujo siga estos pasos: 1. Seleccione el color para el segundo y primer plano.

Toque aqu para seleccionar el color del primer plano. Toque en esta posicin, con el botn derecho y despus seleccione el color que desea para el segundo plano (borde de las lneas, cuadros o crculos). 2. Seleccione el ancho de lnea deseado.

Toque cualquier grueso de lnea para seleccionar el ancho. La flecha indica el ancho seleccionado.

3.

Seleccione una herramienta del cuadro de herramientas.

4.

Disee el dibujo.

5.

Si lo desea, puede introducir texto tocando en el cuadro de herramientas, el cuadro titulado ABC. Podr cambiar la fuente eligiendo del men Texto, la opcin Fuentes, tambin podr modificar el tamao de la fuente con esta misma opcin. Aparecer el cuadro de dilogo de la derecha.

6.

7. 8.

Puede utilizar la opcin de Deshacer del men Edicin para eliminar la ltima accin ejecutada. Para copiar, presione el cuadro derecho de las tijeras, en el cuadro de herramientas y seleccione lo que desea copiar, posteriormente, presione cualquier botn del mouse y con la tecla CTRL toque en la parte en que desea copiar. Para cortar o borrar seleccione el objeto a cortar y elija del men Edicin, la opcin Cortar. Para mover, seleccione el objeto a mover y arrstrelo a la posicin deseada. Slvelo o grbelo, eligiendo del men Archivo, la opcin Guardar o Guardar como. El archivo ser grabado en formato .BMP, pero si lo prefiere, puede cambiar dicho formato. Puede imprimir el dibujo seleccionando la opcin Imprimir del men Archivo. Aparecer el siguiente cuadro de dilogo:

Podr agregar este dibujo a un documento de Word o una hoja de Excel.

[Link] hp

4.4.2Primitivas de dibujo (lnea, arco, circulo, colores, rellenos, imgenes).

Unidad 5. Multimedia.
5.9 Introduccin a la multimedia.
Multimedia: "Un sistema de computo que combina medios de texto, grficos, animacin, msica, voz y video; puede incluir bocinas estereofnicas como dispositivos de salida." "Cualquier forma de comunicacin que usa ms de un medio para presentar informacin. Tambin se refiere a un programa de computadora que integra texto, grficos, animacin y sonido." 1. Qu es Multimedia? "Grupos de entretenimiento y educacionales estn explorando nuevas aplicaciones, computadoras, telecomunicaciones, y las industrias electrnicas estn desarrollando tecnologa. Como un termino, "multimedia" es frecuentemente usado pero raramente definido. Entre ingenieros de hardware y software, los intentos para proveer un significado de la caprichosa definicin "multi-cable" a esas interacciones de comunicacin. Usuarios de computadoras tienen presentaciones multimedia, estaciones de trabajo multimedia, y bases de datos multimedia, pero la gente involucrada ven la multimedia desde diferentes perspectivas. Por ejemplo, presentaciones multimedia, como su nombre lo dice, involucra la presentacin de informacin multimedia, le multimedia de estaciones de trabajo negocian con el procesamiento de informacin multimedia y bases de datos multimedia. Entonces, la nocin de informacin multimedia se unifica con multimedia digital." Un flujo de informacin, variando en estilo y substancia, fluye por nosotros en el mundo moderno. Recibimos y procesamos esta informacin en ambos niveles conscientes e inconscientes. Por ejemplo, caminar a travs de una tienda de departamentos, vemos un acomodo atractivo de paquetes en los estantes, que ofrecen sus contenidos. Msica suave de fondo incrementa nuestra preparacin para comprar, mientras los empleados contestan a preguntas y promueven sus artculos. En las tiendas ms grandes, que tienen personal limitado, videos presentan demostraciones de productos. Videocaseteras colocadas estratgicamente y monitores muestran ventajas de un producto a los compradores que pasan. Una voz calmada, apoyada por una melodiosa msica, lee de un articulo diseado para anticipar preguntas de los compradores. Ambos casos demuestran los componentes de multimedia. Los componentes dan informacin en una variedad de formas, pero guardan su mejor efectividad a travs de su interaccin. En el primer caso, los paquetes, la msica y los empleados de venta se combinan para llevar informacin. En el segundo caso, la tecnologa provee una presentacin ms efectiva por menos gasto. Informacin, imgenes y sonido estn tcnicamente y estticamente integrados, centrados en un producto especifico. Sin ir ms adentro el rea de mercadotecnia, el termino multimedia describe el uso de diferentes medios y tecnologas para presentar informacin. El termino

primero apareci en la educacin durante los 60s y los 70s, cuando describa nuevos medios para apoyar el proceso de aprendizaje en las clases. Ahora el termino multimedia ha ganado una nueva dimensin. As como muchas otras reas de computacin, multimedia sufre no del hecho de que poca gente lo entiende, pero que casi todos lo entienden diferente. Los manufactureros deberan tomar responsabilidad sobre esto porque existen pocos estndares entre productos. Cualquier desviacin del tradicional procesamiento de palabras y de nmeros es inmediatamente etiquetado multimedia. Generalmente el termino multimedia significa integracin de texto, grficas, sonido, animacin y video para llevar informacin. Un elemento clave del concepto multimedia es interaccin. Qu es interaccin? "La palabra interaccin, de su origen latn, describe un trato entre dos o ms personas. Un diccionario de sociologa distingue diferentes tipos de interaccin por los cuales la comunicacin entre personas o grupos ocurren durante la platica, smbolos y gestos. Esta comunicacin resulta en cambios de actitudes, expectacin y comportamiento. Si aplicamos la misma palabra a las computadoras, interaccin significa que la ejecucin de programas dependen de la entrada de los usuarios; el usuario puede controlar el flujo del programa. En un concepto de multimedia interactivo, el usuario afecta el camino que toma la informacin. Podemos aplicar este concepto a nuestro ejemplo anterior de un comprador viendo un video promocional en una tienda. El comprador debe ser capaz de decidir qu productos sern descritos en la presentacin, qu detalles se darn acerca de los productos, y cuando ser repetida esta informacin. "

[Link] html#
LA TECNOLOGIA MULTIMEDIA: Una Nueva Tecnologa de Comunicacin e Informacin Por Carlos Corrales Daz. 1.- NOVEDADES Y CARACTERISTICAS DE LA MULTIMEDIA. La revolucin de las Nuevas Tecnologas de la Comunicacin y la Informacin (NTC/NTI), con la incorporacin de las computadora a los medios electrnicos, los sistemas de comunicacin por satlite, el telfono, el fax y el celular, no acaban de asombrarnos. Antes de que termine el siglo otras novedades de comunicacin e informacin se desarrollan y tienen aplicacin social. Se anuncian ya las redes de telecomunicacin multimedia, que darn lugar al cambio ms grande de todos los tiempos. Los reportajes y las noticias de peridicos, radio y televisin son ms expeditas, en vivo y en directo, gracias a estas tecnologas. La educacin, la

instruccin, la capacitacin y el aprendizaje comienzan a impactarse con el uso de las mismas y a desarrollar alternativas, con aplicaciones de stas, para tales procesos. Las teleconferencias va satlite, que aumentan posibilidades de cultura, educacin, capacitacin, informacin e instruccin, de modo interactivo; comienzan a ser ms comunes y, con la infraestructura requerida, ms al alcance de instituciones sociales. Los usos sociales de la informacin se modifican, aunque se conservan las mismas funciones: ahora, a la informacin se la puede considerar como una mercancia a la que podemos calcular un precio, la podemos almacenar, transportar, distruibuir, procesar, transformar y elaborar productos con ella. Con la computadora, con las redes de telecomunicacin a las que, sta, da lugar, se da un sistema a travs del cual se hace circular, indistintamente, la informacin pblica o la privada; el mismo sistema se emplea ahora para cuestiones de diversin y entretenimiento, de trabajo, de educacin o de informacin, cuestiones que antes requeran sistemas diferentes para realizarse (Martn Serrano, 1992). La principal caracterstica de las NTC/NTI, con la introduccin de la computadora en ellas, es el cambio que introducen en la produccin de la informacin y la comunicacin, al dar lugar a una modificacin de la edicin de diferentes materiales y contentidos y al ampliar las posibilidades que las formas tradicionales de edicin no tienen. Se acelera el proceso (que no se altera en sus formas sustanciales) y propicia ahorro en recursos de tiempo, tcnicos, humanos y econmicos. Para evaluar los cambios a que da lugar la tecnologa digital de la computacin en la comunicacin e informacin se requiere reconocer lo esencial de estos campos: La comunicacin consiste en el envo de mensajes con el propsito de afectar a otros mediante el recursos a la informacin. Tiene como esencia ser un proceso social que suscita, desarrolla o modifica significados y representaciones, para generar un sentido a travs de los mensajes que se envan y se reciben; para ello, son indispensables dos tipos de sistemas, unos de significacin (cdigos) y otros de transmisin (canales), compartidos dentro del proceso. El primer sistema requiere del uso de signos y smbolos de comunicacin capaces de evocar realidades, convocar a la formacin de una comunidad de significados y provocar a la confirmacin, desarrollo o transformacin de las condiciones de existencia, en quienes los perciben. El segundo sistema requiere compartir mecanismos y soportes fsicos que hagan posible la transmisin/recepcin de seales fsicas significantes, segn el cdigo compartido. La informacin se constituye esencialmente por los datos externos de la realidad, que se interiorizan, por los datos de realidades, reales e irreales, que se reciben a travs de las seales fsicas transmitidas por un mensaje y que son interpretados y organizados, por el individuo, para constituirlos

como guas de accin, intervencin, participacin o transformacin. La informacin es una parte de la comunicacin, son los elementos con que estructuramos un mensaje; aunque no, necesariamente, toda informacin involucra una comunicacin. Dentro de este proceso de transmisin de datos estructurados de acuerdo con cierto cdigo, la computadora tiene un tiempo (unos 7 aos) de ser usada socialmente para algo ms que procesar datos o informacin. Se la utiliza como instrumento para producir informacin y comunicacin, como banco para almacenar la informacin en grandes volumenes, como canal para intercambiar o extraer informacin a grandes distancias, como medio de comunicacin interpersonal o mediada; tal como se hace con el telfono o con el peridico, el cine y la televisin (Corrales, 1993). Pero an dentro de este ltimo uso, como medio de comunicin e informacin, la computadora presenta novedades. Una de esas novedades es la teleconferencia a travs de redes de conectadas de terminal a terminal con software con aplicaciones de escritorio. Otra novedad se present en la VII FIL de la Universidad de Guadalajara, en 1993: los paquetes o programas de computacin interactiva. Llamaron poderosamente la atencin de chicos, medianos y grandes, porque permiten al usuario intervenir para elegir la forma en que el programa se ha de recorrer o de desarrollar. En estos paquetes se pueden decidir alternativas para el desarrollo del mismo. Con anterioridad a la VII Feria Internacional del Libro, Block Buster, empresa que ofrece el servicio de videos, haba introducido el video interactivo con varios ttulos dedicados a la diversin y entretenimiento y algunos a la difusin, la informacin y la instruccin. Las caractersticas generales de estas novedades son: 1. la integracin de texto escrito, grficas, imagen (fija o en movimiento) y sonido, 2. la digitalizacin y 3. la interactividad. La integracin hace concurrir a diversas tecnologas: de expresin, comunicacin, informacin, sistematizacin y documentacin, para dar lugar a aplicaciones en la educacin, la diversin y el entretenimiento, la informacin, la comunicacin, la capacitacin y la instruccin. Esta integracin est dando lugar a una nueva tecnologa, de tipo digital, que emplea la computadora, sus sistemas y perifricos, conocida generalmente como multimedia. La tecnologa multimedia tiene diversas manifestaciones y posibilidades tecnolgicas. La digitalizacin convierte a los datos que se integran en impulsos electrnicos, con un cdigo simple de impulso/no-impulso, que corresponden al empleo de un cdigo de dos nmeros digitales: 0 y 1. De all viene digitalizar y digitalizacin.

La interactividad hace que los programas (video o video juego) no se desarrollen de manera lineal, en una sla direccin, con una sla historia o trama, como estamos acostumbrados a verlos y manejarlos. La computadora y las programaciones permiten a los usuarios que recorran las aplicaciones como deseen, las repitan cuantas veces sea necesario, hagan comentarios, den respuestas, formulen preguntas y que la retroalimentacin se almacene en una base de datos. Lo que ha impusado el surgimiento y desarrollo de la tecnologa multimedia es la capacidad de procesar datos disponibles en el escritorio a travs de las PC, gracias a procesadores superescalares que permiten velocidades del orden de cientos de megahertz (MHz) y a la disponibilidad de hardware cada vez ms potente y barato (PC WORLD No. 122, 35) Pero, qu es exactamente, en s, la multimedia? Cmo se le caracteriza? Qu utilidad social, qu usos y aplicaciones tiene? A tales interrogantes intentamos una respuesta en este trabajo. Al inicio 2.- ANTECEDENTES Y DESARROLLO DE LA MULTIMEDIA La multimedia tienen su antecedente ms remoto en dos vertientes: a) el invento del transistor con los desarrollos electrnicos que propici y b) los ejercicios eficientes de la comunicacin, que buscaba eliminar el ruido, asegurar la recepcin del mensaje y su correcta percepcin mediante la redundancia. a) El invento del transistor, a partir de los aos 50, posibilit la revolucin de la computadora, con la fabricacin del chip, los circuitos elctricos y las tarjetas electrnicas, los cuales propician unidades compactas de procesamiento y la integracin del video. Todo esto, junto con los desarrollos de discos duros, flexibles y, ltimamente, de los discos pticos, se ha concretado en la tecnologa de las PCs. Posteriormente, una serie de accesorios y perifricos han sido desarrollados para que la computadora pueda manejar imagen, sonido, grficas y videos, adems del texto. Las primeras PC de fines de los 70, "tenan algunas capacidades de audio, bocinas pequeas que producan un rango muy limitado de chillidos, beeps y zumbidos, que se podan aadir a algn arreglo musical" (PC WORLD, No. 119, 1993, 23) b) Por otro lado, la comunicacin desarrolla, a partir de los 70s, en la educacin, la instruccin, la capacitacin y la publicidad, el concepto operativo de multimedia. Por tal concepto se entiende la integracin de diversos medios (visuales y auditivos) para la elaboracin y envo de mensajes por diversos canales, potencializando la efectividad de la comunicacin, a travs de la redundancia; pues, as, la comunicacin resulta ms atractiva, afecta e impacta a ms capacidades de recepcin de la persona y aumenta la posibilidad de eliminar el ruido que puede impedir la recepcin del mensaje. En el mbito de la computacin el trmino multimedia es ms nuevo y designa el uso de varios recursos o medios, como audio, video, animaciones, texto y grficas en una computadora. Sin quedarse, slo, en un collage de medios, al integrar los datos que puede manejar la computadora, la multimedia ofrece posibilidades de creatividad mediante los sistemas de computacin (PC WORLD, No. 121, 1993, 26).

La Multimedia se inicia en 1984. En ese ao, Apple Computer lanz la Macintosh, la primera computadora con amplias capacidades de reproduccin de sonidos equivalentes a los de un buen radio AM. Esta caracterstica, unida a que: su sistema operativo y programas se desarrollaron, en la forma que ahora se conocen como ambiente windows, propicios para el diseo grfico y la edicin, hicieron de la Macintosh la primera posibilidad de lo que se conoce como Multimedia (PC WORLD, No.119, 1993, 23). El ambiente interactivo inici su desarrollo con las nuevas tecnologas de la comunicacin y la informacin, muy concretamente, en el mbito de los juegos de video. A partir de 1987 se comenz con juegos de video operados por monedas y software de computadoras de entretenimiento (PC WORLD No. 115, p.40). Por su parte la Philips, al mismo tiempo que desarrolla la tecnologa del disco compacto (ledo pticamente: a travs de haces de luz de rayos lser) incursiona en la tecnologa de un disco compacto interactivo (CD-I): Segn Gaston A.J. Bastiaens, director de la Philips Interactive Media Systems, desde noviembre de 1988 la Philips hace una propuesta, a travs del CD-I Green Book, para desarrollar una serie de publicaciones sobre productos y diseos interactivos en torno al CD-I con aplicaciones en museos, la industria qumica y farmacutica, la universidad o la ilustre calle; la propuesta di lugar a varios proyectos profesionales surgidos en Estados Unidos, Japn y Europa (Philips IMS, 1992, Introducing CD-I, Foreword). La tecnologa de multimedia toma auge en los video-juegos, a partir de 1992, cuando se integran: audio (msica, sonido estereo y voz), video, grficas, animacin y texto al mismo tiempo. La principal idea multimedia desarrollada en los video juegos es: que se pueda navegar y buscar la informacin que se desea sobre un tema, sin tener que recorrer todo el programa, que se pueda interactuar con la computadora y que la informacin no sea lineal sino asociativa (PC WORLD, 119, 1993,25). En enero de 1992, durante la feria CES (Consumer Electronics Show) de Las Vegas, se anunci el CD multiusos. Un multiplayer interactivo capaz de reproducir sonido, animacin, fotografa y video, por medio de la computadora o por va ptica, en la pantalla de televisin. La multimedia que est a punto de desarrollarse busca la televisin mutimedia, a partir del empleo de una CPU multimedia. Con esta tecnologa se desarrollar la televisin interactiva, que aplicar el principio de aprender haciendo y tendr capacidad para crear el sentimiento de comunidad, a partir de la interactividad. Mediante la interaccin con la mquina, la multimedia tendr una funcin semejante a la de los libros en el aprendizaje e informacin, tendr su base en las imgenes interactivas y en la premisa de que "la gente adquiere sus conocimientos de manera ms efectiva manejando la informacin de manera interactiva" (PC WORLD No. 115, 39:40; PC WORLD, 119, 25). Hoy en da los sistemas de autor (authoring systems) y el software de autor (authoring software), permiten desarrollar lneas de multimedia integrando 3 o ms de los datos que son posibles de procesar actualmente por computadora: texto y nmeros, grficas, imgenes fijas, imgenes en movimiento y sonido y por el alto nivel de interactividad, tipo navegacin. Los Authorin Software permiten al "desarrollador de multimedia" generar

los prototipos bajo la tcnica llamada "fast prototype" (el mtodo ms eficiente de generar aplicaciones). Se reconoce que los "authoring software" eficientizan el proceso de produccin de multimedia en la etapa de diseo, la segunda de las cuatro etapas que se reconcen para el desarrollo de la misma, porque all es donde se digitaliza e integra la informacin (Authoring software, PC World 119, 23) (Ver Cuadro No.1): Cuadro No. 1: Etapas de desarrollo de la multimedia. 1. Trabajo del autor con quien requiere la aplicacin para definirla. 2. Diseo de la palicacin. Digitalizar la informacin. Integrar la informacin digitalizada. 3. Difusin de la aplicacin. 4. Soporte tcnico a los usuarios.
Adaptado de PC World No. 119 de agosto de 1993, p.23.

Aunque hay avances, los desarrollos de multimedia enfrentan obstculos de normatividad tecnolgica en torno a la compatibilidad y transferencia. Se afirma que la multimedia cuenta actualmente con 30 arquitecturas diferentes e incompatibles entre s, a las que se incluyen el CD-Rom, el CDTV y el CD-I. En el artculo: Multimedia, estado del arte, PC WORLD destaca que hay diferencias entre multimedia aplicada a un fin y multimedia aplicada a un ambiente de trabajo. Seala que en todo caso se requiere de un software especfico, pero pueden incorporarse aplicaciones existentes de multimedia a travs de ambientes de trabajo como Windows, donde es posible anexar sonido al documento de un procesador de texto o de una hoja de clculo (PC World, No. 121, p.36). Para 1993 el concepto multimedia obliga a sopesar y revisar tanto los sistemas y plataformas de cmputo, como los ambientes de trabajo, en relacin al software de multimedia y a sus aplicaciones. No slo se busca hacer compatibles las tecnologas, tambin se busca desarrollar estndares o normas que haga posible que los programas desarrollados puedan ser usados en diferentes tecnologas con una plataforma que tiende a ser uniforme. Los esfuerzos por una estandarizacin han definido un conjunto mnimo de estndares para conformar equipos multimedia (MPC). Estos estndares tiene que ver con la capacidad y velocidad de procesamiento, con la capacidad de almacenamiento masivo de informacin, con la posibilidad de almacenar y reproducir informacin diferenciada y de diferente naturaleza y con el ambiente en que se trabaja la informacin (Ver Cuadro No 2): Cuadro No. 2: Estndares mnimos para conformar un equipo multimedia (MPC). 5. 6. Un procesador 80386SX y 2MB en RAM. Una unidad de disco CD-ROM, que transfiera los datos a razn de 150 KB por segundo, que ocupe menos del 40% de los recursos del CPU y tenga un tiempo

de acceso promedio de un segundo o menos. 7. Aceptacin de CD-Audio, forma de onda de audio y MIDI audio. 8. Que se ejecute en Windows 3.1 y sus extensiones multimedia.

Por el momento se reconocen cuatro plataformas para la produccin y manejo de multimedia: MPC (Multimedia PC), Macintosh, Amiga 2000 y Ultimedia de IBM. (Ver cuadro No.3): Cuadro No. 3: Caractersticas de las plataformas propias para Multimedia.

1.- MPC o MULTIMEDIA PC impulsada por Microsoft. Estndares mnimos para la computadora: procesador 386 de 25Mhz, 4MB a 8MB en Ram y 80 MB de espacio en disco duro. Adems: Unidad de CD-Rom, monitor SVGA con tarjeta de video ([Link]. Action Media de Intel) y tarjeta de audio compatible con MPC (ProAudium Spectrum o Sound blaster Pro), ambiente grfico MS-Windows con extensiones multimedia o el Sistema Windows NT.

2.- ULTIMEDIA DE IBM para PS/2 con dos estndares propios, similares o mayores a MPC. Integra elementos de Hardware (como tarjetas de video) y de Software, algunos exclusivos para IBM, incluye la tarjeta M-Motion para manejo de video y el Audio Visual Conection (AVC), con el ambiente grfico OS/2 de IBM.

3.- AMIGA VIDEO TOASTER: Es un paquete que consta de: Video Toaster, un switcher de video con dos buffers, seis bancos con 32 efectos cada uno, un generador de caracteres con capacidad de 99 pginas, un modelador tridimensional "light wave" con resolucin de 752 X 480 pixeles y un generador de escenas con luces y cmara de video. Su uso requiere ampliar la velocidad de la Amiga 2000 y la memoria y contar con un disco duro mayor a 105 MB (se resuelve con la tarjeta GVP: Green Valley Products).

4.- MACINTOSH DE APPLE slo requiere el sistema operativo versin 7 para trabajar multimedia, es un ambiente grfico altamente intuitivo y consistente. El Quick Time cuenta con un sistema de sincronizacin sonido-imagen que permite visualizar 10, 20 30 cuadros por segundo, segn la velocidad del equipo y al tamao de la imagen. Una computadora rpida como Quadra 700, de 8 MB ms de RAM, un disco grande y una unidad de CD-Rom, permite obtener tiempo real. Macintosh incluye entrada de sonido con micrfono y salida de audio estandar. Necesita un programa para grabar sonido digitalizado. Una tarjeta adicional permite grabar seal de video con formato Hi8, S-Video, NTSC RGB (de 640 X 480) PAL RGB (de 756 X576), para trabajar en Qick Time y realizar una edicin en Mac, as como para dar salida de la computadora a la videocasetera.

Adaptado de PC WORLD No. 118, julio de 1993, pp.27 y 28.

La quinta plataforma: 3DO, est en desarrollo por The 3DO Company. Constar: del Player 3DO (CD Multiusos o player interactivo), una MPC o computadora multimedia, que supere problemas de compatibilidad y transferencia, haciendo posible la televisin interactiva, con aplicaciones en el aprendizaje. El desarrollo de Multimedia se auxilia con la tecnologa hypermedia la cual permite generar reas, dentro de una pantalla, sensibles al mouse, al toque o a una tecla. El sistema permite asociar y explorar cualquier tipo de imagen digitalizada dentro de un programa de cmputo, de modo que el usuario navegue o recorra el programa conforme a sus intereses, regrese a la parte original o se adentre en la exploracin de otra parte del programa, sin necesidad de recorrerlo todo. Este sistema de recorrido o de navegacin permite al usuario interactuar con los archivos o partes del programa de acuerdo a sus intereses personales. Con esto, la tecnologa multimedia busca formar parte de la computacin comn de todos los das, sin ser una disciplina practicada slo por algunos (PC WORLD No. 120, 36). En el futuro prximo el desarrollo de la multimedia se ve integrada al futuro de las telecomunicaciones. Ser posible el transporte de la informacin con mayor volumen y velocidad, con mayor acceso, conectividad y ancho de banda de la red, gracias a la tecnologa ya existente y que slo falta instrumentar. Se define la convergencia de las telecomunicaciones, computadora y televisin, a travs de la fibra ptica, el satlite de comunicacin y el celular. Una red inalmbrica multimedia ser posible y se crearn nuevas relaciones de comunicacin e informacin. 3.- EL CONCEPTO DE MULTIMEDIA. Algunos ttulos que se manejan en torno a la multimedia son reveladores de la forma en que se la concibe: o Multimedia: tecnologa digital que integra diversos datos a travs de la computadora. o La Magia de Multimedia. Combinacin de Imgenes, Movimiento y Sonido. o Multimedia: capacidad de interactividad o Multimedia una poderosa opcin. o Multimedia una alternativa en comunicacin. o Multimedia como medio de difusin. Con todo ello se afirma que la multimedia es un concepto que revolucionar a la computacin tradicional e impactar a la informtica con la integracin de audio, imagen y datos. Sin embargo, antes que collage de medios, la multimedia debe ser considerada como una tecnologa que posibilita la creatividad, mediante los sistemas de computacin; que la produccin y creacin por computadora reduce el derroche de recursos tcnicos y econmicos. La tecnologa multimedia hace posible que cualesquiera sea productor de una presentacin multimedia, si dispone de una computadora personal con programas especficos de multimedia y algunos perifricos bsicos, lo que equivale a contar con un pequeo estudio de produccin. Sin embargo, se advierten dos cosas:

o o

1) el talento de produccin y de creacin no vienen includos en un paquete de multimedia y 2) un nivel aceptable de produccin requiere un equipo multidisciplinario de trabajo: guionistas, animadores, diseadores grficos, directores artsticos, productores, locutores, programadores, redactores, consultores tcnicos, etc.; Puede no tenerse a todos, eso depende de la naturaleza y escala de la produccin. Para cierto tipo de producciones o aplicaciones se requiere slo el conocimiento del tema del que va a tratar la produccin o aplicacin (Philips IMS, 1992, 95:100; PC WORLD, No. 121, 1993, 36).

El artculo Multimedia, estado del arte, citado anteriormente, recoge la afirmacin del Ing. Daniel Caballero, gerente de Multimedia de la Comercializadora Rocapa, acerca del concepto ms preciso de multimedia: "Es el uso de texto y grficas, recursos tradicionales en una computadora, combinados con el video y sonido, nuevos elementos integrados bajo el control de un programa que permite crear aplicaciones enfocadas bsicamente a la capacitacin y el ofrecimiento de servicios y productos a travs de los kioskos de informacin o puntos de venta" (PC WORLD No. 121, 36). La Asociacin Mexicana de Multimedia y Nuevas Tecnologas (AMMYNT) a travs de su presidente, el Ing. Jos Luis Oliva Posada, seala: La multimedia es una tendencia de mezclar diferentes tecnologas de difusin, de informacin, impactando varios sentidos a la vez, para lograr un efecto mayor en la comprensin del mensaje (PC WORLD, No. 117, 1993, 25). La asociacin reconoce tres mbitos de desarrollo de multimedia y slo a uno de ellos como tal (Ver Cuadro No. 4). Cuadro No. 4: Ambitos de Desarrollo de Multimedia

1) Transmedia: Ambito de los medios de comunicacin consolidados, con un leguaje propio y un uso de costumbres diarias, donde las computadoras se destinan a la confeccin de mensajes. 2) Intermedia: Ambito defenido por el uso de elementos de diferentes medios de comunicacin para la transmisin de un mensaje, donde los medios, antes de consolidarse como tales, fueron multimedia. En esta mezcla puede no utilizarse la

computadora. 3) Multimedia: Ambito de uso de la computadora en aplicaciones hechas para que el usuario final la utilice mezclando tres o ms de cinco datos que se emplea en la transmicin del conocimiento formal: texto, grficas, msica, voz, imagen fija o en movimiento.

Para Hctor Schwabe, investigador de la UAM multimedia ha existido como concepto desde hace 40 aos aunque como realidad slo desde 1989. Multimedia se define como la interaccin de medios mltiples: sonido, texto, voz, video y grficos. Multimedia no se logra con una microcomputadora dotada de una tarjeta grfica de alta resolucin, sistema de CD-ROM, micrfono, interface MIDI, audfonos y bocinas. Mas que nada se logra con las aplicaciones que requieren la integracin de texto, grficas, sonido, video (fijo o en movimiento) y animacin. Multimedia es una suma de Hardware y Software en busca del mismo objetivo: humanizar la mquina. La interaccin, que multimedia exige del usuario, facilita la atencin, la comprensin, y la retencin de informacin. "Multimedia convertir el dilogo hombre-mquina en algo intuitivo, expontneo y divertido", con las interfaces de usuario que estan por incorporarse: pantallas sensibles al tacto, sistemas de reconocimiento de voz; ser tan sencilla como emplear los cinco sentidos del ser humano (PC WORLD No. 118,27). Los realizadores de sonido multimedia tambien han desarrollado una concepcin semejante: Multimedia es una tecnologa digital que, a travs de la computadora, integra diversos tipos de datos como: texto, grficas, sonido, imagen fija, imgen en movimiento. De hecho consiste en la integracin de varias tecnologas de comunicacin a travs de la computacin dando lugar a datos digitales, sonidos digitales, imagen digital, etc. (PC World No. 119, Comprendiendo el sonido multimedia, 23). PC WORLD en su nmero 120 publica un artculo que en sntesis presenta el avance en el uso de la computadora y afirma: Multimedia, podra ser denominada como una integracin libre de tecnologa que extiende y expande la forma en que interactuamos con una computadora, concepto que enriquece y ampla la interaccin hombremquina, hoy en da lo vemos manifestado en diversas aplicaciones que incluyen enciclopedias histricas, aventuras cientficas animadas y libros de cuentos y novelas interactivas. Estudiosos de este fenmeno tecnolgico, como Dougs Stewart (1992), se preguntan si la multimedia tendr el potencial de hacer ms divertido, menos tedioso e intimidante, el uso de la computadora o si revolucionar las comunicaciones de modo sustancial, como no se ha hecho desde que Gutemberg invent la imprenta de tipos mviles. Stewart recoge observaciones de otros estudiosos que reconocen el atractivo de multimedia para fijar la atencin, pero que preguntan hasta dnde

sustituir a los canales tradicionales de informacin o si la integracin de otras tecnologas servirn para dar mayor claridad a los documentos, o bien: qu tan probable es que personas insensibles, ante una actividad que exige participacin y no meramente el ser espectador, usen esta herramienta para elaborar sus propios documentos? Los estudiosos sealan que los resultados de multimedia depender de qu tan activos y creativos resulten los usuarios en su da de trabajo. Se destaca la necesidad de obtener, con el uso de la multimedia, ganancias sociales de la misma clase que se obtuvo con la computadora; que para lograrlo, no debe impulsarse a la multimedia en la misma direccin que la televisin comercial, para que no quede slo en un medio de entretenimiento que ofrece gratificaciones inmediatas. Finalmente, se advierte: que aunque multimedia progresar en forma desigual y aunque habr manifestaciones tontas que sufrir, la meta es lograr comunicaciones ms poderosas, eficientes y efectivas. En este sentido, Lucie Fjeldstad nos recuerda que los primeros programas de televisin no eran sino actos de radio realizados con cmara (Stewart, Dougs, 1992, 22). Al inicio 4.- LAS APLICACIONES DE MULTIMEDIA. La multimedia es una tecnologa que est encontrando aplicaciones, rpidamente, en diversos campos, por la utilidad social que se le encuentra. Comenz por aplicaciones en la diversin y el entretenimiento a travs de los juegos de video. De all se pas a las aplicaciones en la informacin y la educacin, para pasar al campo de la capacitacin y la instruccin, a la publicidad y marketing hasta llegar a las presentaciones de negocios, a la oferta de servicios y productos y a la administracin. Inicialmente, lo que se aprovecha de este recurso es su enorme capacidad de ofrecer informacin atractiva. En Mxico, aparte de la aplicacin de los juegos de video y de los programas de cmputo empleados para el autoaprendizaje de software, el desarrollo de la multimedia se impulsa gracias a las aplicaciones en las presentaciones de negocios, la industria, la capacitacin y los kioskos de informacin. 4.1 En la diversin y el entretenimiento. Multimedia es la base de los juegos de video, pero tambin tiene aplicaciones en pasatiempos de tipo cultural como cuentos infantiles interactivos, exploracion de museos y ciudades a manera de visitas digitales interactivas. 4.2 Multimedia en los negocios. Las principales aplicaciones se dan en: la induccin, capacitacin y adiestramiento de personal, la disposicin rpida, accesible y procesamiento de altos volmenes de informacin, los kioskos de informacin, las presentaciones, intercambio y circulacin de informacin. El trabajo en grupo o de equipo para elaborar proyectos. Carlos E. Thom, gerente de Mercadotecnia de Productos de Sybase de Mxico seala como beneficios de multimedia en los negocios: el incremento del rendimiento del usuario, la reduccin de costos en el entrenamiento, la reduccin del retraso de la productividad de los programadores, al acortar la curva de aprendizaje; lo que permite tomar ventajas e incrementar la utilizacin del equipo. Seala el problema de la administracin del cambio de un sistema viejo a uno nuevo, cuando ste es sustancial, puesto que exige

reaprender secuencias; sin embargo, afirma que no hay tanto problema cuando el cambio agrega el atractivo visual. Otro problema, que seala, lo constituyen los errores de requerimiento del recurso, cuando no se conce la herramienta o la estructura de la aplicacin: redunda en prdida de tiempo para gente de soporte o desarrollo y representa un alto costo (PC WORLD No. 122,35). 4.3 En publicidad y marketing. Las principales aplicaciones son: la presentacin multimedia de negocios, de productos y servicios, la oferta y difusin de los productos y servicios a travs de los kioskos de informacin. Los kioscos de informacin son mquinas multimedia situadas en espacios pblicos estratgicos, con determinado tipo de dispositivos que, mediante una aplicacin, accesan datos y permiten al usuario interactuar con ellos, obteniendo, as, informacin. El kiosco proporciona informacin de forma atractiva, sirviendo de apoyo a museos, centros comerciales, salas de espera de bancos, restaurantes, hospitales, consultorios, etc. La funcin del kiosko es transmitir informacin cultural, comercial o de trmite de servicios y proporcionar acceso a la informacin para involucrar en el adiestramiento o el aprendizaje. Para cumplir tales funciones, se requiere evaluar peridicamente la informacin que proporciona, actualizarla y presentarla permanentemente con cambios espordicos (ibidem). 4.4 En la difusin del saber y conocimiento. La caracterstica de la interactividad de multimedia, que permite navegar por el programa y buscar la informacin sin tener que recorrerlo todo, logra que la tecnologa se aplique en los nuevos medios de dos modos diferentes y se use de tres formas alternativas (Vese el Cuadro No. 5): Cuadro No. 5: Formas de aplicacin y usos alternativos de Multimedia.

MULTIMEDIA EN LOS NUEVOS MEDIOS

a)Como medio de aprendizaje b)Como medio informativo

Por interaccin, al ritmo personal, simulando situaciones reales. con juegos que agilizan habilidades Conectado a bibliotecas electrnicas Accesando informacin, desde casa, por correo electrnico

LOS USOS 1)Medio de orientacin. Presentaciones multimedia de ndices DE LA de orientacin en bancos y museos. Por mdulos o kioscos de MULTIMEDIA. informacin. 2)Medio didctico. Capacitacin (interactividad y simulaciones). Dominio terico previo a prctica. Posibilita conjugar actitudes y creatividad. 3)Libro electrnico. Mediante el CD-ROM se puede tener acceso a libros y bibliotecas.

4.5 En la administracin. Multimedia permite tener a la vista los acostumbrados inventarios de productos, ms que por columnas de nmeros, por registros e inspecciones de cmaras de video de los estantes de almacen, realizados por el administrador de ste. Igualmente permite revisar y analizar reportes de clientes realizados por video, de manera ms rpida y efectiva. La realizacin del trabajo en colaboracin es, as mismo, posible, an con personas que estn en lugares distantes o diferentes. Al inicio 5.- CONCLUSIONES. La rpida y somera revisin de alguna literatura en torno a MULTIMEDIA permiti elaborar este contenido. Constituye un marco de referencia inicial para comprender la tecnologa e iniciar trabajos en torno a ella. La revisin no es exhaustiva y exige, necesariamente, revisar otros documentos escritos en esta lnea. Sin embargo, algunas conclusiones pueden derivarse con seguridad. 5.1 Multimedia es una tecnologa digital de comunicacin, constituda por la suma de Hardware y Software, con el objetivo de humanizar la mquina; integra medios mltiples por medio de la computadora: sonido, texto, voz, video y grficas; propicia la interaccin con la mquina y los programas de cmputo a partir de aplicaciones concretas que requieren de tal integracin. 5.2 como caractersticas principales y distintivas de la multimedia se encuentran: a) la integracin o mezcla de al menos tres de los diversos datos o informacin manejados por la computadora: texto, grficas, sonido, voz y video, b) la digitalizacin de esos diversos datos o tipos de informacin, c) la interactividad que propicia la relacin del usuario con el programa y la interaccin con la mquina, as como la posibilidad de colaboracin o de trabajo en equipo. 5.3 Para realizar la multimedia se requiere de: 1) un CPU con tres tipos de aditamentos: a) de almacenamiento, b) de despliegue de informacin y c) de interaccin con la computadora; 2) dispositivos de pantalla sensibles al tacto y un lector de CD-ROM, todos contenidos en un gabinete, y 3) teclado o mouse para seleccionar las opciones que interesen. 5.4 Las principales aplicaciones de multimedia en Mxico se dan dentro de prcticas sociales diversas como: la diversin y el entretenimiento, la informacin, la comunicacin, la capacitacin, el aprendizaje, la publicidad, el marketing y la administracin de negocios. 5.5 Algunos de los principios que son base de la concepcin y desarrollo de la multimedia, son aspectos importantes de campos y disciplinas como: comunicacin, psicologa, educacin, informacin. De comunicacin se emplean principios relativos al poder de atraccin, significacin y evocacin, que tiene la imagen empleada como signo y smbolo. Se aprovechan principios relativos al poder de la imagen para impactar afectivamente. El principio de redundancia para aumentar el poder de recepcin o percepcin del mensaje, al emplear diversidad de canales y cdigos que impactan ampliamente a los sentidos, como medios eferentes de la comunicacin. De psicologa y educacin se aplican los principios de la atencin y el inters que tienen relacin con los mecanismos del aprendizaje y comprencin.

5.6 El desarrollo de la multimedia se ha intentado por diferentes frentes, por ello an vemos diversas propuestas y plataformas para realizarla. Sin embargo, aunque en todas ellas hay intereses econmicos de por medio, es necesario reconocer dos intereses paralelos y, a veces, integrados en el desarrollo de la multimedia: por un lado el esfuerzo por la estandarizacin para hacer posible un uso y aplicacin ms universal, que implica una produccin masiva para reducir costos y uso de equipo que responda a estndares ms universales para que las aplicaciones se puedan adquirir y usar en cualesquier parte del mundo; por otro lado, est el inters por lograr que las aplicaciones sean tiles socialmente, pero sobre todo, que se orienten los desarrollos para lograr una humanizacin de esta tecnologa, para que sea real extensin del ser humano. 5.7 Los desarrollos de la tecnologa multimedia que tienden a una estandarizacin, a la compatibilidad de sistemas y al desarrollo de softwares portables, magnifican las ventajas de esta tecnologa. Las principales ventajas de la tecnologa multimedia son: Que posibilita la creatividad. Reduce el derroche de recursos tcnicos, humanos y econmicos (una PC con determinados programas, herramientas y perifricos equivale a pequeo estudio de produccin). Concentra la atencin, la mantiene por ms tiempo y da lugar a un elevado poder de retencin, potenciando la capacidad de aprendizaje. Es alternativa, con ventaja, a la funcin de los libros en el aprendizaje y la informacin y todo esto hace suponer que la multimedia incrementa el rendimiento del usuario final. 5.8 Las buenas producciones de multimedia requieren de un trabajo de colaboracin y la participacin de un equipo multidisciplinario. De esta manera se atienden responsablemente las diferentes fases de un largo proceso, porque aunque la disciplina individual es esencial para el trabajo de todos, tambin es importante que los miembros del equipo enseen su trabajo a los dems y lo pongan al anlisis crtico de stos. El tamao preciso y la composicin del equipo habr de ser determinado en el mismo proceso del diseo. 5.9 Entre las formas especficas de multimedia se encuentran la MTV (o televisin interactiva TV-I), las bases de datos multimedia, el CD-I, el video interactivo manejado en CD-Rom, los Kioskos de informacin, y las redes multimedia conectadas a bancos de informacin con CD-Rom. 5.10 La realizacin de un programa multimedia exige la aplicacin de la tcnica de la hypermedia y de la ingeniera de software, una metodologa basada en objetos (MBO), que implica la observacin de un ciclo o proceso de produccin y de vida: definicin, concepcin, realizacin, pruebas, mantenimiento, difusin, circulacin o distribucin y uso o consumo. 5.11 La multimedia, con sus caracterstica de interactividad, es necesaria en los casos en que se deba manejar informacin que est bajo una de las siguientes tres situaciones: a) Cuando hay necesidad de manejar grandes cantidades de informacin que se encuentra distribuda en numerosos fragmentos, registros o archivos. b) Cuando diversos fragmentos, registros o archivos pueden o deben relacionarse entre s, de manera aleatoria y diferente para cada usuario.

c) Cuando la mayora de usuarios slo necesitan parte de la informacin y tal parte puede ser diferente para cada uno de los usuarios en instantes diferentes. 5.12 Los impactos sociales de la multimedia, especialmente a travs de redes inalmbricas, darn lugar a la creacin de nuevas relaciones sociales, familiares y del trabajo: visitas virtuales a conocidos, amigos o familiares; tratos de negocios y colaboraciones de trabajo a distancia, desarrollos de trabajos desde casa. Consecuentemente, disminucin del trfico vehicular y en gastos de transporte, junto con cambios en las relaciones sociales cuyos impactos se tendrn que evaluar. 5.13 A partir de las redes multimedia, las aplicaciones que se anticipan involucran una interaccin a distancia, con equipos, con bases de datos, con software, con personas. Las apliciones que se anuncian se nombran, sugestivamente, integrando al nombre la raz "tele". *Telemarketing. Servicio profesional de venta de productos y servicios a distancia, a travs de presentaciones multimedia que impactarn la productividad y ahorrarn costos. *Teleconmutacin. Aplicacin por la que millones de personas que integran la fuerza laboral y que se mueven (conmutan) o trasladan por transporte para realizar su trabajo, podrn hacerlo a travs de la computadora, desde su casa. *Teleentretenimiento. Aplicaciones de entretenimiento activadas desde bases de datos multimedia a distancia a travs de video interactivo en CD-I. Se realizan con imagen virtual, simulaciones o producciones especficas dirigidas al esparcimiento. *Teleaprendizaje. Una aplicacin que se da por medio de participaciones en teleconferencias o de consultas a travs de TV interactiva, video interactivo y bases de datos multimedia, lo cual permite el acceso a clases y la interaccin con los mejores maestros de la regin, del pas o del mundo, sin necesidad de traslados, con reduccin del tiempo y costos. *Telemedicina. Aplicacin que preve entrevistas o consultas con mdicos a distancia, a travs de una terminal de multimedia, as como la deteccin y seguimiento a distancia de la evolucin o caractersticas de la enfermedad de un paciente. Al inicio 6.- BIBLIOGRAFIA. CORRALES, Daz Carlos (1993), Usos y Aplicaciones de la Computa-dora en la Comunicacin e Informtica. (El Caso del Area Metropolitana de Guadalajara), informe de investigacin, ITESO/DCHH/Cmputo Educativo. JAMSA, Kris (1993), La Magia de Multimedia, (T.i. al espaol) McGrawHill Interamericana. PHILIPS IMS (1992), Introducing CD-I, New York:Addison Wesley Pubishing Company. PC WORLD No. 115 (Guadalajara), abril de 1993, Mxico:International Data Group. PC WORLD No. 117 (Guadalajara), junio de 1993, Mxico: Interna tional Data Group. PC WORLD No. 118 (Guadalajara), julio de 1993, Mxico:Interna tional Data Group.

PC WORLD No. 119 (Guadalajara), agosto de 1993, Mxico:Inter national Data Group. PC WORLD No. 120 (Guadalajara), septiembre de 1993, Mxico:Inter national Data Group. PC WORLD No. 121 (Guadalajara), octubre de 1993, Mxico:Interna tional Data Group. PC WORLD No 122 (Guadalajara), noviembre de 1993, Mxico:Interna tional Data Group. SERRANO Martn, Manuel (1992), Cambios en los usos sociales de la informacin, en RENGLONES No. 24, [Link]/Extensin Uniersitaria, pp. STEWART, Dougs (1992), "Multimedia: Just Where Is This Thing Going?", en THINK, No. 6, Revista de la International Business Machines Corporation, pp. 22:24.

[Link]

5.10 Componentes de un sistema multimedia. 5.11 Formatos de archivo multimedia.


Streaming / Multimedia: Formatos de archivos audio / video. CODEC.
[Tutorial] Formatos y extensiones de archivos de audio y video para streaming y para multimedia. Definicin de CODEC. Asociaciones de tipos de archivo.
El audio y el video se almacenan en las computadoras en forma de archivos. Debido a que la informacin digital audiovisual es un gran negocio, hoy se torna una 'necesidad' almacenar cada minuto de audio y video en diferentes soportes; desde discos duros hasta CD-ROMs. Este almacenamiento debe ser 'inteligente'. No se trata nada ms de copiar/capturar el material desde una unidad reproductora o emisora de seal (videocassetera, lectora de DVD, lectora de CD, videocmara): tambin necesitamos "comprimir". Un archivo de audio consiste en un "array" de nmeros. Un array es una matriz de datos, todos del mismo tipo, posicionados desde cero por un entero. Cada uno de estos nmeros representa el volumen y la frecuencia de sonido en un instante de tiempo. Puestos todos estos nmeros juntos y ejecutados por el reproductor apropiado, generarn un flujo cambiante de frecuencias y volmenes que sern entonces voz, msica o efectos de sonido. Los archivos de video se comportan de manera similar, aunque utilizan los nmeros para definir colores, brillo, contraste o coordenadas de cada parte de la cambiante serie de cuadros (frames) que componen una 'pelcula' o secuencia de imgenes. La manera en que los nmeros son usados para representar la informacin de un archivo es llamada "formato de archivo", en ingls: 'file format'. Existen varios formatos para audio y otros tantos ms para el video. Cada formato utiliza una frmula nica para determinar el orden y el comportamiento de cada nmero del array que ser usado para representar el audio y el video. Conociendo los formatos de archivo Usted podr, por ejemplo, elegir mejor cual reproductor multimedia utilizar para visualizar/escuchar el contenido de un

archivo o bien saber si ser conveniente descargarlo del servidor u obtenerlo mediante streaming media. Si en un sitio web Usted encuentra una opcin para descargar o un archivo en formato WAV o bien en formato WMA (ambos de sonido) debe saber que 'bajar' el primero le consumir casi diez veces ms de tiempo que el segundo. Claro que con el WAV Usted posiblemente escuche el sonido tal como fue grabado y que con el WMA pierda algo de la fidelidad original (aunque le resulte difcil diferenciar la calidad de sonido entre estos formatos) pero si Usted tiene una conexin DIAL-UP (acceso telefnico a redes, mdem) la diferencia de tiempo para conseguir su archivo multimedia le har optar definitivamente por el WMA.

Definicin de CODEC
En un proyecto de streaming media o de software multimedia todo gira en torno a la compresin. La compresin digital del audio y del video se realiza de diferentes maneras. Al almacenar o leer un archivo de 'media' se aplican frmulas matemticas. Parte de estas frmulas resuelven la compresin o descompresin de un archivo. Precisamente al software desarrollado en base a estas frmulas matemticas de compresin se le denomina CODEC (por COmpresor y DECompresor). Regularmente un CODEC es asociado a un formato de archivo en particular, pero un formato de archivo puede trabajar con ms de un tipo de CODEC. Mientras que algunos CODECs se basan en frmulas matemticas estndar, otros nuevos son creados en base a nuevos conceptos de compresin. Es importante conocer qu CODEC tiene instalado en su PC para poder reproducir archivos de audio y video comprimidos. Es posible que en alguna ocasin Usted haya intentado leer un archivo y su sistema operativo haya respondido con un error o con un aviso de que el CODEC necesario para leer ese archivo est ausente. Ms adelante veremos las caractersticas tcnicas de los CODECs ms populares. Los programadores experimentan constantemente con nuevas frmulas y tcnicas de compresin de audio y de video. En particular es interesante la compresin del audio, porque varias frecuencias de la msica pueden ser eliminadas sin que el oyente lo tome en cuenta. Por ejemplo, si en una pieza de msica predominan los tambores y tonos bajos se pueden recortar las frecuencias altas y nunca se sabr lo que se est perdiendo; o si un pasaje en particular posee en su mayora notas altas, Usted puede eliminar las frecuencias ms bajas. Como regla general se eliminan aquellas frecuencias que el sistema auditivo humano no puede captar. En el video el desarrollo de las frmulas de compresin se enfoca en optimizar la reduccin de la cantidad de colores. El ojo humano es ms fcil de complacer que el odo: nuestra visin puede contentarse con una imagen de escasos 256 colores. Esta 'dosis' de color es suficiente para delinear formas, contrastes, brillos y gamas con una definicin que es aceptada de buen grado por nuestra interpretacin visual. Ms an: por ejemplo, un silencio o distorsin en un sonido es detectado con facilidad, mientras que nuestra vista, ante una secuencia de imgenes incompleta o distorsionada en alguna de sus reas, suele 'autocompletar' las piezas de informacin visual perdidas. Esto NO significa que una imagen de baja calidad sea lo ptimo pero es nuestra realidad tecnolgica. Todava falta camino por recorrer para que podamos experimentar el streaming media con calidad "broadcast" (16 millones de colores, pantalla completa). As es que analizando un sonido o una secuencia de imgenes cuidadosamente la frmula de un CODEC puede ser muy eficiente al reducir el tamao de un archivo. Los CODECs se actualizan con el tiempo y utilizan una variedad de tcnicas para obtener la mejor compresin posible de un archivo. Para mantenerse informado acerca de la optimizacin o mejoras de un CODEC es recomendable suscribirse a la lista de correo del desarrollador que, por lo general, est disponible en su sitio web.

Determinando tipos de archivos con extensiones

Los archivos se almacenan dndoles nombres. Cada archivo tiene una extensin que es usada para determinar el tipo de archivo. Estas extensiones son creadas poniendo un punto despus del nombre del archivo y agregando tres letras. Un ejemplo de una extensin de archivo sera ".MP3", porcin del archivo "temafavorito.MP3". Por defecto la extensin de un nombre de archivo es ocultada por Microsoft Windows Explorer. En Windows 98, Usted puede hacer las extensiones visibles en la ventana de dilogo "Opciones de Carpeta" a la cual Usted puede acceder mediante el men "Ver", y entonces destildar el box "Hide file extensions for known file types". Luego entonces, Microsoft Windows Explorer mostrar los nombres de archivo completo, es decir, incluyendo sus extensiones. Note que si Usted utiliza otra versin de Windows deber consultar un manual para obtener las directivas de como mostrar las extensiones de nombre de archivo. Cuando Usted hace doble click en un archivo para ejecutarlo, Windows 'mira' en la extensin del nombre de archivo para determinar cual aplicacin est 'asociada' a esa extensin y de inmediato procesar su peticin. Por ejemplo, si la extensin de su archivo es ".WMA" arrancar Windows Media Player y reproducir el archivo.

Cambiar las "asociaciones" de los archivos


Usted puede cambiar la configuracin de Windows respecto a la aplicacin que se ejecutar y luego reproducir un determinado tipo de archivo. Por ejemplo, los archivos ".TXT" son abiertos por defecto por el BLOCK de NOTAS o los ".DOC" por WORDPAD; no obstante Usted puede decirle a Windows que arranque otros programas en cuenta de los mencionados. A la accin de determinar cual aplicacin se ejecutar para un formato de archivo en particular se le llama "asociacin de archivo". Usted puede cambiar la asociacin de un tipo de archivo en la oblea "Tipos de archivo" de la ventana de dilogo "Opciones de Carpeta" del menu "Ver" de Windows Explorer, en Windows 98. Haga click en el tipo de archivo que desea cambiar, luego en el botn "Editar" y proporcione la informacin necesaria para que Windows sepa que aplicacin prefiere Usted ejecutar cuando haga doble click sobre un determinado formato de archivo. Cambiar las asociaciones de archivos en Windows Explorer es un poco dificultoso y no recomendado para principiantes. No obstante, la mayora de las aplicaciones para manipulacin de archivos audiovisuales (fotografas, grficos, sonidos, videos) posee, en sus opciones de configuracin o en sus preferencias de usuario, la forma de modificar fcilmente las asociaciones de archivo actuales; algunos programas incluso pueden forzar la recuperacin de una asociacin si otra aplicacin la modificara. Es muy probable tambin que durante la instalacin de un programa Usted sea consultado por el instalador si desea asociar algunos tipos de archivos a esa aplicacin. Cambiar las asociaciones de tipos de archivo puede servirle, por ejemplo, para ejecutar aplicaciones que utilicen menos recursos del sistema que otras (asociadas por defecto) o por que Usted considera que el programa que va a asociar a un tipo de archivo es ms verstil, posee ms opciones o simplemente es su favorito a la hora de manipularlo.

Streaming / multimedia. Metafiles y archivos de audio y video.


[Tutorial] Formatos de metaarchivos y de archivos de audio y video ms populares utilizados para streaming media o aplicaciones multimedia. Formatos nativos o soportados por Windows Media Player, Real Player y Quick Time Player.

En esta seccin vamos a ver cuales son las caractersticas de diferentes formatos de "metaarchivos" y de archivos de audio y video digitales en el siguiente orden:

Metafiles - Metaarchivos Archivos de audio Archivos de video MIDI Tracks de audio CD

Nota: la lista de formatos no es exhaustiva. Solo trata los formatos de uso ms populares en la WWW y en aplicaciones multimedia.

Metafiles - Metaarchivos
META es una palabra griega que significa "prximo" o "cercano". Un metaarchivo o metafile es un tipo especial de archivo que describe o brinda ms informacin acerca de otro archivo. Los METAARCHIVOS o METAFILES son archivos de texto que utilizan XML (Extended Markup Language) para definir tipos de informacin especficos. Los metafiles proveen varias maneras de hacer ms eficiente el funcionamiento de un Player. Algunas de las extensiones ms populares:

Windows Media

ASX: Contienen informacin acerca de archivos ASF. La extensin ASF fue usada para archivos de audio y video por versiones anteriores a la actual de Windows Media. WAX: Contienen informacin acerca de archivos de audio. Cuando Usted graba una lista de ejecucin de archivos de audio (playlist) Windows Media Player utiliza este formato. WVX: Contienen informacin acerca de archivos de video. Cuando Usted graba una lista de ejecucin de archivos de video (playlist) Windows Media Player utiliza este formato.

Real

RAM/RPM:Contienen informacin acerca de archivos RM que pueden ser tanto de audio como de video o ambos.

Usando metafiles para "PLAYLISTS" El uso ms corriente de los metafiles es el de archivo para lectura y escritura de "playlists" en el disco duro. Un archivo PLAYLIST contiene una lista de directivas que el reproductor de audio/video debe ejecutar en el orden y forma que este archivo (playlist) le indique. Las acciones o aplicaciones ms comunes de un playlist son: vincular contenidos multimedia para enriquecer una presentacin,

insertar publicidad (grficos, audio, video) en la pantalla principal del reproductor, entre los archivos de contenido principales (como si se tratara de cortes comerciales de televisin); o insertar publicidad en reas especficas de la pantalla del reproductor o pgina web -si el archivo estuviera incrustado en el documento HTML- mientras se ejecuta el archivo de audio / video (los comerciales pueden contener enlaces hacia pginas web o direcciones de email),

titular o subtitular archivos de video: til para la traduccin del contenido audiovisual (un metafile puede incluso permitirle al usuario seleccionar el idioma), para personas con discapacidad auditiva o para resaltar secciones en un archivo de audio o destacar escenas en un archivo de video, enviar notificaciones o comunicados en streaming media: por ejemplo, en un evento que ser transmitido en vivo, un metafile puede especificar cuando y en que canal tomar lugar la transmisin; as el reproductor puede comenzar a recibirla en el momento debido.

Un playlist puede ser enviado por email o estar alojado en un servidor para descargarlo a pedido.

Archivos de Audio
Windows Media

ASF: Este formato fue usado en versiones previas de Windows Media. WMA

Ambos formatos poseen informacin idntica excepto que el segundo formato es solo de audio, mientras que el primero puede contener informacin de audio y de video.

Real

RM RA: Este formato fue usado en versiones previas de Real.

Ambos formatos poseen informacin idntica excepto que el segundo formato es solo de audio, mientras que el primero puede contener informacin de audio y de video.

Microsoft Windows

WAV: Formato nativo de ese sistema operativo.

Apple Macintosh

AIFF: El formato de intercambio de audio o "Audio Interchange File Format" es uno de los ms populares de Apple Macintosh. Este formato utiliza las extensiones .AIF, .AIFC y .AIFF

Unix

AU: Este formato utiliza la extension .AU. El formato .SND es muy similar. Ambos son populares en UNIX y computadores tipo Unix.

Audio MPEG

MP3: Los archivos MP3 son creados de acuerdo con el estndar del Grupo de Expertos en Imgenes en Movimiento o "Moving Picture Experts Group" (MPEG), conocido como LAYER 3. Este formato utiliza la extensiones .MP3 o .M3U.

Archivos de Video

Windows Media

ASF: Este formato fue usado en versiones previas de Windows Media. WMV

Ambos formatos poseen informacin idntica excepto que el segundo formato es solo de video, mientras que el primero puede contener informacin de audio y de video.

Real

RM

Microsoft Windows

AVI: Formato nativo de ese sistema operativo. Contiene informacin de audio y de video.

Video MPEG
El video creado bajo las especificaciones de el Grupo de Expertos en Imgenes en Movimiento o Moving Picture Experts Group (MPEG) puede tener las siguientes extensiones de archivo:

MPG MPEG MPE M1V MP2 MPA MPE

Apple Macintosh

MOV: Es uno de los ms populares de Apple Macintosh. Este formato utiliza tambin las extensiones .MOV, .QT

Indeo

IVF: Indeo ha sido adquirido recientemente por Ligos Technology. Puede obtener mayor informacin en [Link]

MIDI
MIDI significa "Musical Instrument Digital Interface" o Interfaz Digital de Instrumentos Musicales; y no es un formato de audio o video. Este es un protocolo de programacin que define un mtodo para instrumentos musicales a conectar a computadores personales. Los archivos MIDI utilizan las siguientes extensiones:

MID MIDI RMI

Parte de las especificaciones MIDI definen un tipo de formato que puede almacenar informacin musical acerca de notas y otra informacin propia de programacin. A diferencia de los archivos de audio y video que almacenan informacin exacta para reproducir sonidos e imgenes en un computador, los archivos MIDI solo contienen datos. Por ejemplo, un archivo MIDI puede contener informacin musical para una cancin y especificar que ser reproducida por un piano. Debido a que un archivo MIDI es sobre todo una descripcin matemtica de una cancin o sonido, un archivo MIDI puede ser muy pequeo. Una nota sobre una escala es muy simple, no obstante el conjunto de datos actuales para reproducir sonidos es muy complicado. MIDI no requiere de ningn reproductor en especial ya que viene asociado al sistema operativo y se reproduce normalmente mediantre el software propio de la tarjeta de sonido del PC. Sobre esto debemos destacar que un archivo MIDI puede sonar de diferentes maneras dependiendo de la tarjeta de sonido del PC.

Tracks de audio CD
Los tracks o pistas de sonido de un CD tienen la extensin .CDA.

[Link]

Programas de grficos para Web


Analizamos aqu los principales programas que se emplean para crear grficos para la web. Para preparar imgenes sirve cualquier programa de los que comentamos en la seccin de diseo grfico: unos tienen ms prestaciones, otros no tantas. Las versiones ms recientes de cualquier programa de dibujo o pintura tienden a incluir mdulos especficos para la creacin de grficos web. Ahora bien, cabe decir que estos ltimos aos se han impuesto algunas soluciones especficamente enfocadas a la preparacin de imgenes para la web. Destacan Fireworks (que ya est en su quinta (mx) versin), LiveMotion (antes Imagestyler), Imageready (incluido en Photoshop 5.5.) Y aparte de estos, no es muy conocido, pero quien lo ha probado dice que es el programa definitivo: Xara: una muy potente herramienta de dibujo vectorial y preparacin de imgenes para la web. Existe una versin "menor" de Xara (llamada Webster), an ms especfica para el trabajo de creacin de grficos para la web. Otra solucin son los programas que crean contenido Flash (Flash y Director.) Aunque casi todos los grficos que utilizaremos para las pginas web son en mapa de bits, las ventajas de crearlos en un programa vectorial son mltiples. Puesto que las imgenes se pueden escalar sin prdida alguna de calidad, nunca hay problemas para cambiar las dimensiones de una imagen. Esto es muy importante, puesto que con frecuencia necesitamos un nuevo grfico para un icono, un men, un

botn; adems el texto se mantiene editable indefinidamente, con lo que puede seguir modificndose una vez aplicados determinados efectos. Las funciones avanzadas de manejo de formas geomtricas, colocacin de los elementos, etc. tambin son una gran ayuda para crear imgenes. As, programas como Illustrator, Freehand, Corel Draw o Xara son magnficas herramientas para la preparacin y conservacin de originales para la web (a partir de ellos exportaremos los gif o jpg necesarios.) La idea que hay tras programas tales como Fireworks o Livemotion es precisamente crear las imgenes en un entorno de creacin vectorial, que permita tener siempre disponible un original, listo para preparar nuevas variantes sin ningn impedimento. Estos son sin duda la eleccin ms aconsejable para los profesionales del diseo grfico aplicado a la web, puesto que las caractersticas de los programas cubren todas las necesidades que nos encontramos a la hora de crear los elementos visuales de una pgina web actual, sobre todo: Preparacin de miniaturas de imgenes y procesado por lotes de los ficheros, Creacin de mapas de imagen, Recorte o despiece de imgenes grandes, Generacin de animaciones GIF, Transparencias de GIFs, Optimizacin de color y tamao de los ficheros grficos. Aplicacin de efectos para crear imgenes interactivas, como los mouseover. procesamiento por lotes de conjuntos de imgenes, por ejemplo, para crear automticamente miniaturas de carpetas completas de imgenes.

Este es el aspecto tpico de una utilidad dedicada a la creacin y optimizacin de grficos para la web. En estas pginas proporcionaremos algunos consejos referentes a la forma en que se pueden llevar a cabo estar tareas, muchas de ellas rutinarias dentro de la creacin de grficos para la web.

Fireworks destaca especialmente en tareas como el recorte de imgenes grandes en partes, para facilitar su descarga y para crear efectos especiales al ensamblar de nuevo la imagen en una tabla. Simplemente, se colocan unas lneas gua (arrastrando desde las reglas) y el programa se ocupa de cortar la imagen al largo de las guas y genera una tabla que las contiene colocadas correctamente. Tambin destaca en el resto de funciones especiales para la creacin de gifs o jpgs para la web. Fireworks incorpora toda una coleccin de efectos que se pueden aplicar a imgenes ya elaboradas o a las que se vayan dibujando con sus muchos tiles de dibujo y pintura, tanto en modo vectorial como de bitmaps.

Fireworks ofrece un control exhaustivo sobre la produccin de grficos para la web, con la comodidad y potencia de los entornos de dibujo vectorial combinado con los efectos de un programa de pintura. Al manejar los grficos en forma de vector, si cambiamos las dimensiones de cada objeto, no hay merma en la calidad y se puede rehacer cualquier cambio. Otras funciones muy provechosas para su manejo profesional son la librera de objetos (un panel donde se guardan los objetos que se usan repetidamente, para arrastrar y soltar en el dibujo), la aplicacin de estilos a los grficos o el texto, y la posibilidad de buscar y cambiar todos los objetos que tienen determinadas caractersticas... El programa est muy bien integrado con otros productos de su fabricante, Macromedia. En especial con el editor de web Dreamweaver. Sin embargo, es necesario decir que el programa es muy voraz en trminos de memoria, y hace falta una buena mquina para sacarle partido. Fireworks puede obtenerse en versin de evaluacin; podemos descargarlo de casi cualquier servidor de ficheros, o bien de Macromedia ([Link].) Tambin es frecuente que aparezca en cd-roms de obsequio con revistas de informtica. Xara X (antes Corel Xara) es, en contraste con la mayora de programas actuales, un prodigio de buen diseo, eficiencia y rapidez; aunque es increblemente pequeo, en comparacin con lo que suelen ser las aplicaciones similares -cabe en tres diskettes! - incorpora casi todas las funciones de los mejores

programas de ilustracin vectorial y diseo para la web. Sus filtros de exportacin de gif i jpg son excelentes. Permite crear rpida y sencillamente animaciones y mapas de imagen. Es, sobre todo, muy rpido, y necesita muy pocos recursos. La calidad de sus formas suavizadas y rapidez en la aplicacin de efectos a las imgenes, no tienen competencia ni siquiera por parte de las aplicaciones como Fireworks. Lo lamentable de Xara, siendo tan bueno, es que es una especie de secreto bien guardado por los profesionales que disfrutan de l. La mayora ignora su existencia! Su distribuidor, Corel, lo tuvo relegado a la venta online -si bien, en compensacin, ha ido incorporando a CorelDraw las mejores funciones presentes en Xara. Finalmente, Xara Webster (que, en su versin 1, se ofrece gratis con la revista PC Plus), es una utilidad sencilla, semejante a Imagestyler, pero mucho ms potente, pequea y rpida, y que incorpora algunas de la magnficas herramientas de Xara (insuperables transparencias de cualquier tipo, animaciones fciles...) Todos los programas de Xara, incluido Webster, y el interesante Xara 3D tienen versiones de evaluacin disponible en su sitio web ([Link].)

Los programas para crear esquemas de colores, como Color Scheme Designer son muy tiles para planear el aspecto visual de un sitio web y crear paletas de colores armnicos. Servicios online y grficos pre-diseados. Si bien lo habitual es crear los grficos en alguna de las aplicaciones comentadas, no olvidemos que una buena parte de nuestras necesidades de imagen quedan cubiertas con las colecciones de clipart y fotografa de que se puede disponer, bien en forma de disco, bien descargndolos de la web. Estas imgenes no siempre son exactamente lo que uno anda buscando, y puede ser preciso modificarlas en mayor o menor medida. En Diseo - Ilustracin tenemos un artculo dedicado a esta cuestin. Por otra parte en la web encontramos una serie de servicios muy interesantes que nos permiten descargar elementos para nuestras pginas y diseos, o incluso crearlos a medida. Estos son algunas direcciones que merece la pena visitar:

En la web de Adobe encontramos un interesante conjunto de servicios gratis: para crear botones, banners y grficos, con muchas opciones: [Link] un optimizador de imgenes en [Link] desde estas pginas puede accederse a otros servicios relacionados, tambin gratis. [Link] 3-D Text Maker; Animated Banner Maker; ButtonMaker; FontMapper Otros servicios semejantes: [Link] Zyweb: [Link] [Link] [Link]

[Link]

5.12 Creacin y manipulacin de objetos con formatos de archivo grfico comunes (GIF, TIFF, JPEG, WMF).

Grficos para la web


En este primer artculo proporcionamos algunas pistas sobre el manejo de los grficos para la creacin de pginas Web. Se puede acceder a los otros artculos dentro de este apartado (programas de grficos, animaciones, optimizacin y fondos y efectos) a partir de la lista que acompaa este texto.
Grficos en las pginas web: cmo incluirlos en los El formato GIF: el formato grfico bsico para la web. JPEG. La opcin idnea para fotografas e imagen de

documentos html.

tono continuo. PNG: un formato infrautilizado pero muy interesante. El aspecto de las pginas web actuales tiene poco que ver con las pginas de la primera mitad de los 90, los aos iniciales de la www. Entonces, casi todas las pginas tenan un fondo gris, texto escrito de lado a lado en un solo bloque y algunas (pocas) imgenes. No era, evidentemente, la rica experiencia visual de hoy en da. De hecho, actualmente muchas pginas estn basadas casi por completo en la imagen; al menos por lo que respecta a las pginas de bienvenida o portada. Tambin es cierto que si queremos aportar contenido a la web, debemos recurrir al texto convencional.

Los dingbats son una fuente instantnea y muy variada de imgenes muy tiles para preparar rpidamente todo tipo de iconos y grficos para las pginas web (ejemplos extrados de Zapf Dingbats (la pluma) y de la fuente gratuita Webdings, de Microsoft.)

Las imgenes, como hemos comentado antes, son ficheros que no forman parte de la pgina web propiamente dicha; se enlazan con sta mediante un cdigo especial (<img src="nombre_imagen">) Los formatos corrientes de imagen que muestran los navegadores son bsicamente dos: GIF y JPG. Si lo queris comprobar, id a cualquier pgina web, o con esta misma, y colocndose sobre una imagen, pulsad el botn derecho del ratn. Elegid "propiedades" y el navegador mostrar qu tipo de fichero es, con informacin sobre su nombre, dimensiones y tamao. Se ha intentado introducir otros formatos como el PNG, que de hecho presenta interesantes ventajas, pero no ha tenido demasiado xito. De hecho, los navegadores ni siquiera lo muestran correctamente sin un plugin. El problema de los estndares oficiales para los formatos de archivo de los navegadores est en que deben ser no patentados, utilizables por todo el mundo sin pagar royalties. Pero la falta de apoyo o publicidad puede evitar que se impongan ciertas soluciones; en cambio, el formato de shockwave flash (SWF) s que se ha convertido de facto en un estndar para la transmisin de imgenes vectoriales estticas o dinmicas, con sonido e interactividad... y es un formato propiedad de Macromedia. No es de extraar que haya tenido tanto xito, puesto que las animaciones flash estn llenas de ventajas.

GIF: el formato "todo terreno" para la web.


Los ficheros GIF (de Graphics Interchange File) son el tipo de grficos ms abundante en la red. No pierden calidad con el proceso de compresin, y viajan muy bien a travs de la red. En general:
Son ms rpidos en mostrarse en el navegador. Su

sistema de compresin de datos no provoca prdida de calidad. Pueden contener un color transparente, y de este modo dejar que se vea a travs de algunas reas de

la imagen el color o imagen de fondo, con lo que parece que estn recortados y pegados sobre el fondo. Adems, pueden contener mltiples imgenes secuenciadas, creando una animacin. Los gif animados tienen una presencia ubicua en la red, en especial en los llamados banners (las tiras de publicidad que aparecen tan a menudo.) Su sistema de compresin es extremadamente eficiente si el grfico contiene grandes reas de color homogneo. La limitacin principal que tienen los GIFs es el nmero de colores: 256 como mximo. Son el formato idneo para imgenes con colores planos, normalmente tambin para textos en forma de imagen, pero no tanto para fotografas. La limitacin en el nmero de colores disponibles hace que una imagen con transiciones suaves de colores, y con un mayor nmero de colores de partida, deba reelaborarse con una trama de los colores disponibles, con lo que puede perder calidad. Todo depende del tipo de imagen: a veces puede conseguirse un gif fotogrfico de calidad aceptable. Una aplicacin interesante y muy frecuente de los gif transparentes es emplearlos como "espaciador". La tcnica consiste en preparar un gif de 1 pxel cuadrado, transparente. Es decir, invisible del todo. Se suelen emplear asignndoles unas dimensiones equivalentes al espacio "vaco" que se quiera dejar en una tabla, o para situar en una posicin determinada los elementos de la pgina. Una vez se haya descargado de la red, el usuario tiene en la memoria cach del navegador esta imagen y puede utilizarse las veces que se quiera sin tener que descargarla de nuevo. Durante los primeros aos de la www, se insista mucho en la necesidad de que los colores de la paleta de los gifs estuvieran dentro de la llamada "paleta segura", un conjunto de colores que se ven en cualquier monitor con tarjeta grfica de 256 colores, sea un Mac o un PC. Discutimos esta cuestin en otras pginas de Vigital.

JPEG. Ideal para fotografas.


El formato JPG (de Joint Photograph Experts Group) funciona siempre con millones de colores distintos, y por tanto no tiene problemas para representar cambios graduales de tono o color. Ahora bien, este formato funciona con un sistema de compresin de datos que hace que se pierda calidad. Se puede controlar el grado de compresin para llegar a un equilibrio entre la calidad de la imagen y su tamao. Cuanto ms se comprima una imagen, mayor prdida de calidad de produce. Experimentando con

el grado de compresin, podremos llegar a un porcentaje que suponga el mejor compromiso entre calidad y tamao modesto. Los programas de grficos permiten esta optimizacin de forma interactiva, mostrando una simulacin del resultado con cada grado de compresin aplicado. Como desventajas, JPG no admite transparencias y siempre se trata de una imagen nica, esttica.

PNG: Un formato apto para todo, infrautilizado.


Para solucionar algunas de las limitaciones de los dos formatos comentados, se desarroll un nuevo estndar de cdigo abierto, el png: portable network graphics. Lamentablemente, nunca ha llegado a tener mucho uso, en parte porque el soporte para alguna de sus prestaciones ha sido deficiente en las versiones anteriores de los navegadores. Hoy en da no hay ninguna razn para no optar por los grficos PNG. Entre sus ventajas:
Puede incluir cualquier modo de color, desde blanco y

negro a color verdadero. El sistema de compresin es sin prdidas, incluso a color verdadero. y es realmente potente, creando ficheros menores que los gif correspondientes. Aunque las imgenes a color completo son algo mayores que los jpg, la calidad es perfecta. Admite transparencia graduada, lo que posibilita la fusin perfecta con los fondos. Es extensible: un desarrollador puede incluir informacin adicional, la cual es simplemente ignorada en un visor que no la reconozca. (de hecho, el formato nativo de Fireworks es el png, an cuando muchsimas de las prestaciones del programa no se corresponden a este formato grfico.)

[Link]
Diferentes formas de optimizar las imgenes de una pgina web. Uno de las principales limitaciones que encontramos a la hora de incluir grficos en una pgina web es la limitacin impuesta por la tecnologa actual de acceso a Internet, que ofrece anchos de banda escasos a la mayora de los usuarios. Si a esto sumamos que muchas de las personas que acceden a la WWW lo hacen con conexiones va mdem, la conclusin es que las pginas web deben tener escaso peso para poder ser descargadas en un tiempo aceptable. Una imagen de 50 Kb tericamente tardar en cargarse unos 10 segundos usando un mdem de 56 Kb/segundo, tiempo bastante elevado, que aumenta en la prctica al ser el ancho de banda til real bastante ms bajo. Si una pgina web contiene varias de estas imgenes, el resultado final ser inviable.

Como norma general, una pagina completa no debe pesar ms de 30 Kb - 40 Kb (la pgina inicial de Yahoo pesa unos 20 Kb). Se hace preciso pues controlar el nmero de imgenes incluidas en cada pgina y la realizacin de un proceso de optimizacin de los ficheros grficos en el que, adems de elegir el formato de almacenamiento ms adecuado, se busque la relacin calidad/peso ms acertada. La mayora de los programas grficos de calidad ofrecen una herramienta para optimizar el peso de un fichero grfico destinado a la web, mediante la que podemos fijar el peso del mismo, el nmero de colores que va a tener la imagen y si queremos que sea entrelazada, progresiva, con transparencias, etc. Deberemos buscar que las imgenes resulten con buena calidad y con el menor peso posible. El ensayo y la prctica son las bases para conseguir buenos resultados.

Si estamos manejando una imagen en formato GIF, el peso de sta va asociado al nmero de colores que tenga, por lo que podemos jugar con la paleta de colores que asociemos a la imagen para variar su peso. El siguiente ejemplo muestra una imagen en formato GIF guardada con diferentes nmeros de colores:

GIF 256 colores GIF 64 colores GIF 8 colores 5,7 K 5K 2,5 K

GIF 4 colores 1,8 K

Como vemos, la diferencia es evidente, y eso que hemos elegido una imagen con pocos colores. En caso de una imagen ms compleja, las diferencias aumentan mucho ms. Vamos a ver ahora el caso de una imagen en formato JPG, donde el peso no va a depender del nmero de colores, sino del porcentaje de compresin aplicado:

JPG 100% 5,3 K

JPG 75% 3,8 K

JPG 50% 2,6 K

JPG 25% 2K

JPG 5% 1,2 K

Al igual que en el caso anterior, hemos elegido una imagen que pierda poco con la compresin para que se aprecie la disminucin que se puede conseguir a veces a costa de no perder mucha calidad. En el caso de una imagen con muchos colores y gradaciones suaves, como una fotografa, se nota ms la prdida de calidad:

JPG 100 % - 44 K

JPG 50 % - 7,7 K

JPG 5 % - 4,4 K

Donde vemos que de la calidad mxima a la media la prdida de calidad no es excesiva, pero el peso baja considerablemente, mientras que el paso de calidad media a baja no disminuye mucho el peso, pero s la calidad de la imagen. Otro factor a tener en cuenta es el tamao fsico de la imagen. A mayor tamao, mayor peso en Kb. Debemos pues buscar un tamao suficiente para que la imagen se vea bien, pero que no de un fichero de un peso excesivo.

Fuente: [Link]

Distintos tipos de formatos para las imgenes de la web. BMP (.bmp) BMP (Bitmapped File Format) es probablemente el formato de fichero para imgenes ms simple que existe. Aunque tericamente permite compresin (en imgenes de 4 y 8 bits puede usar RLE), en la prctica nunca se usa, guardando las imgenes descomprimidas, lo que significa mayor velocidad de carga pero tambin mayor peso del fichero grfico. Admite de entrada cualquier tipo de resolucin y profundidades de color de 1, 4, 8 y 24 bits.

La estructura de los ficheros BMP es sencilla, estando formados por una cabecera que contiene las caractersticas generales de la imagen (tamao, nmero de colores y paleta de colores si es necesaria) y por la informacin de la imagen en s, pxel a pxel, de izquierda a derecha, comenzando desde la ltima lnea inferior, motivo por el cual las imgenes en formato BMP se trazan en pantalla de abajo hacia arriba. BMP es un formato muy utilizado, vlido para MAC y PC. Es el estndar de imagen de mapa de bits en sistemas operativos DOS y Windows e IBM OS/2, siendo usado habitualmente en aplicaciones como Word, Excel, PowerPoint, etc. Las versiones de Windows e IBM OS/2 son incompatibles entre s, aunque hay programas grficos, como Paint Shop Pro, que pueden trabajar con ambas. Sus principales ventajas son su sencillez y la calidad de la imagen. Su gran desventaja, el enorme tamao de los ficheros. Es soportado tan solo por Internet Explorer. GIF (.gif) El formato GIF (Graphic Interchange Format) es uno de los ms habituales en imgenes de mapa de bits. Fue creado por la empresa Compuserve (uno de los principales proveedores de acceso a Internet de los Estados Unidos) en junio de 1987 con objeto de poder transferir imgenes de hasta 256 colores (8 bits) a travs de lneas de datos de modo eficaz, existiendo en la actualidad dos versiones del mismo, la original GIF87a y la ms reciente GIF89a. Ambas versiones implementan una rutina de compresin sin prdidas muy eficaz, basada en la reduccin del nmero de colores y el uso del algoritmo LZW modificado (consistente en no detectar slo las repeticiones de un color, sino en detectar las repeticiones de ciertas secuencias) consiguiendo de esta forma reducir los archivos a un tamao mucho menor que otros formatos, lo que hace los ficheros GIF idneos para su uso en Internet. Tanto es as que todos los navegadores web actuales soportan el formato perfectamente. Por desgracia, el algoritmo LZW empleado est patentado por Unisys (que compr a Compuserve), lo que produce constantes problemas con las licencias. La estructura de todo fichero GIF est basada en bloques, que pueden contener informacin diversa: una imagen, instrucciones acerca de cmo exhibirla, texto, informacin caracterstica de alguna aplicacin, un marcador que determina el final del archivo, comentarios (con informacin acerca de la imagen en cuestin), etc.

Los ficheros GIF utilizan el modo de color indexado, pudiendo trabajar con dos paletas diferentes, una global y otra local. La paleta global determina los colores de todas las imgenes almacenadas en el GIF (puede haber varias en un mismo fichero), mientras que la local determina especficamente la paleta de cada imagen del GIF (en el caso de haber una sola imagen, la nica paleta disponible ser la global). Se pueden alcanzar los 256 colores como mximo, pudiendo elegir entre los predefinidos (2, 4 , 8, 16, 32, 128 256) o personalizados (por ejemplo, 12 colores). La limitacin principal que tiene el formato GIF es que tan solo puede manejar 256 colores, lo que hace que una imagen con ms de 256 o con transiciones suaves de colores deba reelaborarse con una trama de los colores disponibles, con lo que puede perder calidad. Aunque todo depende del tipo de imagen, ya que a veces puede conseguirse un GIF fotogrfico de calidad aceptable (aunque suele tener ms peso que la misma imagen en formato JPG). El formato GIF est pues especialmente indicado en imgenes con menos de 256 colores en las que muchos puntos consecutivos tengan el mismo color, se repitan secuencias de colores o contengan principalmente textos. Adems, la variante GIF89a, creada en 1989, permite la creacin de imgenes transparentes, de animaciones y de imgenes con entrelazado, elementos grficos muy tiles, sobre todo en la web. GIF transparente Una caracterstica muy til del formato GIF es la opcin de hacer transparente un color determinado de la paleta (usando para ello un canal alfa de 1 bit), con lo que ese color no se ver en pantalla, siendo reemplazado por el fondo de la pgina. Con ello se consigue que la imagen parezca flotar sobre el cuerpo de la pgina.

No todas las imgenes son apropiadas para conseguir este efecto. Es condicin

indispensable que la imagen tenga un fondo de color uniforme y que los bordes de los elementos grficos de la imagen no se hayan pixelizado (rastrillado) con el fondo. Cuando dibujamos, por ejemplo, un crculo de color rojo sobre un fondo amarillo, los programas grficos de mapas de bits suelen aplicar la tcnica conocida como antialias o rastrillado, por la cual, y para evitar el efecto negativo de dientes de sierra, se crean alrededor del borde del crculo unos pxeles intermedios entre el color de ste y el color del fondo. Es decir, en el caso que nos ocupa, unos pxeles de diferentes tonos de naranja. En estas circunstancias, si definimos el color de fondo como transparente, ste no ser visible en pantalla, pero s lo sern los pxeles intermedios, por lo que si la imagen la colocamos sobre un fondo verde, se apreciarn los mismos de forma clara, creando un efecto negativo. Una solucin a este problema es asignar como color de fondo del GIF el mismo que el del fondo de la pgina, con lo que nos pxeles del rastrillado no se notarn apenas. Claro que esto es posible slo si la zona de la pgina sobre la que se va a situar el GIF transparente es de color uniforme. Hay otro aspecto que hay que tener en cuenta y es que el formato GIF tiene dos subformatos diferentes. Con el ms comn de ellos, el GIF 87a, no se pueden conseguir colores transparentes, por lo que habr que utilizar un programa grfico que permita salvar la imagen en formato GIF 87a, que s permite este efecto. Un uso muy extendido y til de este tipo de ficheros en crear un GIF transparente de 1x1 pxeles y destinarlo a rellenar las celdas sin contenido de una tabla. En muchas ocasiones, si una celda est vaca no coge adecuadamente el tamao especificado mediante sus atributos width y height. Situando en ella un GIF del tipo mencionado, la celda s que se mostrar con las dimensiones indicadas. Adems, una vez se haya descargado de Internet una vez, el usuario tendr la imagen en la memoria cach del navegador, pudiendo se utilizada las veces que se quiera sin tener que descargarla de nuevo. GIF entrelazado Normalmente, un fichero GIF contiene los datos de cada lnea de la imagen de una manera ordenada, de tal manera que al ser cargada por el navegador aparecer dibujada lnea a lnea desde arriba hasta abajo. Se puede cambiar este comportamiento si se ha guardado la imagen como un GIF entrelazado (interlaced GIF). En este caso, las lneas quedan guardadas no de una manera consecutiva, sino en saltos de cuatro en cuatro, y al llegar al final recomienza desde el principio con otra secuencia diferente, tambin de cuatro en cuatro, as hasta completar la imagen. Ejempo de GIF entrelazado en esta ventana. Por lo tanto, un GIF entrelazado se visualiza en cuatro fases, en cada una de las cuales se muestran diferentes lneas de la imagen. El tiempo de carga de una imagen entrelazada y de la misma no entrelazada es el mismo, pero la entrelazada permite que el usuario pueda ver un esbozo de la imagen antes de que sta acabe de bajar de Internet, volvindose poco a poco ms ntida hasta mostrase tal como se creo. La mayora de los programas grficos actuales ofrecen la posibilidad de guardar una

imagen GIF en modo entrelazado, como Photoshop y Paint Shop Pro. En cuanto a su compatibilidad en la web, todos los navegadores comunes interpretan estos ficheros adecuadamente. GIF animado Un gif animado consiste en una serie de imgenes en formato GIF89a colocadas secuencialmente, cada una de las cuales se muestra en pantalla durante un intervalo de tiempo determinado.

Cada imagen de la animacin se suele conocer con el nombre de fotograma o frame, por semejanza con los fotogramas que forman una pelcula, y puede tener definido un color de su paleta como transparente.

Una secuencia GIF animada puede mostrase una sola vez, repetirse un cierto nmero de veces (denominadas loop) o repetirse indefinidamente (loop infinito). Se construyen con programas especficos para ello (Adobe ImageReady, Microsoft GIF Animator, Ulead Gif animator, Animagic, GIF Construction Set, etc.) o con aplicaciones grficas que implementan esta utilidad, como Paint Shop Pro, Xara o Macromedia Fireworks, y se insertan en las pginas web como una imagen cualquiera, mediante la etiqueta IMG del lenguaje HTML. Los GIFs animados son soportados por todos los navegadores web, por lo que son muy indicados en este medio, teniendo siempre en cuenta que al tratarse de un formato de mapa de bits, si la animacin es muy grande, larga o compleja, el tamao del fichero resultante puede ser excesivo para que sea prctico. Uno de los usos ms corrientes de las animaciones GIF en las pginas web es la creacin de los tpicos banners publicitarios, equivalentes en este medio a las vallas publicitarias tradicionales. JPEG (.jpg / .jpeg) JPEG es, junto con GIF, uno de los formatos estndares en las pginas web, lo que ha hecho que su uso se haya disparado enormemente. Sus ficheros son vlidos tanto para PC como para MAC, es soportado por los navegadores ms importantes (Internet Explorer y Netscape Navigator) y puede trabajar en Escala de grises, RGB y CMYK.

Este formato de mapa de bits fue desarrollado por el Joint Photographic Experts Group, asociacin de fotgrafos profesionales de Estados Unidos que buscaba un formato grfico que permitiera el almacenamiento de imgenes fotogrficas de calidad con unos pesos de fichero configurable y relativamente bajo. Este objetivo lo consigue usando el algoritmo de compresin con prdidas JPEG, basado en el hecho de que el ojo humano no es perfecto y no es capaz de captar toda la informacin que se puede almacenar el una imagen de 24 bits. El formato JPEG intenta eliminar la informacin que el ojo humano no es capaz de distinguir, consiguiendo con ello factores de compresin cercanos a 20:1 sin prdida apreciable de calidad (puede llegar hasta 100:1 y ms). Este algoritmo es adems configurable, por lo que podemos elegir cuanta compresin queremos dar al fichero. Lgicamente, cuanto ms grande sea sta, menos calidad tendr la imagen final. La sobrecompresin produce muestras de color borrosas, as como una imprecisin en las zonas de mayor contraste. Un indicador directo de la sobrecompresin es la presencia de reas grises alrededor del texto negro sobre fondo blanco. Experimentando con el grado de compresin, podremos llegar a un porcentaje que suponga el mejor compromiso entre calidad y tamao de fichero. Los programas grficos permiten esta optimizacin de forma interactiva, mostrando una simulacin del resultado con cada grado de compresin aplicado.

Una desventaja de trabajar con este formato es que las imgenes siempre sufren algn tipo de prdida, por lo que nunca vuelven a tener la calidad original. Por ello es conveniente que una vez escaneada la imagen se almacene una copia en algn formato que permita compresin sin prdidas, como BMP, con lo que dispondremos de la imagen almacenada con su mxima calidad.

Si se abre un archivo JPEG, se modifica y luego se guarda de nuevo como JPEG, se producir una nueva compresin del fichero, lo que provocar una apreciable degradacin del archivo. Por esta razn es conveniente realizar las modificaciones necesarias en la imagen original antes de guardarla en formato JPEG. El archivo JPEG se comprime al guardarlo en disco, pero debe ser descomprimido para utilizarlo en una aplicacin. Esto significa que la cantidad de memoria que se necesita para manejar la imagen puede ser mayor que el tamao del archivo guardado en varios rdenes de magnitud. Un archivo JPEG de 1 Mb puede descomprimirse fcilmente en una imagen de 100 Mb. Por eso, al abrir archivos JPEG, se produce una reduccin en las prestaciones debido al tiempo requerido para procesar la compresin y la descompresin. JPEG es un formato especialmente adecuado para imgenes con muchos colores y con gradaciones de tonos (imgenes de tono continuo), como las fotografas o las digitalizaciones de alta calidad. Se usa para almacenar imgenes de tipo vectorial o dibujos sencillos se observar como la compresin disminuye enormemente y las modificaciones hechas sobre la imagen original son apreciables a simple vista. En el caso de imgenes a color trabaja con profundidades de color de 24 bits separados en tres canales (RGB), por lo que permite casi 16,8 millones de colores (color verdadero). En el caso de imgenes en escala de grises trabaja con un solo canal de 8 bits. No permite el uso de transparencias (no maneja canales alfa) ni animaciones, pero s que permite el uso de compresin progresiva, que muestra la imagen gradualmente, mientras la descarga el explorador Web, utilizando series de lecturas para mostrar versiones cada vez ms detalladas de toda la imagen, hasta que se han descargado todos los datos. Con ello se obtiene un efecto similar al entrelazado de los ficheros GIF. Ejemplo de JPEG progresivo en esta ventana. PNG (.png) El formato PNG (Portable Network Graphic) es un formato de mapa de bits de libre distribucin, vlido para PC y MAC, desarrollado para su uso en la web como alternativa a los formatos GIF y JPG, sobre todo al primero de ellos, propiedad de la empresa Unisys Corporation, ms simple y menos completo

PNG utiliza un esquema de compresin sin prdidas para reducir el tamao del archivo, manteniendo intacta la calidad original de la imagen.

Puede trabajar en modo Escala de Grises (con un canal alfa), en modo Color Indexado (8 bits, hasta 256 colores, paletas de colores) y en modo RGB (24 bits, 16,8 millones de colores y 48 bits, con 24 bits para canales alfa), por lo que admite 256 niveles de transparencia. Las transparencias conseguidas con PNG son de mayor calidad que las puede conseguir el formato GIF, ya que, al trabajar con muchos ms colores, genera transparencias de fondo sin bordes dentados. Tambin permite imgenes entrelazadas (de visualizacin progresiva) y deteccin de errores, pero no implementa animaciones, punto en el que se encuentra en desventaja respecto al formato GIF. Ejemplo de PNG entrelzado en esta ventana. Segn sus desarrolladores, un archivo PNG que almacene la informacin en 8 bits tiene un tamao de 10 a 30 veces menor que un GIF con las mismas caractersticas, siendo a la vez capaz de almacenar con 48 bits imgenes en color real con transparencias, de calidad igual o mayor que sus equivalentes en formato JPEG. Sin embargo, en la prctica el formato PNG adolece de bastantes errores. En general, los ficheros PNG tienen un tamao mayor que sus equivalentes en GIF o JPEG, en imgenes de pocos colores cambia a veces alguno de ellos inexplicablemente, aspecto muy negativo, sobre todo cuando el color afectado es el de fondo. Es de suponer que en un futuro, y puesto que cuenta con el apoyo del W3C, el formato PNG consiga una elevada calidad en todo tipo de imgenes para la web, con ficheros de peso reducido y sin errores en la interpretacin del color. Mientras tanto, los diseadores web siguen utilizando preferentemente GIF y JPEG. SVG (.svg) SVG (Scalable Vector Graphic) es un nuevo formato de grficos vectoriales para la web desarrollado por el W3C con vistas a ofrecer a los desarrolladores un formato grfico de alta calidad y totalmente integrado con los lenguajes HTML y XML. SVG maneja grficos vectoriales que almacena mediante un lenguaje de etiquetas propio, semejantes a la que se utilizan en HTML, por lo que pueden ser editados y modificados con cualquier editor de texto simple.

Podemos pues definir el formato SVG como un puente entre diseo grfico y programacin, entre arte y tecnologa. Efectivamente, debido a su naturaleza

puramente matemtica, un grfico SVG es una sucesin de objetos y puntos posicionados y orientados en el lienzo de trabajo, elementos que son definidos por frmulas matemticas y que pueden ser accedidos por cdigo de programacin para modificar sus propiedades. Por ejemplo, el cdigo para definir una elipse con fondo azul claro es el siguiente:
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "[Link] <svg width="200" height="200"> <ellipse cx="99" cy="100.5" rx="77" ry="35.5" style="fill:rgb(0,192,192);opacity:0.3"/> </svg>

Maneja 24 bits de profundidad de color, pudiendo adems usarse en su definicin cualquiera de los sistemas estndar (RGB, CMYK, etc.). Entre las ventajas del formato SVG podemos citar que trabaja con grficos vectoriales editables, admiten curvas Bzier, transparencias, suavizados y rastrillados, admite textos editables y fuentes TrueType y Type 1, pueden incluir sonidos y etiquetas explicativas, permite la creacin de animaciones en escala de tiempo y que es una tecnologa de cdigo libre, no propietaria, con las ventajas que eso representa para los desarrolladores. Como pega, decir que en la actualidad, y al no ser an un estndar, para visualizar los grficos SVG en los navegadores web hace falta instalar un plugin especial en nuestro ordenador, salvo que ya tengamos instalado un programa de creacin SVG. Este plugin es pesado (varios megas) y adems exige un trabajo elevado a la CPU de las mquinas. Sin embargo, en un futuro prximo, cuando el lenguaje XML sea un estndar "de facto", los grficos SVG se integrarn perfectamente en los navegadores web, sin necesidad de software adicional. Una de las aplicaciones grficas que permite crear este tipo de ficheros y trabajar con ellos es WebDraw, de la casa Jasc Software, cuya versin shareware se puede descargar desde la direccin [Link] El plugin se puede descargar desde la direccin [Link] SWF (.swf) SWF (Shockwave Flash) es el formato de salida del programa de grficos vectoriales y animaciones Macromedia Flash, resultado de la compresin de los ficheros FLA de trabajo de esta aplicacin.

Su posibilidad de uso en las pginas web y su compatibilidad con los navegadores ms comunes (previa instalacin del plugin necesario, aunque los navegadores ms importantes lo traen ya por defecto) ha revolucionado el mundo de la web, ya que es posible ofrecer a los usuarios unos grficos vectoriales de calidad, que pueden ser escalados (cambiados de tamao) sin prdidas de calidad y que permiten al usuario interactuar con ellos, as como complejas animaciones basadas en fotogramas.

Adems, los ficheros SWF pueden ser visualizados independientemente de la web, en una ventana propia, permitiendo la construccin de verdaderas aplicaciones multimedia interactivas, como juegos, presentaciones, etc. El formato SWF produce ficheros de un tamao verdaderamente reducido, sobre todo si las imgenes que contiene son de naturaleza vectorial, ya que no almacenan informacin pxel a pxel, sino frmulas matemticas. Incluso la interactividad de los objetos est definida mediante un lenguaje propio de script, Action Script), que apenas carga el fichero. No obstante, el tamao aumentar mucho si se introducen en el fichero imgenes de mapa de bits. Dentro de un archivo SWF se pueden incluir elementos vectoriales y de mapa de bits, textos en fuentes escalables, sonidos y vdeos, pudiendo programarse acciones de respuesta a eventos y animaciones mediante cdigo de script. Est especialmente recomendado en el caso de imgenes o animaciones de gran tamao (el tamao no tiene importancia en caso de vectores), para logotipos de calidad, en caso de imgenes ampliables con detalles, por ejemplo, como mapas y planos, en la construccin de banners animados, etc.

El principal inconveniente que presenta es la necesidad de un plugin especfico para ver las imgenes en l contenidas, ya que, aunque se puede descargar libremente de la web de Macromedia, obliga al usuario a la instalacin de un software adicional. Por otra parte, y en lo que a la web se refiere, los grficos SWF presentan diversos problemas relacionados con aspectos como usabilidad, programacin, etc.

[Link]

5.13 Creacin y manipulacin de objetos con formatos de animacin y video comunes (AVI, QUICKTIME, MPEG, GIF animado).

Tan sencillo como contar hasta tres: la experiencia de crear una pelcula con Studio v.9 El software Studio v.9 puede ser tan simple o avanzada como necesite el usuario. El paso uno, trata de un proceso automtico para importar y capturar las grabaciones originales en ficheros desde prcticamente cualquier cmara o reproductor de vdeo. En el paso dos, las imgenes importadas se transforman en una emocionante historia con un slo clic por medio de la caracterstica SmartMovie. Para usuarios ms avanzados, Studio 9 combina una amplia coleccin de herramientas para una edicin creativa y potentes caractersticas entre las que se incluyen efectos para transiciones, ttulos, imagen y sonido, as como opciones para crear msica de forma automtica o importarla. En el tercer paso, una vez finalizada la pelcula existen diversas opciones para guardarla y compartirla con la familia y los amigos. Las pelculas creadas con Studio 9 se pueden grabar en un disco, que podr reproducir en cualquier lector de DVD, transferir a cinta, guardar en la web o incluso compartirla en una red domstica para verla cuando quiera. Creacin de vdeos rpida y fcil con SmartmovieTM Nunca antes la edicin de vdeo haba sido tan fcil y rpida como con SmartMovieTM, el generador automtico de pelculas de Studio 9. Los usuarios simplemente renen el material grabado, seleccionan su cancin favorita como banda sonora y eligen un estilo de edicin para la pelcula final. Con un solo clic, Studio crear una pelcula de aspecto profesional con ttulos, transiciones y efectos especiales, todo ello sincronizado para que se ajuste al ritmo y duracin de la msica. Creatividad de Hollywood con Home Cinema Studio v.9 permite a los usuarios crear verdaderas pelculas con calidad Home Cinema a travs de sofisticadas herramientas cinematogrficas de audio y vdeo. El sonido Surround ofrece al usuario un control intuitivo para colocar, o desplazar, los elementos de audio de la pelcula dentro del espacio del sonido surround, creando as escenas con un sonido ms impactante. Adems, y por primera vez en este segmento de mercado, los usuarios que hayan grabado en formato 16:9 podrn editar y exportar sus pelculas para verlas en formato de pantalla panormica, sacando as el mximo provecho a las televisiones panormicas. Potentes herramientas para mejorar la imagen y el sonido Studio v.9 proporciona al usuario un conjunto de nuevas caractersticas para mejorar la imagen y el sonido de muchas y diversas maneras. Estas caractersticas incluyen: correccin de color automtica que mejora las tomas oscuras o sobrexpuestas de sus viejas cintas antes de pasarlas a DVD; estabilizacin de la imagen que equilibra las imgenes movidas para conseguir una pelcula final perfecta; herramientas de limpieza de imagen para eliminar la nieve o cualquier defecto que a menudo presentan las viejas cintas analgicas; y herramientas de reduccin del ruido con las que el usuario podr eliminar los ruidos de fondo, como el viento, de la pelcula final. Con Studio v.9 estamos hablando de una arquitectura abierta compatible con material procedente de otros fabricantes de forma que el usuario disponga de ms opciones de creatividad. Por qu Studio v.9 es la solucin de edicin de vdeo ms fcil?

Nueva Interfaz nica e intuitiva en 3 pasos para permitir al usuario transmitir sus vdeos al PC, contar su historia y compartirla en cintas, CD, DVD o en Internet. Opciones de creacin de pelcula con un solo clic para crear la pelcula perfecta en segundos. Funciones automticas inteligentes para que la edicin de vdeo sea ms rpida y fcil.

Por qu Studio v.9 es la solucin de edicin de vdeo ms potente?

Potente tecnologa para resultados instantneos de forma que los efectos se puedan rederizar al instante y pueda apreciar el resultado en pantalla completa en cualquier momento del proceso de edicin. Herramientas nicas para la restauracin de la imagen y el sonido que le ayudarn a conservar todos sus vdeos, con la mejor calidad de forma fcil y rpida. Creacin de CD y DVD integrada proporcionando una total flexibilidad para crear mens y marcar captulos obteniendo CD y DVD divertidos para compartir, con un acceso cmodo a sus distintas partes.

Por qu Studio v.9 es la solucin de edicin de vdeo ms creativa?

Efectos 3D, un catlogo de ttulos, grabacin de voz en off, pistas de msica a partir de importacin desde CD. Un conjunto de filtros de imagen y sonido que se pueden aplicar a la pelcula con un solo clic y obetener una vista previa al instante. Una perspectiva de cine gracias a sus caractersticas Home Cinema.

[Link]

Creacin de Video CD (by Duir)

Cuando el tamao importa. Tutorial VCD


Una vez hemos realizado la captura y edicin de nuestras imgenes, ha llegado el momento de plantearse qu deseamos hacer exactamente con ellas. Si lo que se quiere es poder recuperarlas en cualquier momento para reeditarlas o realizar nuevos montajes, lo normal es mantenerlas en su formato original, en cinta digital, o guardarlas en disco duro con formato AVI DV. Si lo que se desea es poder visionar y/o distribuir el resultado final, las opciones son varias. El tamao si importa. Aqu los criterios de eleccin del formato final son muy importantes y varan sustancialmente segn nuestros deseos de compatibilidad y calidad. Cuando la prioridad es mantener la calidad a toda costa, hay que tener en cuenta la primera ley del vdeo digital: La calidad es directamente proporcional al tamao. Y su desarrollo: Mayor compresin es igual a menor calidad. Otro criterio importante es la versatilidad de los soportes. Hay mtodos mejores y mtodos peores, pero la eleccin de los mismos depender de las necesidades reales. Si se desea ver los resultados exclusivamente en un ordenador podremos elegir cualquiera de los posibles mtodos, en atencin a nuestras preferencias y necesidades. Si lo que deseamos es poder verlo en otros dispositivos (lectores DVD domsticos) e incluso en otros ordenadores diferentes al nuestro, las posibilidades de eleccin se reducen. Por ltimo, la duracin del trabajo a volcar y el destino o soporte que se emplee tambin condiciona el tipo de formato que se ha de emplear. No se descubre nada nuevo al decir que la mejor opcin, despus del formato original, es la compresin MPEG2, la usada en las pelcula comerciales DVD y en la teledifusin digital directa va satlite. Dejando de lado la disponibilidad de una autntica grabadora DVD, la creacin de este formato a partir de formatos DV es la recomendada cuando las duraciones son de aproximadamente 10 minutos de audio+vdeo que es lo que permitir un CD normal. En

esto tambin es necesario hacer una matizacin. La autora DVD precisa de programas altamente especializados y de un cumplimiento escrupuloso de los formatos audio / vdeo empleados. A cambio permiten la creacin de contenidos multimedia, mens interactivos, subttulos y bandas sonoras mltiples) Otra posibilidad es el SVCD. Con buena calidad y algunas opciones de mens, pero tan complicado de crear como un DVD y es bastante difcil que un DVD de saln lo reconozca. Tambin hay opciones intermedias tipo MPEG4 en la que no entraremos por ahora. Sin embargo, el MPEG1 es un formato muy verstil y con una potencia poco conocida. Cules son las diferencias ? MPEG2 es un MPEG1 mejorado. En el MPEG2 se ha potenciado la velocidad de bits variable (VBR, es decir, es ms adaptativo a las condiciones instantneas de la imagen) , aunque en las nuevas versiones de MPEG1 tambin se ha cuidado este aspecto. Otra mejora importante del MPG2 es la compresin interframe, si dos o ms frames son muy parecidas la compresin es muy alta. El VCD, precursor del SVCD, es una tecnologa antigua. Data de 1993 cuando Philips y JVC aadieron el vdeo CD a la especificacin del Libro Blanco (se aadieron tambin Sony, Matsushita, Pioneer y otros). VCD es un formato Compact Disc que puede almacenar vdeo, audio e imgenes fijas. La estructura de un VCD es ms avanzada que el CD-rom o CD audio. Este formato slo tiene un inconveniente: La calidad final es, a priori, menor que la de sus hermanos mayores. Por lo dems, las ventajas son grandes: Calidad relativamente aceptable (VHS o mejor), Tamao manejable (en un CD normal caben unos 70 minutos de audio / vdeo algo menos con la mejor calidad y hasta 7.000 imgenes fijas. ) fcil manipulacin y creacin de los CD en cualquier grabadora, usa los sistemas estndar PAL y NTSC y permite crear una estructura de captulos (hasta 98 pistas) adems de una gran compatibilidad multiplataforma. Al ser un formato Compact Disc, puede ser visionado en cualquier DVD de saln que admita CD o Cdi, tambin en CD-Roms, Playstation (con adaptador) y Playstation 2, Nintendo 64 (con adaptador)... Adems, los programas utilizados son fciles de conseguir y de manejo intuitivo al tiempo que los estndares son ms flexibles en cuanto a los requerimientos del archivo original. Si, pero cmo. Una vez visto el qu, nos adentramos en el cmo. Como deca mi abuela, lo primero va antes. Y en nuestro caso hemos de contar con un archivo de vdeo que se supone hemos volcado de una cmara DV. Esto no tiene importancia real en el proceso desde el momento que vale cualquier formato admitido por el programa de edicin que estemos usando, pero nos lleva a la segunda ley del vdeo digital: Hagas lo que hagas, nunca conseguirs ms calidad de salida que de entrada. Por ello, cuanto ms calidad en el original, mejores resultados. Aqu podemos encontrarnos con dos supuestos: La imagen original ocupa ms o ocupa menos de 4 gigas? (Asumiendo que trabajamos con SO con discos formateados en FAT 32). Utilizando Mediastudio con ficheros AVI tipo 1, un archivo de 4 gigas son, ms o menos, 19 minutos de vdeo. Es decir, si pretendemos alcanzar algo

ms, sern necesarias dos capturas. Estas se podrn pegar en la lnea de tiempos. A partir de aqu, renderizar en formatos con poca compresin (MPEG2), para rebajar este tamao. O mejor, directamente renderizar al formato final para el VCD (MPEG1). En el primer caso, Un MPEG2 con buena calidad (Bitrate fijo de 6000 o mayor) puede ocupar algo menos de 2 gigas pero ya estamos comprimiendo el vdeo y el paso posterior a MPEG1 es una nueva compresin con lo que se sumarn los efectos (tercera ley del vdeo digital: Manipula lo menos posible los originales). En el segundo caso, la creacin de un archivo MPEG1 de unos 30 minutos y con alta calidad nos ocupar menos de 500 megas, es decir, ya cabe en un CD normal. El Mediastudio posee un codec Ligos que es cmodo de utilizar y bastante rpido, pero sus opciones de configuracin son limitadas y la calidad final bastante escasa. En mi caso, eleg convertir la captura original con el programa TmpgEncoder, de distribucin gratuita y con muchas opciones de configuracin. De esta forma, consegu pasar un documental de 25 minutos de duracin a un CD en formato VCD, ocupando algo menos de 500 megas. La calidad conseguida es comparable a SVHS aunque se trata de conceptos diferentes de imagen y por ello de calidad. Hay un detalle directamente relacionado con la ley calidad/compresin. El tamao de archivo no viene dado por el tamao real de la imagen tanto como por el bitrate empleado. El bitrate (velocidad binaria) es uno de los principales responsables de la calidad aparente del resultado y he comprobado que un MPEG2 con un bitrate bajo es peor que un MPEG1 de bitrate alto. Por otra parte, aunque tericamente se puede decidir el bitrate que queramos, lo cierto es que a partir de 2500, el resultado es bueno de calidad pero al ser reproducido en un DVD domstico se aprecian saltos y parones en la imagen. El problema, parece ser que en realidad es por el muestreo de sonido y ciertas incompatibilidades accesorias que ello crea (datos sin confirmar). En este paso, podremos decantarnos por la eleccin de un bitrate fijo o uno variable. En esto hay que aadir, que no todos los planos necesitan del mismo bitrate para mantener la calidad aparente. Un plano con mucho detalle o movimiento exigir un bitrate mayor que otro con menos informacin. Por ello, una opcin es la de seleccionar el CQ_VBR del TmpgEnc que es capaz de calcular el bitrate necesario en cada escena para mantener la calidad al mximo (bitrate variable) . Con esto se consigue buena calidad y los tiempos de renderizado pueden rebajarse un poco (muy poco en realidad) y el tamao final del fichero puede ser algo menor. En caso de elegir utilizar un Bitrate fijo, aparentemente es prcticamente imposible saltar la barrera de los 2500 y que el vdeo se reproduzca de forma fluida en un DVD de saln no as en un PC que lo permite sin problemas. Aunque los estndares para VCD dan parmetros tales como bitrate fijo y tamao de imagen a 288 x 352, en la prctica es posible ajustar estos parmetros a otros valores siempre y cuando sean mltiplos de 8 en lo que respecta al tamao. As es posible crear un fichero MPEG1 con vdeo a 720x576 (Pal estndar)/ 25 fps / CBR 2500 y sonido (MPEG1 Layer II) a 44 Khz/128 bits. Este tamao de

cuadro tiene una ventaja y un inconveniente. La ventaja es que al ser el tamao de visionado final en una TV, la calidad es realmente buena en lo referente a definicin y contraste. Sin embargo este es tambin su inconveniente. El mtodo de compresin crea una serie de defectos (artifacts, pixelados, ruido) que tambin se hacen ms evidentes al haber ms definicin. En este aspecto, el trabajar con formato estndar VCD (288x352), parece que el televisor se inventa las lneas que faltan y disimula los defectos a cambio de una aparente prdida de definicin y luminosidad; es como si aplicara un efecto blur muy suave. (Nota: Existe un estndar VCD High Quality con doble tamao de imagen: 704 x 576). En cuanto al sonido, se puede utilizar el estndar para DVD (48.000) pero al crear el VCD se produce un curioso efecto de enlentecimiento de la imagen y el sonido. Por ello es recomendable usar sonido a 44.100Khz.

Ejemplo practico de configuracion del TmpgEnc


Pestaa Video: MPEG1, 4:3, 25fps (pal). Casilla de motion search en high quality. En la pestaa de Advanced: Interlaced (even field first (field order A). 4:3 625 (PAL) fit to frame (preserve aspect ratio) Deinterlace: even field (animation adaptative2) En la pestaa de GOP: Iframes 2, P frames 2, B frames 2, detect escene changes Quantizer matrices: soften block noise (intra blocks 35 / Non intra blocks 35) En pestaa Audio: MPEG1 layer II, 44.100 Khz, Stereo, 128 Kbits/s Pestaa de System: Mpeg-1 Video-CD El render de 25 minutos de vdeo a supuesto unas 11 horas para un Athlon 700 con 256 megas de RAM. Hasta aqu se ha trabajado sobre la base de un CBR (constant Bit Rate) de 2500, pero el programa permite la eleccin de varias opciones. En caso de utilizar la opcin estndar de VCD (288x532) es aconsejable activar el filtro de configuracin de color y darle un valor de unos +20 a la luminosidad (a gusto del usuario) para compensar la prdida de la misma con respecto al original. El TmpgEnc utilizado es la versin [Link] (beta 12a) Ahora est disponible la 12b, pero me ha dado algn problema a la hora de aceptar el vdeo original en formato que no sea AVI (?) adems de estar limitado en cuanto al formato MPEG2. Entre los experimentos, se ha probado a renderizar slo cuadros I pensando (errneamente) que al ser cuadros con toda la informacin, el resultado sera de mayor calidad. Lo cierto es que es como un embaldosado de cuarto de bao. Utilizando cuadros I y P slo, el resultado es bueno, pero si el vdeo tiene encadenados, hay saltos raros. As el GOP es mejor dejarlo en su opcin por defecto o en todo caso cambiar la estructura aadiendo ms frames I pero manteniendo los B y P. Al usar dos ficheros AVI, se renderizan por separado y despus se puede utilizar una herramienta del TMPGEncoder (MPGTOOLS, Cut/Join) que permite crear un slo fichero a partir de varios.

Conclusiones
Para volcar una imagen de ms de 10 minutos en un CD hay que olvidarse del mpeg2. En mpeg1 se consiguen (casi) similares resultados y es ms manejable. La creacin de un VCD es infinitamente ms intuitiva, transparente y fcil que el DVD. Adems la gran mayora de los dvd de saln, entre otros dispositivos, lo admiten sin ningn problema. El bitrate es el parmetro ms determinante en el tamao resultante de la compresin de los archivos, por encima del sistema empleado o las dimensiones de la imagen. A mayor bitrate empleado, mejor calidad y mayor tamao de fichero, pero a partir de ciertos valores se producen efectos no deseados en la reproduccin. El uso de CDRW es muy importante, no slo porque parecen tener ms tolerancia en la lectura posterior en dvd de saln, sino porque tambin permite su recuperacin si el resultado no convence. El programa empleado para crear el VCD ha sido Nero que ofrece una gran facilidad de uso y crea la estructura de forma totalmente transparente. Si se quiere guardar grandes cantidades de imagen en gran calidad, la nica opcin sera grabar autnticos dvd o, guardarlas en disco duro. Con un Bitrate de 6000, en mpeg2, la calidad es muy buena y en un disco duro de 30gigas nos cabran unas diez horas de imagen y sonido. Pero con ese bitrate, la reproduccin fuera de un pc experimenta saltos, salvo que usemos una salida directa a tv desde la tarjeta grfica (esto est sin comprobar). En estas pruebas se han encontrado dos excelentes soluciones: El programa TmpEnc, de uso fcil y posibilidades inmensas y la creacin de VCD como alternativa seria en casos donde el tamao de los ficheros y la compatibilidad con otros aparatos (dvd de saln) sea determinante.

Resumen y gua rpida


1.-Capturar imagen AVI tipo 1 (firewire y Mediastudio). 2.-Si el original es de ms de 4 gigas, editar en Mediastudio y guardar proyecto con los AVI asociados. 3.-Con TMPEGEncoder abrir los AVI y renderizar con los valores indicados. 4.-Si se ha utilizado ms de un AVI, pegarlos en un solo archivo con el cut/join de las tools de TMPGEnc 5.-Abrir NERO y pedir la creacin de VCD. 6.-Arrastrar el archivo mpg del trabajo realizado a la ventana de Nero 7.- Insistirle en que lo cree aunque nos de un mensaje de VCD no estndar. 8.- Utilizar un CDRW 9.-Tostar el CD y ya est!

Glosario :

MPEG : Siglas del Motion Picture Expert Group. GOP: Siglas de Group Of Pictures. Es la estructura de trabajo de la compresin MPEG. No tiene nada que ver con los estndares utilizados en la imagen (PAL o NTSC), sino en cmo se produce la compresin de la imagen. En una secuencia GOP coexisten normalmente tres tipos de frames denominados I, P y B. Compresin MPEG: Se utiliza un sistema que elimina la informacin redundante (repetida) de cada frame. Si en un frame tenemos el cielo limpio (por ejemplo) y en el siguiente entra un avin en plano, la compresin slo se ocupar de los pxel que cambian en este nuevo frame, empleando la referencia del cielo para el resto, ahorrando espacio de almacenamiento. I-picture: Una imagen de tipo I (intraframe) es la que usa su propia informacin sin referencia a otras imgenes. El estndar VCD permite una distancia mxima de 2 segundos entre imgenes de tipo I . Ppicture: Este tipo de imagen (predictiva) usa las referencias de otras imgenes pasadas (I o P) prediciendo cul ser el movimiento que se producir en la imagen. B-picture: (Bidirectional)Esta imagen usa referencias tanto de imgenes pasadas como futuras.

Fuente: [Link]

Creacin de pelculas interactivas Acerca de la creacin de pelculas interactivas Las pelculas interactivas implican a la audiencia Mediante el teclado, el ratn o ambos, la audiencia puede saltar a distintas partes de las pelculas, mover objetos, introducir informacin en formularios y llevar a cabo muchas otras operaciones interactivas Las pelculas interactivas se crean mediante la configuracin de acciones, que son juegos de instrucciones que se ejecutan al producirse un evento especfico Para que una accin se dispare, debe ocurrir uno de los siguientes eventos: que el cabezal de lectura alcance un fotograma o que el usuario haga clic en un botn o presione teclas del teclado Usted crea las instrucciones que indican a Flash la accin que tiene que realizar cuando ocurra el evento Las acciones se configuran en la ficha Acciones del cuadro de dilogo Propiedades de un botn o de un fotograma (las imgenes y los clips de pelcula no tienen dicha ficha disponible) Las instrucciones pueden consistir en una sola sentencia que indique la detencin de la reproduccin de una pelcula o bien en una serie de sentencias que evalen primero una condicin antes de realizar una accin Muchas acciones requieren poca experiencia en programacin Otras requieren el

dominio de lenguajes de programacin con el fin de realizar desarrollos muy sofisticados Asignacin de acciones a botones Asigne una accin a una instancia de un botn para que la accin se ejecute cuando el usuario haga clic o desplace el puntero sobre un botn La asignacin de una accin a una instancia de un botn no afecta a las dems instancias del botn Al asignar una accin a un botn, se especifican los eventos del ratn que disparan dicha accin Tambin es posible asignar una tecla del teclado que dispare la accin Para asignar una accin a un botn: 1 Seleccione una instancia de botn y elija Modificar > Instancia, o haga doble clic en la instancia de botn 2 Haga clic en la ficha Acciones 3 Haga clic en el botn + (ms) y elija una sentencia en el men emergente

Si la ficha Acciones no est disponible significa que la instancia seleccionada no es un botn Puede hacer clic en la ficha Definicin y hacer que la instancia seleccionada se comporte como un botn, aunque es probable que no tenga los estados especiales de botn asociados a ella Consulte "Creacin de botones" a pagina 140 Cuando se elige una sentencia, Flash inserta de forma automtica una sentencia On/End On y establece Release como estado predeterminado del botn Tambin se puede seleccionar On MouseEvent para insertar una sentencia On/ End On 4 En el panel de parmetros, con la sentencia On (Release) resaltada, seleccione los eventos de ratn y teclado que disparen la accin: Press Se produce al presionar el botn del ratn mientras el puntero se encuentra sobre el botn Release Se produce al soltar el botn del ratn mientras el puntero se encuentra sobre el botn Esto configura el comportamiento estndar de hacer clic

Release Outside Se produce al soltar el botn del ratn mientras el puntero se encuentra fuera del botn Roll Over Se produce al desplazar el puntero sobre el botn Roll Out Se produce al desplazar el puntero fuera del botn Drag Over Se produce al presionar el botn del ratn mientras el puntero se encuentra sobre el botn, se desplaza fuera del botn y, a continuacin, vuelve a desplazarse sobre el botn Drag Out Se produce cuando el botn del ratn se presiona con el puntero sobre el botn y, a continuacin, el puntero se desplaza fuera del botn Key Press Se produce al presionar una tecla especfica 5 Haga clic sobre el botn + (ms) y elija una sentencia en el men emergente En funcin de la accin que elija, el panel de parmetros puede ofrecer parmetros adicionales para la sentencia Para obtener informacin sobre una sentencia determinada, consulte el tema correspondiente ms adelante en este captulo Tambin puede buscar sentencias especficas en el ndice Si est familiarizado con las tcnicas bsicas de programacin, puede introducir parmetros que Flash pueda evaluar al reproducirse la pelcula Consulte "Escritura de expresiones" a pagina 187 6 Asigne cualquier otra sentencia que desee Flash inserta la sentencia debajo de la accin actualmente seleccionada Utilice los botones de flecha Arriba y Abajo para cambiar el orden de las sentencias Para probar un botn: Elija Control > Habilitar botones antes de reproducir la pelcula Asignacin de acciones a fotogramas Asigne una accin de fotograma a un fotograma clave para hacer que la pelcula lleve a cabo una accin cuando alcance dicho fotograma Por ejemplo, para crear un bucle en una pelcula, puede aadir una accin de fotograma al fotograma 20 que especifique "go to frame 10 and play" Es recomendable colocar las acciones de fotograma en una capa separada Los fotogramas con acciones se indican con una pequea a en la lnea de tiempo 1 Seleccione un fotograma clave en la lnea de tiempo y elija Modificar > Fotograma o haga doble clic en un fotograma clave Si no se selecciona ningn fotograma clave, la accin se asigna al fotograma clave anterior 2 Haga clic en la ficha Acciones y, a continuacin, haga clic en el botn + (ms) y luego elija una sentencia en el men emergente En funcin de la accin que elija, el panel de parmetros puede ofrecer parmetros adicionales para la sentencia Para obtener informacin sobre una sentencia determinada, consulte

el tema correspondiente ms adelante en este captulo Tambin puede buscar sentencias especficas en el ndice Si est familiarizado con la programacin bsica, puede especificar parmetros como expresiones que Flash evala al reproducirse la pelcula Consulte "Escritura de expresiones" a pagina 187 3 Asigne ms sentencias para que se produzca ms de una accin al reproducirse la pelcula Flash inserta una nueva sentencia debajo de la actualmente seleccionada Flash ejecuta las sentencias en el orden en que aparecen Utilice los botones de flecha Arriba y Abajo para cambiar el orden de las acciones Para probar una accin de fotograma en una escena: Elija Control > Habilitar acciones de fotograma antes de reproducir la pelcula Modificacin de acciones Utilice los controles del panel Acciones del cuadro de dilogo Propiedades de instancia para suprimir o modificar el orden y los parmetros de las sentencias Estos controles son muy adecuados para gestionar las acciones de fotogramas y botones que contienen varias sentencias Para desplazar la sentencia arriba o abajo por la lista: Haga clic en los botones de flecha Arriba o Abajo Para suprimir una accin: Haga clic en el botn - (menos) Para modificar los parmetros de las acciones existentes: Introduzca los nuevos valores en el panel de parmetros Reproduccin y detencin de pelculas A menos que se indique lo contrario, una vez que se inicia una pelcula se reproduce por todos los fotogramas de la lnea de tiempo Utilice las sentencias Play y Stop para detener o iniciar una pelcula a intervalos especficos Por ejemplo, puede detener una pelcula al final de una escena antes de continuar con la siguiente escena Una vez detenida, una pelcula debe iniciarse de nuevo de forma explcita Para reiniciar la pelcula, utilice la sentencia Play Play y Stop se utilizan por lo general para controlar los clips de pelculas con botones Para ello, no obstante, el clip de pelcula debe contener un nombre de instancia y un destino asignado con Tell Target Consulte "Control de otras pelculas y clips de pelcula" a pagina 176 Ajuste de calidad de visualizacin de pelculas

Utilice la sentencia Toggle High Quality para activar y desactivar la visualizacin suavizada de una pelcula Con la visualizacin suavizada desactivada, la pelcula se reproduce con mayor velocidad Toggle High Quality afecta a todas las pelculas que se reproducen en el Reproductor Flash Una sentencia Toggle High Quality asignada a un botn permite a la audiencia ajustar la calidad de reproduccin de la pelcula La siguiente accin desactiva la visualizacin suavizada con el primer clic, y la activa con el segundo On(Press) Toggle high quality End On Puede utilizar tambin la propiedad _highquality segn se describe en "Propiedades globales" a pagina 194 Detencin de todos los sonidos Utilice la sentencia Stop All Sounds para detener la pista sonora sin interrumpir la lnea de tiempo de la pelcula (esto no suprime slo el volumen) Stop All Sounds afecta a todas las pelculas que se reproducen en el Reproductor Flash Asigne Stop All Sounds a un botn para permitir que la audiencia detenga los sonidos al reproducir una pelcula Salto a fotogramas o escenas Utilice la sentencia Go To para saltar a un fotograma o una escena especfica de la pelcula Cuando la pelcula salta a un fotograma, se puede optar entre detenerla en el nuevo fotograma o reproducirla a partir del mismo El comportamiento predeterminado es saltar a un fotograma y detener la pelcula La sentencia Go To contiene los siguientes parmetros: Escena especifica una escena de destino Si selecciona la escena actual o una escena con nombre, puede especificar un fotograma de dicha escena Si selecciona la escena siguiente o anterior, la pelcula salta al primer fotograma de la escena Fotograma especifica un fotograma de la escena actual o una escena indicada con la opcin Escena Puede introducir un fotograma por nmero, rtulo, o bien una expresin que evale un nmero o un rtulo de fotograma Puede especificar tambin el fotograma siguiente o anterior Por ejemplo, esta sentencia indica el fotograma situado cinco fotogramas por delante del fotograma que contiene la accin: Go to and Stop(_currentframe + 5) Para obtener informacin sobre cmo escribir expresiones, consulte "Escritura de expresiones" a pagina 187 Go To and Play indica a la pelcula que contine su reproduccin a partir del fotograma especificado Al desactivarse esta opcin, la pelcula se detiene en el fotograma especificado Salto a otros URL

Utilice la sentencia Get URL para cargar un documento de un URL determinado en una ventana especfica, o para pasar variables a otra aplicacin en un URL definido Para probar esta accin, el archivo que cargar tiene que encontrarse en la ubicacin especificada Debe existir una conexin a la red para los URL absolutos (por ejemplo, [Link] La accin Get URL contiene los siguientes parmetros: URL especifica el URL del que obtener el documento Ventana especifica la ventana o el fotograma HTML en que debe cargarse el documento Puede introducir el nombre de una ventana o un fotograma concretos o introducir una expresin Tambin puede elegir los siguientes nombres de destino reservados: _self especifica el fotograma actual de la ventana vigente _blank especifica una nueva ventana _parent especifica el padre del fotograma actual _top especifica el fotograma de nivel superior de la ventana actual Variables determina si utilizar GET o POST para enviar variables, o bien no pasar ninguna variable El mtodo GET adjunta las variables al final del URL y se utiliza cuando son pocas las variables implicadas El mtodo POST enva las variables en un encabezado separado y es capaz de enviar cadenas mucho ms largas Consulte "Tipos de valores" a pagina 185 Comprobacin de carga de fotogramas Utilice la propiedad _framesloaded (en una sentencia If) o la sentencia If Frame Is Loaded para comprobar si el contenido de un fotograma especfico est disponible en el sistema local Para comenzar la reproduccin de una animacin sencilla mientras el resto de la pelcula se descarga en el ordenador local se utilizan con frecuencia _framesloaded o If Frame Is Loaded La diferencia principal entre los dos enfoques radica en que la sentencia If (_framesloaded) permite aadir con rapidez una sentencia Else o Else If a la accin La sentencia If Frame Is Loaded permite especificar un nmero determinado de fotogramas en una sentencia sencilla Para utilizar la propiedad _framesloaded en una accin que reproduce una animacin breve mientras termina de cargarse una pelcula: 1 Cree un bucle de animacin breve al principio de la pelcula Por ejemplo, puede crear un bucle que muestre el mensaje "Cargando pelcula"

2 Cree una accin de fotograma con If Frame Is Loaded que salte fuera del bucle de animacin cuando todos los fotogramas se hayan cargado y prosiga la reproduccin de la pelcula Por ejemplo, una pelcula con un bucle de animacin de dos fotogramas al principio requerira la siguiente accin adjunta al fotograma 2: If (_framesloaded) Go to and Play (3) Else Go to and Play (1) End If Para utilizar la sentencia If Frame is Loaded en una accin que reproduzca una animacin breve mientras termina de cargarse una pelcula: 1 Cree un bucle de animacin breve al principio de la pelcula Por ejemplo, puede crear un bucle que muestre el mensaje "Cargando pelcula" 2 Cree una accin de fotograma con If Frame Is Loaded que salte del bucle de animacin cuando todos los fotogramas se hayan cargado y prosiga la reproduccin de la pelcula Por ejemplo, una pelcula de 30 fotogramas con un bucle de animacin de dos fotogramas al principio requerira la siguiente accin adjunta al fotograma 1: If Frame Is Loaded (30) Go to and play (3) End If Frame Is Loaded Al insertarse una sentencia If Frame is Loaded, Flash inserta de forma automtica una sentencia End If Frame is Loaded al final 3 Para el fotograma 2, adjunte la siguiente accin, que reinicia la pelcula en el fotograma 1: Go to and play (1) Al cargarse el fotograma especificado en la sentencia If Frame is Loaded, la pelcula omite el segundo fotograma y contina reproducindose a partir del tercero La sentencia If Frame is Loaded es tambin til para secciones de pelculas que requieren la carga de un mapa de bits o de un archivo de sonido de gran

tamao Por lo general, If Frame Is Loaded es una condicin para una accin de fotograma, pero tambin puede utilizarse para una accin de botn Para probar una condicin If Frame Is Loaded, utilice la opcin Flujo con el comando Probar pelcula Los fotogramas se cargan igual que si fluyesen de un sitio Web Consulte "Comprobacin del rendimiento de descarga de pelculas" a pagina 215 La sentencia If Frame Is Loaded tiene los siguientes parmetros: Fotograma especifica el nmero de fotograma del rtulo de fotograma que se desea cargar en el sistema local antes de ejecutarse la siguiente sentencia Escena es la escena que contiene el fotograma especificado Carga y descarga de pelculas adicionales Utilice las sentencias Load Movie y Unload Movie para reproducir otras pelculas sin cerrar el Reproductor Flash Por lo general, el Reproductor Flash muestra una sola pelcula (archivo SWF) Load Movie permite visualizar varias pelculas al mismo tiempo o cambiar entre pelculas sin cargar otro documento HTML Unload Movie suprime la pelcula previamente cargada mediante Load Movie Por ejemplo, puede utilizar Load Movie para realizar lo siguiente: Reproducir una secuencia de titulares publicitarios que son archivos SWF colocando una sentencia Load Movie al final de cada archivo SWF para cargar la pelcula siguiente Desarrollar una interfaz de bifurcacin donde el usuario pueda elegir entre distintos archivos SWF Crear una interfaz de navegacin en la que el nivel 0 tenga controles de navegacin que carguen otros niveles La carga de niveles permite transiciones ms suaves que la carga de nuevas pginas HTML en un navegador Las sentencias Load Movie y Unload Movie tienen los siguientes parmetros: Accin identifica si cargar o descargar una pelcula, o bien cargar variables (procedentes de un archivo de texto remoto) en una pelcula activa Para obtener ms informacin, consulte "Obtencin de variables de archivos remotos" a pagina 174 URL especifica un URL absoluto o relativo para el archivo SWF que se debe cargar Para utilizarlos en el Reproductor Flash o para realizar pruebas en Flash, todos los archivos SWF tienen que guardarse en la misma carpeta y enumerarse como nombres de archivo sin especificaciones de carpeta ni unidad de disco Ubicacin especifica un nivel o destino para la sentencia Load Movie o Unload Movie En el Reproductor Flash, los archivos de pelculas llevan un nmero asignado de acuerdo con el orden en que se cargaron La pelcula cargada en primer lugar se carga en el nivel inferior, es decir, el nivel 0 La pelcula del nivel 0 establece la velocidad de los fotogramas, el color de fondo y el tamao de los fotogramas de todas las dems pelculas cargadas stas se "apilan"

entonces en niveles superiores al de la pelcula del nivel 0 Para obtener ms informacin, consulte "Significado de varias lneas de tiempo" a pagina 176 De forma selectiva, es posible cargar pelculas en los niveles que ya tienen archivos SWF cargados Al hacerlo, la nueva pelcula sustituye al archivo SWF existente Si utiliza Load Variables, la pelcula activa no se sustituye, pero las variables se actualizan con los nuevos valores Si carga una nueva pelcula en el nivel 0, todos los dems niveles se descargan y la pelcula del nivel 0 se sustituye por el nuevo archivo Destino especifica un clip de pelcula que se desea sustituir por la pelcula cargada Si utiliza Destino, la pelcula que carga hereda las propiedades de posicin, rotacin y escala del clip de pelcula de destino Consulte tambin "Control de otras pelculas y clips de pelcula" a pagina 176 Variables permite especificar el envo de un juego de las variables de la pelcula cargada a la ubicacin identificada en el campo URL Esto sirve para enviar variables a un script CGI que genera un archivo SWF como su salida CGI Variables determina la utilizacin de GET o POST al descargar el contenido del URL, o el no pasar variables Consulte "Establecimiento e identificacin de variables" a pagina 182 para obtener ms informacin sobre variables en Flash Las sentencias Load Movie y Unload Movie no funcionan en el modo de edicin Utilice Control > Probar pelcula para comprobar si funcionan Para probar esta sentencia, la pelcula en proceso de carga debe encontrarse en la ruta de acceso especificada Si la ruta de acceso es un URL absoluto, utilice la opcin Archivo > Previsualizacin de publicacin (debe existir una conexin a la red, que tiene que estar activa) para probar la pelcula Obtencin de variables de archivos remotos Utilice la sentencia Load Variables, que es uno de los parmetros de Load Movie, para leer datos procedentes de un archivo de texto o texto generado por un script CGI, y defina los valores para las variables de una pelcula o clip de pelcula Por ejemplo, si un usuario enva un formulario de pedido, puede que desee una pantalla de confirmacin para visualizar un nmero de pedido recogido de un archivo de un servidor remoto Con Load Variables, el texto contenido en el URL debe encontrarse en la aplicacin de formato MIME estndar/x-www-codificado en formato URL (un formato estndar que se utiliza en los script CGI) Es posible especificar cualquier nmero de variables Por ejemplo, la siguiente frase define varias variables: empresa=Macromedia&direccin=600+Townsend&ciudad=San+Francisco&zip =94103 URL especifica un URL absoluto o relativo para el archivo remoto

Ubicacin especifica un nivel o destino para recibir las variables En el Reproductor Flash, los archivos de pelcula tienen asignado un nmero deacuerdo con el orden en que se cargaron La pelcula cargada en primer lugar se carga en el nivel inferior, es decir, el nivel 0 La pelcula del nivel 0 establece la velocidad de los fotogramas, el color de fondo y el tamao de los fotogramas de todas las dems pelculas cargadas stas se apilan entonces en niveles de nmero superior al de la pelcula del nivel 0 Para obtener ms informacin sobre niveles y destinos, consulte "Significado de varias lneas de tiempo" a pagina 176 Las variables determinan la utilizacin de GET o POST para pasar variables o no pasarlas Esto sirve para enviar variables a un script CGI que genera un archivo SWF como su salida CGI El mtodo GET adjunta las variables al final del URL y se utiliza cuando son pocas las variables implicadas El mtodo POST enva las variables en un encabezado separado y es capaz de enviar cadenas mucho ms largas Consulte "Establecimiento e identificacin de variables" a pagina 182 Si especifica GET o POST con la sentencia Load Variables, Flash enva las variables al servidor Web y, a continuacin, interpreta la respuesta del servidor para actualizar las variables de la pelcula Utilice la opcin Archivo > Previsualizacin de publicacin para probar la carga de las variables (debe existir una conexin activa a la red para que funcione) Envo de mensajes al programa anfitrin de la pelcula Utilice la sentencia FS Command para enviar un mensaje a cualquier programa anfitrin del reproductor Flash Si no est familiarizado con JavaScript o la creacin de proyectores, no es probable que necesite utilizar FS Command FS Command tiene dos parmetros: Comando y Argumentos Introduzca la cadena que desea enviar en el cuadro Comando Si la cadena requiere argumentos, introdzcalos en el cuadro Argumentos Los cuadros Comando y Argumentos permiten utilizar un valor literal o una expresin En un navegador Web, una sentencia FS Command ejecuta la funcin de JavaScript moviename_DoFSCommand en la pgina HTML que incorpora la pelcula Flash, donde moviename es el nombre del reproductor Flash asignado por el atributo NAME de la etiqueta EMBED u OBJECT Si el reproductor Flash tiene asignado el nombre elFilm, la funcin de JavaScript que se ejecuta es elFilm_DoFSCommand La funcin de JavaScript se pasa a los parmetros de Comando y Argumentos, que pueden utilizarse para cualquier fin Por ejemplo, para utilizar la sentencia FS Command para abrir un cuadro de mensajes de una pelcula Flash en la pgina HTML a travs de Javascript: 1 En la pgina HTML que incorpora la pelcula Flash, aada el siguiente cdigo de Javascript: function elFilm_DoFSCommand(comando, args) {if (comando == "cuadro de mensajes") {

alert(args);}} 2 En la pelcula Flash, aada la sentencia FS Command siempre que desee abrir un cuadro de mensajes: FS Command ("cuadro de mensajes", "Este es un cuadro de mensajes ejecutado desde Flash") Tambin puede utilizar expresiones para la sentencia y los argumentos de FS Command, como en el siguiente ejemplo: FS Command ("cuadro de mensajes", "Hola, " & nombre & ", bienvenido a nuestro sitio Web") Puede configurar la pgina HTML para que admita esto mediante la creacin de su propia plantilla y la utilizacin de los comandos Publicar y Previsualizar Consulte "Configuracin de publicacin Flash" a pagina 218 En Director, la sentencia FS Command puede enviar mensajes que Lingo interpreta como eventos Debe escribir el cdigo de Lingo para recibir los mensajes de FS Command y llevar a cabo una accin en Director En Visual Basic, Visual C++ y otros programas que pueden hacer de anfitrin de controles ActiveX, FS Command enva un VB Event con dos cadenas que pueden manejarse en el lenguaje de programacin del entorno Las siguientes sentencias FS Command especiales controlan una pelcula que se reproduce como un proyector:

Control de otras pelculas y clips de pelcula Utilice la sentencia Tell Target para controlar un clip de pelcula diferente u otra pelcula cargada con la sentencia Load Movie La sentencia Tell Target es til para controles de navegacin Asigne la sentencia Tell Target a botones que detengan o inicien clips de pelcula en cualquier lugar del escenario Tambin puede hacer que los clips de pelcula vayan a un fotograma concreto de dicho clip

La sentencia Tell Target contiene el parmetro nico Destino, que especifica la lnea de tiempo que debe controlarse Todas las sentencias anidadas en las sentencias Begin Tell Target y End Tell Target estn dirigidas en la lnea de tiempo apuntada Significado de varias lneas de tiempo Al reproducirse una pelcula en el Reproductor Flash, es posible que aparezcan varias lneas de tiempo Cada pelcula Flash tiene una lnea de tiempo principal Cada instancia de clip de pelcula contenida en una pelcula representa otra lnea de tiempo Es posible que aparezcan otras lneas de tiempo al cargar pelculas con la sentencia Load Movie Por ejemplo, el siguiente esquema muestra siete lneas de tiempo en el Reproductor Flash: PelculaXswf (en el nivel 0) ClipA (nombre de instancia: Juan) ClipA1 (nombre de instancia: Berta) ClipA2 (nombre de instancia: Edurne) ClipB (nombre de instancia: Jose) PelculaYswf (en el nivel 1) ClipC (nombre de instancia: Sola) Cada lnea de tiempo se ejecuta de forma independiente y puede controlar cualquiera de las otras lneas de tiempo Por ejemplo, un botn de la lnea de tiempo principal de PelculaX puede iniciar y detener el ClipC de la PelculaY De igual manera, una accin de fotograma en el ClipC puede hacer que el cabezal de lectura de PelculaX salte a otra escena o fotograma Especificacin de destinos El Editor de expresin contiene el botn Destino para insertar nombres de destino En algunas situaciones, una vez que se hace clic en el botn Destino, el rea situada por encima del campo Destino muestra clips de pelcula que pueden apuntarse Si este es el caso y uno de estos clips de pelcula debe apuntarse, haga doble clic en el nombre del clip de pelcula La informacin correcta se introduce de forma automtica en el campo Destino En otros casos, la lnea de tiempo que se desea apuntar no aparecer en la ventana y la ruta de acceso tendr que introducirse de forma manual De forma similar a la jerarqua de archivos y carpetas en un servidor Web, Flash tiene una jerarqua de lneas de tiempo Para especificar destinos en distintos niveles de la jerarqua, aada una ruta de acceso al nombre de instancia de destino mediante el mismo sistema que con las rutas de acceso para archivos o URL

Las pelculas (archivos SWF) se encuentran en la parte superior de la jerarqua con los clips de pelcula debajo de ellas La sintaxis para identificar destinos es similar a la que se utiliza para las carpetas de un sistema de archivos Por ejemplo, una "/" al principio identifica un clip de pelcula en la raz de la capa actual Los destinos sin la "/" se identifican como relativos respecto al clip de pelcula actual Las siguientes rutas de acceso de Tell Target utilizan el ejemplo de las siete lneas de tiempo de la seccin anterior: /Juan apunta al clip de pelcula denominado ClipA desde la lnea de tiempo principal de PelculaX / apunta a la lnea de tiempo de PelculaX desde el clip de pelcula denominado ClipA /Juan/Berta apunta al clip de pelcula ClipA1 desde cualquier otro clip de pelcula Berta apunta al clip de pelcula ClipA1 desde la lnea de tiempo del clip de pelcula ClipA /Edurne apunta al clip de pelcula ClipA2 desde la lnea de tiempo de ClipA1 _level1/Sola apunta al clip de pelcula ClipC de la PelculaY desde cualquier otro clip de pelcula Un nombre de campo de destino en blanco apunta a la lnea de tiempo actual El mismo clip de pelcula puede apuntarse mediante variaciones ms detalladas de la ruta de acceso Por ejemplo, /Juan apunta al clip de pelcula denominado ClipA desde la lnea de tiempo principal de PelculaX; lo mismo hace _level0/Juan que solamente incluye ms informacin Una ruta de acceso ms detallada puede ser til al copiar botones con sentencias Tell Target de una pelcula a la siguiente, Tambin puede utilizar una expresin para especificar un destino Por ejemplo, la expresin "/"&Nombrebotn en el panel de parmetros hace que Tell Target enve un mensaje al clip de pelcula contenido en la variable Nombrebotn Para que una lnea de tiempo pueda apuntarse debe encontrarse en el Reproductor Flash En el Reproductor aparece una lnea de tiempo de clip de pelcula cuando el cabezal de reproduccin se coloca dentro de los fotogramas del clip de pelcula Por ejemplo, si un clip de pelcula se coloca en la lnea de tiempo de los fotogramas 1 al 20, el clip de pelcula puede apuntarse mientras la pelcula se reproduce o detiene en cualquier fotograma comprendido entre el 1 y el 20 Cuando la pelcula alcanza el fotograma 21, el clip de pelcula desaparece del Reproductor y no puede apuntarse como destino Consulte "Comprobacin de carga de fotogramas" a pagina 171 para configurar una sentencia para comprobar un fotograma antes de ejecutar la sentencia Tell Target El siguiente ejemplo de accin es para un botn de la lnea de tiempo principal que, al

presionarse, detiene la reproduccin de la instancia de clip de pelcula Juan Al soltarse el botn, la accin comienza en el fotograma 55 de la instancia de clip de pelcula Berta: On (Press) Begin Tell Target ("/Juan") Stop End Tell Target End On On (Release) Begin Tell Target ("/Juan/Berta") Go to and Play (55) End Tell Target Go to Next Frame End On Duplicado y supresin de clips de pelcula Utilice la sentencia Duplicate Movie Clip para crear una instancia de un clip de pelcula durante la reproduccin de la pelcula Al duplicarse un clip de pelcula, el nuevo clip de pelcula comienza en el fotograma 1 aun cuando el clip de pelcula original se encontrase en otro fotograma al duplicarse Utilice la sentencia Remove Movie Clip para suprimir una instancia de clip de pelcula creada con Duplicate Movie Clip Duplicate/Remove Movie Clip tiene los siguientes parmetros: Accin establece la sentencia para duplicar o suprimir el clip de pelcula Destino especifica el clip de pelcula que debe duplicarse o suprimirse Haga clic en el botn con rtulo "abc" y elija Target Editor para especificar un destino de forma visual, o introduzca la ruta de destino en el campo Consulte "Especificacin de destinos" a pagina 177 Nombre nuevo es el nombre de instancia del clip de pelcula duplicado Proporcione slo el nombre, no la ruta de destino A continuacin, una vez con nombre, la instancia puede apuntarse desde otra accin Profundidad determina la forma en que el clip de pelcula duplicado aparece al solapar otros objetos Piense en relacin a los niveles de profundidad en

trminos de orden de apilamiento con el nivel 0 como nivel inicial Cada clip de pelcula duplicado necesita la asignacin de una profundidad porque, de lo contrario, cada duplicado reemplazar al clip anterior en el nivel 0 Los clips de pelcula duplicados se colocan siempre sobre el clip de pelcula original La supresin del clip de pelcula duplicado cambia la sentencia a Remove Movie Clip Los clips de pelcula duplicados no desaparecen a menos que el clip de pelcula padre desaparezca o bien se utilice la sentencia Remove Movie Clip Nota: Las variables no se copian en el nuevo clip de pelcula y el clip de pelcula duplicado comienza en el primer fotograma Posibilidad de arrastre de clips de pelcula Utilice la sentencia Drag Movie Clip para mover un clip de pelcula durante la reproduccin de la pelcula La sentencia puede establecerse para comenzar o detener una operacin de arrastre Un clip de pelcula puede arrastrarse hasta que Stop Drag lo detiene de forma explcita o hasta que otro clip de pelcula se convierte en arrastrable Slo un clip de pelcula puede arrastrarse al mismo tiempo Drag Movie Clip tiene los siguientes parmetros: Iniciar operacin de arrastre comienza el arrastre del clip de pelcula Destino especifica el clip de pelcula que debe arrastrarse Haga clic en el botn con rtulo "abc" y elija Target Editor para especificar un destino de forma visual, o introduzca la ruta de destino en el campo Consulte "Especificacin de destinos" a pagina 177 Restringir a rectngulo permite especificar un rea rectangular fuera de la que el clip de pelcula no se puede mover Los valores izquierda, superior, derecha e inferior son relativos respecto a las coordenadas del padre del clip de pelcula Bloquear ratn al centro hace que el centro del clip de pelcula aparezca directamente por debajo del puntero del ratn a medida que el usuario mueve el puntero Cuando esta opcin no est seleccionada, el clip de pelcula mantiene la posicin relativa al puntero cuando se inici la operacin de arrastre Por ejemplo, la siguiente accin limita el clip de pelcula denominado target_item dentro de un cuadro de 200 x 200 pxeles (desplazamiento respecto a las coordenadas especificadas): On (Press, Release, Outside) Start Drag ("tubo_rojo", L=100, T=100, R=300, B=300, lockcenter) End On Arrastre y colocacin de clips de pelculas Para un clip de pelcula que el usuario pueda colocar en cualquier ubicacin, utilice las sentencias Start Drag y Stop Drag de la siguiente manera: On (Press)

Start Drag ("pelcula") End On On (Release) Stop Drag End On Para crear comportamientos de arrastre y colocacin ms complicados, puede probar la propiedad _droptarget del clip de pelcula en curso de arrastre Por ejemplo, puede examinar la propiedad _droptarget para ver si la pelcula se arrastr a un clip de pelcula especfico (como un clip de pelcula tipo "papelera") y, a continuacin, desencadenar otra accin Consulte "Creacin de acciones condicionales" a pagina 183 y "Escritura de expresiones" a pagina 187 Cambio de posicin y aspecto de clips de pelcula Utilice la sentencia Set Property para modificar la posicin, la escala, la transparencia, la visibilidad y la rotacin de un clip de pelcula a medida que la pelcula se reproduce Set Property tiene los siguientes parmetros: Establecer especifica la propiedad que debe modificarse X Position y Y Position establecen la posicin horizontal y vertical del clip de pelcula, respectivamente La posicin es relativa respecto a las coordenadas locales del clip de pelcula padre X Scale y Y Scale ajustan la escala del clip de pelcula en horizontal y vertical, respectivamente Los valores de la propiedad son porcentajes; el valor predeterminado es 100 Alpha especifica la transparencia del clip de pelcula Los valores varan de 0 (totalmente transparente) a 100 (totalmente opaco) Los objetos de un clip de pelcula con Alfa establecido en 0 estn activos, aun cuando no estn visibles Por ejemplo, en un botn de un clip de pelcula con la propiedad Alfa establecida en 0 an puede hacerse clic Visibility especifica si el clip de pelcula es visible Los valores de esta propiedad son True (visible) o False (no visible) El clip de pelcula es visible si el valor es cualquiera distinto de cero; es invisible cuando el valor es cero Los objetos de un clip de pelcula con Visibility establecida en False estn deshabilitados Por ejemplo, no es posible hacer clic en un botn de un clip de pelcula con la propiedad Visibility establecida en False Rotation especifica la rotacin de un clip de pelcula El valor se especifica en grados Destino especifica el clip de pelcula cuya propiedad se desea establecer Haga clic en el botn con rtulo "abc" y elija Target Editor para especificar un destino de forma visual o introduzca la ruta de destino en el campo Consulte "Especificacin de destinos" a pagina 177

Valor especifica el valor que debe asignarse a la propiedad Por ejemplo, esta sentencia establece la propiedad Y Position de un clip de pelcula denominado target_itemen 150: On (Release) Set Property ("tubo_rojo", Y Position) = 150 End OnComentarios sobre acciones Utilice la sentencia Comment para aadir notas a una accin de botn o fotograma que le faciliten el seguimiento de una accin o parte de una accin que debe realizarse Los comentarios son tiles para pasar informacin a otros desarrolladores cuando se trabaja en un entorno de colaboracin o se proporcionan ejemplos Establecimiento e identificacin de variables Una variable es un contenedor de informacin El contenedor en s es siempre el mismo, pero el contenido puede cambiar La modificacin del valor de una variable a medida que la pelcula se reproduce permite registrar y guardar informacin sobre las acciones del usuario, registrar valores que se modifican conforme la pelcula se reproduce o evaluar si determinada condicin es verdadera o falsa Las variables pueden contener nmeros o cadenas de caracteres La informacin ms comn que puede guardarse en una variable incluye un URL, un nombre de usuario, el resultado de una operacin matemtica, el nmero de veces que ocurre algo o si se ha hecho clic en un botn Cada pelcula y clip de pelcula tiene su propio juego de variables, cada una de ellas con su propio valor independiente de otras variables en otras pelculas o clips de pelcula Las variables de Flash no tienen que definirse de forma explcita como contenedoras de un nmero o una cadena El programa interpreta de forma adecuada si el tipo de datos es un nmero entero o una cadena Consulte tambin "Emulacin de matrices" a pagina 186 Asignacin de valores a variables Utilice la sentencia Set Variable para asignar un valor a una variable Si una variable no existe en la pelcula o en un clip de pelcula, Flash la crea la primera vez que se le asigna un valor Set Variable tiene los siguientes parmetros: El campo Variable especifica el nombre de la variable Acostmbrese a utilizar nombres que indiquen lo que representa la variable Por ejemplo, el nombre de variable contrasea indica que la variable contiene una contrasea El campo Valor especifica el valor que se asigna a la variablePara modificar el contenido de una variable puede utilizar operaciones numricas y operadores de cadenas Por ejemplo, esta sentencia modifica el valor existente de la variable Sumatotal mediante la suma de 3 a su valor actual: Set Variable: "Sumatotal" = Sumatotal + 3

Identificacin de variables en pelculas o clips de pelcula especficos Para identificar una variable en una pelcula o un clip de pelcula especfico, anteponga al nombre de la variable la ruta de acceso a la pelcula o clip de pelcula Utilice dos puntos para separar la ruta del nombre de variable Por ejemplo, esta frase especifica la variable Cronmetro en el clip de pelcula Explosin: /Explosin:Cronmetro Creacin de acciones condicionales Utilice la sentencia If para configurar sentencias que se ejecuten slo cuando exista una condicin determinada Por ejemplo, puede comprobar el valor introducido por un usuario en un campo de texto y visualizar un mensaje si el valor es demasiado alto o demasiado bajo Para utilizar la sentencia If de forma eficaz, debe estar familiarizado con la creacin de expresiones que evalan condiciones Consulte "Escritura de expresiones" a pagina 187 Para cada sentencia If, la sentencia End If marca el final de las sentencias que se ejecutan si la condicin sigue siendo verdadera Si desea que una accin responda a una de las distintas posibilidades, utilice una serie de sentencias If Una sentencia If puede contener tambin una sentencia Else que designa una serie alternativa de sentencias que deben ejecutarse si la condicin es falsa (cero) Las sentencias contenidas en las sentencias If y End if aparecen sangradas Las sentencias sangradas slo se ejecutan si la condicin es verdadera En caso contrario, Flash desestima las sentencias sangradas Para cada sentencia Else, seleccione la sentencia If original y, a continuacin, haga clic en el botn "Aadir clusula Else/Else if " Cada clic aade otra clusula Else Para establecer la clusula Else if, seleccione una clusula individual Else y haga clic en el botn de radio Else if del panel de parmetros Por ejemplo, la siguiente accin utiliza If con Else if y Else para dirigir a distintos usuarios a diferentes escenas de una pelcula Si el nombre de variable no coincide con ninguno de los nombres mencionados, comienza una escena de bienvenida estndar: If (nombre eq "Gala") Go to and Play ("El mundo de Gala", 1) Else if (nombre eq "David") Go to and Play ("El mundo de David", 1) Else if (nombre eq "Pedro") Go to and Play ("El mundo de Pedro", 1)

Else Go to and Play ("Bienvenido", 1) End If Enlace de acciones Utilice la sentencia Loop para configurar una serie de sentencias que se ejecuten de forma repetida mientras una condicin especfica siga siendo verdadera Un uso comn de enlace consiste en utilizar una variable como contador y llevar a cabo una accin mientras el contador se mantiene por debajo de un valor especificado Al final de cada bucle, el contador se incrementa Para utilizar la sentencia Loop de forma eficaz, debe estar familiarizado con la creacin de expresiones que evalan condiciones Consulte "Escritura de expresiones" a pagina 187 Para cada sentencia Loop, una sentencia End Loop marca el final de las sentencias que se ejecutan mientras la condicin se mantiene vigente Al alcanzar la sentencia End Loop, Flash comienza el bucle mediante la prueba de la condicin Si la condicin es falsa o igual a cero, Flash omite la primera sentencia que sigue a End Loop Por ejemplo, las siguientes sentencias conforman un bucle de ejemplo que se ejecuta diez veces Cada vez que el bucle se ejecuta, la variable ndice se incrementa en 1 Cuando ndice es igual a 11, la expresin ndice <= 10 es falsa, por lo que Flash omite pasar el bucle a las sentencias subsiguientes Set Variable: "ndice" = 1 Loop While (ndice <= 10) Set Property ("tubo_rojo", Y position) = 150 Set Variable: "ndice" = ndice +1 End Loop La pantalla no se actualiza hasta finalizar el bucle Reutilizacin de acciones Es posible que desee que varios botones o fotogramas utilicen la misma accin En vez de copiar y pegar todas las sentencias entre los botones y los fotogramas, asigne la accin a un fotograma diferente y, a continuacin, utilice la sentencia Call para ejecutar dicha accin Especifique el fotograma que debe llamarse mediante una de las posibilidades que identifican fotogramas en la sentencia Go To (consulte "Salto a fotogramas o escenas" a pagina 169) Si el fotograma no puede localizarse debido a un error de denominacin o porque no ha fluido al ordenador local, Flash desestima la sentencia Call Puede utilizar la propiedad _framesloaded para comprobar si un fotograma est disponible

Una vez que la accin de fotograma especificada se ejecuta, el control vuelve a la accin que emiti la sentencia Call Para crear una biblioteca de acciones, cree una pelcula y asigne cada accin a un fotograma individual de la lnea de tiempo Rotule cada fotograma con el nombre de script para facilitar su llamada Flash no proporciona ninguna forma especial de pasar o devolver valores al utilizar la sentencia Call De hecho, el contexto se conmuta al clip de pelcula llamado, incluidas las variables conocidas Para pasar valores a otro clip de pelcula, pselos en variables de Flash De manera similar, el clip de pelcula apuntado tiene que guardar todos los valores de devolucin en variables Bsicamente, las sentencias Set Variable separadas deben utilizarse en conjuncin con la sentencia Call para pasar o devolver valores Por ejemplo, la siguiente sentencia establece las variables de Base de datos antes de ejecutar la accin AddDatabaseRecord: Set Variable: "/Base de datos:Nombre" = "Franz Schubert" Set Variable: "/Base de datos:Profesin" = "Msico" Call ("/Base de datos:AddDatabaseRecord") If (/Base de datos:Resultado eq "OK") Go to And Stop ("OK") Else Go To And Stop ("Error") End If Tipos de valores En Flash, los valores pueden ser nmeros o cadenas Estos valores pueden ser literales ("auto") o representarse mediante expresiones (Substring (automvil, 1, 4)) La creacin de guiones (scripts) de acciones no es un lenguaje de "tipos": un tipo de variable (cadena, entero, etc) depende del tipo de valores asignado a la variable Verdadero y falso/distinto de cero y cero Los trminos True y False indican si una condicin existe: el trmino False indica que una condicin no existe Flash utiliza tambin el nmero 0 como equivalente numrico de False Flash trata cualquier nmero distinto de cero como verdadero Cadenas

Flash trata todos los caracteres entre comillas como cadenas en vez de variables Obtencin de valores de propiedad El mtodo para obtener un valor de propiedad depende del contexto de la propiedad en relacin al clip de pelcula actual Por ejemplo, el uso de la sentencia ( _x) en el clip de pelcula actual devuelve la posicin x del clip de pelcula actual Para la propiedad de otro clip de pelcula, utilice una ruta de acceso para apuntar al clip de pelcula Por ejemplo, el nombre de destino y la propiedad /Foo: _x devuelve x del clip de pelcula Foo como un valor Uso de GetProperty Cuando el destino es una expresin, utilice la sentencia GetProperty() para devolver el valor de una propiedad de clip de pelcula Por ejemplo, para devolver la posicin x de cada nave espacial de un videojuego con muchas naves espaciales, cada una en un clip de pelcula numerada de forma secuencial (/nave_1, /nave_2, ), utilice la sentencia: GetProperty("/nave_"&Nmeronave, _x) Emulacin de matrices Flash puede crear nombres de variable de forma dinmica debido a que la asignacin de variables y las operaciones de recuperacin pueden evaluar una expresin para obtener el nombre de variable Esto permite emular matrices, diccionarios y otras estructuras de datos Por ejemplo, una matriz de 10 elementos podra emularse mediante diez variables con los nombres A_1 A_2 A_10 Por ejemplo, la matriz: Set Variable "nombre" & nmeronombre = nuevo nombre Set Variable "nmeronombre" = nmeronombre + 1 crea la siguiente matriz: nombre1 -> Gala nombre2 -> otro nombre nombre3 -> otra persona

nmeronombre -> 3 Para buscar un nombre particular, puede utilizar la siguiente accin: Set Variable "ndice" = 1 Set Variable "localizado" = false Loop While (ndice <= nmeronombre y no localizado) If (Eval("nombre" & ndice) eq nombrequelocalizar) Set Variable "localizado" = true Else Set Variable "ndice" = ndice + 1 End If End Loop En esta accin, cuando localizado es verdadero, ndice contiene el ndice de matriz del nombre localizado Tambin puede emular una matriz bidimensional, como la siguiente: A_1_1 A_2_1 A_3_3 Obtencin del valor de una variable denominada de forma dinmica Utilice la funcin eval para obtener el valor de una variable denominada mediante una expresin Por ejemplo, la expresin eval("Nombre") es idntica a la expresin Nombre Si se especifica el nombre como una expresin, el nombre de la variable que debe obtenerse puede decidirse mientras la pelcula Flash se reproduce Por ejemplo, la sentencia eval("Nombre"&ndice) le permite manejar 10 nombres, donde ndice es una variable que contiene un nmero del 1 al 10 Esta expresin obtiene una de las variables Nombre1, Nombre2, Nombre3 en funcin del valor de ndice En un bucle, ndice puede actualizarse en cada interaccin para obtener los 10 nombres

Comprobacin de valores de variables y propiedades Como la creacin de guiones de acciones no es un lenguaje de tipos, es posible que las variables se asignen de forma equivocada como nmeros enteros o cadenas Si un entero se introduce para una variable de cadena, Flash asigna un valor "true" al entero Si una cadena se introduce para una variable de valor entero, Flash asigna un numero equivalente a la longitud de la cadena (Por ejemplo, la introduccin de Nombre devuelve 6) Escritura de expresiones Una expresin es cualquier frase cuyo valor numrico puede calcular Flash Flash tiene tres tipos de expresiones: expresiones de cadenas, expresiones numricas y expresiones de comparacin Las expresiones se crean mediante la combinacin de operadores y valores Que el valor inicial de la expresin sea una cadena o un nmero depende del tipo de parmetro predeterminado Por ejemplo, la opcin Rtulo del parmetro Fotograma de la sentencia Go To es una cadena, por lo que una expresin que especifica dicho parmetro es, de forma predeterminada, una cadena Uso del Editor de expresin El Editor de expresin que le ayuda a formular el contenido exacto de determinados parmetros de sentencias puede abrirse desde la ficha Acciones En algunos parmetros, el campo de parmetro tiene un botn "abc" que indica que la sentencia espera un valor literal Basta con introducir el valor literal en el campo En otros parmetros, Flash muestra el botn "=" que indica que se espera una expresin Si necesita crear una expresin, haga clic en el botn situado junto al campo y elija Editor de expresin

Haga doble clic en los operadores y las funciones que desee utilizar Algunas funciones contienen informacin genrica que es necesario sustituir por los detalles adecuados para la sentencia Por ejemplo, para extraer el valor de la coordenada x de una posicin de clip de pelcula: 1 Haga doble clic en la opcin GetProperty de Propiedades hasta que aparezca en el cuadro de texto situado en la parte superior del cuadro de dilogo

2 Resalte el trmino genrico "destino" y haga clic en Destino 3 Seleccione el clip de pelcula deseado en la lista Si el clip de pelcula de destino no aparece en la lista, escriba el nombre del mismo en el campo Destino y haga clic en Aceptar 4 Seleccione el trmino genrico "propiedad" y haga doble clic en el elemento del men Propiedades _x que hace referencia a la posicin X 5 Haga clic en Aceptar en el Editor de expresin Cuando no se introduce informacin suficiente o se utiliza una sintaxis inapropiada, el Editor de expresin muestra un mensaje de advertencia Si todo es correcto, la nueva expresin aparece en la sentencia Expresiones numricas Las expresiones numricas calculan nmeros Pueden combinar nmeros, variables que contienen nmeros y operadores tales como +, -, =, operadores lgicos y operadores de comparacin El ejemplo siguiente es una expresin numrica sencilla: 1+2 La siguiente sentencia utiliza la expresin Rayas + 1, que combina nmeros y variables: Set Variable: "Rayas" = Rayas +1 La sentencia aade 1 al valor actual de la variable Rayas Expresiones de cadenas Una expresin de cadenas concatena dos o ms cadenas para crear una nueva cadena Los operandos pueden ser variables, cadenas literales entre comillas dobles o funciones que devuelven cadenas Por ejemplo, la expresin de cadenas "Hola, " & "mundo" concatena las cadenas "Hola, "y "mundo" El resultado es "Hola, mundo" Utilice la funcin Substring para extraer parte de una cadena Al utilizarse Substring, el primer parmetro es la cadena El segundo parmetro, el ndice, es el nmero del primer carcter que debe extraerse El tercer parmetro es el nmero de caracteres que hay que incluir a continuacin del ndice Por ejemplo, Substring("Hola", 4, 2) devuelve "la" Si se omite el tercer parmetro, se devuelve toda la cadena, desde el ndice hasta el final de la misma Los nmeros utilizados en expresiones de cadenas se convierten automticamente en cadenas cuando se utilizan con operadores de cadenas Por ejemplo, "valor_"&(ndice+1) calcula la expresin numrica ndice+1, tras lo que el nmero resultante se concatena al final de la cadena valor_

Operadores aritmticos Los operadores de Flash siguen principios matemticos bsicos La multiplicacin y la divisin se producen antes que la suma y la substraccin Los trminos entre parntesis se producen antes que la multiplicacin y la divisin El intento de dividir por cero da como resultado la cadena #ERROR# A continuacin se incluyen algunos ejemplos de expresiones aritmticas: (1+2)*3 Principal*Tasa*Tiempo Subtotal*(1+(Tasa impuesto sobre ventas/100)) -Valor (valor negativo de la variable Valor) +Valor (deja el valor invariable) Puede utilizar las funciones Int(), Length() y Random() en las expresiones aritmticas porque dichas funciones devuelven nmeros Int(nmero) devuelve el valor entero de un nmero especfico Por ejemplo, INT(125) devuelve 12 Length(cadena) devuelve la longitud de la cadena especificada Por ejemplo, Length("Hola") devuelve 4 Random(nmero) devuelve un valor aleatorio entero del rango 0 al valor especificado por el nmero menos 1 Por ejemplo, Random(4) devuelve 0, 1, 2 o 3 Si utiliza una cadena en una expresin Flash, se convierte en nmeros al utilizarse con operadores numricos Por ejemplo, "1"+2 se calcula como 3 Si la cadena no puede convertirse en un nmero, se calcula como cero Por ejemplo, en la expresin "ABC"+3, ABC se evala como cero El resultado es 0+3, que es 3 Operadores de cadenas Flash trata cualquier secuencia de caracteres entre comillas como una cadena literal Las siguientes operaciones son tiles para manipular cadenas y especificar contenidos de cadenas Por ejemplo, la siguiente sentencia utiliza el operador de comparacin de cadenas eq para probar si el nombre de variable contiene la cadena Homero: nombre eq "Homero"

Operadores de comparacin Las expresiones de comparacin comparan dos expresiones entre s Por lo general se utilizan para sentencias If y sentencias Loop Por ejemplo, la sentencia Ao = 2000 prueba si el valor de la variable Ao es 2000 La sentencia Edad >= 18 prueba si la variable Edad es mayor que o igual a 18 Expresiones lgicas Por lo general, las expresiones lgicas se utilizan, como las expresiones de comparacin, para sentencias If y sentencias Loop Por ejemplo, la sentencia ndice <= 10 y Hecho = 0 prueba si la variable ndice es menor que o igual a 10 y si la variable Hecho es igual a 0 La sentencia Nmerolotera >= 6 y Nmerolotera <= 49 prueba si la variable Nmerolotera est comprendida entre 6 y 49 La sentencia ndice < 1 o ndice > 10 prueba si la variable ndice se encuentra fuera del rango 1 a 10 La sentencia not (ndice < 1 o ndice > 10) prueba si la variable ndice se encuentra en el rango 1 a 10 Medida del tiempo Utilice GetTimer para devolver el nmero de milisegundos transcurridos desde el comienzo de la reproduccin de la pelcula Por ejemplo, en un fotograma, la sentencia Trace (Int(GetTimer / 1000) & "segundos transcurridos") crea un mensaje en una ventana de salida que muestra cada segundo segn transcurre el tiempo Conversin de caracteres de cdigos ASCII Flash puede convertir los nmeros de cdigos ASCII en caracteres y los caracteres en nmeros de cdigos ASCII La funcin Chr convierte los nmeros de los cdigos ASCII en caracteres Por ejemplo, la funcin Chr (65) = "A" convierte el nmero 65 en la letra "A" La funcin Ord convierte los caracteres en nmeros de cdigos ASCII Por ejemplo, la funcin Ord(a) = 97 convierte la letra "a" en el nmero 97 Uso de propiedades Las propiedades de los clips de pelcula son esencialmente variables existentes para cada clip de pelcula Puede establecer los valores de las propiedades para modificar el comportamiento de un clip de pelcula o recuperar valores de propiedades para evaluarlos y comenzar sentencias basadas en los resultados El Editor de expresin contiene una lista completa de todos los parmetros disponibles La mayora de los valores de las propiedades son especficos para

clips de pelcula individuales No obstante, algunas propiedades se aplican a toda la pelcula y se denominan propiedades globales Propiedades de clips de pelcula La mayora de las propiedades de los clips de pelcula son muy claras (por ejemplo, _width es la anchura del clip de pelcula en pxeles) No obstante, es necesario clarificar las siguientes propiedades de clic de pelcula: Las propiedades _x e _y se expresan en pxeles, con la esquina superior izquierda del escenario en (0, 0) Las propiedades _x e _y se especifican en el sistema de coordenadas local del padre del clip de pelcula Si un clip de pelcula est en la lnea de tiempo principal, su sistema de coordenadas hace referencia a la esquina superior izquierda del escenario como 0, 0 Si el clip de pelcula se encuentra dentro de otro clip de pelcula que tiene transformaciones, el clip de pelcula est en el sistema de coordenadas local del clip de pelcula que lo contiene As, para un clip de pelcula rotado 90 grados en sentido contrario a las agujas del reloj, el clip de pelcula hijo hereda un sistema de coordenadas rotado 90 grados en sentido contrario a las agujas del reloj Por ejemplo, supongamos que un clip A de pelcula animada establece la propiedad _x de cada fotograma para animar un crculo que se mueve de izquierda a derecha Si coloca el clip A de pelcula dentro del clip B de pelcula, que est rotado 90 grados en sentido contrario a las agujas del reloj, el crculo del clip A de pelcula se desplazar de abajo a arriba en vez de izquierda a derecha, aun cuando se haya establecido la propiedad _x La rotacin del clip de pelcula padre ha rotado el sistema de coordenadas del hijo Las coordenadas del clip de pelcula hacen referencia a la posicin del punto de registro Si Usar punto central est marcada en el cuadro de dilogo de propiedades de objeto, la posicin del punto central es el punto de registro En caso contrario, la posicin del punto central es la esquina superior izquierda del objeto _xscale e _yscale se miden en porcentajes con el valor predeterminado establecido en 100 La escala se aplica a partir del punto de registro del clip de pelcula La escala del sistema de coordenadas afecta al significado de las propiedades _x e _y En el nivel superior, las propiedades _x e _y son valores en pxeles enteros En el ejemplo de un crculo mvil, si el clip de pelcula se escala al 50%, el establecimiento de la propiedad _x desplaza el crculo la mitad del nmero de pxeles que cuando la escala era 100% _rotation se establece en grados

Las propiedades _x, _y, _rotation, _xscale e _yscale son todas acumulativas No slo transforman el clip de pelcula sino cualquier hijo que tenga el mismo stos se ven afectados por las transformaciones sufridas por el padre del clip de pelcula _url es el URL donde reside el clip de pelcula _visible puede establecerse en True (valor predeterminado) o False Si se establece en False, la pelcula oculta la instancia de clip de pelcula y no se somete a la prueba de "acierto" Las acciones de botn o de fotograma contenidas en dicho clip no funcionan Propiedades de desplazamiento por los campos de texto Si una escena contiene un campo de texto asociado a una variable, hay dos propiedades especiales asociadas a la visualizacin de dicho campo de texto: Utilice la propiedad scroll para definir dnde comienza el campo de texto a mostrar su contenido Esta propiedad puede ser especialmente til para dirigir a una audiencia a un prrafo especfico de un largo pasaje Por ejemplo, en un campo de texto que tiene cuatro lneas de tamao vertical e identificando la variable "discurso", que tiene nueve lneas, en vertical, entonces slo puede mostrarse parte del discurso (identificada por el cuadro de contorno continuo):

Utilice la propiedad scroll para definir dnde comienza el campo de texto a mostrar su contenido Esta propiedad puede ser especialmente til para dirigir a una audiencia a un prrafo especfico de un largo pasaje Por ejemplo, en un campo de texto que tiene cuatro lneas de tamao vertical e identificando la variable "discurso", que tiene nueve lneas, en vertical, entonces slo puede mostrarse parte del discurso (identificada por el cuadro de contorno continuo):

discursoscroll es igual a 1 porque el campo de texto comienza a visualizarse en la primera lnea speechmaxscroll es igual a 6 porque, como la audiencia se desplaza hacia abajo para ver la ltima lnea, la lnea 6 es el lmite ms alto del campo de texto

Nota: Estas variables devuelven valores imprevisibles si ms de un campo de texto muestra la misma variable al mismo tiempo (Esto puede ocurrir cuando la audiencia puede desplazarse por dos campos visualizando la misma variable al mismo tiempo) Propiedades globales Las propiedades globales influyen en toda la pelcula, no slo en clips de pelcula especficos (El campo Destino est deshabilitado para estas propiedades debido a que no es posible especificar un nivel individual) Los valores de estas propiedades pueden leerse desde cualquier parte de la lnea de tiempo principal

Solucin de problemas de interactividad El nivel de sofisticacin de algunas acciones, especialmente cuando se combinan entre s, puede crear tambin dificultades Pruebe los clips de pelcula de forma regular y tenga presentes las siguientes sugerencias a la hora de resolver cualquier resultado no previsto: Trace muestra informacin en una ventana de salida Puede utilizar Trace para hacer aparecer notas sobre programacin o resultados especficos al presionar un botn, o para que un fotograma se reproduzca durante la prueba de una pelcula o escena Puede escribir expresiones en los parmetros de sentencia de trazado para comprobar si una condicin existe o no y para hacer que la ventana de trazado muestre valores durante la prueba de una pelcula Si una variable se adjunta a un fotograma que no se ha cargado, el valor de dicha variable es nulo Durante la prueba de una pelcula o escena, utilice los comandos Control > Lista de objetos y Control > Lista de variables Para mayor facilidad en la lectura de acciones que tengan lneas largas o contengan muchas lneas, utilice el Inspector de objetos o el Inspector de fotogramas para visualizar todo el texto de la accin 12. Creacin de elementos de interfaz Acerca de la creacin de elementos de interfaz

Utilice las funciones de interactividad de Flash para ensamblar los elementos comunes de la interfaz, como mens emergentes, listas desplegables y mens de comandos Dichos elementos son tiles para recopilar datos en formularios y para permitir al usuario interactuar con una pelcula del mismo modo que con una aplicacin independiente Creacin de formularios Los formularios son un tipo avanzado de interactividad, una combinacin de botones, pelculas y campos que permiten pasar informacin a otra aplicacin situada en un servidor local o remoto Todos los elementos comunes de un formulario (como botones de radio, listas desplegables y casillas de verificacin) pueden crearse como pelculas o botones con la misma apariencia y estilo del diseo global de su sitio Web Los tipos de formulario ms habituales que utilizan dichos elementos de interfaz incluyen cuestionarios, notas de pedidos e interfaces de bsqueda Por ejemplo, un formulario de Flash puede recoger y enviar datos de direcciones a otra aplicacin que compila la informacin en un correo archivo de correo electrnico o de base de datos Los formularios requieren dos componentes: los elementos de Flash que componen el formulario y una aplicacin de servidor o un script del sistema cliente para procesar la informacin introducida por el usuario En los siguientes pasos se esboza el procedimiento general para la creacin de elementos de formulario con Flash Para crear un formulario: 1 Cree una biblioteca de elementos, como botones y casillas de verificacin 2 Coloque en la pelcula una combinacin de campos de texto editable e instancias de smbolos en la disposicin que desee 3 Asigne un nombre a las variables en el cuadro de dilogo Propiedades de cada campo de texto Utilice nombres de variables descriptivos y nicos 4 Asigne acciones de botn que enven datos a un Reproductor Flash o a una aplicacin situada en la Web a travs de http Creacin de formularios que interactan con un servidor Web Utilice la sentencia Get URL para enviar variables a bases de datos, correos electrnicos u otras aplicaciones Tambin puede utilizarse Get URL con [Link] como parmetro del URL para enviar un mensaje electrnico directamente desde un navegador Use la sentencia Load Variables para recopilar informacin de los servidores Web Por ejemplo, con Load Variables puede recuperar desde un servidor remoto las variables para un clip de pelcula y a continuacin mostrarlas con la informacin actual de un servidor de noticias Ambas sentencias se describen con mayor detalle en

"Salto a otros URL" a pagina 170 y "Obtencin de variables de archivos remotos" a pagina 174 Uso de variables en formularios Para obtener los mejores resultados, realice lo siguiente cuando utilice variables en formularios: Proporcione nombres de variables que indiquen con claridad lo que representa la variable Por ejemplo, en formularios mltiples que preguntan nombres de usuarios, nombres de elementos y nombres de ubicaciones, se aconseja utilizar nombres de variables que indiquen el contexto de los datos Asegrese de que los nombres de variables corresponden a los nombres que espera recibir la aplicacin o script que recibe las variables Utilice variables en la lnea de tiempo o en clip de pelcula para registrar y realizar un seguimiento de la informacin (tambin denominado estado de mantenimiento) Acta como el equivalente del uso de un campo oculto en un formulario HTML para que los usuarios puedan restablecer un formulario Si tiene variables adjuntas a determinados fotogramas, utilice la propiedad _framesloaded o la sentencia If Frame is Loaded para asegurarse de que las variables se han identificado antes de enviarlas Consulte "Comprobacin de carga de fotogramas" a pagina 171 Evale las variables antes de enviarlas a un servidor Web Si una aplicacin de servidor espera recibir un nmero en un determinado formato, asegrese de que el usuario ha introducido los datos correctos Para obtener ms informacin, consulte "Verificacin de datos introducidos" a pagina 198 Creacin de cuadros de dilogo Un cuadro de dilogo es un formulario corto tpico y proporciona una buena introduccin a la creacin de formularios En el siguiente ejemplo se proporcionan instrucciones para la creacin de un cuadro de dilogo de bsqueda: un campo de texto y un botn que utiliza la sentencia Get URL Al introducir la informacin necesaria, los usuarios pueden pasar una palabra clave a una herramienta de bsqueda situada en un servidor Web remoto Siga los pasos de "Creacin de mens emergentes" a pagina 199 para convertir el cuadro de dilogo de la contrasea en un men emergente Para crear un cuadro de dilogo de bsqueda sencillo: 1 Cree un botn que pueda utilizar para enviar los datos introducidos No incluya texto sobre el botn Puede hacerlo en cada formulario para satisfacer las necesidades especficas de la instancia

2 Cree un rtulo, un campo de texto vaco y una instancia del botn en el escenario del siguiente modo: 3 Seleccione el campo de texto y elija Modificar > Campo de texto 4 Especifique el nombre de la variable (las herramientas de bsqueda individuales pueden requerir una variable especfica Para ms informacin contacte con el fabricante de la herramienta de bsqueda) Seleccione Dibujar borde y fondo e Incluir todos los contornos de fuentes Haga clic en Aceptar 5 En el escenario, seleccione el botn y elija Modificar > Instancia 6 Haga clic en la ficha Acciones Haga clic en el botn + (ms) y elija Get URL en el men emergente 7 En el panel de parmetros, defina las siguientes opciones: En URL, introduzca el URL de la herramienta de bsqueda En Ventana, seleccione _blank Se abre una ventana nueva con los resultados de la bsqueda En Variables, seleccione Send Using GET 8 En el escenario, cree un campo de texto sobre el botn con el texto que desee 9 Para ver el funcionamiento del formulario, elija Archivo > Previsualizacin de publicacin > HTML Contraseas y e informacin segura Flash se basa en las funciones de seguridad de los navegadores estndar y HTTP Si desea utilizar contraseas seguras en Flash, es necesario establecer la autenticacin de la contrasea mediante una solicitud a un servidor Web Flash ofrece la misma seguridad que en un HTML estndar Siga las mismas reglas que al construir sitios Web HTML seguros Para una contrasea, solictela al usuario y envela a un servidor Utilice la sentencia Load Variables y el parmetro Send using POST mediante HTTPS: URL El servidor Web podra verificar si la contrasea es vlida De este modo, la contrasea nunca estar disponible en el archivo SWF Para obtener ms informacin, consulte "Obtencin de variables de archivos remotos" a pagina 174 Verificacin de datos introducidos En un formulario que pasa las variables a una aplicacin de un servidor Web, uno desea verificar que los usuarios introducen la informacin correcta Por

ejemplo, para evitar que los usuarios introduzcan texto en el campo del nmero de telfono Utilice una serie de sentencias Set Variable junto con Loop e If para evaluar los datos introducidos En el siguiente ejemplo se comprueba si los datos son un nmero y que el nmero est en el formato ###-###-#### Si los datos son vlidos, aparece el mensaje "Correcto, nmero de telfono vlido" Si los datos no son vlidos, aparece el mensaje "Nmero de telfono no vlido": On (Release) If (Longitud(NmeroTelfono) = 12) Set Variable: "ndice" = 1 Set Variable: "Vlido" = true Loop While (ndice and Vlido) Set Variable: "Caract" = Substring(NmeroTelfono,ndice,1) If (ndice = 4 or ndice = 8) If (Caract neg "-") Set Variable: "Vlido" = false End If Else If (not (Ord(Caract) >= Ord("0") and Ord(Caract) <= Ord("9"))) Set Variable: "Vlido" = false End If End If Set Variable: "ndice" = ndice+1 End Loop Else Set Variable: "Vlido" = false End If If (Vlido = true)

Set Variable: "Mensaje" = "Correcto, nmero de telfono vlido" Else Set Variable: "Mensaje" = "Nmero de telfono no vlido" End If End On Cuando llega el momento de enviar los datos, cree un botn con una accin similar a la siguiente Sustituya los parmetros de Get URL por los parmetros adecuados para su pelcula: On (Release) If (Vlido = true) Get URL ("wwwservidorwebcom", window="_self", vars=GET) End If End On Creacin de mens emergentes Para la creacin de un men emergente son necesarios dos pasos: Activar la opcin Seguimiento como elemento de men en el cuadro de dilogo Propiedades para todos los botones del men emergente Como resultado, todos los dems botones del men pueden recibir los eventos al soltar el ratn Encerrar el men emergente en un botn grande que cierre el men si el usuario desplaza el puntero fuera del men y suelta el botn del ratn En el siguiente ejemplo se explica cmo crear un men emergente sencillo que puede utilizarse como la base de otro ms complejo En las instrucciones se asume que el usuario ya sabe crear un smbolo de botn y de clip de pelcula, adems de adjuntar acciones a botones y fotogramas Para crear un botn para su uso en un men emergente: 1 Cree un smbolo de botn nuevo para los elementos del men 2 Dibuje un rectngulo blanco relleno en el fotograma Arriba del smbolo del botn en la lnea de tiempo 3 Cree un fotograma clave en el fotograma Sobre

4 Rellene el rectngulo con un color diferente como color de realce de los elementos del men No es necesario definir los fotogramas Abajo o Acierto Para crear el clip de la pelcula del men emergente: 1 Cree un smbolo nuevo de clip de pelcula 2 Coloque una instancia del smbolo del botn que acaba de crear en el primer fotograma del clip de la pelcula 3 Haga doble clic en el botn y a continuacin seleccione la ficha Acciones en el cuadro de dilogo Propiedades 4 Haga clic en el smbolo de + (ms), elija On MouseEvent en el men emergente y seleccione Press en el panel de parmetros Con la lnea On (Press) seleccionada, elija Go To en el men emergente En Fotograma especifique Nmero como parmetro e introduzca 1 en el recuadro Esta accin hace que el clip de pelcula pase al siguiente fotograma cuando el usuario hace clic en el botn En el siguiente fotograma se muestra el men abierto Utilice la condicin On (Press) porque los mens emergentes responden al instante cuando se hace clic, no cuando se suelta el ratn como en los botones normales 5 Haga doble clic en el primer fotograma de la lnea de tiempo y seleccione la ficha Acciones en el cuadro de dilogo Propiedades de fotograma Haga clic en el smbolo + (ms) y elija Go To en el men emergente Elija Fotograma y en Nmero especifique 1 como el parmetro De este modo la pelcula hace un bucle en el fotograma 1 hasta que el usuario haga clic en el botn Al hacer clic en el botn, la pelcula se enva al fotograma 2 6 Cree un fotograma clave en el fotograma 2 7 Cree varias instancias del smbolo de botn que cre con anterioridad Organice las instancias en una columna debajo del botn creado en el fotograma 1 8 Seleccione Modificar > Alinear para alinear y ajustar el espacio entre las instancias 9 Aada rtulos de texto a cada botn 10 Haga doble clic en cada botn, incluido el botn superior que se cre en el fotograma 1 Utilice el cuadro de dilogo Propiedades de instancia para realizar lo siguiente: Haga clic en el ficha Definicin y seleccione Seguimiento como elemento de men Una vez establecida la opcin Seguimiento como elemento de men, un

botn sobre el que se ha hecho clic permite que otros botones reciban la accin de soltar el botn Haga clic en la ficha Acciones y elija la sentencia que desee que ejecute el elemento del men Despus de la sentencia, elija la sentencia Go To que enva el clip de la pelcula de nuevo al primer fotograma La accin puede ser parecida a esta: On (Release) Toggle High Quality Go To and Stop (1) End On La sentencia Go To cierra el men despus de que el usuario realice la seleccin 11 Para probar el men emergente, cree una instancia del smbolo del clip de pelcula del men emergente y elija Control > Probar pelcula El men emergente funciona en la mayora de los aspectos, excepto que se mantiene abierto cuando se abre el men y se hace clic fuera del men Para que el men emergente se cierre cuando el usuario hace clic fuera del men: 1 Cree un smbolo de botn nuevo que sea un rectngulo del mismo tamao y color que el escenario No defina los estados Abajo, Sobre ni Acierto del botn para que no se vea la respuesta del botn cuando se haga clic en l 2 Abra la pelcula en modo de edicin de smbolos y cree una capa nueva debajo de la capa donde estuvo trabajando 3 Cree una instancia del botn grande que acaba de crear 4 Haga doble clic en el botn 5 Active la opcin Seguimiento como elemento de men en el cuadro de dilogo Propiedades de instancia e incorpore una sentencia Go To que enve el clip de pelcula al fotograma 1 Para probar el men emergente, cree una instancia del smbolo del men emergente en el escenario y elija Control > Probar pelcula 13. Adicin de sonidos Acerca de la adicin de sonidos

Flash ofrece distintos mtodos para utilizar sonidos Puede crear sonidos de reproduccin constante, independientes de la lnea de tiempo, o sincronizar una animacin con una pista sonora Adjunte sonidos a botones para mejorar la respuesta y haga que aparezcan y desaparezcan de forma paulatina para refinar ms la pista sonora Existen dos tipos de sonidos en Flash, eventos de sonido y flujos de sonido Los primeros deben descargarse por completo para comenzar a sonar y continan sonando hasta que se detienen de forma explcita Los segundos comienzan a sonar tan pronto como se ha descargado informacin suficiente para los primeros fotogramas y sincronizan el sonido con la lnea de tiempo para reproducirlo en un sitio Web Para aadir sonidos a una pelcula debe crear una capa adicional, asignar el sonido y establecer opciones en la ficha Sonido del cuadro de dilogo Propiedades de fotograma La velocidad de muestra y el grado de compresin afectan tanto a la calidad como al tamao de las pelculas exportadas Controle la calidad y el tamao de cada sonido exportado con el cuadro de dilogo Propiedades de sonido o defina parmetros para todos los sonidos de la pelcula en el cuadro de dilogo Configuracin de publicacin Para obtener una introduccin interactiva a la utilizacin de sonidos en Flash, elija Ayuda > Lecciones > 6 Sonido Importacin de sonidos Elija Archivo > Importar para traer sonidos AIFF o WAV a Flash, del mismo modo que importara archivos de otro tipo Flash almacena los sonidos en la biblioteca junto con los mapas de bits y los smbolos Los sonidos pueden necesitar una cantidad considerable de espacio en la unidad de disco y en la memoria RAM En general, es preferible utilizar sonidos mono de 22 kHz y 16 bits (los estreo utilizan el doble de informacin), pero Flash puede importar sonidos de 8 o de 16 bits a velocidades de muestra de 11, 22 44 kHz Tambin permite convertir los sonidos a velocidades ms bajas al exportarlos Consulte "Exportacin de pelculas con sonido" a pagina 209 Al igual que con los smbolos, slo es necesaria una copia del archivo de sonido para utilizar el sonido de varias formas en la pelcula Nota: Flash cambia la velocidad de muestra de los sonidos registrados en formatos no estndar (8 kHz) al importarlos y esto hace que el sonido sea ms bajo que la grabacin original Puede ocurrir lo mismo con las velocidades de muestra 96 y 32 kHz Para importar un sonido: 1 Elija Archivo > Importar

2 En el cuadro de dilogo de importacin estndar, localice y abra el archivo AIFF o WAV Nota: Si desea aadir efectos a los sonidos de Flash, es preferible importar sonidos de 16 bits Si la memoria RAM del sistema es limitada, trabaje con clips de sonido cortos o con sonidos de 8 bits en lugar de 16 Adicin de sonidos a una pelcula Para aadir sonidos a una pelcula debe crear una capa adicional, asignar el sonido y establecer opciones en la ficha Sonido del cuadro de dilogo Propiedades de fotograma Para aadir sonidos a una pelcula: 1 Importe el sonido a la pelcula Consulte "Importacin de sonidos" a pagina 204 2 Elija Insertar > Capa para crear una capa para el sonido Puede colocar sonidos en tantas capas como desee Cada una acta como un canal de sonido separado y al reproducir la pelcula se combinan los sonidos de todas las capas 3 Haga clic en el fotograma de la capa de sonido donde desea que comience el sonido 4 Elija Modificar > Fotograma y haga clic en la ficha Sonido del cuadro de dilogo Propiedades de fotograma 5 En el men emergente de Sonido elija el nombre del archivo de sonido que desea asociar con la capa actual

Si el sonido no aparece en el men, debe importarlo Consulte "Importacin de sonidos" a pagina 204 6 Elija una opcin de sincronizacin:

Evento sincroniza el sonido con un evento Un evento de sonido no comienza a sonar hasta que aparece el fotograma clave inicial y suena por completo, independientemente de la lnea de tiempo, aunque la pelcula se detenga Al reproducir la pelcula publicada los eventos de sonido se mezclan Inicio es igual que Evento, pero si el sonido ya se est reproduciendo, inicia una nueva instancia Detener detiene el sonido especificado Flujo sincroniza el sonido para reproducirlo en un sitio Web Flash hace que la animacin vaya a la misma velocidad que los flujos de sonido Si no puede dibujar los fotogramas de animacin a suficiente velocidad, los salta Al contrario que los eventos de sonido, si la animacin se detiene tambin lo hacen los flujos de sonido Nunca pueden sonar ms tiempo que la longitud de los fotogramas que ocupa Al publicar la pelcula los flujos de sonido se mezclan 7 Escriba un nmero en Bucle para especificar el nmero de bucles que debe realizar el sonido; si desea una reproduccin continua, el valor debe ser elevado 8 Utilice los controles de la ventana Sonido para editar el sonido como desee Elija entre las siguientes opciones: Ninguno no aplica ningn efecto al archivo de sonido Elija esta opcin para eliminar efectos aplicados con anterioridad Canal izquierdo/Canal derecho slo reproducen el sonido en el canal izquierdo o derecho Fundir de izquierda a derecha/Fundir de derecha a izquierda mueven el sonido de un canal a otro Fundir dentro incrementa de forma paulatina la amplitud de un sonido Fundir fuera reduce de forma paulatina la amplitud del sonido Personalizado permite crear efectos de sonido personales Utilice la ventana Sonido para personalizar la onda sonora Consulte "Uso de controles de edicin de sonidos" a pagina 206 Para aadir sonidos de forma abreviada: 1 Active la capa de sonido como capa actual 2 Arrastre un sonido de la ventana de previsualizacin de la biblioteca hasta el escenario Flash coloca el sonido en el fotograma actual con la configuracin de sonido predeterminada

Uso de controles de edicin de sonidos Utilice los controles de edicin de sonido de la ficha Sonido del cuadro de dilogo Propiedades de fotograma para definir el punto inicial del sonido o controlar el volumen durante la reproduccin Flash puede modificar el punto inicial y final de los sonidos Esto permite eliminar las secciones no utilizadas para reducir el sonido Para editar un sonido con los controles de edicin de sonido: 1 Aada un sonido a un fotograma (consulte "Adicin de sonidos a una pelcula" a pagina 204), o seleccione un fotograma que contenga un sonido y elija Modificar > Fotograma; a continuacin, haga clic en la ficha Sonido del cuadro de dilogo Propiedades de fotograma 2 Realice una de las siguientes acciones: Para cambiar los puntos inicial o final del sonido, arrastre los controles correspondientes de la ficha Sonido del cuadro de dilogo Propiedades de fotograma

Para cambiar la envolvente del sonido, arrastre los selectores de las lneas envolventes a fin de modificar el nivel en diferentes puntos del sonido Las lneas envolventes muestran el volumen del sonido al reproducirse Haga clic en las lneas para crear hasta ocho selectores de envolvente Para eliminarlos, arrstrelos fuera de la ventana Para ver una parte mayor o menor del sonido en la ventana, haga clic en los botones de aumento o reduccin Para cambiar la unidad de tiempo de segundos a fotogramas, haga clic en el botn correspondiente Inicio y detencin de sonidos en fotogramas clave El inicio y la detencin de sonidos en fotogramas clave de forma sincronizada con animaciones es la ms comn de las tareas relacionadas con el sonido Para detener e iniciar sonidos en fotogramas clave:

1 Aada un sonido a una pelcula en una capa independiente Para sincronizarlo con un evento de la escena, elija un fotograma clave de inicio que corresponda con el fotograma clave del evento de la escena Puede elegir cualquiera de las opciones de sincronizacin Consulte "Adicin de sonidos a una pelcula" a pagina 204 2 Cree un fotograma clave en la banda de tiempo de la capa de sonido, en el fotograma donde desee que finalice el sonido En la banda de tiempo aparece una representacin del archivo de sonido 3 Haga doble clic en el fotograma clave final y, a continuacin, un clic en la ficha Sonido del cuadro de dilogo Propiedades de fotograma 4 Elija el mismo sonido en el men emergente de Sonido 5 Elija Detener en el men emergente de sincronizacin Cuando se reproduce la pelcula, el sonido se detiene al alcanzar el fotograma clave final Al arrastrar el cabezal de lectura con Mays presionada, se repite el flujo de sonido del fotograma en que se halla Esto es muy prctico para alinear sonidos a una animacin Adicin de sonidos a botones Puede asociar sonidos con los diferentes estados del smbolo de un botn Los sonidos se almacenan con el smbolo, por lo que funcionan en todas sus instancias Para aadir sonidos a un botn: 1 Seleccione el botn en la biblioteca 2 Elija Editar en el men emergente del smbolo 3 En la lnea de tiempo del botn, aada una capa de sonido 4 En la capa del sonido cree un fotograma clave que corresponda con cada estado del botn al que desee asignar un sonido Por ejemplo, para aadir un sonido cuando el botn est presionado, cree un fotograma clave en el fotograma con la etiqueta Abajo 5 Aada un sonido al nuevo fotograma clave y elija Evento en el men emergente de sincronizacin Para asociar un sonido diferente con cada fotograma clave del botn, utilice una capa y un archivo de sonido diferentes para cada uno Tambin puede

utilizar el mismo archivo de sonido pero crear o utilizar un efecto sonoro distinto en cada fotograma del botn Exportacin de pelculas con sonido La velocidad de muestra y el grado de compresin son de gran importancia para la calidad y el tamao de los sonidos en la exportacin de pelculas Cuanto ms comprimido est un sonido y menor es la velocidad de muestra, menores son el tamao y la calidad Haga pruebas hasta obtener un resultado ptimo Controle la calidad y el tamao de exportacin de los sonidos individuales mediante los parmetros de exportacin del cuadro de dilogo Propiedades de sonido Si no se definen parmetros de exportacin para un sonido, Flash exporta el sonido con los parmetros del cuadro de dilogo Configuracin de publicacin Consulte "Configuracin de publicacin Flash" a pagina 218 Si desea cambiar la configuracin de todos los sonidos de una pelcula, introdzcala en el cuadro de dilogo Configuracin de publicacin Esta opcin es muy til si desea crear una pelcula sonora larga de alta fidelidad para uso local y una versin ms corta de baja fidelidad para la Web Nota: Tambin puede exportar todo el sonido de una pelcula como archivo WAV con Archivo > Exportar pelcula Consulte "Uso de Exportar pelcula y exportar imagen" a pagina 233 Para establecer las propiedades de exportacin de un sonido: 1 Haga clic con el botn derecho del ratn (Windows), o Control-Clic (Macintosh), en un archivo de sonido de la ventana de biblioteca y elija Propiedades en el men contextual

2 Si el archivo de sonido se edit en otra aplicacin, haga clic en Actualizar 3 Establezca la configuracin de exportacin como se describe en "Especificacin de opciones de compresin" a pagina 210 4 Haga clic en Probar y Detener para reproducir y detener el sonido Especificacin de opciones de compresin

Utilice las opciones del rea Configuracin de exportacin del cuadro de dilogo Propiedades de sonido para elegir las opciones de compresin del sonido Las opciones disponibles dependen del mtodo que se seleccione Predeterminado Utiliza la configuracin de compresin predeterminada del cuadro de dilogo Configuracin de publicacin Este parmetro no ofrece opciones adicionales ADPCM Establece la compresin para datos de sonido de 16 bits Utilice este parmetro para exportar eventos de sonido cortos como pulsaciones de botn Al seleccionar ADPCM, aparecen las opciones Convertir Estreo en Mono, Velocidad de muestra y Bits ADPCM Convertir Estreo en Mono Mezcla los sonidos estreo como mono No afecta a los sonidos mono Velocidad de muestra Establece la velocidad de exportacin del archivo Las velocidades altas mejoran la fidelidad y permiten archivos de sonido mayores Las velocidades bajas ahorran espacio en el disco Las opciones de velocidad, tanto en mono como en estreo, son las siguientes: 5 kHz es una frecuencia casi inaceptable para el discurso; 11 kHz es la calidad ms baja recomendable para un segmento breve de msica y es una cuarta parte de la velocidad de CD estndar; 22 kHz es una calidad muy comn para la reproduccin en la Web y es la mitad de la velocidad de CD estndar; 44 kHz es la velocidad acstica estndar para disco compacto (CD) Flash no puede mejorar la calidad de los sonidos Si un sonido est grabado como 11 kHz mono, Flash lo exporta con esta calidad aunque cambie la velocidad de muestra a 44 kHz estreo Bits ADPCM Determina el nmero de bits utilizados en la codificacin ADPCM Un mayor nivel de compresin reduce los archivos de sonido pero la fidelidad es inferior La opcin de 2 bits proporciona la calidad ms baja; 5 bits es la opcin que proporciona la calidad ms alta MP3 Permite exportar sonidos con la compresin MP3 Utilice esta opcin para exportar flujos de sonido largos como pistas sonoras con msica Cuando se selecciona la compresin MP3, estn disponibles las opciones Preproceso, Velocidad y Calidad Velocidad Determina la velocidad mxima del sonido producido con el codificador MP3 El parmetro Velocidad de MP3 slo aparece cuando se selecciona la opcin de compresin MP3 Cuando exporte msica, establezca una velocidad de 16 Kbps o superior para obtener un resultado ptimo La opcin Convertir Estreo en Mono slo est disponible con velocidades superiores a 16 Kbps Calidad Permite elegir entre Rpida, Media u ptima Utilice el parmetro Rpida si piensa publicar la pelcula en un sitio Web Utilice Media u ptima si piensa ejecutar la pelcula en un disco duro o en un CD

Original Exporta sonidos sin comprimir Cuando est seleccionado, puede elegir la opcin Convertir estreo en Mono y una velocidad de muestra Indicaciones para la exportacin del sonido de pelculas Adems de la velocidad de muestra y la compresin, existen otras formas de utilizar el sonido con eficacia en un pelcula y mantener un tamao de archivo reducido: Establezca los puntos inicial y final para evitar que las reas de silencio se almacenen en el archivo Shockwave Flash y reducir el tamao del sonido Extraiga el mayor partido de cada sonido mediante efectos diferentes en fotogramas clave distintos (como envolventes de volumen, bucles y puntos inicial y final) Puede obtener varios efectos con un solo archivo de sonido Utilice bucles si desea extraer la parte comn del sonido y reproducirla de forma reiterada Realice bucles de sonidos cortos para crear una msican de fondo Indicaciones para la exportacin de sonido a vdeo Las pelculas exportadas como archivos QuickTime o AVI de Windows utilizan el sonido de forma diferente a las pelculas Shockwave Flash; por ello, las consideraciones sobre el tamao de los archivos de las pelculas Flash puede no ser vlido para los vdeos QuickTime o AVI Las indicaciones para la exportacin a vdeo son las siguientes: Utilice todos los sonidos y canales que desee sin tener en cuenta el tamao del archivo Los sonidos se combinan en una sola pista al exportarlos como QuickTime o AVI de Windows El nmero de sonidos utilizados no afecta al tamao final del archivo Utilice la sincronizacin de flujos para que la animacin est sincronizada con la pista de sonido cuando la previsualice en el editor de animacin Si el sistema no es lo bastante rpido para dibujar fotogramas de animacin de forma sincronizada con la pista sonora, Flash los salta 14. Publicacin y exportacin Acerca de la publicacin y exportacin Al crear un sitio Web con Flash, a menudo deben incluirse algunos otros archivos Para abrir una pelcula del Reproductor Flash en un navegador, en primer lugar debe abrir un documento HTML que, a su vez, activa el Reproductor Flash y ejecuta la pelcula Adems de este documento HTML, debe crear una versin GIF animada de la pelcula, o una imagen JPEG o GIF, para poder visualizar la pelcula si el Reproductor Flash no est instalado El formato de archivo principal para distribuir el contenido Flash es el formato del Reproductor Flash (swf ), nico formato que admite todas las funciones

interactivas de Flash Las pelculas del Reproductor Flash pueden reproducirse de varias formas: En navegadores Internet, tales como Netscape e Internet Explorer, que estn equipados con el Reproductor Flash Con Flash Xtra en Director y Authorware Con el control ActiveX de Flash en Microsoft Office y otros sistemas anfitriones de ActiveX Como parte de una pelcula QuickTime Como un tipo de aplicacin independiente denominada proyector El formato de archivo del Reproductor Flash es un estndar abierto que pueden admitir otras aplicaciones en el futuro Para obtener informacin de ltima hora, consulte el sitio Web de Macromedia Adems del formato del Reproductor Flash, puede exportar imgenes con movimiento e imgenes estticas de Flash en una amplia gama de formatos, tales como GIF, JPEG, PNG, BMP, PICT, QuickTime o AVI Utilice el comando Publicar para crear todos los archivos que necesite para una aplicacin Web de Flash al mismo tiempo y con un nico comando El comando Publicar genera un archivo del Reproductor Flash, as como archivos grficos en varios formatos que pueden utilizarse como imgenes alternativas, y un documento HTML con todos los valores necesarios para reproducir la pelcula Si desea exportar con rapidez un nico archivo de un tipo determinado, utilice el comando Exportar Las opciones del comando Exportar estn orientadas de modo que el contenido Flash pueda modificarse en otras aplicaciones Puede exportar una pelcula entera como archivo del Reproductor Flash o como una serie de imgenes de mapas de bits Tambin puede exportar un nico fotograma o imagen como archivo de imagen En lugar de utilizar el comando Publicar, tambin puede crear su propio documento HTML con cualquier editor HTML e incluir en l las etiquetas necesarias para visualizar una pelcula Flash Antes de finalizar el proceso de publicacin, puede utilizar los comandos Probar pelcula y Probar escena para ver el resultado final de la pelcula Nota: Para modificar o actualizar una pelcula del Reproductor Flash creada con el comando Publicar, edite la pelcula Flash original y, a continuacin, utilice de nuevo el comando Publicar Las pelculas del Reproductor Flash importadas en Flash pierden algunos datos del entorno de creacin Optimizacin de pelculas Como parte del proceso de publicacin, Flash detecta de forma automtica la existencia de formas duplicadas en la exportacin y las coloca en el archivo una sola vez, y convierte los grupos anidados en grupos nicos

El tamao de una pelcula puede reducirse todava ms antes de exportarlo para reducir al mnimo el tiempo de descarga Para ello, haga lo siguiente: Utilice smbolos, animados o de otro tipo, para cada elemento que aparezca ms de una vez Siempre que sea posible, utilice animaciones interpoladas ya que requieren menos actividad general que una serie de fotogramas Limite el nmero de tipos de lnea especiales, tales como lneas quebradas, lneas punteadas, lneas desiguales, etc Las lneas slidas son ms pequeas Las lneas creadas con la herramienta Lpiz necesitan menos memoria que los trazos del pincel Utilice capas para separar de los dems elementos los elementos que cambian a lo largo de la animacin Utilice Modificar > Curvas > Optimizar para reducir al mximo el nmero de lneas separadas que se utilizan para describir las formas Limite el nmero y los estilos de fuente Cuando incluya campos de texto, utilice la opcin Incluir slo los contornos de fuentes especificados, de las propiedades Campo de texto, en lugar de la opcin Incluir todos los contornos de fuentes MP3 es el formato ms pequeo para el sonido Utilice este formato siempre que sea posible Las fuentes incrustadas aumentan el tamao del archivo, de modo que no debe utilizarlas muy a menudo No utilice elementos de mapas de bits animados; utilice imgenes de mapas de bits como elementos de fondo o estticos Limite el rea de cambio de cada fotograma; haga que el rea donde tenga lugar la accin sea lo ms pequea posible Agrupe los elementos siempre que pueda Utilice el men emergente de efectos de color del cuadro de dilogo Propiedades de instancia para crear varias instancias en color de un nico smbolo Utilice la ventana Colores para hacer coincidir la paleta de colores de la pelcula con la paleta especfica del navegador Utilice los degradados con moderacin Para poder rellenar un rea con colores degradados se necesitan aproximadamente 50 bytes ms de los que se

necesitan para rellenar la misma rea con un color slido A medida que vaya haciendo cambios, pruebe la pelcula en distintos equipos, sistemas operativos y conexiones a Internet Comprobacin del rendimiento de descarga de pelculas Compruebe las pelculas para detectar posibles lugares en los que se produzcan pausas durante el proceso de descarga Si existen datos necesarios que no se han descargado una vez que la pelcula llega a un fotograma, la pelcula se detiene hasta que llegan dichos datos El Creador de perfil para ancho de banda muestra el volumen de datos que deben enviarse por cada fotograma de la pelcula en funcin de la velocidad definida del mdem Para simular la velocidad de descarga, el Creador de perfil para ancho de banda utiliza valores estimados del rendimiento habitual de Internet, no la velocidad exacta del mdem Por ejemplo, un mdem de 28,8 Kbps puede, en teora, descargar datos a una velocidad de 3,5 Kbytes/segundo, pero si selecciona 28,8 en el men Control, Flash establece la velocidad real en 2,3 Kbytes/segundo, con el objeto de simular con ms precisin el rendimiento habitual de Internet Puede comprobar una nica escena o toda la pelcula Elija Archivo > Configuracin de publicacin para cambiar la configuracin del archivo del Reproductor Flash creado con Probar pelcula y Probar escena Consulte "Previsualizacin y prueba de pelculas" on page 52 Para comprobar el rendimiento de descarga: 1 Elija Control > Probar escena o bien Control > Probar pelcula Flash exporta la escena o pelcula actual como archivo SWF y abre dicho archivo en una ventana nueva Utiliza la configuracin de exportacin definida en el cuadro de dilogo Configuracin de publicacin Consulte "Publicacin de pelculas Flash" on page 217 La reproduccin de la pelcula empieza de inmediato 2 Elija una velocidad de descarga en el men Ver para determinar la velocidad de descarga que simula Flash Elija 14,4 Kbps, 28,8 Kbps o 56 Kbps; o bien elija Personalizar e introduzca su propia configuracin 3 Elija Ver > Creador de perfil para ancho de banda para ver un grfico del rendimiento de descarga

Cada bloque formado por una barra clara y una barra oscura es un fotograma individual de la pelcula El tamao del bloque corresponde al tamao del fotograma en bytes Si un bloque sobrepasa la lnea roja, la pelcula debe esperar hasta que dicho fotograma est cargado En modo de flujo, la cabecera indica el nmero de fotogramas cargados y el fotograma que se est reproduciendo 4 Detenga la pelcula y haga clic en las bandas sombreadas del grfico para ver los valores de un fotograma determinado en el rea de la izquierda 5 Mientras visualiza el grfico, ajuste la vista del modo siguiente: Elija Control > Mostrar flujo para activar y desactivar la barra de flujo Elija Ver > Grfico por flujo para ver qu fotogramas se detienen Elija Ver > Fotograma a fotograma para ver el tamao de cada fotograma 6 Cierre la ventana de prueba para regresar al entorno de creacin habitual Tambin puede elegir Archivo > Abrir para probar un archivo SWF existente Publicacin de pelculas Flash Utilice el comando Publicar para preparar todos los archivos necesarios para una aplicacin Flash completa en la Web El comando Publicar no slo prepara la pelcula Flash propiamente dicha para la Web, sino que tambin crea imgenes alternativas en distintos formatos que se visualizan de forma automtica si el Reproductor Flash no est disponible El comando Publicar crea el documento HTML de soporte necesario para visualizar una pelcula (o una imagen alternativa) en un navegador y controlar los valores de ste El comando Publicar tambin crea proyectores independientes tanto para sistemas Windows como para sistemas Macintosh, y vdeos QuickTime de pelculas Flash Antes de iniciar el proceso de publicacin, utilice el comando Configuracin de publicacin para elegir los formatos y especificar la configuracin Una vez haya introducido todas las opciones de Configuracin de publicacin necesarias, podr elegir Archivo > Publicar para exportar a todos los formatos seleccionados al mismo tiempo Flash almacena la Configuracin de publicacin especificada en el archivo de la pelcula, de modo que cada archivo puede tener su propia configuracin Para publicar una pelcula: 1 Elija Archivo > Configuracin de publicacin 2 Seleccione la opcin de cada formato de archivo que desea crear Si selecciona un formato para el que Flash ofrece configuraciones adicionales, aparece una pestaa nueva sobre la ficha actual del cuadro de dilogo Observe que las opciones de proyector de Windows y Macintosh no tienen configuracin propia y, por consiguiente, no tienen ficha en el cuadro de dilogo

Configuracin de publicacin Al seleccionar un formato de imgenes como, por ejemplo, GIF, JPEG o PNG, Flash aade de forma automtica el cdigo HTML necesario para visualizar la imagen si el Reproductor Flash no est disponible 3 Introduzca un nombre exclusivo para el archivo o seleccione Usar nombres predeterminados para crear cada uno de los archivos con el nombre de archivo de Flash y la extensin apropiada de dicho formato 4 Haga clic en la pestaa de las opciones de formato que desea cambiar Especifique la configuracin de publicacin para cada formato como se describe en las secciones siguientes Haga clic en Publicar para generar todos los archivos especificados una vez haya finalizado, o haga clic en Aceptar para cerrar el cuadro de dilogo sin realizar el proceso de publicacin Flash genera los archivos segn los valores especificados en Configuracin de publicacin Elija Archivo > Publicar para publicar los archivos de forma inmediata en todos los formatos especificados con la configuracin de publicacin actual Configuracin de publicacin Flash Utilice la ficha Flash del cuadro de dilogo Configuracin de publicacin para definir las opciones de la pelcula del Reproductor Flash creada durante el proceso de publicacin Cuando exporte una pelcula del Reproductor Flash, puede seleccionar varias opciones, inclusive opciones de compresin de imgenes y de sonido, y una opcin para proteger la pelcula y evitar su importacin Utilice los controles de la ficha Flash del cuadro de dilogo Configuracin de publicacin para cambiar los parmetros siguientes: Orden de carga Determina cmo se cargan las capas del primer fotograma Si se utiliza una red o una conexin de mdem lenta, Flash dibuja partes de la pelcula a medida que estn disponibles Utilice esta opcin para determinar qu aparecer en primer lugar cuando se descargue la pelcula El orden de carga slo afecta al primer fotograma Generar informe de tamao Produce un archivo de texto que puede utilizarse como gua para reducir al mximo el tamao del archivo de la pelcula Este informe de tamao muestra el nmero de bytes que utilizan distintas partes de la pelcula en el archivo final del Reproductor Flash El informe tiene el mismo nombre que la pelcula exportada, pero con la extensin txt Proteger frente a importacin Impide que se descargue la pelcula del Reproductor Flash de la Web y que se importe de nuevo en Flash Calidad JPEG Determina el porcentaje de compresin del archivo JPEG que se aplica a los mapas de bits que contiene el archivo Una imagen de baja calidad produce archivos de menor tamao, mientras que los archivos que produce una imagen de alta calidad son de mayor tamao Utilice distintos valores para determinar cul es la mejor relacin entre tamao y calidad: 100 proporciona la calidad ms alta y la compresin menor Si la imagen importada no contiene mapas de bits, este valor no tiene efecto alguno

Flujo de sonido y Evento de audio Especifique la velocidad y el porcentaje de compresin de los flujos y eventos sonoros que deben exportarse Para saber cul es la diferencia entre un flujo y un evento sonoro, consulte "Acerca de la adicin de sonidos" on page 203 Estos valores slo se aplican si no se han especificado valores para sonidos individuales en el cuadro de dilogo Propiedades de sonido, o si se ha activado la opcin Suplantar configuracin de sonido Los valores son idnticos a los valores de los sonidos individuales en el cuadro de dilogo Propiedades de sonido Consulte "Exportacin de pelculas con sonido" on page 209 Si la pelcula no tiene flujo de sonido, este valor no tiene efecto alguno Suplantar configuracin de sonido Con esta opcin, la configuracin de este cuadro de dilogo reemplaza la configuracin en el cuadro de dilogo Propiedades de sonido para sonidos individuales Esta opcin es til si se desea crear una pelcula con sonido de alta calidad para uso local, y una versin de la misma pelcula con menor calidad de sonido para la Web Consulte "Exportacin de pelculas con sonido" a pagina 209 Versin Especifica la versin del Reproductor Flash en que se reproduce la pelcula exportada Las funciones de Flash 4 no pueden utilizarse en pelculas exportadas de versiones anteriores Configuracin de publicacin de HTML Para reproducir una pelcula Flash en un navegador Web, debe crear un documento HTML que active la pelcula y especifique la configuracin del navegador Puede utilizar Publicar para generar de forma automtica el documento HTML necesario Existen parmetros HTML que determinan el lugar en que aparece la pelcula Flash en la ventana, el color de fondo, el tamao de la pelcula, etctera Estos y otros valores pueden cambiarse con las opciones de la ficha HTML del cuadro de dilogo Configuracin de publicacin Flash inserta los parmetros HTML especificados en un documento de plantilla, que puede ser cualquier documento de texto que contenga las variables de plantilla correspondientes Una plantilla puede ser un archivo HTML normal o un archivo que tambin incluya cdigo para intrpretes especiales como Cold Fusion o ASP Flash incluye varias plantillas que pueden seleccionarse Existen plantillas bsicas que slo muestran la pelcula en un navegador, y plantillas ms avanzadas que contienen cdigo para la deteccin del navegador y de otras funciones Puede utilizar las plantillas que se incluyen o crear sus propias plantillas Consulte "Creacin de plantillas para la publicacin de HTML" a pagina 239 Nota: Tambin puede introducir manualmente parmetros HTML para Flash desde cualquier editor HTML Consulte "Informacin sobre requisitos HTML de Flash" a pagina 243 Muchos de los valores que Flash modifica son parmetros de las etiquetas OBJECT y EMBED OBJECT es la etiqueta HTML que abre una pelcula Flash en Internet Explorer y EMBED es la etiqueta equivalente para Netscape Utilice los controles de la ficha HTML del cuadro de dilogo Configuracin de publicacin para cambiar los parmetros siguientes:

Plantilla Especifica la plantilla instalada que debe utilizarse Todos los archivos de plantilla de la carpeta HTML que se halla en la carpeta de la aplicacin Flash aparecen en el men emergente Para obtener una descripcin de cada plantilla, seleccione una plantilla del men emergente y haga clic en el botn Informacin de la derecha Si no selecciona ninguna plantilla, Flash utiliza una plantilla denominada Defaulthtml Si esta plantilla no existe, utiliza la primera plantilla de la lista Flash guarda la plantilla modificada con el nombre de archivo de la pelcula Flash y con la extensin de la plantilla Por ejemplo, si selecciona una plantilla denominada Estndarasp para utilizarla con una pelcula Flash denominada MiPelculaswf, el nombre del archivo resultante es MiPelculaasp Dimensiones Define los valores de los atributos WIDTH y HEIGHT de las etiquetas OBJECT y EMBED El men emergente contiene tres opciones Coincidir con pelcula define las dimensiones segn el tamao de la pelcula ste es el valor predeterminado Pxeles permite introducir el nmero de pxeles en los campos Anchura y Altura Porcentaje permite definir las dimensiones de la pelcula en relacin a la ventana del navegador Introduzca porcentajes en los campos Anchura y Altura Reproduccin Asigna valores a los parmetros LOOP, PLAY, MENU y DEVICE FONT de las etiquetas OBJECT y EMBED Pausa al comienzo establece el parmetro PLAY en FALSE y detiene la pelcula hasta que el usuario inicia la reproduccin, ya sea haciendo clic en un botn de la pelcula, o bien mediante la opcin Reproducir del men de mtodos abreviados De forma predeterminada, la opcin Pausa al inicio est desactivada, de modo que la pelcula empieza a reproducirse justo despus de haberla cargado Bucle establece el parmetro LOOP en TRUE y repite la reproduccin de la pelcula cuando llega al ltimo fotograma Anule la seleccin de esta opcin si desea parar la pelcula cuando llegue al ltimo fotograma De forma predeterminada, la opcin Bucle est activada Visualizar men establece el parmetro MENU en TRUE, de modo que existe un mtodo abreviado para el usuario cuando ste presiona el botn derecho del ratn (Windows) o Comando-Clic (Macintosh) en la pelcula De forma predeterminada, la opcin Visualizar men est activada Anule la seleccin de la opcin Visualizar men si desea que Acerca de Flash sea la nica opcin disponible en el men de mtodos abreviados Fuente de dispositivo (slo en Windows) establece el parmetro DEVICE FONT en TRUE y sustituye las fuentes suavizadas del sistema por fuentes que no estn instaladas en el sistema del usuario De forma predeterminada, la opcin Fuente de dispositivo est desactivada

Calidad Establece el valor del parmetro QUALITY de las etiquetas OBJECT y EMBED y determina el nivel de suavidad que se aplica La operacin de visualizacin suavizada precisa un procesador ms rpido para suavizar cada uno de los fotogramas de la pelcula antes de representar el fotograma en la pantalla del usuario, por lo que el parmetro QUALITY da prioridad al aspecto y a la velocidad de reproduccin Baja da prioridad a la velocidad de reproduccin frente al aspecto Con este valor, la visualizacin suavizada no se utiliza nunca Baja automtica da ms importancia a la velocidad, pero mejora el aspecto siempre que es posible La opcin Reproduccin empieza con la visualizacin suavizada desactivada Si el reproductor Flash detecta que el procesador puede gestionarla, la visualizacin suavizada se activa Alta automtica en un principio da la misma importancia a la velocidad y al aspecto, pero sacrifica el aspecto por la velocidad si es necesario La opcin Reproduccin empieza con la visualizacin suavizada activada Si la velocidad real de los fotogramas es inferior a la velocidad especificada, la visualizacin suavizada se desactiva con el objeto de mejorar la velocidad de reproduccin Utilice este valor para emular el valor de Ver > Suavizado en Flash Alta da prioridad al aspecto frente a la velocidad de reproduccin Con este valor siempre se utiliza la visualizacin suavizada Si la pelcula no contiene animacin, los mapas de bits se suavizan; de lo contrario, no se suavizan Alta es el valor predeterminado para la opcin Calidad ptima proporciona la mejor calidad de visualizacin y no tiene en cuenta la velocidad de reproduccin Las imgenes resultantes y los mapas de bits siempre se suavizan Modo de ventana (slo en Windows) Establece el parmetro WMODE de la etiqueta OBJECT, que permite utilizar las posibilidades de pelcula transparente, ubicacin exacta y trabajo por capas disponibles en Internet Explorer 40 Esta opcin slo funciona en la versin para Windows de Internet Explorer con el control Actives de Flash Ventana establece el parmetro WMODE en WINDOW y reproduce la pelcula del Reproductor Flash en su propia ventana rectangular en una pgina Web Por lo general, este valor proporciona el rendimiento ms rpido de animacin Opaca sin ventana establece el parmetro WMODE en OPAQUE Utilice este valor si desea colocar los elementos detrs de las pelculas Flash (por ejemplo, con HTML dinmico) y no desea que se visualicen Transparente sin ventana establece el parmetro WMODE en TRANSPARENT Utilice este valor para que el fondo de la pgina HTML en que se ha incluido la pelcula se visualice a travs de las partes transparentes de la pelcula Es posible que la velocidad de reproduccin de las imgenes con animacin sea inferior cuando se utiliza este valor

Alineacin Especifica el atributo ALIGN de las etiquetas OBJECT, EMBED y IMG y determina la posicin de la pelcula Flash en la ventana del navegador Predeterminado centra la pelcula en la ventana del navegador y recorta los bordes si la ventana del navegador es ms pequea que la pelcula Izquierda alinea la pelcula con el borde izquierdo de la ventana del navegador y recorta las partes superior, inferior y derecha segn sea necesario Derecha alinea la pelcula con el borde derecho de la ventana del navegador y recorta las partes superior, inferior e izquierda segn sea necesario Superior alinea la pelcula con el borde superior de la ventana del navegador y recorta las partes inferior, derecha e izquierda segn sea necesario Inferior alinea la pelcula con el borde inferior de la ventana del navegador y recorta las partes superior, derecha e izquierda segn sea necesario Escala Determina el valor del parmetro SCALE de las etiquetas OBJECT y EMBED y define la posicin de la pelcula dentro de los lmites especificados en los campos Anchura y Altura Estos valores slo son efectivos si se introduce un valor de anchura y de altura distinto del tamao original de la pelcula Predeterminada (mostrar todo) permite ver toda la pelcula en el rea especificada, al mismo tiempo que mantiene la proporcin original de la pelcula No se produce ningn tipo de distorsin Es posible que aparezcan bordes a ambos lados de la pelcula Sin borde modifica la escala de la pelcula para que sta ocupe toda el rea especificada, a la vez que mantiene la proporcin original de la pelcula No se produce ningn tipo de distorsin Es posible que algunas partes de la pelcula queden recortadas Ajuste exacto hace que toda la pelcula se vea en el rea especificada No obstante, no se intenta mantener la proporcin original de la pelcula, de modo que es posible que se produzca alguna distorsin Alineacin Flash Define el parmetro SALIGN de las etiquetas OBJECT y EMBED Los valores que elija en los mens emergentes Horizontal y Vertical determinan la gposicin de la pelcula en la ventana y, en el caso de que deba recortarse la pelcula, cmo se debe proceder Elija Izquierda, Centro o Derecha en el men emergente Horizontal, y Superior, Centro o Inferior en el men emergente Vertical Mostrar mensajes de advertencia Determina si Flash visualiza los mensajes de error que advierten sobre la existencia de un conflicto entre los valores de las etiquetas Por ejemplo, con esta opcin aparece un mensaje de error si una plantilla incluye cdigo que hace referencia a una imagen alternativa que no se especific

Configuracin de publicacin de GIF Los archivos GIF constituyen una forma fcil de exportar dibujos y animaciones simples para utilizarlos en pginas Web Los archivos GIF estndar no son ms que mapas de bits comprimidos Un GIF animado (a veces se conoce como GIF89a) ofrece una forma simple de exportar secuencias breves de animacin Flash optimiza las imgenes GIF con animacin y slo almacena los cambios realizados de fotograma a fotograma Flash exporta el primer fotograma de la pelcula como archivo GIF, a menos que se introduzca la etiqueta de fotograma #Static para indicar que se debe exportar un fotograma clave distinto Flash exporta todos los fotogramas de la pelcula actual a un GIF con animacin, a menos que se introduzcan las etiquetas de fotograma #First y #Last en los fotogramas clave correspondientes para especificar que se debe exportar un rango de fotogramas Flash puede generar un mapa de imgenes para un archivo GIF de modo que los botones que enlazan con los URL de la pelcula original sigan funcionando como enlaces en la imagen Introduzca la etiqueta de fotograma #Map en el fotograma clave en que desea crear el mapa de imgenes Si no crea ninguna etiqueta de fotograma, Flash crea un mapa de imgenes con los botones del ltimo fotograma de la pelcula Para crear un mapa de imgenes, la plantilla que seleccione debe contener la variable de plantilla $IM Consulte "Creacin de un mapa de imgenes" a pagina 242 Utilice los controles de la ficha GIF del cuadro de dilogo Configuracin de publicacin para cambiar los parmetros siguientes: Dimensiones Establece el tamao de la imagen de mapa de bits exportada en el nmero de pxeles que se introduce en los campos Anchura y Altura Si activa la opcin Coincidir con pelcula, las entradas de estos campos no tienen efecto alguno y el archivo GIF que crea Flash tiene el mismo tamao que la pelcula Flash garantiza que el tamao que se especifique mantenga siempre la proporcin de la imagen original Reproducir Determina si Flash crea una imagen esttica o una animacin Haga clic en Esttico para exportar una imagen sin movimiento Haga clic en Animado para importar un GIF con animacin Si elige Animado, debe elegir Bucle sin fin o bien introducir el nmero de repeticiones Opciones Especifica un rango de valores de aspecto para el archivo GIF exportado Optimizar colores elimina los colores que no se utilizan de la tabla de colores de un archivo GIF De este modo es posible reducir el tamao del archivo GIF en unos 1000-1500 bytes sin prdida alguna en la calidad de la imagen No obstante, si la calidad se ve afectada, puede aumentar ligeramente los requisitos de memoria Tenga en cuenta que esta opcin no tiene efecto alguno con una paleta adaptable

Suavizar activa o desactiva la visualizacin suavizada en el mapa de bits exportado El suavizado da lugar a una imagen de mapa de bits de calidad superior Sin la visualizacin suavizada, la calidad del texto es pobre No obstante, es posible que aparezca un halo de pxeles de color gris alrededor de una imagen suavizada que aparezca sobre un fondo de color Exporte la imagen sin suavizado si aparece un halo o si est creando un GIF transparente que debe aparecer sobre un fondo de varios colores Al desactivar esta opcin los archivos GIF son ms pequeos Entrelazar hace que el GIF se visualice en el navegador de forma gradual, a medida que se va descargando Un GIF entrelazado proporciona al usuario el contenido grfico bsico antes de descargar el archivo por completo, y es posible que se descargue con ms rapidez a travs de una conexin de red lenta No utilice la opcin Entrelazado con los archivos GIF animados Tramar colores slidos aplica el tramado a los colores slidos, as como a los degradados y a las imgenes Consulte la definicin de tramado que aparece a continuacin Eliminar degradados utiliza el primer color del degradado para convertir todos los degradados de la pelcula en colores slidos Los degradados aumentan el tamao de un archivo GIF y, a menudo, son de poca calidad Cuando utilice esta opcin debe elegir con cuidado el primer color de los degradados para evitar resultados inesperados El valor predeterminado es false (falso) Transparente Determina la conversin de los valores de fondo de una pelcula y de los valores alfa (transparencia) en formato GIF Elija una de las opciones siguientes del men emergente: Opaco establece el color de fondo de la pelcula en un color opaco Transparente establece el fondo de la pelcula como transparente Alfa convierte todos los colores que se hallan por debajo del valor del umbral alfa en colores transparentes (invisibles) Los colores cuyo valor alfa se halla por encima del umbral no se modifican Introduzca un valor del 0 al 255 en el cuadro Umbral de la derecha Un valor de 128 corresponde a 50% alfa Tramar Activa o desactiva el tramado y especifica el mtodo El tramado muestra los pxeles de un rango de colores parecidos para simular colores que no estn disponibles en la paleta actual Si desactiva el tramado, Flash sustituye los colores que no se hallan en la tabla de colores bsicos por el color slido de la tabla que ms se aproxima al color en cuestin; el hecho de no utilizar el tramado permite crear archivos de menor tamao, pero debe verificarse el resultado final para determinar si los colores son los deseados El tramado puede ser de gran utilidad si una imagen transparente contiene artefactos El tramado aumenta el tamao de los archivos Elija una de las opciones siguientes: Ninguno desactiva el tramado

Ordenado proporciona un tramado de buena calidad, con el menor aumento posible en el tamao del archivo Difusin proporciona la mejor calidad de tramado, pero aumenta el tamao del archivo y el tiempo de proceso en mayor medida que el tramado ordenado Esta opcin tambin funciona con la paleta de 216 colores de la Web seleccionada Tipo de paleta Define la paleta de color que debe utilizarse para la imagen Elija una de las opciones siguientes: Web 216 utiliza la paleta de 216 colores que es segura para el navegador para crear la imagen GIF De este modo se consigue una imagen de buena calidad y mayor velocidad de proceso en el servidor Adaptable analiza los colores de la imagen y crea una tabla de color exclusiva para la imagen GIF De este modo se crea el color ms preciso de la imagen, pero el archivo resultante tiene un tamao mayor que el archivo GIF creado con la paleta Web 216 El tamao del archivo GIF resultante puede reducirse con la paleta adaptable mediante la reduccin del nmero de colores de la paleta (consulte la opcin Colores mx que aparece ms adelante) Una paleta adaptable funciona mucho mejor en aquellos sistemas en los que pueden visualizarse miles o incluso millones de colores Web Snap adaptable es igual que la opcin Paleta adaptable, pero en este caso los colores que se obtienen despus de la conversin son ms parecidos a los de la paleta Web 216 La paleta de color resultante se optimiza para la imagen, pero siempre que sea posible Flash utiliza los colores de la paleta Web 216 Con esta paleta se consiguen colores de mejor calidad si la paleta Web 216 est activada en un sistema en que pueden visualizarse 256 colores Personalizada permite especificar una paleta que se haya optimizado para la imagen actual Con esta paleta se consigue la misma velocidad de proceso que con la paleta Web 216 Para utilizar esta opcin debe tener conocimientos sobre la creacin y el uso de paletas personalizadas Para elegir una paleta personalizada, haga clic en el botn que contiene tres puntos () que aparece a la derecha del cuadro Paleta en la parte inferior del cuadro de dilogo y seleccione un archivo de paleta Flash admite paletas de formato ACT, que es el mismo formato que exportan Macromedia Fireworks y otras aplicaciones de imgenes muy conocidas Colores mx Establece el nmero de colores que se utilizan en la imagen GIF Si selecciona un nmero menor de colores, puede producir un archivo ms pequeo, pero es posible que los colores de la imagen se degraden Slo puede especificar el nmero mximo de colores si seleccion Adaptable o Web Snap adaptable como opcin del men Tipo de paleta Configuracin de publicacin de JPEG

Utilice el formato JPEG para guardar una imagen como mapa de 24 bits con la mayor compresin posible Por lo general, el formato GIF es ms adecuado para exportar imgenes de lneas, mientras que el formato JPEG es mejor para imgenes que incluyen degradados o mapas de bits incrustados Flash exporta el primer fotograma de la pelcula en formato JPEG, a menos que se introduzca la etiqueta #Static de fotograma para indicar que debe exportarse un fotograma clave distinto Utilice los controles de la ficha JPEG del cuadro de dilogo Configuracin de publicacin para cambiar los parmetros siguientes: Dimensiones Establece el tamao de la imagen de mapa de bits exportada en el nmero de pxeles que se introdujeron en los campos Anchura y Altura Si activa la opcin Coincidir con pelcula, las entradas de los campos Anchura y Altura no tienen efecto alguno y Flash establece el tamao del archivo JPEG en el mismo tamao que la pelcula Flash garantiza que el tamao que se especifique mantenga siempre la proporcin de la imagen original Calidad Controla el porcentaje de compresin el archivo JPEG que se utiliza El tamao del archivo resultante es directamente proporcional a la calidad de la imagen Utilice distintos valores para determinar cul es la mejor relacin entre tamao y calidad Progresivo Muestra imgenes JPEG progresivas Estas imgenes se visualizan de forma gradual en un navegador Web y es posible que aparezcan con ms rapidez cuando se cargan a travs de una conexin de red lenta Esta opcin es parecida a la opcin de entrelazado en las imgenes GIF y PNG Configuracin de publicacin de PNG PNG es el nico formato de mapas de bits que se utiliza en distintas plataformas y que admite transparencias (canal alfa) Tambin es el formato de archivo nativo de Macromedia Fireworks Flash exporta el primer fotograma de la pelcula como archivo PNG, a menos que se introduzca la etiqueta #Static de fotograma para indicar que se debe exportar un fotograma clave distinto Utilice los controles de la ficha PNG del cuadro de dilogo Configuracin de publicacin para cambiar los parmetros siguientes: Dimensiones Establece el tamao de la imagen de mapa de bits exportada en el nmero de pxeles que se introduce en los campos Anchura y Altura Si activa la opcin Coincidir con pelcula, las entradas de los campos Anchura y Altura no tienen efecto alguno y Flash establece el tamao del archivo PNG en el mismo tamao que la pelcula Flash garantiza que el tamao que se especifique mantenga siempre la proporcin de la imagen original Profundidad de bits Especifica el nmero de bits por pxel que deben utilizarse para crear la imagen La profundidad de bits determina el nmero de colores que se utilizan en la imagen Para una imagen de 256 colores, elija 8 bits; para

obtener miles de colores, elija 24 bits; para obtener miles de colores con transparencia (32 bits), elija 24 bits con Alfa Cuanto mayor sea la profundidad de bits, mayor ser el archivo Opciones Especifique un rango de valores de aspecto para el archivo PNG que debe exportarse Optimizar colores elimina los colores que no se utilizan de la tabla de colores de un archivo PNG De este modo es posible reducir el tamao del archivo PNG en unos 1000-1500 bytes sin prdida alguna en la calidad de la imagen No obstante, provoca un aumento en los requisitos de memoria y en los procesos necesarios en el servidor Tenga en cuenta que esta opcin no tiene efecto alguno con una paleta adaptable Suavizar activa o desactiva la visualizacin suavizada en el mapa de bits exportado La visualizacin suavizada produce una imagen de mapa de bits de calidad superior Sin la visualizacin suavizada, la calidad del texto es pobre No obstante, es posible que aparezca un halo de pxeles de color gris alrededor de una imagen situada sobre un fondo de color Exporte el archivo sin visualizacin suavizada si aparece un halo, o si est creando un archivo PNG transparente que debe colocarse sobre un fondo de color Si desactiva esta opcin, el archivo PNG tendr un tamao menor Entrelazado hace que el archivo PNG exportado se visualice en u n navegador de forma gradual, a medida que se vaya descargando Un PNG entrelazado proporciona al usuario el contenido grfico bsico antes de descargar el archivo por completo, y es posible que se descargue con ms rapidez a travs de una conexin de red lenta Tramar colores slidos aplica el tramado a los colores slidos, as como a los degradados y a las imgenes Consulte la definicin de tramado que aparece a continuacin Transparente muestra una imagen PNG transparente Un archivo PNG permite que el fondo del navegador Web se visualice a travs de las partes del archivo PNG en las que no se han dibujado imgenes Si crea un archivo PNG transparente, debe definir el color de fondo desde Modificar > Pelcula para que coincida con el color de fondo de la pgina Web Utilice las opciones de Suavizar para optimizar al mximo la coincidencia de colores Eliminar degradados convierte todos los espacios degradados de la pelcula en colores slidos, con el primer color slido del degradado Los degradados aumentan el tamao de un archivo PNG y a menudo son de poca calidad Cuando utilice esta opcin debe elegir con cuidado el primer color de los degradados para evitar resultados inesperados El valor predeterminado es false (falso) Tramar Activa o desactiva el tramado y especifica el mtodo El tramado muestra los pxeles de un rango de colores parecidos para simular colores que no estn disponibles en la paleta actual Si desactiva el tramado, Flash sustituye

los colores que no se hallan en la tabla de colores bsicos por el color slido de la tabla que ms se aproxima al color en cuestin; el hecho de no utilizar el tramado permite crear archivos de menor tamao, pero debe verificarse el resultado final para determinar si los colores son los deseados El tramado puede ser de gran utilidad si una imagen transparente contiene artefactos El tramado aumenta el tamao de los archivos Elija una de las opciones siguientes: Ninguno desactiva el tramado Ordenado proporciona un tramado de buena calidad, con el menor aumento posible en el tamao del archivo Difusin proporciona el tramado de mayor calidad, pero aumenta el tamao del archivo en mayor medida que el tramado ordenado Esta opcin tambin funciona con la paleta de 216 colores de la Web seleccionada Tipo de paleta Define la paleta de color que debe utilizarse para la imagen Elija una de las opciones siguientes: Web 216 utiliza una paleta de 216 colores estndar segura para el navegador para crear la imagen PNG De este modo se consigue una buena calidad de imagen y surgen menos problemas en todos los tipos de navegador Adaptable analiza los colores de la imagen y crea una tabla de color exclusiva para la imagen PNG De este modo se crea el color ms preciso de la imagen, pero el archivo resultante tiene un tamao mayor que el archivo PNG creado con la paleta Web 216 El tamao del archivo PNG resultante puede reducirse con la paleta adaptable mediante la reduccin del nmero de colores de la paleta (consulte la opcin Colores mx que aparece ms adelante) Una paleta adaptable funciona mucho mejor en aquellos sistemas en los que pueden visualizarse miles o incluso millones de colores Web Snap adaptable es igual que la opcin Paleta adaptable, pero en este caso los colores que se obtienen despus de la conversin son ms parecidos a los de la paleta Web 216 La paleta de color resultante se optimiza para la imagen, pero siempre que sea posible Flash utiliza los colores de la paleta Web 216 Con esta paleta se consiguen colores de mejor calidad si la paleta Web 216 est activada en un sistema en que pueden visualizarse 256 colores Personalizada permite especificar una paleta optimizada para la imagen actual Para utilizar esta opcin debe tener conocimientos sobre la creacin y el uso de paletas personalizadas Para elegir una paleta personalizada, haga clic en el botn que contiene tres puntos () que aparece a la derecha del cuadro Paleta en la parte inferior del cuadro de dilogo, y seleccione un archivo de paleta Flash admite paletas de formato ACT, que es el mismo formato que exportan Macromedia Fireworks y otras aplicaciones de grficos muy conocidas

Colores mx Establece el nmero de colores que se utilizan en la imagen PNG Si selecciona un nmero menor de colores, puede producir un archivo ms pequeo, pero es posible que los colores de la imagen se degraden Slo puede especificar un valor para el nmero mximo de colores si ha seleccionado Adaptable o Web Snap adaptable como opcin del men Tipo de paleta Opciones de filtro Especifica el mtodo de filtrado para la imagen PNG Antes de comprimirla, la imagen PNG se filtra lnea a lnea para que se pueda comprimir ms Compare los resultados de las distintas opciones para determinar cul es la mejor para una imagen determinada Las opciones disponibles son las opciones estndar de filtrado de imgenes PNG: Ninguno no proporciona ningn tipo de filtro Sub transmite la diferencia entre cada byte y el valor del byte correspondiente para el pxel anterior Arriba transmite la diferencia entre cada byte y el valor del byte correspondiente del pxel que se halla en la posicin inmediatamente superior Medio utiliza la media entre los dos pxeles colindantes (izquierdo y superior) para determinar el valor del pxel Paeth calcula una funcin lineal simple de los tres pxeles colindantes (izquierdo, superior y superior izquierdo) y, a continuacin, elige como mecanismo de prediccin el pxel colindante ms cercano al valor calculado Configuracin de publicacin de QuickTime La opcin de publicacin QuickTime crea pelculas en formato QuickTime 4 Cuando Flash crea un archivo QuickTime, copia la pelcula Flash en una pista separada La pelcula Flash se reproduce en la pelcula QuickTime del mismo modo que se reproduce en el Reproductor Flash y mantiene todas sus funciones interactivas Si la pelcula Flash contiene una pelcula QuickTime, Flash la copia en una pista separada del archivo QuickTime nuevo Utilice los controles de la ficha QuickTime del cuadro de dilogo Configuracin de publicacin para cambiar los parmetros siguientes: Dimensiones Establece el tamao de la pelcula QuickTime exportada en el nmero de pxeles que se entra en los campos Anchura y Altura Si activa la opcin Coincidir con pelcula, las entradas de los campos Anchura y Altura no tienen efecto alguno y Flash establece el tamao de la pelcula nueva en el mismo tamao que la pelcula Flash Alfa Determina el modo alfa (transparencia) de la pista Flash en la pelcula QuickTime Ello no afecta a ninguno de los valores de la pelcula Flash propiamente dicha Las opciones disponibles son: Transparente Alfa convierte la pista Flash en transparente, de modo que el contenido de la pista que se halla detrs de la pista Flash es visible

Copiar convierte la pista Flash en opaca, de modo que todo el contenido de las pistas que se hallan por detrs de la pista Flash queda enmascarado Auto convierte la pista Flash en transparente si se halla por encima de cualquier otra pista, pero la convierte en opaca si se trata de la pista de la capa inferior, o si es la nica pista de la pelcula Capa Define la posicin de la pista Flash en la pelcula QuickTime Las opciones disponibles son: Superior siempre coloca la pista Flash por encima de cualquier otra pista de la pelcula QuickTime Inferior siempre coloca la pista Flash detrs de cualquier otra pista Auto coloca la pista Flash encima de cualquier otra pista si existen objetos Flash delante de objetos de vdeo en la pelcula Flash De lo contrario, coloca la pelcula Flash detrs de cualquier otra pista Flujo de sonido Con esta opcin, Flash exporta todo el flujo de sonido de la pelcula Flash a una pista de sonido de la pelcula QuickTime Comprime el sonido con los valores estndar de sonido de QuickTime Haga clic en el botn Configuracin que aparece junto a la opcin Flujo de sonido para cambiar estas opciones Consulte la documentacin de QuickTime para obtener una descripcin Controlador Especifica el tipo de controlador QuickTime que se utiliza para reproducir la pelcula exportada Las opciones disponibles son Ninguno, Estndard o QuickTime VR Bucle Determina si la pelcula QuickTime debe reproducirse de forma continuada Pausa al comienzo Especifica si la reproduccin de la pelcula QuickTime se inicia de forma automtica al abrir la pelcula Ejecutar cada fotograma Con esta opcin, QuickTime muestra todos los fotogramas de la pelcula sin omitir ninguno para mantener el tiempo Cuando esta opcin est establecida, el sonido de la pelcula QuickTime no se reproduce Allanar (contenido propio) Combina el contenido Flash y el contenido del vdeo importado en la pelcula QuickTime nueva Cuando esta opcin no est establecida, la pelcula QuickTime nueva hace referencia a los archivos importados a nivel externo; estos archivos deben estar presentes para poder reproducir la pelcula sin problemas Creacin de proyectores con Publicar

Utilice Publicar para crear proyectores para sistemas Windows y Macintosh Para crear proyectores no debe especificarse ningn valor Los proyectores Macintosh pueden crearse con las versiones Windows de Flash; no obstante, debe convertir el archivo resultante mediante un conversor de archivos como BinHex, para que dicho archivo aparezca en el Finder de Macintosh La versin Windows de Flash asigna la extensin hqx al nombre de un archivo de proyector Macintosh Uso de Previsualizacin de publicacin La funcin de visualizacin previa de publicacin exporta el tipo de archivo seleccionado en el men Previsualizacin de publicacin y lo abre en el navegador predeterminado Si previsualiza una pelcula QuickTime, Previsualizacin de publicacin inicia el reproductor de pelculas QuickTime Si previsualiza un proyector, Flash inicia el proyector El men Previsualizacin de publicacin muestra los formatos seleccionados en el cuadro de dilogo Configuracin de publicacin Tambin exporta todos los formatos con las opciones actuales de Configuracin de publicacin Para previsualizar un archivo con Previsualizacin de publicacin: 1 Utilice Configuracin de publicacin para definir las opciones de exportacin 2 Elija Archivo > Previsualizacin de publicacin y seleccione, en el submen, el formato de archivo que desee utilizar Con los valores que aparecen en Configuracin de publicacin, Flash crea un archivo del tipo especificado en la misma ubicacin que la pelcula Flash Este archivo permanece en dicha ubicacin hasta que se sobrescribe o se elimina Presione la tecla F12 para exportar y previsualizar el formato predeterminado Uso del reproductor independiente El reproductor independiente reproduce las pelculas del Reproductor Flash como si aparecieran en un navegador Web o en una aplicacin anfitriona de ActiveX El reproductor independiente se instala junto con Flash, de modo que al hacer doble clic en un archivo del Reproductor Flash, el sistema operativo inicia el reproductor independiente que, a su vez, ejecuta la pelcula Existen varias opciones FS Command para controlar las pelculas en el reproductor independiente Por ejemplo, para que el reproductor independiente utilice toda la pantalla, asigne la accin FS Command a un fotograma o botn e introduzca FullScreen como comando y True como argumento Consulte "Envo de mensajes al programa anfitrin de la pelcula" on page 175 Los nombres de pelcula del reproductor independiente son: Windows: FlashPlaexe Macintosh: FlashPlayer

Durante la ejecucin del reproductor independiente puede hacer lo siguiente: Abrir un archivo nuevo con Archivo > Abrir Cambiar la vista de la pelcula con Ver > Mostrar todo, Aumentar, Reducir o 100% Seleccionar Ver > Pantalla completa Controlar la reproduccin de la pelcula con Controlar > Reproducir, Rebobinar, Avanzar, Atrs o Bucle Crear un proyector independiente con Archivo > Crear proyector Uso de Exportar pelcula y exportar imagen Utilice Exportar para preparar el contenido Flash de modo que pueda utilizarse en otras aplicaciones A diferencia de Publicar, slo pueden especificarse valores para un tipo de medio cada vez que se utiliza Exportar pelcula o Exportar imagen Flash tampoco almacena los valores de Exportar por separado con cada archivo como lo hace con Configuracin de publicacin Utilice Publicar para crear todos los archivos necesarios para publicar una pelcula en la Web Consulte "Publicacin de pelculas Flash" on page 217 Utilice el comando Exportar pelculas para exportar todo el contenido de la pelcula Flash a uno de los tipos de archivo admitidos Si utiliza Exportar pelcula para exportar una pelcula Flash a uno de los formatos de imagen sin movimiento, Exportar crea un archivo de imagen numerado por cada uno de los fotogramas de la pelcula Tambin puede utilizar Exportar pelcula para exportar el sonido de una pelcula a un archivo WAV (slo en Windows) Utilice Exportar imagen para exportar el contenido del fotograma actual o de la imagen seleccionada a uno de los formatos de imagen sin movimiento, o a un nico fotograma de una pelcula del Reproductor Flash Al exportar una imagen Flash como archivo grfico de vectores (Illustrator), se preserva la informacin de los vectores Estos archivos pueden editarse en otros programas de dibujo basados en vectores, pero estas imgenes no pueden importarse en la mayor parte de programas de diseo de pginas ni de proceso de textos Al guardar una imagen Flash como archivo de mapa de bits GIF, JPEG, PICT (Macintosh) o BMP (Windows), la imagen pierde la informacin sobre los vectores y slo se guarda la informacin sobre los pxeles Las imgenes Flash pueden editarse exportadas como mapas de bits en editores de imgenes como Photoshop, pero a partir de ese momento no pueden editarse en programas de dibujo basado en vectores Para utilizar los comandos Exportar pelcula o Exportar imagen:

1 Si est exportando una imagen, seleccione el fotograma o la imagen de la pelcula actual que desea exportar 2 Elija Archivo > Exportar pelcula, o Archivo > Exportar imagen 3 Introduzca un nombre para el archivo de salida 4 Elija el tipo de archivo en el men emergente Formato 5 Haga clic en Guardar Si el formato seleccionado requiere ms informacin, aparece el cuadro de dilogo Exportar 6 Defina las opciones de exportacin para el formato seleccionado y haga clic en Aceptar Consulte las descripciones de las opciones de Exportar que aparecen en las secciones siguientes 7 Haga clic en Guardar Las opciones de Exportar para una pelcula Flash son idnticas a las opciones de Configuracin de publicacin Consulte "Configuracin de publicacin Flash" a pagina 218 Para consultar la descripcin de otras opciones, consulte "Informacin sobre formatos de archivos de exportacin" on page 234 Informacin sobre formatos de archivos de exportacin En esta tabla se muestran los tipos de archivos de exportacin clasificados por plataforma PNG es el nico formato de mapa de bits que se utiliza en varias plataformas y que admite las transparencias (como un canal alfa) Algunos de los formatos de exportacin que no son de mapas de bits no admiten los efectos alfa (transparencias) ni las capas de mscaras Para obtener informacin sobre un formato de archivo determinado, consulte las secciones que aparecen a continuacin

Adobe Illustrator

El formato Adobe Illustrator es ideal para intercambiar dibujos entre Flash y otras aplicaciones de dibujo como FreeHand Este formato permite realizar una conversin muy precisa de la informacin de las curvas, del estilo de las lneas y del relleno Flash permite importar y exportar formatos de Adobe Illustrator 88, 30, 50 y 60 Consulte "Uso de archivos de Adobe Illustrator" on page 122 Flash no permite utilizar el formato EPS de Photoshop ni los archivos EPS generados con Imprimir La mayor parte de programas de dibujo de Windows slo admiten las versiones Adobe Illustrator 88 3 Las versiones de formato Adobe Illustrator anteriores a la 5 no admiten los rellenos con degradado, y slo la versin 6 admite los mapas de bits El cuadro de dilogo Exportar a Adobe Illustrator contiene una sola opcin para elegir la versin del formato de archivo, cuyos posibles valores son: Adobe Illustrator 88 Adobe Illustrator 30 Adobe Illustrator 50 Adobe Illustrator 60 Mapa de bits (BMP) Utilice el formato Mapa de bits para exportar dibujos Flash a programas que aceptan imgenes de mapas de bits El cuadro de dilogo Exportar mapa de bits contiene las opciones siguientes: Dimensiones Establece el tamao de la imagen de mapa de bits exportada en pxeles Flash garantiza que el tamao que se especifique mantenga siempre la proporcin de la imagen original Resolucin Establece la resolucin de la imagen de mapa de bits exportada en puntos por pulgada (ppp) y Flash calcula de forma automtica la anchura y altura en funcin del tamao del dibujo El botn Coincidir con pantalla establece la resolucin de modo que coincida con la del monitor Utilice Resolucin como alternativa a Dimensiones Incluir Establece el tamao de la imagen de mapa de bits exportada en funcin de la opcin seleccionada Si elige rea mnima de imagen en el men emergente Incluir, las dimensiones del mapa de bits son suficientemente grandes para incluir todos los elementos del fotograma; si elige Tamao de documento, las dimensiones coinciden con las especificadas en el cuadro de dilogo Propiedades de pelcula, al que se tiene acceso desde Modificar > Pelcula Utilice Incluir como alternativa a Dimensiones Nota: Cuando se exporta una secuencia de mapas de bits, las dimensiones siempre coinciden

con el tamao de la pelcula Profundidad de color Especifica la profundidad en bits de la imagen La mayor parte de aplicaciones Windows todava no admiten la nueva profundidad de 32 bits para imgenes de mapas de bits Si tiene problemas para utilizar este formato, utilice el formato anterior de 24 bits Suavizar Activa y desactiva la funcin de imagen suavizada de Flash en la imagen de mapa de bits exportada La visualizacin suavizada produce una imagen de mapa de bits de calidad superior No obstante, es posible que aparezca un halo de pxeles de color gris alrededor de una imagen situada sobre un fondo de color, en cuyo caso, debe exportar sin visualizacin suavizada Metarchivo mejorado El formato de metarchivo mejorado (EMF) es un formato de imgenes disponible en Windows 95 y Windows NT que guarda la informacin sobre vectores y sobre pxeles La funcin de metarchivo mejorado admite mejor las curvas utilizadas en dibujos Flash que el formato Metarchivo anterior de Windows Sin embargo, muchas aplicaciones todava no admiten este formato de imgenes nuevo En el formato Metarchivo mejorado no se puede definir ninguna opcin EPS 30 con visualizacin previa Puede exportar el fotograma actual como archivo EPS 30 para utilizarlo en otra aplicacin como, por ejemplo, un documento de diseo de pginas El archivo EPS incluye una visualizacin previa que se utiliza para visualizar la ubicacin de la imagen Los archivos EPS no contienen opciones que puedan definirse PICT (Macintosh) PICT es el formato de imgenes estndar en Macintosh y puede contener informacin sobre mapas de bits o sobre vectores El cuadro de dilogo Exportar PICT incluye las opciones siguientes: Dimensiones Indica el tamao de la imagen de mapa de bits exportada expresado en pxeles Flash garantiza que el tamao que se especifique mantenga siempre la proporcin de la imagen original Resolucin Indica la resolucin de la imagen en puntos por pulgada (ppp), y Flash calcula de forma automtica la anchura y la altura en funcin del tamao del dibujo El botn Coincidir con pantalla establece la resolucin de modo que coincida con la del monitor Por lo general, las imgenes PICT de mapas de bits con una resolucin de 72 ppp se ven mejor en la pantalla

Incluir Las opciones que incluye son rea mnima de imagen, que establece las dimensiones del mapa de bits de modo que puedan incluir todos los elementos del fotograma; y Tamao de documento, que establece las dimensiones de modo que coincidan con las especificadas en el cuadro de dilogo Propiedades de pelcula, al que se tiene acceso desde Modificar > Pelcula Profundidad de color Designa el tipo de archivo PICT, basado en objetos o mapa de bits Por lo general, las imgenes basadas en objetos tienen mejor aspecto cuando se imprimen y, aun cuando se modifique su escala, el aspecto no se ve afectado Las imgenes PICT de mapas de bits generalmente aparecen mejor en la pantalla y pueden manipularse en aplicaciones tales como Adobe Photoshop En los archivos PICT de mapas de bits tambin puede elegir una gran variedad de profundidades de color Incluir Postscript Esta opcin slo est disponible en los archivos PICT basados en objetos, para incluir informacin que optimice la impresin en impresoras PostScript Esta informacin aumenta el tamao del archivo y es posible que no se reconozca en todas las aplicaciones QuickTime La opcin Exportar QuickTime crea pelculas en el formato QuickTime 4 Las opciones de Exportar QuickTime son idnticas a las opciones de publicacin de QuickTime Consulte "Configuracin de publicacin de QuickTime" on page 230 Vdeo QuickTime (Macintosh) La opcin Vdeo QuickTime slo est disponible en sistemas Macintosh Exporta con el formato de archivo QuickTime 3, de modo que todo el contenido Flash tiene el formato de mapa de bits Cuando se utiliza esta opcin, la pelcula Flash pierde toda su interactividad Este formato es muy til si se desea cambiar el contenido Flash en una aplicacin de edicin de vdeo Las opciones disponibles en el cuadro de dilogo de exportacin de Vdeo QuickTime son: Tamao Especifica una anchura y una altura en pxeles para los fotogramas de una pelcula QuickTime De forma predeterminada, slo debe especificar la anchura o la altura, ya que la otra dimensin se establece de forma automtica para mantener la proporcin de la pelcula original Si anula la seleccin de Mantener proporcin, puede establecer la anchura y la altura Formato Selecciona la profundidad del color Suavizar Activa y desactiva la visualizacin suavizada de Flash en la pelcula QuickTime exportada De este modo se mejora el aspecto de las imgenes de los fotogramas en mapa de bits No obstante, las imgenes con visualizacin suavizada es posible que tengan un halo si se colocan sobre un fondo de color Compresor Selecciona un compresor QuickTime estndar

Calidad Controla el porcentaje de compresin aplicado a la pelcula El efecto exacto depende del compresor seleccionado Formato de sonido Establece la velocidad del sonido en la pelcula Las velocidades altas dan lugar a una mejor fidelidad y a archivos de mayor tamao Las velocidades bajas permiten ahorrar espacio en el disco AVI de Windows (Windows) El formato AVI de Windows es el formato de pelcula estndar de Windows y es un buen formato si se desea abrir una animacin Flash en una aplicacin de edicin de vdeo Puesto que AVI es un formato basado en mapas de bits, las pelculas que contienen animaciones largas o de alta resolucin es posible que sean de larga duracin Las opciones del cuadro de dilogo de exportacin del formato AVI de Windows son: Dimensiones Especifica una anchura y altura en pxeles para los fotogramas de una pelcula AVI Slo debe especificar la anchura o la altura ya que la otra dimensin se calcula de forma automtica para mantener la proporcin de la pelcula original Anule la seleccin de Mantener proporcin si desea definir tanto la anchura como la altura Formato de vdeo Seleccione una profundidad de color La gran mayora de aplicaciones todava no admiten el formato de imgenes de 32 bits de Windows Si tiene problemas para utilizar este formato, utilice el formato anterior de 24 bits Suavizar Activa la funcin de visualizacin suavizada en la pelcula AVI exportada El efecto de suavizacin da lugar a pelculas de mayor calidad Sin embargo, es posible que aparezca un halo de pxeles en color gris alrededor de una imagen situada sobre un fondo en color, en cuyo caso debe exportar la imagen sin el efecto de visualizacin suavizada Comprimir vdeo Visualiza un cuadro de dilogo en que pueden seleccionarse las opciones estndar de compresin AVI Metarchivo de Windows El formato Metarchivo de Windows es el formato grfico estndar de Windows y se admite en la gran mayora de aplicaciones Windows Los resultados obtenidos al importar y exportar archivos en este formato son muy buenos En la exportacin de este formato no existe ninguna opcin disponible Audio WAV (Windows) La opcin WAV de Exportar pelcula exporta todos los sonidos de la pelcula actual en un nico archivo WAV en que puede especificar el formato del sonido Las opciones del cuadro de dilogo Exportar WAV de Windows son:

Formato de sonido Determina la frecuencia de muestreo, la velocidad y el valor de sonido mono o estreo del sonido exportado Estas opciones son 5, 11, 23 y 44 kHz, a 8 16 bits mono o estreo Ignorar sonidos de evento Excluye los eventos sonoros del archivo exportado Creacin de plantillas para la publicacin de HTML Durante el proceso de publicacin, Flash inserta los parmetros de Configuracin de publicacin en una plantilla que se selecciona en la ficha HTML Una plantilla es un archivo de texto que incluye variables especiales que empiezan por el signo del dlar ($) Utilice \$ si debe utilizar un $ con otra finalidad en este mismo documento Flash sustituye el valor apropiado de cada variable de la plantilla Una plantilla puede ser cualquier archivo de texto que contenga las variables de plantilla apropiadas Flash no realiza ningn cambio en la plantilla, a excepcin de los cambios en las variables que sta contiene Por consiguiente, una plantilla puede contener cualquier contenido HTML para la aplicacin, e incluso cdigo para intrpretes especiales del tipo Cold Fusion o ASP Flash guarda la plantilla modificada con el nombre de archivo de la pelcula Flash y con la extensin de la plantilla Por ejemplo, si selecciona una plantilla denominada Estndarasp para utilizarla con una pelcula Flash denominada MiPelculaswf, el nombre del archivo resultante es MiPelculaasp No es necesario que una plantilla incluya todas las variables de plantilla ya que Flash no inserta valores para las variables que no existen y deja los valores predeterminados Si no se ha seleccionado ninguna plantilla en el cuadro de dilogo Configuracin de publicacin, Flash utiliza una plantilla denominada Defaulthtml Si esta plantilla no existe, Flash utiliza la primera plantilla de la lista Flash almacena las plantillas en una carpeta denominada HTML que se halla dentro de la carpeta de la aplicacin Flash Las plantillas Flash tienen las caractersticas siguientes: Un ttulo de una lnea que aparece en el men emergente Plantilla Una descripcin ms detallada que aparece al hacer clic en el botn Informacin Las variables de plantilla empiezan por $, que indica la posicin en que deben sustituirse los valores de los parmetros cuando Flash genera un archivo de salida En las tablas siguientes se indican las variables de plantilla que Flash reconoce Para obtener una definicin de todas las etiquetas de estas variables, consulte "Informacin sobre requisitos HTML de Flash" on page 243

Creacin de un mapa de imgenes Flash puede generar un mapa de imgenes con cualquier imagen, de modo que los botones que tengan enlace con los URL en la pelcula Flash original sigan funcionando como tales si se sustituye una de las imgenes Flash inserta el cdigo del mapa de imgenes en una plantilla cuando localiza la variable de plantilla $IM La variable $IU identifica el nombre del archivo GIF Por ejemplo, el cdigo siguiente de una plantilla: $IM <IMG SRC=$IS usemap=$IU WIDTH=$IW HEIGHT=$IH BORDER=0> puede producir el cdigo siguiente en el documento HTML creado por Publicar: <MAP NAME="mipelcula"> <AREA COORDS="130,116,214,182" HREF="[Link]

</MAP> <IMG SRC="mipelculagif" usemap="#mipelcula" WIDTH=550 HEIGHT=400 BORDER=0> Introduzca la etiqueta de fotograma #Map en el fotograma clave en que desea crear el mapa de imgenes Si no crea ninguna etiqueta de fotograma, Flash crea un mapa de imgenes con los botones del ltimo fotograma de la pelcula Creacin de un informe de texto La variable de plantilla $MT hace que Flash inserte todo el texto de la pelcula Flash actual como comentario en el cdigo HTML Es muy conveniente para indexar el contenido de una pelcula y hacer que est visible para las herramientas de bsqueda Creacin de un informe de URL La variable de plantilla $MU hace que Flash genere una lista de los URL a los que hacen referencia las acciones de la pelcula actual e inserta dicha lista en la ubicacin actual como documento De este modo las herramientas de verificacin de enlaces pueden verificar los enlaces de la pelcula Uso de variables de plantilla abreviadas Las variables de plantilla $PO (para etiquetas OBJECT) y $PE (para etiquetas EMBED) son elementos abreviados muy tiles Ambas variables hacen que Flash inserte en una plantilla cualquier valor que no sea predeterminado para algunos de los parmetros OBJECT y EMBED ms comunes de Flash, inclusive PLAY ($PL), QUALITY ($QU), SCALE ($SC), SALIGN ($SA), WMODE ($WM), DEVICEFONT ($DE) y BGCOLOR ($BG) Consulte la plantilla predeterminada que aparece en la seccin siguiente para ver un ejemplo de uso de estas variables Plantilla de ejemplo A continuacin se muestra un ejemplo de un archivo de plantilla que incluye muchas de las variables de plantilla utilizadas habitualmente $TTFlash Only (Default) $DS Utilice una etiqueta OBJECT y EMBED para ver Flash $DF <HTML> <HEAD>

<TITLE>$TI</TITLE> </HEAD> <BODY bgcolor="$BG"> <!-- URL utilizados en la pelcula --> $MU <!-- texto utilizado en la pelcula --> $MT <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase="[Link] ,0" ID=$TI WIDTH=$WI HEIGHT=$HE> $PO TYPE="aplicacin/x-shockwave-flash" PLUGINSPAGE="[Link] P1_Prod_ Version=ShockwaveFlash"> </OBJECT> </BODY> </HTML> Informacin sobre requisitos HTML de Flash El comando Publicar crea un documento HTML con todos los parmetros definidos en el cuadro de dilogo Configuracin de publicacin Si no tiene muchos conocimientos sobre el lenguaje HTML, puede utilizar Publicar para especificar los cambios en los valores HTML Si tiene conocimientos sobre el lenguaje HTML, puede modificar o introducir parmetros HTML de forma manual en un editor HTML, crear sus propios archivos HTML para controlar una pelcula Flash, o crear sus propias plantillas HTML para utilizarlas con el comando Publicar Uso de OBJECT y EMBED

Para ver una pelcula del Reproductor Flash en un navegador Web, un documento HTML debe utilizar las etiquetas EMBED y OBJECT con los parmetros correspondientes Para la etiqueta EMBED, todos los valores (tales como HEIGHT, WIDTH, QUALITY y LOOP) son atributos que aparecen entre los parntesis angulares de la primera etiqueta EMBED Por ejemplo: <EMBED SRC="NombrePelculaswf" WIDTH="100" HEIGHT="100" PLAY="true" LOOP="true" QUALITY="high" PLUGINSPAGE="[Link] indexcgi?P1_Prod_Version=ShockwaveFlash"> </EMBED> Para OBJECT, existen cuatro valores (HEIGHT, WIDTH, CLASSID y CODEBASE) que son atributos que aparecen entre la etiqueta OBJECT; los dems son parmetros que aparecen por separado y que se denominan etiquetas PARAM Por ejemplo: <OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="100" HEIGHT="100" CODEBASE="[Link] swflashcab#version=4,0,0,0"> <PARAM NAME="MOVIE" VALUE="NombrePelculaswf"> <PARAM NAME="PLAY" VALUE="true"> <PARAM NAME="LOOP" VALUE="true"> <PARAM NAME="QUALITY" VALUE="high"> </OBJECT> Para poder utilizar ambas etiquetas al mismo tiempo, site la etiqueta EMBED justo antes de cerrar la etiqueta OBJECT, de este modo: <OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="100" HEIGHT="100" CODEBASE="[Link] swflashcab#version=4,0,0,0"> <PARAM NAME="MOVIE" VALUE="NombrePelculaswf">

<PARAM NAME="PLAY" VALUE="true"> <PARAM NAME="LOOP" VALUE="true"> <PARAM NAME="QUALITY" VALUE="high"> <EMBED SRC="NombrePelculaswf" WIDTH="100" HEIGHT="100" PLAY="true" LOOP="true" QUALITY="high" PLUGINSPAGE="[Link] indexcgi?P1_Prod_Version=ShockwaveFlash"> </EMBED> </OBJECT> Nota: Si utiliza tanto la etiqueta OBJECT como la etiqueta EMBED, utilice valores idnticos para cada atributo o parmetro a fin de garantizar que la reproduccin sea la misma en distintos navegadores swflashcab#version=4,0,0,0 es opcional No lo incluya si no desea comprobar el nmero de versin A continuacin se presenta una lista de atributos y parmetros de etiqueta que le ayudar a comprender el documento HTML que crea el mandato Publicar y a escribir sus propios documentos HTML para insertar pelculas Flash Todos los elementos son vlidos para ambas etiquetas, OBJECT y EMBED, a menos que se indique lo contrario Las entradas que presentan un asterisco son opcionales Cuando cree una plantilla, puede sustituir una de las variables que se indican aqu por el valor necesario Consulte "Creacin de plantillas para la publicacin de HTML" on page 239 Configuracin de un servidor Web para Flash Para que un servidor Web pueda tener acceso a sus archivos, el servidor debe poder identificarlos como archivos del Reproductor Flash para poder visualizarlos Si falta el tipo MIME o el servidor no lo ha entregado de forma correcta, es posible que el navegador muestre mensajes de error o una ventana en blanco con un icono que contiene una pieza de puzzle A fin de garantizar que los visitantes puedan ver sus pelculas, usted (o el administrador del sistema) debe aadir los tipos MIME del Reproductor Flash a los archivos de configuracin del servidor y asociar dichos tipos a las extensiones de archivo del Reproductor Flash Los sufijos y tipos de MIME ms importantes son: Si est administrando su propio servidor, consulte la documentacin de software del servidor para obtener instrucciones sobre cmo aadir o configurar tipos MIME Si no administra su servidor, pngase en contacto con el proveedor

de Internet, con el responsable de las pginas Web o con el departamento de TI y solicite que aadan la informacin de los tipos MIME Si su sitio se halla en un servidor Macintosh, tambin debe definir los parmetros siguientes: Accin: Binaria; Tipo: SWFL; y Autor: SWF2

Fuente: [Link]

FINAL CUT PRO 5


Final Cut Pro 5, la mejor eleccin para editores profesionales de todo el mundo, proporciona unas herramientas de edicin potentes y precisas que funcionan con prcticamente cualquier formato, desde DV y HDV nativo hasta HD sin compresin. Final Cut Pro est diseado para ofrecer la mxima velocidad, gracias a su arquitectura de efectos multicanal en tiempo real, herramientas de edicin multicmara y correccin cromtica avanzada. Final Cut Pro, integrado de manera intuitiva con las dems aplicaciones de audio y vdeo profesional de Apple, te brinda ms opciones creativas y mayor control tcnico que nunca.

Edita cualquier cosa:


Gracias a su compatibilidad con prcticamente cualquier formato de vdeo desde una misma aplicacin, Final Cut Pro 5 te permite editar desde DV y SD hasta DVCPRO HD y vdeo sin compresin en alta definicin de 10 bits, o trabajar con nuevos formatos nativos, como HDV (grupos grandes de imgenes MPEG2) o IMX a 50 Mbps.

Compatibilidad con HDV de manera nativa


A diferencia de otras soluciones, Final Cut Pro 5 captura contenido HDV va FireWire y conserva su formato original, transfirindolo al sistema sin prdidas. Pasa el HDV nativo mediante FireWire a una cmara o pletina HDV, o transfirelo a DVD Studio Pro 4 para conseguir un flujo de trabajo nativo en HDV de principio a fin.

Proceso sin cinta:


Captura y reproduce vdeo con total precisin utilizando pletinas profesionales, o sin cinta en absoluto gracias a la compatibilidad con los nuevos soportes P2 de Panasonic. Accede y navega por el contenido de dispositivos P2 desde el Macintosh, copia los archivos que necesites y comienza a editarlos. Funciona con DVCPRO, DVCPRO 50 y DVCPRO HD.

Edicin multicmara:
Visualiza y edita al mismo tiempo desde diferentes fuentes en tiempo real gracias a la nueva edicin multicmara de DV, SD y HD. Agrupa hasta 128 recursos en un clip de vdeo mltiple, y despus aade o elimina cmaras en cualquier momento, con total flexibilidad. Salta entre los fotogramas, con efectos o sin ellos, y monta las secuencias automticamente basndote en un cdigo de tiempo.

Dynamic RT Extreme:
Gana tiempo con el procesamiento de efectos en tiempo real, que se ajusta a las posibilidades de tu sistema, desde DV hasta HD sin compresin. Dynamic RT ajusta instantneamente la calidad de la imagen y la velocidad de fotogramas para obtener una reproduccin perfecta y ampliar el rendimiento a medida que aumenta la potencia de la CPU. T mismo defines las preferencias de Dynamic RT para obtener el mximo control.

Audio multicanal
Graba y copia hasta 24 canales de sonido de alta resolucin de 24 bits a 96 kHz de una sola pasada. Final Cut Pro 5 es totalmente compatible con dispositivos MCP: Mackie Control, Mackie Control XT, Logic Control, y Logic Control XT. Lo que permite utilizar mesas de control externas para mezclar y grabar efectos de fundido automticos simultneamente. Mezcla y graba efectos de fundido automticos simultneamente, y disfruta de comunicacin bidireccional entre tu sistema y la mesa de control.

Compatibilidad con Xsan mejorada


La ventaja que ofrece Final Cut Pro 5 est muy clara: edicin digital no lineal de alto rendimiento, compatibilidad con casi cualquier formato de vdeo, capacidad de ampliacin y posibilidad de funcionar y comunicarse con cualquier dispositivo. No importa si trabajas solo o colaboras en un equipo: Final Cut Pro ofrece la potencia y la flexibilidad en tiempo real que necesitas para enfrentarte a cualquier proyecto.

[Link]

5.14 Creacin y manipulacin de objetos con formatos de audio (compresin de sonido, formato MIDI, MP3).
Software de edicin y manipulacin del audio digital

Introduccin
Cuando hablamos de herramientas de edicin y manipulacin del audio digital nos estamos refiriendo, sin duda alguna, a todas aquellas aplicaciones en forma de software, y en cierta medida hardware, que nos permiten alterar las cadenas de 0 y 1 que forman el audio digital. En la prctica existen muchas aplicaciones de la tecnologa del audio digital que nada tienen que ver con composicin / produccin de msica. Aunque slo nos referiremos a estas ltimas, el audio digital se aplica actualmente en tecnologa de telefona mvil, sonares, radares, exploracin del espacio, reduccin de reunidos en los coches ("anulacin" del audio por inversin de fase), aplicaciones mdicas, psicologa, etc. slo por citar un ejemplo de lo ms variado. Centrmonos en el dominio de la msica, nuestra ambicin. En nuestro caso, las necesidades son el poder, en primer lugar, registrar y almacenar audio digital, alterar los datos almacenados y reproducirlos. Si bien el primer escaln y ltimo son realmente exactos (grabar y reproducir no conlleva confusin alguna), "alterar los datos grabados" incluye todo un abanico de funciones, manipulaciones y procesos donde la imaginacin es slo el limite. Hablamos de la edicin / proceso de audio digital, que puede ser destructiva (el archivo se procesa y se altera) o a tiempo real (se calcula el resultado a medida que va sonando y el archivo no se modifica) Un software que tratase el audio debiera, en primer lugar capturar el audio. Existen muchas aplicaciones informticas shareware que permiten hacer eso, pero en el entorno profesional o home studio se delimitan muy claramente los tipos de aplicaciones y sus usos: Editor de audio digital (por ejemplo Sound Forge, WaveLab...) Multipistas de audio digital (por ejemplo Nuendo, Pro Tools...) Secuenciador MIDI / audio (por ej. Cubase VST, Logic Audio...)

Editor de audio digital (Editor Wave)


En este grupo englobaremos todas las aplicaciones que permiten grabar, importar / exportar y manipular audio digital de forma muy extensa sin incluir funciones de mezcla y produccin musical. Esto significa que el programa no posee la capacidad de reproduccin de mltiples pistas de forma simultnea con un mezclador asociado en el que poder realizar la mezcla y ecualizacin de dichas pistas. Un buen editor de audio debe poder abrir muchos formatos de archivo. Aunque en el mundo del PC se utilizan, bsicamente, los formatos "wav" y "AIFF" y en Mac "snd II" y tambin "AIFF", existen muchos otros formatos dedicados a la multimedia en general (audio para Internet, juegos, codificacin, compresin, etc..) y sobretodo formatos de audio de hardware externo al ordenador como grabadores de audio digital autnomos o samplers (sintetizadores que utilizan muestras de audio digital como ondas para sus osciladores). Los samplers suelen incluir una unidad de discos, conector SCSI e incluso unidades ZIP. Las muestras utilizadas por stos pueden ser cargadas y abiertas por un editor de audio que posea la habilidad de leer esos datos. Esto amplia enormemente las posibilidades del sampler ya que podemos suplir las carencias de ste (por ejemplo, si nuestro sampler es barato y posee una pobre edicin de audio) con la ayuda de un editor de audio. El sampler es un instrumento electrnico ampliamente utilizado, el porcentaje de usuarios de un editor de audio que poseen un sampler es muy elevado. Es normal que los editores de audio tengan en cuenta este dato. Existen muchos samplers que no poseen unidad de discos y para stos se ofrecen opciones de importacin de archivos mediante volcados MIDI (una tcnica extremadamente lenta) o transferencias va SCSI.

Cuadro de dilogo de la transmisin de audio digital va MIDI / SCSI de Sound Forge 5.0

Kurzweil K-2000 el sintetizador / sampler referido en el grfico anterior

En cuando a la edicin del audio, la gran mayora de las funciones son destructivas, es decir alteran los datos originalmente grabados, eso s, ofrecen historial de procesos "Undo" (Deshacer) con lo que recuperar las distintas versiones del audio. Gran parte de la edicin de los editores de audio se basa en procesos utilizados en el proceso de masterizacin, es decir la creacin del archivo master final. Estas herramientas son procesos de ecualizacin, dinmica y dithering mayoritariamente. El dither es un sistema de reduccin del ruido y distorsin producido por el truncamiento de bits (al pasar de 24 a 16 bits) o incluso en pasajes de msica en que se utilizan menos bits para representar la seal (msica clsica con baja dinmica por ejemplo). El dither aade un tipo de ruido que elimina el ruido "aliasing" automticamente. Se incluyen, naturalmente, otros procesos no tan comunes en la masterizacin, como pueden ser efectos tipo reverberacin, todo tipo de retardos (delay) y efectos de modulacin (chorus, flanger, wha-wha, ensemble) y reduccin de la calidad (distorsin y reduccin de bits). Cabe destacar que los algoritmos de los procesos destructivos (no a tiempo real) deben tener ms calidad que los procesos a tiempo real ya que no existe una exigencia de rapidez de proceso pues el resultado no debe entregarse a tiempo real. Por otro lado, al ser procesos destructivos, los editores de audio suelen incluir utilidades de proceso y conversin por lotes, es decir, poder listar "x" archivos de audio, seleccionar los procesos a aplicar y que el programa se encargue del resto mientras nos vamos a cenar...Otro aspecto importante son las funciones de medicin, anlisis y estadsticas del audio. A parte de mostrar espectrogramas del audio (representaciones del audio dependiendo de la amplitud y frecuencias).

Sound Forge mostrando su anlisis de frecuencias de un archivo de audion (izquierda) y un sonograma del mismo (derecha)

El eje horizontal muestra las frecuencias, y el vertical la amplitud (nivel) de stas, es decir que visualizamos la amplitud de cada frecuencia y eso nos dice la "cantidad" de graves, medios y agudos del audio. Como el audio es un evento que se sucede en el tiempo, el anlisis de "x" tiempo de audio dara como resultado espectrograma en cascada que nos indicar las variaciones de la amplitud (lase volumen) de las frecuencias en el tiempo. El espectrograma utiliza el modelo de anlisis de Fourier. Existen variaciones como el sonograma que muestra el contenido de frecuencias en forma de colores formando sorprendentes grficos.

La espectacular grfica 3D de WaveLab 3.0 generada a partir de la amplitud de las frecuencias en el tiempo.

Las estadsticas de audio nos indican el volumen mximo y mnimo del audio, volumen medio, duracin, picos mximos, desviaciones del eje 0 (DC-Offset), etc. Existen funcionalidades extra que pueden ayudar en el mundo del video. Por ejemplo, extraer el audio de una pelcula digital, procesarlo (o sustituirlo) y volver a montar la pelcula final. Otra funcionalidad extra (aunque anteriormente muy utilizada, antes de la aparicin de los secuenciadores MIDI / audio) son las listas de reproduccin. Creando regiones (marcando fragmentos del audio y dndoles un nombre) para posteriormente situar su orden de reproduccin en una lista virtual. Esta funcin se combina con la capacidad del programa para sincronizarse a cdigo de tiempo SMPTE, lo cual es imprescindible para sincronizar el audio a video externo. Tambin resaltar las funciones de exportacin del audio. En ese sentido las opciones son muy completas aunque destaca una curiosidad...los codificadores mp3 suelen pagarse, es decir suelen ser opciones extra con un precio extra (aunque valen lo mismo que una buena cena para dos). El resultado obtenido con stos es superior a los codificadores mp3 shareware que se encuentran en Internet, como por ejemplo el popular algoritmo Fraunhofer IIS.

La ltima funcionalidad propia de estas aplicaciones es tambin el ltimo proceso en el largo camino de creacin de un disco; la creacin del CD. Aunque existen varias aplicaciones shareware que permiten crear un CD de audio, los editores incluyen edicin de las pistas del CD grfica utilizando formas de onda en las que podemos crear fundidos de volumen de entrada y salida entre otras avanzadas funciones, aunque no tan centradas como un software de creacin de CD de pago, como por ejemplo Get it On CD de Steinberg que ofrece la posibilidad de crear CD en todos los formatos disponibles incluyendo, naturalmente, CD de audio.

WaveLab3.0 mostrando dos pistas de una grabacin a CD

Existe un grupo muy pequeo de editores de audio dedicados a procesos muy concretos. Podemos hablar de aplicaciones de restauracin de audio como Clean 3.0 tambin de Steinberg (programas que slo se dedican a recuperar la calidad del audio suprimiendo artefactos y ruidos), creacin y edicin de loops rtmicos (entindase loops como fragmentos de audio de varios compases exactos fcilmente manipulables) como ReCycle de Propellerhead, entre otros.

Clean 3.0 dedicado por enteroa la restauracin de audio

A continuacin tienes un listado de las aplicaciones de edicin de audio ms comnmente utilizadas:

Sound Forge 5.0 (PC) WaveLab 3.04 (PC) Peak (Mac) Spark (Mac)

Puedes encontrar ms informacin en esta misma web, en la seccin Productos

Sound Forge de Sonic Foundry (izquierda) y WaveLab de Steinberg (derecha)

Multipistas de audio digital


Los multipistas de audio son aquellas aplicaciones que permiten grabar, manipular y mezclar audio digital. Estos programas pueden reproducir varios archivos de audio de forma simultnea, es decir, al mismo tiempo en forma de pistas. Por esta razn, los archivos de audio de la cancin deben poseer el mismo formato (mismos kHz y bits) aunque existe un grupo de programas muy selecto que realiza una conversin de archivo a tiempo real en el caso de que los archivos posean un formato distinto. En las pistas el audio se dispone en forma de regiones o clips de audio, que son una representacin virtual de un fragmento del audio del disco duro. Es posible repetir de forma muy sencilla y rpida estos fragmentos, aplicarles curvas de volumen y construir, en general, un nuevo "arreglo" de la cancin mediante la reestructuracin de los fragmentos. Las pistas estn asociadas a un mezclador que permite la produccin de audio y mezclas. Cada pista posee un canal en dicho mezclador en el que se puede ajustar el volumen, panorama, ecualizacin, insertar efectos (plug-ins en distintos formatos) etc... La mezcla se realiza a tiempo real lo cual supone que son aplicaciones muy exigentes con el ordenador, consumen muchos ms recursos que un editor de audio (baste decir que Sound Forge 4.0 puede funcionar en un 486 a 66Mhz y 32 Mb de memoria RAM). Un multipistas de audio requiere una tarjeta de audio profesional que aparte de una buena calidad de audio posea un chip DSP que acelere la gestin y trasmisin del audio liberando al ordenador de esta tarea. Estas tarjetas suelen incluir un tipo de drivers (controladores por software del hardware) muy especial con tiempos de latencia (tiempo de respuesta de las ordenes de audio) muy bajos. Existen drivers tipo ASIO (de Steinberg, cdigo abierto), EASI (de Emagic, muy similar a ASIO), DAE (de Digidesign, un "super-driver" que incluye todo el manejo del motor DSP de Pro Tools) y E-WDM (de Ego-Sys, un formato que mejora el nuevo WDM o Windows Model Driver de Microsoft. Este formato es muy nuevo y todava no ha cuajado en la comunidad de programadores). Estos drivers deben ser proporcionados por los fabricantes de las tarjetas de audio profesionales, siendo el mas comn, sin duda alguna y con diferencia el formato ASIO (ASIO 2.0 en la actualidad). Los drivers multimedia normales (insuficientes en el mundo de los multipistas y secuenciadores MIDI) son los llamados MME o Microsoft Multimedia Extensions y Direct X. Los multipistas de audio incluyen una breve edicin de audio, es decir, algunas funciones propias de un editor de audio que suelen ser destructivas. No poseen, sin embargo, funciones de importacin / exportacin de muestras va MIDI o SCSI, herramientas de anlisis o listas de reproduccin (para eso ya tiene las propias pistas de audio, cada pista es en realidad una lista de reproduccin). Las funciones de procesado de volumen, dinmica y efectos se calculan de forma independiente por cada pista aunque la mesa virtual suele incluir subbuses, envos y retornos de efectos tanto internos (por software) como externos (utilizando las entradas y salidas de la tarjeta, para lo cual sta debe poseer mltiples entradas y salidas de audio). El proceso de los efectos puede ser de dos tipos (que pueden combinarse entre s)

Motorola DSP legendario

56002,

modelo

El moderno Motorola DSP frances Dream tipo multimedia empleado DSP56301 empleado por casi en la conocida tarjeta ISIS todos los fabricantes

DSP a 32 bits de Analog Devices empleado en los sistemas Pulsar

DSP de consumo empleado en la tarjeta ISIS y algn modelo antiguo de Midiman

1. Proceso por DSP fsico: Los efectos son procesados por chips DSP ubicados en tarjetas PCI especificas, el ejemplo clsico es Pro Tools, un excelente software acompaado de una potente tarjeta con 6, 12 o 18 chips DSP ampliable. En este caso el ordenador solamente gestiona los grficos del programa y realiza un control exhaustivo de todos los procesos, pero en ningn caso requiere una ingente cantidad de recursos (lase Mhz de velocidad de proceso). Los efectos DSP existen porqu un mismo fabricante desarrolla el hardware (la tarjeta DSP) y el software, lo cual supone una dependencia hacia ese fabricante. No obstante esta es la solucin ms profesional, sin duda alguna. En la actualidad hay varios formatos de plug-ins por DSP que encontrars en la tabla inferior. 2. Proceso nativo: Los efectos nativos son los ms comunes y no requieren una tarjeta PCI con chips DSP especifica. Utilizan la CPU del ordenador, (Pentium, G4, etc..) para calcular los efectos a tiempo real. En este caso, el ordenador debe realizar lo mismo que antes (grficos y control de las funciones) y todos los clculos del audio (mezcla, efectos) lo cual requiere una gran cantidad de recursos, pero evita depender de un nico fabricante. Existen varios formatos de plug-ins nativos.

Tabla 1: Tipos de formatos de plug-ins

Proceso Nativo
VST EASI DirectX (DX) Si Si Si

por DSP
No No No

PC Mac
Si Si Si Si Si No

Comentario
De Steinberg, el estndar nativo actual De Emagic, slo incluido en Logic Audio Estndar de Microsoft.

MAS RTAS HTDM TDM SoundScape Pulsar / SCOPE

Si Si Si No No No

No No No Si Si Si

No Si Si Si Si Si

Si Si Si Si No Si

De MOTU y utilizado por Digital Performer De Digidesign y slo funciona con hardware y software Digidesign Nuevo formato, sustituye a RTAS? El primer estndar por DSP fsico. Slo funciona con hardware Digidesign De Soundscape y slo funciona con hardware y software Soundscape De Creamware, funciona con todos los programas

En la actualidad, las mesas virtuales de estos programas son tan sofisticadas y complejas que en muchos casos requieren el uso de una superficie de control hardware par poder aprovechar todas sus ventajas (como la automatizacin, la capacidad de grabar cada control manipulado en el tiempo para su posterior reproduccin). Para ello, estn apareciendo una gran cantidad de mesas "de control" que no mezclan el audio, sino que controlan la mezcla del programa. Un buen multipista de audio debera poseer capacidad de mezcla Surround (otra cosa es que pueda codificar en Surround). La mezcla Surround incluye la posibilidad de manejar los envos a efectos Surround (o efectos por software con varias entradas y salidas de audio). Para la simulacin del Surround los programas utilizan las mltiples salidas de audio de la tarjeta si sta no posee varias salidas no podrs conectar ms de 2 altavoces, verdad?). Este es un listado con las soluciones ms utilizadas: - Proceso nativo: Nuendo 1.5 (PC/Mac) - Proceso DSP (requiere tarjeta DSP dedicada) Pro Tools 5.1.3 (PC/Mac) SoundScape 2.0 (PC) P.A.R.I.S. 3.0 (PC/Mac) Puedes encontrar ms informacin en esta misma web, en la seccin Productos

Nuendo y su matriz de efectos master con el codificador Surround (derecha)

[Link] %2Fesdi_audio3%2Fdocu.php3%3F

5.15 Integracin de los elementos multimedia.

Multimedia en la enseanza: dimensiones crticas y modelos Por Ramn Tirado Morueta, M Dolores Flores Garca
Nmero 18

Introduccin Si atendemos a los orgenes del trmino, este apareci con la denominacin de elementos multimedia para hacer referencia a las capacidades de presentacin del ordenador personal cuando trabajaba con imgenes de color natural y sonido digital. La abreviacin del trmino a multimedia gener cierta confusin inicial dado que se refera a un medio simple que significaba que era mltiple. Esto se ha puesto de manifiesto popularmente al hablarse de sistemas de instruccin multimedia cuando se referan al uso de mltiples medios en una situacin de enseanza-aprendizaje. Dejando estas confusiones atrs, entre la avalancha de definiciones actuales sobre lo que podemos entender por multimedia nos vamos a quedar con la definicin del profesor Bartolom (1994: 41): un sistema multimedia consiste en un ordenador (aunque podra no estar incluido) que presenta informacin visual (fotos, imagen animada real, grficos, grficos animados, textos, ...) y sonora, con o sin ayuda de otros dispositivos (reproductor de laser disc o videocassetes, etc.). Los orgenes de lo que hoy llamamos multimedia lo encontramos en lo comenz llamndose vdeo interactivo (VI). Fue probablemente una de las ms interesantes innovaciones tecnolgicas de la dcada de los ochenta hoy ya superado e integrado en las capacidades de cualquier ordenador personal medianamente avanzado. El profesor Bartolom (1995) lo defina como un sistema que proporciona imgenes vdeo pero, que a diferencia de los sistemas de vdeo, no sigue un proceso lineal e ininterrumpido, sino de acuerdo con los requerimientos del usuario. En la actualidad los ordenadores multimedia han suplantado a esta tecnologa y estn extendiendo su popularidad dado su reducido coste y fcil asequibilidad. Sea de un modo u otro, lo realmente interesante para la didctica es que nos encontramos ante un nico medio que integra diferentes cdigos (vdeo, audio, grficos, texto, etc) y permite que el estudiante los dirija y gestione segn sus capacidades, carencias e intereses.

1. Aspectos diferenciadores del uso de multimedia en la enseanza A continuacin vamos a tratar de sintetizar las facilidades particulares que el uso de programas multimedia puede aportar a la enseanza. En este sentido Willians y Brown (1990) identifican una serie de dimensiones relativas a la intruccin con videodisco interactivo, que por su semejanza funcional podemos aplicar igualmente a la enseanza con multimedia. El control del estudiante sobre el programa En la Enseanza Asistida por Ordenador (EAO), el control del alumno se refiere a la presencia en el programa de enseanza de opciones que permiten a los alumnos

tomar decisiones y asumir alguna o incluso la total responsabilidad respecto a su formacin. El control del alumno suele ser descrito como la habilidad de elegir el ritmo, la secuencia o contenido durante una leccin instruccional. Esto permite a los estudiantes elegir la rapidez, orden o temticas que ms se ajustan a sus necesidades individuales y/o estilos de aprendizaje. El control del alumno ha sido considerado como una caracterstica positiva y distintiva de la EAO dado que permite una individualizacin de la enseanza a travs del uso de la naturaleza interactiva de los ordenadores. Tambin existen evidencias que hacen que se considere como motivante al ofrecer al estudiante la oportunidad de disear su propio proceso de aprendizaje. Esta capacidad tambin ha sido utilizada para explicar los resultados de la aplicacin de los programas multimedia en la enseanza. Una asuncin de base en muchas de las investigaciones sobre VI es que al menos algunos usuarios de esta tecnologa pueden determinar mejor lo que ellos quieren y necesitan saber y el mejor camino para conseguir la comprensin del contenido. En teora. la instruccin individualizada es ms capaz de adaptarse a varios estilos de aprendizaje (Kinzie y Berdel, 1990). Varios tericos han manifestado sus reservas basadas empricamente o en supuestos tericos respecto a los beneficios pedaggicos del control del alumno en la instruccin. Estas reservas se basan en la creencia de que los estudiantes pueden no ser los mejores jueces de la instruccin que ellos necesitan, de cuanta instruccin necesitan, de cuando y a qu atender en un segmento instruccional dado (Canelos, Baker, Taylor, Belland, y Dwyer, 1986: 67). Los resultados empricos ofrecen datos discrepantes: por una lado algunas investigaciones han demostrado los efectos positivos sobre el rendimiento inmediato y a largo plazo del control en el ritmo de aprendizaje ya sea por el alumno (Milheim, 1990) como por el programa (Tennyson y otros, 1985). Asimismo, con respecto a los efectos sobre el tiempo de realizacin de la tarea, existen indicios para pensar que este decrece cuando se le proporciona control al alumno sobre su ritmo de aprendizaje (Milheim, 1990) especialmente cuando el alumno tiene conocimientos previos del material. Producto de esta multitud de investigaciones centradas en el control del alumno frente al control del programa, se ha desarrollado un constructo psicolgico (estilo de control) que tipifica a los alumnos o usuarios de los programas de EAO, en externos o internos segn sean ms o menos eficaces con el uso de programas bajo control del programa (estilo de control externo), o bien bajo control del alumno (estilo de control interno). La asimilacin de informacin, la atencin, la sensibilidad ante los significados y oportunidades de reforzamiento inherente a las diferentes tareas y situaciones, y la concentracin son algunas de las actividades cognitivas en las que Lefcourt (1984) ha encontrado diferencias entre alumnos con locus de control externo e interno. El concluy que los internos se encontraron ms perceptivos y dispuestos para aprender sobre su entorno. Ellos son ms inquisitivos; ms curiosos y procesadores ms eficientes de informacin que los externos. Una excelente revisin de investigaciones respecto al control del alumno (Milheim y Azbell, 1988) sugiere que el control del alumno es ms efectivo cuando los estudiantes tienen alguna experiencia previa con el rea de contenido objeto de estudio, estn formados en el uso de control del alumno, y se identifican con un estilo de control interno, es decir, poseen una elevada aptitud y curiosidad, y son resistentes a omitir material importante o abandonar la leccin prematuramente (Kinzie, 1990).

Las facilidades Interactivas Multimedia La interactividad multimedia ha sido a menudo utilizada para explicar los resultados asociados con el VI (Acker y Gordon, 1987; Bork, 1986). A estas explicaciones a menudo les falta especificar el tipo o grado de interactividad, siendo tpicas conclusiones tales como la interactividad ayud a los alumnos a adquirir la informacin presentada en la leccin (Dalton, 1986a: 124). Otras como, una interactividad excesiva puede estorbar el aprendizaje en ciertos tipos de alumnos (Dalton, 1986b). Se entiende que la interactividad es condebida como sinnimo de control del estudiante, y en este sentido ya hemos presentado las matizaciones ms representativas al respecto. Asmismo, y como consecuencia de la discrepancia en el aprovechamiento de las cualidades interactivas del ordenador en la enseanza entre los diferentes estilos de control en los alumnos, los diseadores han optado por utilizar diferentes tipos de consejos adaptados al estilo de control del estudiante. Varios tipos de consejos han sido incluidos en las lecciones en EAO para asistir a los alumnos en la toma de decisiones. Entre los consejos adaptativos podemos incluir los siguientes: a) Consejos sobre las necesidades de aprendizaje inicial, esto es, qu cantidad y secuencia de instruccin necesitan para conseguir los objetivos marcados por el programa (Ross y Rakow, 1981). b) Consejos sobre las necesidades de aprendizaje corrientes en trminos de cantidad y secuencia de la instruccin necesaria para la tarea en activo. Ofrecen a los alumnos informacin sobre como a ellos les va en relacin con el nivel de maestra deseado, dndoles una idea de cuanta instruccin le falta por adquirir. c) Un tercer tipo de consejos, los direccionales, incluyen recomendaciones sobre como navegar en la leccin. Un estudio que uso consejos direccionales bajo condiciones de control del estudiante fue realizado por Gleason (1986), ste consista en proporcionar a los estudiantes, con anterioridad a la instruccin, informacin sobre los eventos de la instruccin y sobre su secuencia. Aunque se han producido investigaciones sobre estos tipos de interactividad y muchos otros con programas multimedia, tales como los efectos de actividades de orientacin y de prcticas; interactividad progresiva; localizacin de dificultades de aprendizaje y medidas remediadoras ajustadas (Meanor, 1987); estilos de aprendizaje y guas instruccionales adaptadas (Lee, 1989); el uso de ejemplos (Lomgcrier, 1985), etc., de tales estudios no ha emergido ninguna teora especfica sobre la efectividad propia de los diferentes modos de interactividad multimedia que podemos encontrarnos en estos programas. Sin embargo, si se han proporcionado aplicaciones refinadas de tales tipos de interactividad. Podemos encontranos con algunas conclusiones parciales como, por ejemplo, que las rutas o visitas guiadas para usuarios inexperimentados y las guas instruccionales para programas interactivos complejos (Lee, 1989) parecen producir un aprendizaje superior. Otras como que las prcticas ms elaboradas tienden a incrementar la asimilacin del contenido; o que las actividades de orientacin incrementan tanto la disponibilidad de ayudas de procesamiento alternativo que decrece la necesidad de actividades prcticas (Phillips y otros, 1988). Presentacin de Informacin Audiovisual

Una caracterstica nica de los programas multimedia en la enseanza es la integracin del programa lgico del ordenador con el realismo fsico de los mensajes audiovisuales. Hannafin y Rieber (1989) revisaron estudios sobre los efectos instruccionales de lo visual y proporcionaron una estructura terica que justificara la incorporacin de los aspectos visuales en el diseo instruccional. Entre tales aportaciones encontramos que la efectividad de los aspectos visuales en el aprendizaje est relacionada con un aumento en la comprensividad del contenido (Burwell, 1991); con el incremento de una atencin selectiva en los alumnos (Brandt, 1987); y con la sensacin de un mayor placer y satisfaccin durante el desarrollo del proceso de aprendizaje (Sewell y Moore, 1980). La aplicacin ms comprensiva de la teora del aprendizaje en base a las caractersticas visuales nicas de la Instruccin con VI fue proporcionada por Hansen (1989). El postul que el componente vdeo de la instruccin con VI proporciona un aprendizaje ms efectivo en varios de los estadios del modelo de cinco estadios de adquisicin de habilidades desarrollado por Dreyfus y Dreyfus (1986). Por ejemplo, un programa realista soportado en vdeo interactivo puede fomentar una conducta planificada a travs de la ayuda que proporciona a los estudiantes para reconocer y comprender tales conductas en situaciones sociales complejas (Hansen, 1989: 12). Los ms altos niveles de ejecucin de una habilidad requiere un descubrimiento activo y una aplicacin por parte del alumno (Schoen, 1983), y las posibles representaciones realistas facilitadas en la instruccin con Vdeo Interactivo pueden proporcionar en este sentido unas oportunidades nicas. La instruccin con VI permite tambin a los alumnos enlazar imgenes visuales especficas con texto o informacin grfica en orden a fortalecer su comprensin desde varios modos de presentacin complementarios. 2. Concepciones pedaggicas referenciales de los programas multimedia Resultara iluso pensar que en este espacio podemos tratar todos los tipos de programas multimedia que pueden existir. No obstante, sin otra intencin que la de resaltar los diferentes matices que diferencia unos programas multimedia de otros vamos a tratar de categorizarlos. Para ello vamos a tomar como marco de referencia a los cuatro paradigmas de enseanza que presenta el profesor Zabalza (1995) en una estructura que resulta bastante interesante a efectos de hacer notar las diferencias ms significativas entre los mismos. No es este un espacio en el que debamos profundizar en tales paradigmas, para ello podemos consultar la obra de este autor, pero si destacar los elementos configuradores de este marco de referencia. Por un lado, en el eje vertical tenemos el primer parmetro que hace alusin a la intencionalidad educativa de cualquier acto de enseanza, desde intenciones que se limitan a la transmisin de conocimientos concretos (sean conceptuales, actitudinales, procedimentales, o de soporte, etc.) hasta intenciones que buscan la aplicacin de estos conocimientos ante diversas situaciones problemticas (desarrollo de habilidades metacognitivas o habilidades cognitivas de orden superior). Por otro lado, nos encontramos con el segundo de los parmetros en el eje horizontal que hace referencia a los procesos de enseanza o de aprendizaje, pudndonos encontrar desde un extremo con procesos cerrados (en los que los objetivos -muy especificados-, los conocimientos, las secuencias de aprendizaje, los lenguajes de comunicacin, la evaluacin, etc., estn determinados antes de que el estudiante inicie el proceso formativo) hasta lo que sera en el extremo opuesto con procesos completamente biertos y centrados en el estudiante. Hemos elegido esta estructura porque tiene una naturaleza didctica frente a otras taxonomas centradas en el aparataje y porque utiliza unos parmetros

suficientemente abiertos para la inclusin de los diferentes tipos de programas multimedia en educacin. Por lo tanto, con la intencin de ir definiendo los distintos modelos de programas multimedia, vamos comenzar trasladando estos parmetros a los entornos de aprendizaje multimedia para ver ms concretamente su materializacin ante este tipo de procesos de enseanza y aprendizaje. Para ello vamos a diferenciar los dos parmetros comentados: intencionalidad educativa y proceso de enseanza. Dimensin objeto: entornos asimilativos/entornos generativos Ante las intenciones educativas podemos diferenciar dos extremos: entornos con resultados definidos de aprendizaje frente a los entornos con resultados indefinidos de aprendizaje. Mientras que en los primeros los resultados estn previstos y son concretos, en los segundos los resultados tienen un caracter aplicativo, no se trata slo de aquirir conocimientos sino de aplicarlos o generarlos ante situaciones diversas u susceptibles de alternativas de solucin y adaptados a los intereses de los participantes. Los entornos asimilativos proporcionan un alto grado de centralizacin sobre dominios relativamente discretos, permitiendo el estudio detallado de las habilidades y conceptos relacionados. Por lo tanto, en estos entornos el conocimiento no est integrado explcitamente en una base de conocimientos mayor, sino que representan una sntesis de varias de las habilidades y los conceptos requeridos. A los ususarios se les puede proveer de una flexibilidad considerable en el empleo de los elementos del entorno, pero todos estos elementos son estructurados para facilitarles el dominio de los conocimientos prescritos (Hannafin, 1992). Por ejemplo, Harless (1986) describi el diseo de un sofisticado entorno hipermedia diseado para simular la implantacin de una vlvula y los planes de tratamiento siguientes requeridos a los facultativos mdicos del servicio de emergencias de un hospital. Los objetivos estaban consistentemente prescritos en entornos soportados por videodisco interactivo. Los facultativos en formacin identificaron sntomas, seleccionaron procedimientos necesarios, determinaron cuando admitir a un paciente, prescribieron y continuaron con el tratamiento, etc. En los entornos generativos se intenta proporcinar a los estudiantes recursos para ampliar el contexto de la leccin permitindoles dirigir sus intereses o necesidades ms all de los parmetros normalmente proporcionados en lecciones aisladas (Hannafin, 1992). En estos entornos se confa en el usuario para crear o elaborar el conocimiento. En unos casos estos entornos proporcionan un contexto diseado para que los formandos produzcan acciones para clarificar, manipular o explorar en el contenido del sistema, mientras que en otros presentan estructuras que asisten al formando en el proceso de generacin del conocimiento. En el primer caso, la situaciones que se le presentan al estudiante estimulan y guan su desarrollo cognitivo, mientras que en el segundo caso los elementos del sistema orientan sus acciones (Hannafin, 1992). Un ejemplo de caso intermedio de los descritos, puede ser el entorno creado por Scardamalia y sus colegas (1989). En este sistema los grupos de estudiantes generan bases de conocimientos tales como notas, textos relacionados con el tema, dibujos, grficos, tablas de datos, etc. El sistema proporciona consejos que asisten a los estudiantes en esta generacin del conocimiento. Dimensin proceso: control del programa/control del estudiante Con esta dimensin nos referimos a la naturaleza del proceso de aprendizaje. En este sentido se diferencian dos extremos: procesos de enseanza cerrados,

definidos previamente a su desarrollo; y procesos de enseanza abiertos, que se van configurando a medida que se va desarrollando el proceso. Ambos modos de proceso los vamos a denominar como: entornos controlados por el programa frente a entornos controlados por el estudiante. En los entornos centrados en el programa encontramos algunas de las aplicaciones de los llamados sistemas hipermedia que soportan el acceso a varias representaciones del contenido. En muchos sistemas, por ejemplo, los estudiantes pueden acceder a glosarios, vdeo, informacin enciclopdica, instruccin tutorial y otras representaciones del contenido en orden a proporcionar al formando una organizacin y presentacin de la informacin diversa que facilite el acceso a las, tambin, diversas caractersticas de los potenciales usuarios. El contenido est estructurado externamente en diversos caminos alternativos que permiten que el formando aprenda conforme a las nociones generadas desde fuera por los diseadores del sistema (Hannafin, 1992). El sistema MACH-III (1989) est relacionado con el mantenimiento y resolucin de problemas en complejas estaciones de radar. Este sistema ha sido adoptado en muchos paises como una herramienta de entrenamiento incluida en el curriculum de formacin de los tcnicos de estaciones de radar. El diseo de este sistema se ha realizado en funcin de cinco principios instruccionales bsicos: 1. La informacin grfica en forma de diagramas puede resultar muy util como alternativa a la forma proposicional para determinados casos; 2. Resolucin de problemas de complejidad creciente; 3. Proporcionar ayuda procedimental sobre la manipulacin del sistema. 4. Proporcionar el soporte necesario para explicitar las estrategias de razonamiento: el formando debe seleccionar desde un men sus hiptesis iniciales, el sistema le avisa indicndole cuales son los resultados inconsistentes con las hiptesis seleccionadas. Un subsistema controla el incremento gradual de la dificultad impidiendo que el estudiante plantee continuamente situaciones fciles. Adems proporciona una solucin alternativa a la desarrollada por el estudiante. 5. Proporcionar explicaciones. En los entornos centrados en el estudiante los estudiantes son estimulados a alterar, explorar o manipular los parmetros del entorno para examinar los resultados posibles. En estos entornos se pone el nfasis sobre el aprendizaje como una construccin, un proceso mediado individualmente ms que como un proceso basado en criterios externos de importancia y relevancia. Por ejemplo, el sistema ScienceVision proporciona un set de actividades complementarias en un entorno hipermedia. A los estudiantes se les provee de una mplia estructura de recursos desde los que puede explorar las variadas caractersticas de la base de conocimientos, desde glosarios, hasta enciclopedias audiovisuales, sistemas expertos, simulaciones, etc. Adems, al estudiante se le proporciona una serie diversa de recursos on line y off line, asi como de actividades (por ejemplo, diversas opciones de proyectos). Es debido a esta amplitud de su base de conocimientos por lo que el estudiante podra llegar a dominar conceptos y habilidades atendiendo a sus intereses o necesidades surgidas durante el proceso de navegacin a travs del sistema. 3. A modo de sntesis: cuatro modelos de programas multimedia Sobre la confluencia de las dimensiones de los dos parmetros comentados podemos encontrar en un esfuerzo por resultar sintticos y grficos cuatro grandes modelos sobre los que podramos catalogar la gran y diversa variedad de programas multimedia en la enseanza: sistemas tutores inteligentes, sistemas de simulacin, sistemas hipermedia y sistemas hipermedia distribuido (Word Wide Web). Al margen de que pueda ser innecesario quizs convenga recordar que nuestro planteamiento responde a un acercamiento al conocimiento de la realidad, no a la realidad misma de naturaleza siempre ms compleja y difusa. De hecho, en

la prctica un programa de enseanza puede no pertenecer a uno solo de los cuatro modelos presentados, sino ser el resultado de la combinacin de varios de ellos. Otra matizacin tambin importante es que los modelos de sistemas multimedia que aqu presentamos responden a la linea blanda de la enseanza asistida por ordenador (basada en los supuestos cognitivistas) dado que los planteamientos anteriores, programas tutoriales y de ejercitacin tradicionales (basados en las teoras conductistas) parecen haber sido superados y en parte integrados en estos nuevos planteamientos. Insistimos en que esta categorizacin, asume los riesgos de parecer reduccionista a cambio de destacar el carcter curricular de cualquier nueva tecnologa que quiera aplicarse a la educacin. Es por ello por lo que nos parece conveniente tratar de hacer un visionado de estas tecnologas en el marco de los grandes paradigmas de enseanza. En todo caso hemos de aclarar que buena parte de la identidad de cualquiera de estos modelos de programas multimedia, a pesar de por su naturaleza resultar ms afines a uno u otro paradigma de enseanza, va a quedar en manos de su diseador. A continuacin vamos a proceder a presentar las sustentaciones tericas de cada uno de estos modelos as como sus rasgos ms significativos acompaados de ejemplos que nos ayuden a comprender su aplicabilidad en el marco de situaciones de enseanza. Sistemas Tutores Inteligentes La ms notable contribucin de la ciencia cognitiva a la tecnologa educacional es lo que ha sido conocido como Sistemas Tutoriales Inteligentes (SsTI). Estos sistemas, tambin, estan basados principalmente en los desarrollos de la Inteligencia Artificial (IA) y pueden definirse como programas de enseanza-aprendizaje basados en el ordenador cuya finalidad ltima es la facilitacin de procesos de aprendizaje mximamente personalizados. El enfoque cognitivo difiere del conductista en que su objetivo es una descripcin cualitativa de los procesos implicados en la conducta cognitiva del sujeto. En estos programas se especifican tanto las estructuras de datos como los algoritmos con los que se quieren reproducir los procesos cognitivos de las personas. Las diferencias fundamentales con respecto a los tutoriales reside en la forma en la que se aonciben ambos diseos (Fernndez-Castro, 1993). En un programa tutorial tradicional se trata de inducir al estudiante la respuesta correcta mediante una serie de estmulos que han sido cuidadosamente planificados, a modo de discurso socrtico. En cambio en un STI se intenta simular alguna de las capacidades cognitivas del estudiante y se utilizan los resultados de tal simulacin para en base a ellos tomar decisiones instruccionales (Vaquero, 1997). Frecuentemente, dado el carcter implcitamente ambicioso de los proyectos y productos, los SsTI padecen muchas limitaciones, provocadas por razones como la dificultad de comunicacin con el estudiante, la elaboracin de conclusiones sobre su conocimiento y caractersticas individuales en base a su conducta a efectos de desarrollar una formacin individualizada. Parece existir cierto acuerdo respecto a la estructura y los nombres de los componentes de los Sistemas Tutoriales Inteligentes (Barker y Proud, 1987; Zissos y Witten, 1985; Burns y Parlett, 1991): la dimensin instruccional; la dimensin comunicacin hombre-mquina; y la dimensin de conocimiento experto.

En la construccin del conocimiento en estos sistemas se utilizan fundamentalmente dos modelos bsicos: el modelo basado en reglas (Newell, 1972) y el modelo basado en esquemas (Anderson, 1983; Kolodner, 1993). Normalmente, los sitemas incluyen caractersticas de ambos enfoques, reglas de produccin y jerarquias conceptuales. En cuanto al modo de aprendizaje hoy se tiende a producir tutores que aprovechan todas las tcnicas de control de la iniciativa del proceso, desde las totalmente conductistas (control del programa) hasta las de libre iniciativa del estudiante ya sea sobre el tutorial, el modelo de estudiante, los contenidos, etc. Los Sistemas Tutores Inteligentes (SsTI) no tienen un origen reciente. Aunque la inteligencia artificial tiene sus orgenes, como ciencia cognitiva, en los aos cincuenta, esta orientacin cognitiva no se aplic ampliamente en la enseanza hasta los aos setenta. En 1970, Carbonell y sus colegas con su programa SCHOLAR (Carbonell, 1970) iniciaron el camino hacia la incorporacin de la caractersticas de las tutoras humanas en sistemas de Enseanza Asistida por Ordenador (EAO). Este programa enseaba geografa de Amrica del Sur. SCHOLAR era un sistema generativo desde el que se construyen preguntas y respuestas desde la informacin que se va almacenando sobre el estudiante en el transcurso de su interaccin con el sistema y no desde ningn tipo de informacin preespecificada. El intento bsico era producir un tutor Socrtico basado en el ordenador, por medio del cual las respuestas del estudiante podran ser diagnosticadas y una respuesta inteligente poda ser dada a cualquier cuestin inesperada que el estudiante pudiera hacer sobre geografa. Los componentes de este sistema son: una base de conocimiento experto, un modelo de estudiante que refleja lo que el estudiante conoce o desconoce en un momento dado y una serie de estrategias tutoriales que especifican como se le presentar el conocimiento segn las respuestas de los estudiantes. Este fue el primer intento para el desarrollo de un sistema tutorial que simulara la conducta de un profesor experto humano. En la central trmica de Santurce (Vizcaya) se ha desarrollado un programa de entrenamiento sobre el sistema de turbinas llamado SANTURCEDEM. El sistema de turbinas est compuesto de tres subsistemas: la turbina de alta presin, la turbina de presin media y la turbina de alta presin. En la estructura de conocimiento experto se diferencia la estructura conceptual de la estructura del proceso y la relacin entre ambos a travs de los procesos fsicos (dominio multimodelo). Se distinguen tres tipos de explicaciones: las explicaciones generadas a iniciativa del Sistema Tutor, explicaciones generadas para responder a preguntas del alumno y explicaciones generadas como respuesta a operaciones ejecutadas por el estudiante sobre el sistema (recuperacin de errores). Sistemas de Simulacin Estos modelos de programas se relacionan con el aprendizaje por descubrimiento. son entornos de aprendizaje en los que buena parte del control de la iniciativa del proceso la tiene el estudiante. Los programas de simulacin pueden ser definidos como aquellos que reproducen en la pantalla del ordenador, de forma artificial, modelos de fenmenos y leyes naturales y procedimientos de diversa naturaleza ofreciendo al alumno un entorno exploratorio que le permita llevar a cabo una actividad investigadora a travs de la manipulacin de determinados parmetros y comprobacin de las consecuencias de su actuacin (Alonso, 1994; Martnez y Sauleda, 1995). Estos programas simulan modelos de situaciones reales concretas, permitiendo a los alumnos analizar y controlar sistemas complejos gracias a la manipulacin de variables.

Diversos autores se han dedicado a establecer clasificaciones sobre los modelos de simulacin. Sin embargo, la mayora de estas resultan bastante coincidentes aunque utilizan una terminologa diferente para referirse a ellos. Nosotros vamos a presentar una sntesis de ellas en la que diferenciamos los diferentes tipos en los que existe un acuerdo mayoritario en reconocer (Springer, Herlihy y Beggs, 1965; Gisbert y otros, 1992):

1. Los modelos fsicos o empricos: Son aquellos que por si mismo son ya

sistemas fsicos que presentan alguna semejanza con el sistema modelado. Se pueden dividir entre modelos anlogos e icnicos. o o Un modelo icnico se parece a la realidad que representa. Un modelo anlogo acta como la realidad a la que representa, como por ejemplo, los experimentos en tneles de viento, los cuales son utilizados para probar los diseos de los aeroplanos.

1. Los modelos simblicos pueden dividirse en modelos verbales y


matemticos. o Los modelos verbales o cualitativos estn configurados por un conjunto de relaciones que representan la realidad modelada. Utilizan palabras para representar la realidad. En el caso de los modelos cualitativos -Fishwick (1989) diferencia entre modelos QBM (basados en la cualidad) y modelos ABM (basados en la abstraccin)- se utiliza algn tipo de representacin formal de los conceptos del sistema que se est modelando. En este ltimo caso son frecuentes los usos de tcnicas de Inteligencia Artificial. Por ejemplo, un ejercicio de roleplay donde los actores asumen un role especfico es un ejemplo de modelo verbal. Los modelos matemticos utilizan smbolos matemticos. Los modelos cuantitativos o matemticos (discretos, continuos y mixtos) establecen las relaciones y propiedades del sistema que se modela en trminos matemticos que nos permitirn una manipulacin directa.

El creciente inters en el uso de las simulaciones basadas en el ordenador con propsitos educativos ha impulsado toda una serie de intentos de clasificar los objetivos potenciales de aprendizaje relacionados que pueden ser proporcionados a travs de estos sistemas. Nosotros vamos a diferenciar bsicamente dos: o Simulacin de procedimientos: Utilizada para ensear al alumno como realizar una secuencia de pasos y/o decisiones aplicables a situaciones standar permitiendo reacciones rutinarias -aplicacin de procedimientos-. Implica la comprensin de las secuencias de accin y el desarrollo de destrezas reproductivas o Simulacin de procesos: Podemos entenderla como un hbrido de los anteriores modelos que implican situaciones nuevas que requieren una planificacin creativa y ponen en juego estrategias de tomas de decisiones -aplicacin de principios y estrategias generalizadas de resolucin de problemas. Supone la comprensin de fenmenos sociales y de las estrategias de intervencin. Las destrezas que desde este modelo pueden desarrollarse Romiszowski (1984) las denomina productivas. Un calro ejemplo del primero de los modelos puede ser el implementado por la direccin de Recursos Humanos del ente pblico Puertos del Estado, de la mano de Indra y con la colaboracin de la Universidad Politcnica de Catalua. Estas

entidades han desarrollado un proyecto I+D para la obtencin de un simulador de entrenamiento de gras portuarias y medios mecnicos para dotar de una unidad del mismo a las Sociedades de Estiba y Desestiba de Algeciras, Las Palmas y Barcelona. A travs del uso del simulador, las condiciones ambientales y de entorno: meteorolgicas, horarias, de presencia/ausencia de elementos complementarios para la operativa de la maquinaria, etc., pueden ser claramente establecidas en cualquier instante sin tener en cuenta las condiciones reales. Asimismo, la ruptura de elementos de sustentacin, colisiones, condiciones atmosfricas lmites, procedimientos inadecuados, etc., pueden ser fcilmente simulados formando parte de las situaciones de aprendizaje. Entre las caractersticas configuradoras ms destacables podemos sealar (armandolr@[Link]). dos cabinas de entrenamiento, independientes y reconfigurables para reproducir los puestos de operacin de cda mquina real; un sistema visual y de movimiento independientes para cada cabina; modelos matemticos especficos para representar el comportamiento dinmico de cada mquina; entorno visual especfico del muelle, con todos los elementos necesarios; un puesto para el instructor con capacidad para definir, controlar, supervisar, analizar y evaluar el ejercicio. Por la intencionalidad didctica de los primeros modelos, claramente definida, muchos de ellos son implementados como SsTI, nosotros en esta segunda categora incluimos a aquellos modelos que pretenden el desarrollo de respuestas generativas o de banda ancha, estrategias de resolucin de problemas multisituacionales. En este sentido, el Grupo de Investigacin en Direccin de Empresas Asistida por Ordenador (GIDEAO) de la Universidad de Sevilla ha desarrollado el Simulador Transparente y Multifuncional de Empresa (SITME.01) (Domnguez y Ruiz, 1997; jmachuca@[Link]). Los elementos ms innovadores que configuran el sistema son: el diagrama causal, el mdulo de ayuda formativa y los juegos en red. A travs del diagrama causal se puede observar la relacin entre la estructura del sistema modelado y el comportamiento de las distintas variables o los efectos que una variable ejercer sobre otras variables. La incorporacin de este elemento en la interfaz permite conseguir la trasparencia del sistema. El mdulo de ayuda formativa es un sistema hipermedia que consiste en el despliegue de informacin complementaria siempre que aparezca una de las variables configuradora del sistema en la interfaz a peticin del usuario del sistema. Bastar pulsar el ratn para que se despliegue una ventana con la descripcin de la variable en cuestin, as como los nombres de las variables que afectan o son afectadas por la misma, adems de grficos, tablas e informes que pueden ampliar el anlisis. Los juegos de red, es un proyecto en marcha integrado en el simulador en el que se simulan varias empresas, cada una de ellas en un ordenador compatible con IBM, que compiten en un mismo mercado y en tiempo real gracias al uso de redes de rea local o de internet. Estas empresas compiten por los pedidos que se originan en un mercado comn, de modo que las decisiones de cada empresa no slo repercute sobre sus propios pedidos sino tambin sobre los de las firmas competidoras. Sistemas Hypermedias El trmino hipertexto se populariz con la introduccin del software NoteCard de los ordenadores Apple en 1987. El hipertexto se conoce tambin como texto no lineal o escritura no secuencial (Conklin, 1987; Jonassen, 1986). Se trata de la clase de texto que se desarrolla en pequeas unidades de informacin, en las que su

presentacin no tiene que ser lineal tal como ocurre en el libro de texto convencional. La implementacin de los sistemas hipertexto, dadas sus caractersticas, slo puede realizarse en los ordenadores. En su forma ms pura, un sistema hipertexto puede ser descrito como un medio de despliege de la informacin compuesto de nodos entre los cuales existen relaciones de vinculacin. Los vnculos son la caracterstica esencial del hipertexto dado que es lo que le permite configurarse con una organizacin de contenido no lineal, sin que sto impida que se implementen estructuras lineales o jerrquicas. Cuando en una estructura hipertexto incluimos nodos que pueden contener cualquier tipo de informacin (texto, grficos, imgenes, sonidos, etc) nos encontramos con lo que conocemos con el trmino hipermedia. Adems pueden combinarse nodos pasivos con nodos activos, como bases de datos, hoja de clculo, correo electrnico, etc. Asimismo, entre los nodos activos podemos encontrar algunos ejecutables (simulaciones, sistemas tutores, etc.). Estas estructuras de informacin pueden ser de distinta forma. Estos modelos de programas permiten un aprendizaje eminentemente constructivista, de iniciativa personal en un entorno rico en materiales donde el alumno tiene el completo control sobre el sistema, es libre para explorar en la base de conocimiento del sistema de acuerdo a sus carencias e intereses particulares y ocasionales. Esto que aparentemente puede parecer una gran ventaja (no tiene porque no ser as) en ocasiones resulta ser un obstculo dado que el estudiante puede encontrarse perdido, sin saber por donde proseguir su itinerario de aprendizaje. Este problema se suele controlar dotando al sistema de ayudas para la navegacin (Norman, 1994; Adell, 1997). Entre los sistemas hipermedia podemos diferenciar los sistemas hipermedia cerrados y los sistemas hipermedia distribuidos (Word Wide Web). En los sistemas cerrados las intenciones educativas estn muy concretadas, mientras en los sistemas abiertos o distribuidos la intencionalidad tiene un marcado carcter productivo. A travs de muchos sistemas hipermedia distribuidos (WWW) soportados en internet varios usuarios pueden acceder simultneamente a la informacin. A estos usuarios se les proporcionan capacidades de edicin para la realizacin de anotaciones o cambios en la informacin de la base de conocimiento. Como ejemplos de sistemas que facilitan esta capacidad encontramos los sistemas KMS (Akscyn y otros, 1988) y Concordia (Walker, 1989) que fueron desarrollados para soportar el desarrollo de procesos de gestin y produccin de la informacin en entornos de trabajo colaborativo. Ambos sistemas se han usado para desarrollar grandes bases de datos de documentacin tcnica. HOED es otro ejemplo de sistema hipermedia distribuido especialmente diseado con finalidades educativas. Su objetivo es proporcionar un recurso a modo de biblioteca de hiperdocumentos, utilizado para el desarrollo de mdulos de estudio individual y es reutilizado en otros cursos basados en el ordenador. La idea es que los servidores estn distribuidos geogrficamente y a diferencia de la WWW los enlaces no estn embebidos en los documentos ([Link]@[Link]). Referencias bibliogrficas Acker, S. y Gordon, J. (1987): Designing the group use videodisc: Socializing communication technology. Communication Education, 36. 51-56. Akscym, R. M.; Mccracken, D. L. y Yoder, E. A. (1988): KMS: A distributed hypermedia system for managing knowledge in organizations. Communications of the ACM, 31. 820-35. Alonso, C. (1994): Los recursos informticos y los contextos de enseanza y aprendizaje. En Sancho, J. (Coord.), Para una tecnologa educativa. Barcelona: Horsori. 143-67. Barker, P. y Proud, A. (1987): Knowledge-based CAL; a practical introduction to authoring for computer-assisted instruction. British Journal of Educational Technology, 18. 140-160.

Bartolom, A. R. (1994): Prospectiva sobre las nuevas tecnologas en la enseanza: los nuevos canales. En Blquez, F.; Cabero, J y Loscertales, F. (Coords), En memoria de Jos Manuel Lpez Arenas. Bartolom, A. R. (1995): Vdeo interactivo. En Rodrguez Diguez, J. L. y Senz, O. (Dirs.), Tecnologa Educativa. Nuevas tecnologas aplicadas a la educacin. Alcoy: Marfl. Bork, A. (1986b): El ordenador en la enseanza. Barcelona: Gustavo Gili. Brandt, R. (1987): Videodisc training. A cost analysis. Falls Church, VA: Future Systems, Inc. Burwell, L. (1991): The interaction of learning styles with learner control treatments in an videodisc lesson. Educational Technology, 31, 3. 37-43. Canelos, J. y otros (1986): External pacing as an instructional strategy for the desing of microcomputer based instructional programs to improve performance on higher level instructinal objetives. En Simonson; Coble, E, y Hayward, J. (Eds): Proceedings of Selected Research Paper Presentations at the 1986 Convention of the Association for Educational Communications and Technology. Ames, IA: Iowa State University. 66-84. Carbonell, J.R. (1970): AI in CAL: an intelligence approach to computer assisted instruction. Conklin, J. (1987): Hypertext: a survey and introduction. IEEE Computer, 20, 9. 17-41. Dalton, D. (1986a): The effectiveness of interactive video in teaching information and applications. Association for the development of Computer Based Instructional Systems 28th Conference Proceedings , Bellingham, WA: Western Washington University. 241-44. Dalton, D. (1986b): The efficacy of computer-assited video instruction on rule learning and attitudes. Journal of Computer-Based Instruction, 13. 122-25. Dreyfus, S. y Dreyfus, H. (1986): Mindover machine: The power of human intuition and expertise in the era of the computer. New York: The Free Press. Fernndez-Castro, Y.; Daz Harraza, A. y Verdejo, F. (1993): Architectural and planning issues in intelligent tutoring systems. Journal of Artificial intelligence and education. Vol. 4, n 4. Gleason, J. M. (1988): The effects of learner control, prior knowledge of content, and advisement on test scores and the selection of Gagn's instructional events in a computer-based mathematics lesson (Disertacin Doctoral, The University of North Carolina at Chapel Hill, 1986). Dissertation Abstracts International, 47, 054 (CD ROM). Hannafin, M. J. (1992): Emerging Technologies, ISD, and Learning Environments: Critical Perspectives. ETR&D, 40, 1. 49-63. Hannafin, M. J. y Rieber, L. P. (1989a): Psychological foundations of instructional design for emerging computer-based instructional technologies: Part I. Educational Technology Research and Development, 37. 91-101. Hansen, E. (1989): Interactive video for reflection: Learning theory and a new use of the medium. Educational Technology, 29, 7. 7-15. Kinzie, M. y Berdel, R. (1990): Design and use of hypermedia systems. Educational Technology Research and Development, 38. 6168. Kolodner, J. (1993): Cased-based reasonning. Morgan Kaukman. San Mateo. Ca.

Lee, Y. (1989): Effects of learning style and instructional cues on achievement and learning interactivity in a hypermedia instructional systems. Dissertation Abstracts International, 51, 484A-485A (University Microfilms N 90-08, 652). Lefcourt, H. M. (1982): Locus of control: Current trends in theory and research (2nd ed.). Hillsdale, NJ. Lawrence Erlbaum Associates. Longcrier, N. (1985): A comparison of two computer-based interactive videotapes to examine conceptual understanding by exploring cognition levels of development in baccalaureate nursing students (assited instruction, CAIVI). Disertation Abstracts International, 46, 4184B. (University Microfilms N 85-29, 882). Meanor, D. (1987): Effects of location of practice questions in interactive video instruction on achievement and retention of Knowledge in basic electronics among adult industrial trainees. Dissertation Abstracts International, 48, 2558A. (University Microfilms N 87-28, 047. Milheim, W. (1990): The effects of Pacing and Sequence Control in an Interactive Video lesson. ETTI, 27, 1. 7-19. Milheim, W., y Azbell, J. (1988): How past research in learner control can aid in the design of interactive video materials. En Simonson, M. y Frederick, J. (Eds), Procedings of Selected Research Paper Presentations at the 1988 Convention of the Association for Educational Communications and Technology. Ames, IA: Iowa State University. 460-72. Newell, A. y Simon, H. (1972): Human problem solving. N.J:: Englewood Cliffs. Prentice Hall. Norman, K. (1994): Navigating the educational space with Hypercourseware. Hypermedia. vol. 6. Enero. Phillips, T. y otros (1988): The effects of practice and orienting activities on learning from interactive video. Educational Communication and Technology Journal, 36, 93-102. Romiszowski, A. J. (1984): Producing Instructional Systems: lesson Planning for Individualized and group Learning activities. London. Ross, S. M. y Rakow, E. A. (1981): Learner control versus program control as adaptative strategies for selection of instructional support on math rules. Journal of Educational Psychology, 73, 5. 745-753. Scardamalia y otros (1989): Computer-supported intentional learning environments. Journal of Educational Computing Research, 5. 51-68. Schoen, D. (1983): The reflective practitioner. New York: Basic Books. Sewell, E., Jr., y Moore, R. (1980): Cartoon embellishments in informative presentations. Educational Communications and Technology Journal, 28. 39-46. Tennyson, R. D.; Park, O. y Christensen, D. L. (1985): Adaptative control of learning time and content sequence in concept learning using computer-based instruction. Journal of Educational Psychology, 77, 4. 481-91. Vaquero, A. (1998): Las TIC para la enseanza, la formacin y el aprendizaje. Novtica, 132. [Link] Walker, J. H. (1989): Authoring tools for complex document set. En Barrett, E. (Ed.), The society of tex. MIT Press. Williams, C. y Brown, S. (1990): A review of the research issues in the use of computer-related technologies for instruction: An agenda for research. International Journal of Instructional Media, 17. 95-108.

Zabalza, M. A. (1983): Medios, mediacin y comunicacin didctica en la etapa preescolar y ciclo bsico de la EGB. Enseanza, 1. 121146.

[Link]

Todo mundo habla de interactividad, es una palabra muy de moda que se escucha por todas partes y sin embargo mucha gente no sabe realmente que es interactividad. A mi me obsesion bastante la duda de que es interactividad, por lo que durante dos pesadas semanas comenc mi bsqueda de definicin de interactividad. Obviamente inici buscando en los diccionarios, pero en los dos que consulte no viene la palabra interactividad, solo viene Interaccin: Influencia recproca. Realmente no me convenci esta definicin, por las razones que explicar ms adelante, pero continu la bsqueda en dos libros importantes que tengo sobre multimedia: Todo el poder de multimedia de Tay Vaughan y Todo sobre multimedia de Winn L. Rosch. En el primero libro ni siquiera viene la palabra interactividad en el ndice, pero en una parte el libro dice "Cuando se da el control de navegacin a los usuarios para que exploren a voluntad el contenido, multimedia se convierte en no-lineal e interactiva". En el segundo libro si viene la palabra interactividad en el ndice, pero no la define, a lo ms que llega a decir es que "es un tipo de control". He aqu la palabra mgica CONTROL, de esta se basa toda la definicin de interactividad, mientras que la segunda palabra mgica es NO-LINEAL. Para poder juntar estas dos palabras en una definicin de interactividad se deben primero de comprender los elementos del proceso de comunicacin. En todo medio de comunicacin hay cuando menos cuatro entidades importantes: el emisor, el medio, el mensaje, y el receptor. El emisor obviamente es el productor de cierto mensaje que enva a travs de un medio para llegue al receptor. No importa que tan antiguo, moderno o por inventarse sea el medio de comunicacin, siempre existirn estos cuatro elementos. Por ejemplo, una pintura rupestre la pint un caverncola(emisor) con pintura en una pared(medio) donde muestra la cacera de un mamut(mensaje) para que la vean sus cuates caverncolas(receptor). Un noticiero, tiene un productor(emisor) que a travs del radio o televisin(medio) manda informacin noticiosa(mensaje) al auditorio (receptor). El mismo Internet es un medio de comunicacin completo, un webmaster(emisor) a travs del World Wide Web(medio) publica en su website(mensaje) informacin para sus visitantes(receptor). Qu tienen que ver los medios de comunicacin con la interactividad? TODO, ya que la interactividad tal como la conocemos solo se da dentro de los medios. As que comencemos con ejemplos de medios y razonando si son interactivos o no. Un libro comn es interactivo? No, debido a que tenemos que seguir la misma secuencia leyndolo de principio a fin, es decir, un libro comn es un mensaje lineal. Pero a mi me gustaban mucho leer esos libros de "Crea tu propia historia", donde uno supuestamente era el protagonista de la historia y despus de leer una o dos hojas se tena que tomar una decisin, por ejemplo el texto deca "Si abres la puerta roja, vete a la pgina 5. Si abres la puerta azul, vete a la pgina 7" As dependiendo de la decisin, uno continuaba leyendo una parte diferente de la

5.16 Interactividad.

historia, hacindolo un mensaje no-lineal. Este tipo de libros son interactivos? Yo creo que s, y por ello estuvieron muy de moda entre los jvenes ya que les permita interactuar y no solo leer un libro comn. La televisin es interactiva? No, debido a que si estamos viendo un noticiero tenemos que esperar a ver otras noticias que no nos interesan hasta que muestren la noticia que es importante para nosotros, es decir, no podemos escoger que noticias queremos ver. Adems de ser un medio lineal, la televisin es un medio sincrnico, ya el receptor y el emisor se tienen que poner de acuerdo para realizar la transmisin del mensaje, o sea que hay que prender la tele a la hora de las noticias o nos perdemos la informacin. Al contrario, un libro es asincrnico ya que en cualquier momento podemos decidir el comenzar a leerlo. Un CD-ROM es interactivo? Si, puede ser interactivo ya que dependiendo de como se haya producido el usuario puede decidir que informacin desea obtener primero. Sin embargo un CD-ROM no necesariamente es multimedia ni interactivo, basta imaginar un simple archivo de texto de 640mb dentro de un CD-ROM. Es importante recordar que puede haber multimedia sin interactividad e interactividad sin multimedia. Un CD-ROM es un medio de comunicacin asincrnico, y dependiendo del mensaje puede ser no-lineal e interactivo. Un website es interactivo? Si, puede ser interactivo ya que el webmaster pone links a las diferentes pginas para que el visitante escoja que informacin desea ver. Nuevamente sin embargo un website no necesariamente es interactivo, basta visitar un sitio que solo tenga una pgina sin ningn link a otros documentos. Un website es un medio de comunicacin asincrnico, y dependiendo del mensaje puede ser nolineal e interactivo. Podramos continuar con otros ejemplos y razonamientos, sin embargo con estos cuatro ejemplos podemos a llegar a una conclusin, de que la interactividad solamente se puede dar en medios de comunicacin asincrnicos y no-lineales. Tambin de que en la interactividad el receptor decide o escoge que parte del mensaje le interesa ms, es decir controla el mensaje. Y por ende no es posible la informacin no-lineal sin interactividad. Adems podemos descartar ya la definicin del diccionario, ya que en ningn momento el receptor ni el emisor tienen un influencia recproca, es decir, no se comunican al mismo nivel al t por t. En otras palabras, la reciprocidad en un medio de comunicacin permite al receptor convertirse en emisor y viceversa, la interactividad no hace eso. Pero el receptor no tiene la completa capacidad de decidir o escoger que parte del mensaje le interesa ms, ya que por ejemplo, en un website el webmaster decide que links poner a que partes de informacin y el visitante solamente tiene esas opciones. El webmaster decide si desarrolla su website con muchos links, hacindolo muy interactivo y posiblemente complicado, o pocos links, hacindolo poco interactivo y posiblemente aburrido. Igual sucede con un CD-ROM, el productor decide que opciones de interactividad le dar al usuario. Con esto podemos concluir de que el emisor debe de establecer anticipadamente el nivel de interactividad que le dar a su mensaje, y que el receptor decidir y/o escoger el como usar esa interactividad. Ahora, el emisor no puede establecer niveles de interactividad a lo loco, tiene que respetar los lmites del medio de comunicacin. As por ejemplo en un libro de "Crea tu propia historia" el autor no puede establecer que al abrir la puerta roja comience a un video a todo color dentro libro. Algo similar sucede con un website, hace 3 aos un webmaster no poda establecer un link hacia un video, era un limite. Obviamente la tecnologa va avanzando y los lmites se van superando, solo

basta imaginar que tan interactivos podran llegar a ser los websites XXX. Con esto podemos llegar a la ltima conclusin de que el emisor no puede hacer su mensaje interactivo ms all de los lmites del medio de comunicacin. Bien, pero despus de todo este rollote cul es la definicin de interactividad? Analizando todo lo anterior la respuesta es muy sencilla y solo basta sacar las palabras claves y acomodarlas para obtener la siguiente definicin: Interactividad es la capacidad del receptor para controlar un mensaje nolineal hasta el grado establecido por el emisor, dentro de los lmites del medio de comunicacin asincrnico. Por ltimo ntese que en esta propuesta de definicin no se especifican los procesos de interactividad, ya que estos varan de un medio a otro. En un website es hacer clic a un link, mientras que en el libro interactivo es cambiarse a determinada hoja. Considero que esta propuesta de definicin es bastante interesante ya que al mismo tiempo es especfica y amplia de uso, por lo que espero sus valiosos comentarios al respecto.

[Link]

Multimedia
El prefijo Multi significa, muchos o varios La palabra medio o media tiene muchos significados, por ejemplo: en las redes de computadoras hablmos de los medios de conexin , tambin hemos oido hablar de los medios de comunicacin masivos. Generalmente un Medio es la manera de comunicar informacin entre dos elementos, que pueden ser dos personas, o una persona con una mquina. Durante el trayecto en la historia de la las computadoras, podemos observar que a medida que aumentan las capacidades de procesamiento y almacenamiento de las computadoras, as tambin utilizamos nuevos medios bsicos de comunicacin . en sus inicios las computadoras trabajaban con una Interfaz solamente de texto, las computadoras antiguas tenian un parlante que solo hacia un sonido para avisar de algunos errores que se cometan con la computadora, despes siguio la Interfaz Grfica, utilizando imgenes sin movimientos, actualmente podemos reproducir animaciones y vdeos . Todo esto nos lleva al concepto de Multimedia que es el uso de varios medios (texto, sonido, imgenes, animaciones y vdeo) al mismo tiempo e integrados para comunicar un mensaje o informacin. El proposito de la multimedia es hacer la informacin o contenido ms interesante, comprensible, agradable y fcil de navegacin. Es ms interesante ver una noticia en la televisin que leerla en un perodico, porque en la Tele el medio predominante es el vdeo, convinandolo con el audio y texto, etc. Si se quiere dar comprender como funciona el monitor, va ha ser ms eficiente mostrar una animacin presentando paso a paso su funcionamiento que una foto o imgen de ese dispositivo. Para un nio o incluso para nosotros mismos es ms agradable hacer las tarea utilizando una enciclopedia multimedia que utlizar un libro. Todo lo anterior se puede venir hacia abajo, si ese programa multimedia no ofrece varias formas de nevar a travs de la informacin lectrnica

[Link] e_interactividad2

El multimedia: de la lectura a la interactividad


Toni Matas, 2000.

Hacia 1994, en los inicios de la edicin de los primeros productos multimedia en nuestro pas, la amenaza de la desaparicin del libro como soporte lector se cerna sobre la sociedad. Los editores se preocupaban entonces en crear divisiones multimedia para no perder a su mercado lector; se reflexionaba sobre como deban transformarse las bibliotecas para asumir el cambio de paradigma o como iba a cambiar el sistema educativo con la introduccin de sistemas de formacin virtual a distancia. Han pasado los aos, y ya nadie clama hoy desde los medios de comunicacin que el libro pueda ser substituido. Los productos interactivos multimedia tratan de crearse un espacio propio, distinto al del libro, y la reflexin actual sobre el multimedia se decanta ms bien a analizar cual va a ser su influencia en la sociedad con la introduccin en los hogares de la televisin interactiva. Este texto pretende hacer un anlisis de la breve historia de los productos multimedia en esta ltima dcada. En primer lugar, se estudiar cmo han evolucionado desde una concepcin de producto muy editorial, eso es, muy cercana al libro, hasta la creacin de productos completamente audiovisuales. En segundo lugar, se analizar como los diseadores de productos multimedia se han preocupado cada vez ms por la caracterstica propia y especfica de los programas multimedia: la interaccin. Y, por ltimo, se presentar un modelo de anlisis de productos multimedia basado en el cruce de estas dos variables: audiovisualidad y grado de interaccin.

De lo editorial a lo audiovisual
Los orgenes editoriales Si nos remontamos a los inicios de la publicacin multimedia comercial en el ao 1992, debemos recordar la polmica que se estableci entre las empresas productoras de contenidos y las empresas de informtica sobre quien deba llevarse el gato al agua del naciente mercado de los ttulos multimedia. Cuando hablamos de productoras de contenidos nos referimos especficamente a las editoriales. Las productoras de cine y televisin no parecan interesarse excesivamente en crear productos multimedia debido a las limitaciones tecnolgicas de los ordenadores para reproducir vdeo a una calidad mnimamente aceptable. Las empresas de informtica vean la oportunidad de ampliar su negocio creando programas de ordenador que incorporaran contenidos, pero para su desgracia no disponan de tales contenidos de forma que se vean en la necesidad de crearlos o comprarlos.

Tambin las editoriales deseaban crear productos multimedia pero no dominaban la tecnologa de produccin que era, en aquellos aos, especialmente esotrica. Las empresas de programas conocan esta tecnologa pero les faltaban los contenidos. Y tanto los unos como los otros vivan la tensin inducida por los medios de comunicacin de que el boom de la multimedia era inminente y que deba aprovecharse. Las editoriales no podan perder el tiempo aprendiendo tecnologa ni las empresas de informtica creando contenidos. As que la solucin salomnica consisti en establecer alianzas entre editoriales y empresas de informtica para que la unin de contenidos y tecnologa fructificara en los primeros productos multimedia. Un ejemplo de ello sera la alianza entre Random House y Broderbund software para crear la coleccin Living books, o en nuestro pas entre Planeta e IBM para crear Multimedia Ediciones. As pues, dos equipos de personas de perfiles muy distintos se ponan a trabajar conjuntamente. Por un lado autores de textos e ilustraciones acostumbrados al trabajo editorial y por otro directores de proyectos informticos, analistas y programadores que hasta entonces haban llevado a cabo fundamentalmente proyectos de gestin. El resultado de las distintas culturas profesionales entre tcnicos y creativos provoc una divisin del trabajo que dificult enormemente que los nuevos productos aprovecharan las caractersticas especficas del naciente lenguaje multimedia. Los creadores editoriales creaban textos e imgenes, como haban hecho siempre, y cuando terminaban los materiales pasaban el relevo a los informticos que deban integrarlos en un programa que funcionara. El resultado de estos primeros proyectos no era estrao que se asemejase tanto a los libros tradicionales. De hecho, el editor, que era quien continuaba decidiendo qu iba a editarse, sola decir: Vamos a crear un CD-ROM a partir de nuestra enciclopedia de los mamiferos. Ya tenemos los textos y las fotografas, le metemos cuatro sonidos de animales y tres vdeos para darle un aire multimedia y por Navidades tendremos en el mercado nuestra enciclopedia multimedia de los mamferos.. Estos primeros productos con contenidos editoriales creados por equipos de autores y tcnicos que trabajan por separado tienen pues un aire completamente editorial, muy similar a las publicaciones impresas. Suele explicarse que los primeros productos multimedia son muy parecidos a los libros con una analoga a la similitud de las primeras pelculas de cine a lsa obras de teatro. Esta afirmacin no es necesariamente cierta. Diez aos antes, en 1980, se estaban creando unos productos multimedia: los videojuegos de mquinas de saln recreativo, que nada tenan que ver con los libros, como se comentar ms adelante. La razn de esta proximidad al mundo del libro, tanto en sus contenidos como en su forma, debe buscarse pues, en el liderazgo de las editoriales tradicionales en la creacin de los primeros productos multimedia comerciales.

Tecnologa y concepcin en los primeros ttulos


Entrando ms a fondo en los motivos que provocaron aquellos primeros productos tan parecidos a las publicaciones impresas hay dos factores que influyeron especialmente y que merece la pena comentar por separado.

El primero est relacionado con la tecnologa. Los ordenadores domsticos que hacan funcionar aquellos primeros productos multimedia del ao 92 difcilmente podan recibir el nombre de equipos multimedia. Muchos de ellos slo podan reproducir simultneamente 16 colores distintos en pantalla. Pocos tenan lectora de CD-ROM o tarjeta de sonido. Su memoria era escasa y su potencia cientos de veces inferior a la de

un ordenador domstico actual. Estas limitaciones tecnolgicas suponan un freno extraordinario a las producciones multimedia. Las animaciones o vdeos que se podan reproducir ocupaban un espacio muy reducido de la pantalla: 4 x 5cm, por ejemplo, y no se poda asegurar que el equipo pudiera reproducir voz o msica. En consecuencia, la transmisin del mensaje a comunicar se hacia mediante el textos y imgenes estticas (fotografas, ilustraciones o grficos) y la presencia de animaciones, vdeos o sonidos era muy reducida. An as, en aquellos tiempos estos tipos de productos se consideraban sorprendentes y maravillosos. La tecnologa pues, supona una limitacin importante y provocaba que se crearan ttulos con un predominio de textos e imgenes estticas, de estilo muy parecido al de las publicaciones impresas. An as, no toda la responsabilidad de aquellos primeros productos tan librescos puede atribuirse a la tecnologa. La falta de conocimientos audiovisuales y el exceso de experiencia editorial de los creadores, unida al poco entendimiento con los informticos que desarrollaban los programas, provoc que los creadores editoriales aplicaran los mismos criterios de elaboracin de los libros a los programas multimedia sin aprovechar las nuevas posibilidades que les brindaba la tecnologa. El tipo de encargos que reciban de los editores (enciclopedias y obras de referencia, especialmente) unido a los pocos productos multimedia que haban visto les llevaban a reproducir en la pantalla lo que poco tiempo antes estaban haciendo en papel.

Anlisis de los primeros ttulos multimedia


En aquellos primeros aos de la produccin multimedia, estando el mundo impresionado con sus ordenadores que podan mostrar fotografas en la pantalla y reproducir sonidos por sus altavoces, se sola dar una definicin de multimedia basada en la suma de distintas medias. Esta es una definicin del autor del artculo para una conferencia del ao 1996:
Multimedia designa la tecnologa que combina distintas medias: imgen (fotografa, ilustracin, animacin o vdeo), sonido (voz, msica o efectos sonoros) y texto, bajo la gestin de uno o ms programas informticos (software). La multimedia es la tecnologa que va a permitir la creacin de nuevos productos basados en la combinacin de las distintas medias para propsitos diversos.

Como puede verse se trata de una definicin resultado de la suma de componentes: lo importante para ser multimedia es que haya imagen, sonido y textos. En la definicin para nada se menciona la interaccin, caracterstica propia y distintiva de los productos multimedia. Bajo esta idea se pueden analizar los primeros productos, que para poder ganarse la etiqueta de multimedia bastaba con que tuvieran un poco de cada uno de los ingredientes. Lo cierto es que estos productos de los primeros tiempos tena determinadas caractersticas en comn ms all de la herencia libresca. Eran estticos, silenciosos y la forma principal de transmisin de su mensaje era el texto. Eran productos sin movimiento, estructurados bsicamente en pantallas que contenan textos e imgenes (fotografas, ilustraciones y grficos). La forma principal de navegacin era el hipertexto y la hipermedia, de forma que para pasar de una pantalla a otra bastaba con clicar una imagen, un texto subrayado o un botn. Las imgenes en movimiento eran aadidos consistentes en pequeos vdeos o animaciones que se incrustaban en las pantallas. Duraban pocos segundos y solan contener un panel de

control para poderlas reproducir, detener, rebobinar, etc. Los sonidos padecan tambin de este estilo de amontonamiento de medias. La voz sola consistir en la locucin de la lectura de un texto ya existente en la pantalla, error muy habitual en aquellos primeros tiempos. Los efectos sonoros eran escasos y la msica prcticamente inexistente cuando no consista en cortos ciclos que se repetan infinitamente hasta el agotamiento del usuario. En cualquier caso, el mensaje se transmita fundamentalmente con los textos que aparecan en las pantallas. Estos textos se decoraban aadiendo algunas imgenes y el producto se ganaba la categora de multimedia porqu en alguna parte del ttulo exista algn vdeo pequeo y corto (Armstrong pisando la luna era muy caracterstico) y alguna animacin (siempre de la erupcin de un volcn). Estos ttulos podan ser usados sin ninguna necesidad de tarjeta de sonido ni altavoces, ya que el audio no aportaba nada por si mismo. La imagen grfica de estos primeros ttulos sola tener un aire marcadamente tcnico con abundantes barras de desplazamiento, botones grises, mens, etc. Esto es fcilmente comprensible ya que sola dejarse en manos de los informticos la realizacin de los interfaces. Adems eran los aos de la popularizacin del entorno grfico Windows con lo que la mayora de los programas respiraban el mismo aire de las aplicaciones informticas. Las productoras que aspiraban a crear productos que se distinguieran del resto por su calidad grfica incorporaban en sus equipos de trabajo a diseadores grficos que se dedicaban a embellecer las pantallas que dejaban los informticos modificando los fondos de las pantallas, el aspecto de los botones, las tipografas, etc.

Empresas de los primeros aos


En este primer periodo de creacin multimedia, que podemos acotar entre el ao 1992 y el ao 1995, los grandes grupos editoriales con alianzas tecnolgicas conviven con pequeas productoras multimedia que crean sus propios ttulos. Son los aos del boom multimedia, aos de grandes expectativas de negocio en que todava no se habla de Internet. Los aos en que el libro va a desaparecer, aos en que la multimedia va a revolucionar la vida de las personas: el trabajo, el ocio, la formacin... En estos aos, Bertelsmann, Mondadori, Gallimard entre muchas otras crean sus divisiones multimedia y en nuestro pas se crean Anaya interactiva, Zeta multimedia, Planeta actimedia y algunas editoriales empiezan a publicar sus primeros ttulos. Tambin las pequeas productoras nacen buscando crearse su propio espacio: Voyager, Tivola, Lastrego&Testa, Savannah o aqu Barcelona Multimedia, Micronet, Edicinco o Cibal, por citar slo algunas de las supervivientes. Las editoriales estn volcadas a la tarea de traspasar sus obras de referencia a CD-ROM, mientras que las pequeas productoras se esfuerzan en crear sus propios contenidos basandose en alguna habilidad propia: el dominio de las tcnicas de modelado y animacin en 3D, los conocimientos de arquitectura, de los curriculums escolares, etc.

Algunos productos de aquellos tiempos


Excede el objetivo de este artculo analizar ttulos de aquella primera poca, algunos de los cuales han sido estudiados en el artculo de diseo interactivo del mismo autor. Sin embargo, para aquellos que quieran tener una referencia de algunos productosque el autor considera representativos del estilo de aquellos primeros aos, aqu se da una breve relacin: -Enciclopedia Comtpons, Comtpons, 1991. -The Animals!, Arnowitz, Zoo de San Diego, 1992.

(puede compararse con El Zoo, BSI multimedia, 1994) -Enciclopedia de la naturaleza, Dorling Kindersley, Zeta multimedia, 1995. (comprese con Enciclopedia de los mamferos, Multimedia Ediciones, 1994) -Living books, Random House, Broderbund, 1994. -Las aventuras de Ulises, Barcelona Multimedia, 1995. -Myst, Cyan, Broderbund, 1994. El caso de los videojuegos como ejemplo de audiovisualidad Como ya hemos comentado, se suele presentar la analoga de la relacin entre las primeras pelculas cinematogrficas y el teatro como ejemplo del parecido de los primeros productos multimedia a los libros. Esta comparacin es ligeramente manipuladora ya que pretende fijar en los libros y las editoriales los ancestros de los productos multimedia, y es lgico que se estableciera en un momento en que las editoriales adoptaban estrategias para monopolizar el nuevo mercado de los contenidos digitales. Lo cierto es que ajustndonos a la definicin de multimedia mencionada anteriormente deberamos considerar a los videojuegos de saln recreativo como los primeros productos multimedia comerciales. Estos productos, cuya poca dorada puede situarse entre los aos 1979 y el 1982, es decir, diez aos antes del periodo de historia de los productos multimedia que se estudian en este artculo, no se han considerado nunca deudores, en ningn sentido, del mundo de los productos editoriales. Es ms, desde el principio de la historia del multimedia comercial (1992) siempre se ha tratado de establecer una separacin entre los videojuegos y los ttulos multimedia; se tratan como categoras de productos completamente distintas. Los videojuegos como productos de nfimo nivel cultural centrados en juegos de combate y simuladores deportivos y los productos multimedia con una ptina de prestigio cultural avalada por las editoriales creadoras. Lo cierto es que no puede afirmarse que haya ningn tipo de herencia de los videojuegos respecto a los libros y s, en cambio, respecto al cine. Los videojuegos heredaron personajes y argumentos del mundo del cine y tambin su esttica. No en vano uno de los primeros videojuegos comerciales: Space Invaders (1979) centra su dbil argumento en una pretendida defensa del planeta de un ataque de naves estraterrestres. Bebiendo de las fuentes cinematogrficas los videojuegos nacen como productos completamente audiovisuales. El poco texto que contienen sirve para narrar sintticamente su argumento, como se haca en la introduccin de la pelcula La guerra de las galaxias. El dominio de la imagen sinttica en movimiento y de los efectos sonoros es muy importante, dotndoles de gran dinamismo. En muchos casos no existe el concepto de pantalla esttica ya que el videojuego se desarrolla en un escenario mucho ms amplio que se desplaza para acceder a nuevos terrenos inexplorados. Si los comparamos con los primeros ttulos multimedia editoriales, nos damos cuenta que donde stos eran estticos, los videojuegos eran dinmicos; donde el sonido era superfluo y redundante, en los juegos era clave para resolverlos; donde las animaciones eran puros aadidos, en los videojuegos eran la principal forma expresiva. Este panorama completamente audiovisual del diseo de los videojuegos a principios de la dcada de los 80 podr parecer contradictorio respecto a lo explicado anteriormente sobre como influyeron los factores de tecnologa y concepcin en la creacin de los primeros ttulos multimedia. Si a principios de los 90, tecnologa y concepcin podan causar productos estticos y librescos, cmo era posible que diez aos antes se estuvieran haciendo videojuegos tan audiovisuales?

Vamos a entretenernos un poco con ello. Si comparamos los productos multimedia de principios de los 90 con los videojuegos para cnsola que se estaban comercializando para aquel entonces, apreciaremos que esta diferencia entre lo audiovisual y lo editorial se extrema todava ms. Qu ocurra pues con la tecnologa y los productos multimedia para provocar estas diferencias? Dos podran ser las respuestas. En primer lugar los ttulos multimedia se creaban para funcionar en ordenadores personales tipo PC o Macintosh, cuyo hardware distaba mucho del de las cnsolas de videojuegos que estaba especialmente diseado para reproducir animaciones y sonidos. Aun as, existan por aquellos aos videojuegos desarrollados para funcionar sobre PC que emulaban las caractersticas grficas de sus homlogos de cnsola, como podran ser los creados en la factora de Lucas Arts. La causa debera buscarse ms bien en las herramientas software de desarrollo que no en las plataformas hardware de explotacin. Los videojuegos se programaban en lenguajes de bajo nivel que explotaban al mximo las caractersticas grficas y de sonido de las mquinas en que se ejecutaban, mientras que los primeros ttulos multimedia se desarrollaban en las primeras versiones de las actuales herramientas de autor multi-propsito que resultaban de ejecucin lenta y poco flexibles respecto a las necesidades creativas de los autores. Como puede verse, las limitaciones tecnolgicas de hardware y software de principios de los 90 no pueden ser acusadas de forma absoluta de la precaria resolucin audiovisual de sus productos. El resto de causas deben atribuirse a las diferencias de concepcin entre sus creadores. Los diseadores interactivos de los videojuegos de los aos 80, poco o nada tena que ver con el mundo editorial. Locos por la tecnologa, vivan intensamente sus aficiones al cine y a la ciencia ficcin, a los juegos de rol y a los deportes de accin. Y en estos gustos y aficiones encuentran la inspiracin para crear sus primeros juegos donde el predominio de la accin, del movimiento y del lenguaje audiovisual es absoluto. Libres del lastre de las editoriales tradicionales que deseaban traspasar sus contenidos a los nuevos formatos, estos nuevos creadores encuentran en Estados Unidos y en Japn, especialmente, las empresas que les permitirn dar rienda suelta a su creatividad: Namco y Midway para las maquinas de saln, todava hoy lderes del mercado, y tambin Sega, Nintendo y Atari para las cnsolas, son padrinos mucho ms dinmicos que las editoriales de libro europeas demasiado condicionadas por su pasado.

La evolucin del editorial al audiovisual


Los primeros ttulos multimedia con una concepcin muy editorial, usando el texto como principal elemento de comunicacin, estticos, con un uso redundante y deficiente del sonido y slo incorporando animaciones y vdeos como elementos addicionales para justificar su multimedialidad convivan con los videojuegos que buscaban cada vez ms acercarse a la capacidad audiovisual del cine, mejorando sus graficos y posibilidades sonoras y aumentando al mximo su dinamismo para acercarse a los gustos de un pblico joven acostumbrado al zapping y a un ritmo de vida trepidante. Por ello los primeros productos multimedia se ganan frecuentemente las etiquetas de feos, aburridos, lentos y sosos, mientras que los videojuegos reciben todas las alabanzas por parte de los jvenes usuarios y, lo que es ms importante, una cuota de mercado diez veces mayor. Por ello los diseadores de multimedia empiezan a preocuparse por evolucionar hacia un tipo de productos ms audiovisuales. Los primeros cambios, como ya se ha apuntado anteriormente, se producen en el aspecto grfico de los programas y, ms concretamente, de sus pantallas. El diseo del interface empieza a cobrar demasiada

importancia como para dejarlo slo en manos de los informticos. Por otro lado, la perepcin de calidad de un producto, como mnimo en una primera aproximacin, est ms sujeta a su aspecto grfico que a la calidad y cantidad de su contenido. Esta preocupacin coincide con el momento histrico en que los diseadores grficos empiezan a considerar que la emergente edicin digital puede ofrecerles un basto territorio con interesantes oportunidades de negocio, de forma que los grafistas empiezan a incorporarse a los equipos de creacin de los CD-ROMs. Un caso paradigmtico del salto cualitativo que se produce en los productos multimedia con una especial preocupacin por el trabajo grfico de las pantallas sera el de las obras de referencia de Dorling Kindersley. No es estrao que fuera este packager ingls quien liderara las ventas internacionales a otros editores de productos multimedia en los aos 93 y 94. Aplicaron su experiencia en los trabajos grficos de sus obras en papel a sus productos multimedia y crearon, basados tambin en sus libros, unos primeros ttulos que deslumbraron al mundo editorial: El cuerpo humano, Como funcionan las cosas, Enciclopedia de la Ciencia, etc. que en nuestro pas fueron comercializados por Zeta multimedia. Aquella percepcin de calidad deba atribuirse fundamentalmente a este trabajo grfico. An con las mejoras introducidas en el diseo grfico de los ttulos, no poda considerarse ni mucho menos que aquellos productos hubieran dado un giro hacia una dimensin ms audiovisual de su comunicacin. Continuaban teniendo diseos interactivos basados en el hipertexto e hipermedia, esto es clicar imgenes y textos para saltar a otras pantallas, el uso del audio continuaba siendo redundante para la voz y agobiante con la msica, y las animaciones y vdeos aadidos slo buscaban avalar la multimedialidad del producto. No sera hasta los aos 96 y 97 en que se produce un verdadero giro en el diseo de los productos multimedia al abandonarse el texto como elemento principal de comunicacin del mensaje y al tomar un protagonismo absoluto el audio y el vdeo o la animacin. Se est produciendo una evolucin desde una concepcin muy editorial de los productos a creaciones mucho ms audiovisuales, cercanas al mundo del cine y la televisin. Busqumosle una explicacin a partir de la evolucin en los factores antes mencionados.

Tecnologa y concepcin en la evolucin hacia lo audiovisual


La tecnologa informtica ha cambiado en la dcada de los 90 a una velocidad espectacular. No en vano existe una percepcin generalizada de que los ordenadores se quedan viejos en un par de aos. La evolucin de los ordenadores personales hasta los aos 96 y 97 se centra en mejorar sus capacidades de imagen y sonido y as adaptarse a la naciente revolucin multimedia. A partir del 98, los esfuerzos de los fabricantes harn ms mfasis, como mnimo a nivel de marketing, en la adaptacin de los ordenadores a Internet. En los aos 94 y 95 al comprar un ordenador no se incorporaba lectora de CD-ROM ni tarjeta de sonido, de manera que el comprador poda adquirir estos perifricos con un coste addicional. A partir del 96 todos los ordenadores que se venden son ya equipos multimedia completamente equipados para reproducir productos multimedia. La potencia de los procesadores y tarjetas de vdeo permite reproducir cada vez ms secuencias de vdeo de mayor tamao en la pantalla y las tecnologas software de compresin de datos se vuelcan a investigar sobre nuevos formatos que faciliten la reproduccin de vdeo en el ordenador. Los hogares empiezan a recibir estos equipos multimedia y aquellas viejas mquinas lentas y sin sonido de principios de la dcada van quedando arrinconadas. La nueva realidad del mercado da alas a los creadores de productos multimedia a lanzarse sobre propuestas mucho ms audiovisuales.

Por otro lado ya han pasado algunos aos desde aquellas primeras creaciones multimedia realizadas con precipitacin por personas provinentes del mundo editorial, y se van definiendo cada vez ms los perfiles profesionales encargados de dirigir y realizar los productos multimedia: diseadores interactivos, directores de arte, directores audiovisuales, etc. Ya no son profesionales del mundo editorial a los cuales les ha caido el paquete de crear CD-ROMs para sus editoriales, sin jvenes profesionales, algunos ya con formaciones especficas en multimedia, mucho ms parecidos a aquellos primeros creadores de videojuegos, es decir, muy influidos por una cultura audiovisual, poco dependientes de las dinmicas editoriales y, adems, herederos de los diseos interactivos de los videojuegos de saln y de cnsola con los que han estado jugando en los ltimos veinte aos de su vida. En consecuencia, los cambios en la tecnologa y en la forma de entender los productos multimedia han cambiado radicalmente la forma de expresarse de los productos multimedia. Cada vez se ven ms lejos aquellos primeros productos volcados de fuentes de papel y el mercado se ve invadido de nuevos ttulos que ofrecen un autntico espectculo audiovisual cercano al cine, al vdeo y a la televisin.

Anlisis de los ttulos multimedia actuales


En esta evolucin de los productos de lo editorial hacia lo audiovisual podemos encontrar muchas formas distintas de crear los productos. Comn a todas ellas sera la desaparicin del texto como medio principal de transmisin del mensaje para ceder el protagonismo al medio audiovisual. Vamos a analizar algunos ttulos producidos en 1998 y 1999 para ver qu planteamiento audiovisual hace cada uno. Nos centraremos en los ttulos infantiles y juveniles por ser la especialidad del autor. Merecera un estudio aparte la evolucin de los ttulos sobre arte, especialmente en Francia. La Isla del Tesoro Barcelona Multimedia; 1999. Este ttulo basado en la obra de R. L. Stevenson es el producto multimedia infantil y juvenil ms ambicioso que se ha creado en nuestro pas. Se edit en 4 CD-ROMs y contiene ms de cinco horas de dibujos animados creados a medida. El medio principal son las pelculas de dibujos animados, el curso argumental de las cuales puede ser alterado por el usuario que toma decisiones y acta en el lugar de los personajes. R. L. Stevenson acta ayudando a encontrar al jugador el argumento de su novela que es la nica forma correcta de resolver toda la aventura. El autor se presenta bajo la forma de un personaje de dibujos animados que se dirige al usuario dirigindosele en primera persona. El uso del texto se restringe a las reas documentales sobre la historia del siglo XIX y a las alternativas que se le presentan al usuario. Las pelculas de dibujos animados disponen de una banda sonora similar a la de una pelcula de animacin con efectos sonoros y msica. No se usa vdeo. Physikus Creado en Alemania por Ruske&Phretmaier en 1999, publicado por Klett e indito en nuestro pas. Fuertemente influido por Myst, Cyan, Broderbund, 1994, opta por la creacin en 3D para resolver una aventura grfica que pretende explicar las leyes de la fsica involucrando al usuario en resolver los problemas de desequilibrios que un cataclismo ha creado en un hipottico planeta. Todo tipo de estraas maquinarias y curiosos escenarios son creados en 3D para permitir al usuario experimentar con ellos. Las secuencias de animacin son tambin en 3D. No existe vdeo pero si animaciones sintticas que explican las teoras de la mecnica, la optica, el electromagnetismo, etc. Contiene un apartado de conocimientos donde voces de distintos narradores dan explicaciones sobre los fenmenos fsicos ms elementales. En este apartado textos escritos en pantalla refuerzan los comentarios de los locutores.

El mago chiflado En Dinamarca, la serie del mago chiflado de Savannah de la cual se publica el primer ttulo en nuestro pas de la mano de Barcelona Multimedia en el ao 2000, El misterio del nio desaparecido. Este ttulo presenta una ausencia completa de textos escritos en pantalla. Est resuelta completamente con animacin y destaca especialmente por su banda sonora repleta de canciones interpretadas por distintos actores. El lbum Secreto del to Alberto Continuando con nuestro pas vecino, el Album Secreto del to Alberto de EMME y Lexis interactive publicado por Barcelona Multimedia, 1999 en nuestro pas, ha sido el nmero uno en ventas de Francia de su categora durante el ao 1999. Presenta una de las soluciones audiovisuales ms interesantes de los ttulos publicados estos ltimos aos: una combinacin de ilustracin tradicional con acuarelas, animales fotosintticos creados en 3D y vdeos interpretados por actores reales. Las voces del to Alberto y del camalen Tom se usan para transmitir los mensajes al usuario y algunos mensajes con textos escritos en unas bolitas de papel dan pistas a los usuarios. Tambin este producto contiene un rea de conocimientos que da informacin sobre los animales y objetos existentes en el lbum. La informacin de este apartado se resuelve con textos y sin voz. Riven y Expediente X Si saltamos el charco y analizamos las grandes producciones de Estados Unidos, dos ttulos destacan especialmente: Riven, la secuela de Myst, Cyan, Broderbund, 1998 y Expediente X, de Fox interactive, 1997. Son estas dos sin duda las producciones audiovisuales ms ambiciosas que se han creado en el mundo de la edicin multimedia. En el caso de Riven, un ttulo de culto y uno de los xitos comerciales ms importantes del mundo, el equipo de Cyan cre, tras cuatro aos de trabajo, todo un universo imaginario a partir de escenarios fotorealsticos en 3D ligados por animaciones de un tamao aproximado de un 80% de la pantalla. Todos los escenarios se hallan sonorizados con sonidos de ambiente y con una banda sonora musical que se encarga de crear la ambientacin exigida por el guin: tensin, misterio, tranquilidad, etc. El uso de la voz es muy restringido, slo en algunas pelculas aparecen algunos personajes que se dirigen al usuario que asume el rol del protagonista de la historia. Por lo que al texto respecta, se integra de forma realista en el universo creado por los diseadores, es decir, si se abre un libro de la biblioteca se pueden leer sus textos, lo mismo con los carteles, notas de advertencia, etc. El caso del Expediente X es parecido al de Riven, si bien todo lo que en Riven ha sido resuelto con tcnicas de modelado y animacin en 3D, en Expediente X se ha producido con fotografa y vdeo. En Riven apenas aparecan actores en las pelculas, mientras que en Expediente X el material audiovisual existente equivale al de un episodio televisivo de la famosa serie, con los mismos actores y realizado por el mismo equipo de produccin. En este sentido las voces juegan un papel crucial para comunicarse con los dems personajes (el usuario asume el papel de un agente del FBI que debe encontrar a los desaparecidos Mulder y Scully). Tambin, como en Riven, los textos se integran de forma realista en la ficcin del programa: podemos recibir mensajes en el telfono mvil, leer expedientes, etc. Como resumen de este breve panorama de algunas de las creaciones multimedia de estos ltimos aos podemos resumir su cambio con respecto a aquellas primeras creaciones. Los cambios en la tecnologa y la concepcin de los diseos interactivos de los ttulos han facilitado una transformacin de unos ttulos muy estticos basados en textos e imgenes y diseo de pantallas, en nuevos ttulos especialmente dinmicos donde el mensaje principal se transmite a travs de vdeos, animaciones en 3D y dibujos animados tradicionales y donde el audio, tanto la

voz, como la msica, como los efectos sonoros, juegan el mismo papel dominante en la comunicacin que tienen en el cine y la televisin. El texto ha ido perdiendo importancia a favor de la voz y encuentra su lugar en las partes ms documentales o de conocimientos, o integrado en elementos realsticos que aparecen en los escenarios: libros, notas, etc. Mencin aparte merece la evolucin del diseo grfico. En algunos casos el protagonismo del medio audiovisual es tan grande que la necesidad del grafismo desaparece completamente, sera el caso de Riven, Expediente X, El lbum Secreto del to Alberto, o El misterio del nio desaparecido. Mientras que en La Isla del Tesoro o Physikus contina siendo importante en las reas de conocimientos. Se observa como la antigua concepcin de los programas como mquinas de estados entre pantallas queda obsoleta para dar paso a un discurso grfico continuo que se va transformando a lo largo del tiempo: no existe un interface grfico esttico sin un diseo que se construye y desmonta adaptndose a las necesidades de los contenidos que muestra. Es especialmente interesante observar los avances en este sentido en los ttulos de arte, recomendara especialmente Le cirque avec Seurat de Gallimard, indito en nuestro pas, Picasso de Grolier y indudablemente los ttulos auspiciados por la reunin de museos nacionales francesa: Louvre, Orsay, etc. Este apartado de anlisis de ttulos actuales no puede dejar de mencionar, sin embargo, que continan creandose muchos titulos que mantienen una concepcin basada en las publicaciones impresas, muy lejos de los avances audiovisuales hasta aqu relatados. Buena muestra de ello seran los CD-ROMs que se regalan o venden con los peridicos dominicales, aunque no se libran tampoco de ello muchos productos comerciales.

EDITORIAL ------------------------------- -------------------- AUDIOVISUAL (publicaciones impresas) Mensaje: texto La tecnologa limita Concepcin ligada al trabajo editorial ESTTICOS Textos con fotografas, graficos e ilustraciones. Diseo de pantallas (Vdeo, cine y televisin) Mensaje: imagen y sonido La tecnologa facilita Concepcin audiovisual DINMICOS Vdeos, animaciones 3D y dibujos animados. Diseo de interfaces que se construyen y desmontan. COSTES BAJOS COSTES ALTOS

El futuro todava se puede ir ms all?


El autor ha estado defendiendo estas ideas en cursos y conferencias en los ltimos tres aos y no ha podido evitar en la tentacin de especular sobre cual sera la evolucin de esta transformacin de los productos multimedia en autnticas obras audiovisuales. Lo ms fcil de

la previsin del futuro, especialmente de aquel que est ligado a la nuevas tecnologas, es hacer una extrapolacin progresiva ilimitada de aquello que va a suceder. Es el caso de la ciencia ficcin de hace veinticinco aos, que extrapol a partir de la carrera aeroespacial un futuro de conquista del universo plasmado en pelculas como 2001, Odisea en el espacio. Si en 1969 el hombre pis la luna, en el ao 2000 vivira en Marte. Extrapolaciones parecidas se dieron con la inteligencia artificial o la robtica y hoy podemos escuchar extrapolaciones similares en los medios de comunicacin referidas a Internet. Volviendo al tema, el autor hizo una extrapolacin similar con la evolucin audiovisual de los productos multimedia y afirmaba hace algunos aos que en el ao 2000 las producciones que no tuvieran contenidos de vdeo o dibujos animados cuantitativa y cualitativamente parecidas a las producciones del cine o la televisin seran barridas del mercado y, sin embargo, esto no ha sido as. Por qu?

Costes y mercados
Preguntas habituales que recibe el autor en su calidad de predicador multimedia estn relacionadas con los aspectos ms materialistas de la produccin y comercializacin de los ttulos. As, frecuentemente, se le pregunta cuanto puede costar la realizacin de un ttulo multimedia, cuya respuesta podra exceder el tiempo que se le permite hablar o la extensin que puede soportar un lector no especializado, de forma que uno, tratando de no decepcionar a su pblico, ha preparado una respuesta estndar que, an siendo muy simplificada, puede dar una idea general de los costes de las producciones. Por ello, decimos que una produccin pequea en CD-ROM puede tener un coste de unos 5 millones de pesetas (sin contar la estampacin de los discos, fotolitos, embalaje, etc). Estas pequeas producciones suelen reservarse actualmente para los CD-ROMs promocionales o aquellos que se regalan con los peridicos, pero no suelen competir en la arena del mercado con el resto de ttulos. Una produccin mediana puede tener un presupuesto de unos 15 millones de pesetas y correspondera a la mayora de las producciones europeas actuales. Mientras que una produccin grande puede tener unos costes de a partir de 50 millones de pesetas. De los ttulos antes mencionados, slo entraran en esta ltima categora Riven y Expediente X. Posiblemente podran incluirse tambin las grandes obras de referencia (p.e. Encarta de Microsoft) y los ttulos de arte franceses. A la pregunta de cuanto cuesta hacer un ttulo multimedia, suele seguirse la obvia de cuantas unidades pueden llegar a venderse. La respuesta suele ser difcil de obtener o, peor an, de difcil credibilidad. Con nimo simplificador, tambin, daremos una idea de las unidades que pueden llegar a venderse de un ttulo en distintos paises, hablamos de ttulos especialmente exitosos de forma que pueden tomarse estos datos como cotas superiores. Los datos han sido proporcionados por los responsables de distintas editoriales de multimedia infantil. En Espaa un ttulo multimedia que venda 7.000 unidades puede considerarse un xito. En Italia, ms modestos, vender 5.000 ya es satisfactorio. En Canad, 7.500 unidades es una buena cifra. En los paises nrdicos se puede llegar a la cifra de 30.000 unidades en un ao. En Blgica, 6.000. En Argentina, vender 2.000 unidades en un ao esta bien. En Taiwan, 6.000 unidades. En Polonia, 3.000. Alemania y Francia, lderes en el mercado, pueden llegar a conseguir cifras de 30.000 unidades por ttulo para grandes xitos. En definitiva y para no cansar ms al lector con tantos datos, podemos distinguir dos grupos, uno con ventas alrededor de las 6 o 7.000 unidades y otro, con Francia, Alemania y los Pases Nrdicos que pueden llegar a las 30.000 unidades. Haciendo cuatro clculos, puede verse que el punto muerto en el que las editoriales consiguen cubrir los gastos de produccin de un proyecto de tamao medio con las ventas estara cercano a las 5.000 unidades.

Todos estos nmeros vienen a cuento de buscar una respuesta a porqu las producciones multimedia del ao 2000 no se han convertido en aquellas grandes producciones audiovisuales que el autor auguraba hace algunos aos. Y la respuesta, como ya se ha podido ver, est ntimamente ligada al tamao del mercado. Con unas ventas estimadas como las que se han descrito es imposible pensar en crear grandes producciones audiovisuales (para que sirva de referencia el coste de un episodio de dibujos animados de 25 minutos de calidad profesional es aproximadamente de 25 millones de pesetas). De los ejemplos anteriores slo dos producciones tenan presupuestos superiores a 50 millones de pesetas: Riven y Expediente X que son, precisamente, las nicas que operan en un mercado global, es decir que esperan venderse en todo el mndo con unas cifras de centenares de miles de unidades vendidas (se dice que el antecesor de Riven: Myst lleg a vender un milln de unidades). Como resultado de las restricciones presupuestarias que imponan los editores a los autores multimedia, el progreso hacia un tipo de productos audiovisuales de una calidad similar al cine y a la televisin se ha visto frenado en los productos europeos, mientras que los productos de Estados Unidos, operando en un mercado global, han podido llegar a cotas de audiovisualidad muy similares a las del cine y la televisin. Pero, conviviendo todos en el mismo mercado cmo han logrado los ttulos europeos sobrevivir a los embates comerciales de la potente industria audiovisual de los Estados Unidos? La respuesta se concentra en una palabra, caracterstica distintiva de los productos multimedia: la interaccin.

De la pasividad audiovisual a la actividad interactiva Como hemos visto un incremento de la calidad audiovisual de un producto supone un encarecimiento tal en los costes que hace que los proyectos no sean rentables con el tamao actual del mercado local de los distintos pases. De forma que los creadores europeos de multimedia, ante la amenaza de las grandes producciones estadounidenses, optan por aguzar el ingenio para conseguir que los alicientes ms importantes de sus productos se concentren en su planteamiento interactivo ms que en la calidad y cantidad de sus vdeos y animaciones. El diseo interactivo como proceso creativo intrnseco de los productos multimedia y que los distingue de los libros y las pelculas cobra una gran importancia. El coste econmico de un buen diseo interactivo sigue siendo bajo estando nicamente ligado a la creatividad de una persona o de un grupo. Como en el trabajo literario, los mejores resultados no son necesariamente el resultado del que ms recursos dispone. Adems, los gustos y preferencias de los usuarios tampoco parece que se decanten especialmente hacia los productos con una calidad audiovisual ms elevada, sin que tienden a apreciar ms con productos que les brindan la oportunidad de vivir experiencias interactivas donde su protagonismo en la accin sea lo ms grande posible. El cine y la televisin como espectculos audiovisuales suponen una pasividad receptora que el multimedia puede superar intentando conseguir un alto grado de interaccin con el usuario. En la conferencia pronunciada en la Fundacin Germn Snchez Ruiprez en Salamanca en Julio de 1996 se propona un modelo para analizar el grado de interactividad de un producto multimedia. La conferencia convertida en artculo fue publicada en 1999 en el Curso de creacin y realizacin multimedia de Multimedia Ediciones. A continuacin se extratan algunos prrafos sobre el diseo interactivo y el anlisis del grado de interactividad que se utilizarn ms adelante, recrrase a aquel artculo para una descripcin en profundidad.

Se ha definido "interaccin" como la relacin que se establece entre un ordenador y la persona que lo usa. En realidad, la naturaleza de la interaccin no radica tanto en la relacin de la persona con la mquina, sin con el programa informtico, el software que ejecuta. Hablar de interaccin es hablar de la relacin entre el usuario y el programa en funcin de todas aquellas decisiones que su autor ha tomado sobre como debe ser esta relacin. Es decir, detrs de todo programa multimedia existe uno o ms autores que han establecido el conjunto de reglas sobre como va a ser la interaccin con el usuario: qu acciones va poder llevar a cabo, cundo y cmo. Adems, ser necesario establecer como va a responder el programa ante las acciones del usuario: ser comportar siempre de la misma forma o alterar su comportamiento a lo largo del tiempo? recordar las acciones del usuario para responderle personalizando informaciones o procesos? incluir mdulos de autoaprendizaje para alterar su comportamiento? Este conjunto de reglas sobre lo que va a poder hacer el usuario y como va a responderle el programa recibe el nombre de diseo interactivo. Su autor, el diseador interactivo, deber ser capaz de imaginarse el uso del programa an cuando ste ni siquera existe. Su trabajo consistir en definir formalmente el conjunto de reglas de la interaccin para que el equipo del trabajo pueda entenderlas y desarrollar el proyecto que las va a hacer posibles. .../... Se expone, a continuacin, una clasificacin de la interactividad en tres grados. El primer grado consiste en la interaccin inmediata que se produce al pulsar una tecla o un botn. Constituye un tipo de interaccin casi fsica; el programa atiende la peticin del usuario inmediatamente produciendo un efecto. Este tipo de interaccin se relaciona especialmente con la aleatoriedad de acceso a los contenidos de los mens y del hipertexto; marcamos un botn o una palabra y automticamente se muestra otra pantalla. Tambin es la interactividad de los juegos de "marcianitos" ms primitivos, pulsamos la tecla de disparo y la nave espacial lanza inmediatamente un proyectil. Cualquier programa incluye este grado de interaccin de respuesta inmediata. La principal caracterstica del segundo grado de interactividad es que difiere sus efectos en el tiempo: el usuario hace una accin que recibe una respuesta de primer grado, inmediata, pero que posteriormente tendr consecuencias ms trascendentes. Este tipo de interaccin est ntimamente relacionado con los diseos interactivos que acentan la dimensin temporal: la relacin usuario-programa fluye en el tiempo y, por tanto, las acciones que se producen generan efectos a lo largo del tiempo. Es el tipo de interaccin de algunos programas didcticos y simuladores que enfatizan la "historia" y la "inteligencia". .../...

El tercer grado de interactividad est unido a los diseos interactivos ms desestructurados. Las acciones del usuario se enmarcan en un entorno desconocido que requiere un esfuerzo de exploracin para encontrar las claves de resolucin de enigmas y problemas lgicos. Hasta ahora ste es el reino de los juegos de aventuras: para hallar el tesoro debemos hablar con el pirata que nos revelar la combinacin de la cerradura del cofre, pero sin la llave que habremos descubierto en el bolsillo del marinero borracho de la cantina, ser imposible abrirlo. Es un grado de interactividad que requiere un esfuerzo notable por parte del usuario para hacer encajar todas las piezas, y un esfuerzo an mayor por parte del diseador interactivo y el guionista para crearlo.

.../... El tercer grado de interactividad provoca una actitud ms activa que los dos anteriores. Los puzzles lgicos que plantea no suelen ser fciles de resolver lo que provocar que muchos usuarios continen pensando en como solucionarlos incluso cuando no usen el programa. Conseguir que el usuario contine reflexionando sobre los problemas que el programa le plantea podra considerarse el grado ms alto de interactividad. Los programas de entretenimiento con este grado de interaccin suelen propiciar la creacin de comunidades de usuarios en Internet que comparten sus experiencias y anan sus conocimientos para resolver sus dudas. Se trata de una interaccin, es decir una relacin, que trasciende el propio uso del producto. Los diseadores interactivos europeos se esfuerzan en crear productos que cumpliendo los requisitos mnimos de audiovisualidad exigidos por el mercado, consigan el grado de interactividad ms alto posible, para convertir el uso del programa en una autntica experiencia interactiva. Veamos como los autores europeos de los diseos interactivos de los productos europeos analizados anteriormente hablan de sus propias creaciones. La Isla del Tesoro Barcelona Multimedia, 1999. El usuario asume el rol de los distintos personajes y puede actuar en su lugar tomando decisiones y actuando en su lugar. Puede conversar con John Silver el largo, revolver el cofre de Billy Bones en busca del mapa del tesoro del viejo pirata Flint o elaborar una estrategia para defender el fortn de la isla del ataque de los piratas. Si se aleja del argumento de la novela llegar a uno de los 100 finales incorrectos del juego y deber retroceder al punto del argumento en que se equivoc para volverlo a intentar. Adems deber contestar preguntas sobre los personajes histricos que vivieron en la misma poca en que se desarrollaba la novela, situar las ciudades en que vivieron en mapas de todo el mundo y encontrar las respuestas a las preguntas de historia sobre el siglo XIX que le plantear Robert L. Stevenson. Physikus Ruske&Phretmaier, Klett, 1999. La misin del jugador consiste en hacer que un pequeo planeta con el que ha colisionado un meteorito vuelva a funcionar. Para conseguirlo debern resolverse numerosos problemas relacionados con la fsica. Aplicar los principios de las palancas y poleas, tendrn que investigarse fenmenos de ptica y acstica, deber manejarse adecuadamente la energa elctrica ya que las luces y las sombras son la fuente de numerosos secretos que debern ser descubiertos.

El mago chiflado: el misterio del nio desaparecido Savannah, Barcelona Multimedia, 2000. Al empezar a jugar, se te ofrece la posibilidad de elegir entre tres personajes distintos: la mosca, el ratn o el perro. Cada personaje tiene su propia personalidad y la posibilidad de hacer cosas distintas dentro del juego. Conforme vas jugando, puedes cambiar el personaje que quieres ser. La mosca, el ratn y el perro perciben el mundo creado en el juego desde su propio punto de vista. Si realmente quieres saber lo que est ocurriendo en la casa amarilla, debes ser capaz de usar las habilidades individuales de cada uno de los personajes. Qu est ocurriendo con Dani y ese misterioso fantasma? Para no hablar del ratn del mago chiflado, otro misterio! Para llegar al fondo de las cosas tendrs que entrar en el estrao libro de los sueos. En l podrs encontrar pistas para sumergirte en el ocano, viajar por la jungla o tratar de encontrar la salida del laberinto subterrneo.

El lbum Secreto del to Alberto


Lexis numrique, Emme, Barcelona Multimedia, 1999. Con este ttulo, hemos tratado de crear para los nios un nuevo gnero de aventuras que concilia accin, reflexin y experimentacin dentro de un universo viviente y potico. Basado en la aleatoriedad de infinitas posibilidades distintas, dentro del lbum viven animalillos que los usuarios tendrn que aprender a conocer y a manipular para avanzar en la aventura. Podrn coger los animales y los objetos, desplazarlos de una pgina a otra, observar sus reacciones tanto para tratar de resolver los enigmas como por el simple placer de experimentar y divertirse. La matriz audiovisual x interactividad Vamos a presentar a continuacin un nuevo modelo de anlisis de productos multimedia que recoge la clasificacin de la interaccin en grados definida en el modelo de 4 dimensiones definido por el autor en el artculo Diseo interactivo, y que integra las ideas expresadas en este artculo sobre el carcter editorial o audiovisual de un producto. Se trata, como puede verse en el grfico adjunto, de una matriz de dos filas por tres columnas. En el eje de las abcisas situaremos el grado de interactividad del ttulo tal como se defini en el anterior modelo mientras que en el eje de las ordenadas haremos otro tanto con el grado de audiovisualidad. +++ COSTE Audiovisual Mensaje: imagen i/o sonido.
Dinmicos (vdeo y animacin) Texto escaso

Producciones Producciones Internet hoy. 1er grado

Globales de EEUU Europeas .............. . Simuladores. 2 grado Grado de interaccin

.......................... ......

Editorial
Mensaje: texto Estticos Sonido superfluo o redundante

--- COSTE

3er grado

--- Creacin diseo interactivo

+++ Diseo interactivo

Para determinar el grado de audiovisualidad de un producto se dan unas pautas en la propia matriz: si la comunicacin con el usuario se establece a travs del texto nos hallaremos probablemente ante un producto de tipo editorial, parecido a las publicaciones impresas, fruto de un traspaso de contenidos. La falta de vdeo y animacin puede marcarnos tambin una pauta para determinar si debe situarse en esta fila. Sonidos cclicos y prescindibles son otra seal de este tipo de productos, o bien el hecho de poder operar normalmente con el programa habiendo reducido a cero el volumen del audio. Como contraposicin, un producto editorial vehicular su comunicacin con el usuario principalmente a travs de la imagen y el sonido. Para ello probablemente ara uso de animacin o vdeo y el uso del texto ser reservado a desempear aquellas funciones que le son intrnsecas y dificiles de substituir: pistas, apartados con explicaciones de difcil comprensin si son locutadas, elementos que contienen texto en el entorno realista del programa (libros, notas...). Aunque se haya dividido la matriz en dos filas debe entenderse como un eje cartesiano en el que como ms hacia arriba se site un producto ms audiovisual es y como ms abajo ms editorial. Por ejemplo, situado en el extremo inferior de la ordenada estara encontraramos al libro, y en el extremo superior, una pelcula cinematogrfica. La separacin en dos filas debe servir para delimitar una frontera por encima de la cual vamos a considerar a los productos como audiovisuales y por debajo como editoriales. En el eje de las ordenadas se situar el grado de interactividad del producto. Cualquier producto interactivo dispone del primer grado de interactividad, es decir la respuesta inmediata a la accin del usuario, sino no podemos hablar con propiedad de un producto interactivo, por ese motivo en el punto 0 del eje de las abcisas estaran situados tanto los libros como las pelculas dado que su grado de respuesta a una accin del usuario es nulo. El segundo grado de interactividad se da en los ttulos en que el usuario debe reflexionar sobre el efecto de sus acciones ya que pueden tener consecuencias que no darn un resultado inmediato (o si lo hacen ser slo como feedback de confirmacin) sino que lo harn ms adelante en el uso del producto. Y, finalmente, el tercer grado slo se considerar en el caso que el diseo interactivo del programa consiga que la actividad del usuario trascienda al momento de uso del programa. Puede darse de dos formas distintas, por un lado si el usuario, una vez ha abandonado el programa, contina reflexionando sobre aquello que el programa le ha planteado y, por otro lado, si se siente impulsado a generar algn tipo de actividad al margen del programa pero relacionada con este (creacin de pginas en Internet, grupos de jugadores, comprar elementos de merchandising relacionados con el producto, etc). Evidentemente, como ms subimos en el eje de las ordenadas, grado de audiovisualidad, ms elevados sern los costes de la produccin; mientras que el augmento del valor del eje de las abcisas, grado de interaccin, estar ms asociado al esfuerzo del trabajo intelectual de creacin del diseo interactivo y el guin. Podr verse en la matriz una lnia curva que delimita una frontera entre la zona izquierda de la matriz y la zona derecha. En la zona de la izquierda se encontraran aquellos ttulos que segn lo expresado en este artculo y el de diseo interactivo no aprovechan las caractersticas especficas de los productos multimedia interactivos. Vamos a analizarlos brevemente.

Productos editoriales con un grado de interactividad 1 Estaramos hablando de productos con un elevado contenido en texto, pensados bsicamente para la difusin de informacin. Suelen tener diseos interactivos basados en hipertexto e hipermedia. Los vdeos o animaciones que contienen suelen ser aadidos ilustrativos de los textos pero no fundamentales. El sonido puede presentarse de la misma forma que los vdeos o apenas existir. Tambin en este cuadro encontraramos la mayora de los webs de Internet de hoy. El grado de interaccin es muy bajo y se basa en hipervnculos textuales o de imgenes. El aspecto es fundamentalmente editorial, muy parecido a las publicaciones impresas y a los primeros ttulos multimedia con textos ilustrados con imgenes. El texto es pues el principal vehculo de la comunicacin con el usuario. Los vdeos son prcticamente inexistentes y los que existen suelen tener aquel carcter de aadidos multimediticos que se les daba en los primeros ttulos multimedia. Pequeas animaciones con gifs animados o flash tratan de convertir en audiovisuales largos documentos de textos. Otrotanto con el sonido. El mundo de Internet, hoy, es el mundo del silencio. Productos audiovisuales con grado de interactividad cercano a 0 Existen productos en que se ha primado tanto la resolucin audiovisual que se ha olvidado la interaccin, de forma que tienen poca interactividad ms que el viejo videolaserdisc en que con una calidad audiovisual excelente la interaccin que se consegua iba poco ms all de la seleccin de fragmentos de vdeo.

Productos editoriales con grado de interactividad 2 y 3


S, existen productos muy editoriales con un grado de interactividad 2 o incluso 3. De hecho no existe una correlacin entre el grado de audiovisualidad y el grado de interactividad. Por ejemplo, un simulador de negocios puede considerarse un producto de grado de interactividad 2 o incluso 3, si bien puede estar realizado exclusivamente con texto. Pero, puede considerarse un simulador textual como un producto multimedia interactivo? Interactivo sin duda, pero considerarlo multimedia entrara en conflicto con aquella primera definicin: Multimedia designa la tecnologa que combina distintas medias: imagen, sonido y texto, bajo la gestin de uno o ms programas informticos. De forma que aqu la lnea curva debe actuar de frontera de separacin de los productos multimedia interactivos y los programas informticos. Podemos considerar, sin embargo, la zona comprendida a la derecha de la lnea curba an dentro de la fila editorial, como un espacio de creacin de productos que, an con un escaso contenido audiovisual, pueden caer dentro del mbito del multimedia interactivo. En este espacio podramos encontrar muchos simuladores con grados de interactividad muy altos pero con escaso potencial audiovisual.

Productos audiovisuales interactivos


Esta zona contiene la mayora de productos interactivos del mercado. Ejemplos de productos muy audiovisuales y con un grado de interactividad 1 podran ser los simuladores de coches de carreras. La interaccin no va mucho ms all del momento en que el usuario realiza la accin (girar el volante, acelerar, frenar...) aunque el grado de resolucin audiovisual es brutal. Para volver sobre los ejemplos de productos analizados anteriormente, las grandes producciones de Estados Unidos pensadas para ser comercializadas en el mercado global (Riven y Expediente X) ocuparan la zona superior de la fila audiovisual, mientras

que las producciones europeas de presupuestos ms modestos (La Isla del Tesoro, Physikus, El mago chiflado y El lbum Secreto) ocuparan la zona media e inferior. Como hemos dicho no existe necesariamente una correlacin entre grado de audiovisualidad e grado de interaccin de forma que el grupo europeo y el grupo americano podran extenderse entre los tres grados de interaccin de forma similar. Lo cierto es, sin embargo, que estas grandes producciones americanas suelen ir acompaadas por un esfuerzo de comercializacin tan enorme que puede facilitar la existencia de iniciativas relacionadas con el tercer grado de interaccin (foros en Internet, elementos de merchandising, publicacin de libros sobre los programas, etc.). En sntesis, la matriz de audiovisual x interactividad pretende ser un instrumento de anlisis de los productos multimedia interactivos que combine su resolucin formal con las consecuencias en el usuario de su diseo interactivo. Puede usarse tambin como elemento de reflexin sobre las decisiones de diseo ms importantes en la creacin de nuevos ttulos. Como ms arriba a la derecha consiga colocarse un ttulo, tanto mejor, an as, esperemos que el ingenio y la creatividad de los autores europeos pueda superar la barrera de los costes de las grandes producciones audiovisuales para crear ttulos ricos en propuestas originales e interactividad. [Link]

Unidad 6. Programacin de puertos e interrupciones.


6.8 Interrupciones.
Interrupciones
1 Sinopsis Una peticin de interrupcin IRQ ("Interrupt Request") es una seal que se origina en un dispositivo hardware (por ejemplo, un perifrico), para indicar al procesador que algo requiere su atencin inmediata; se solicita al procesador que suspenda lo que est haciendo para atender la peticin. Hemos sealado ( H2) que las interrupciones juegan un papel fundamental, en especial en la operacin de dispositivos E/S, ya que les permite enviar estas peticiones a la UCP. Sin ellas el sistema debera chequear constantemente los dispositivos para comprobar su actividad, pero las interrupciones permiten que los dispositivos puedan permanecer en silencio hasta el momento que requieren atencin del procesador. Podra figurarse un sistema telefnico donde hubiera que levantar peridicamente el auricular para comprobar si alguien nos llama? [4]. Nota: Veremos que estas peticiones pueden ser generadas no solo por dispositivos hardware, tambin por los programas, e incluso en circunstancias especiales (errores generalmente) por el propio

procesador. Resumimos que existen tres posibles orgenes de estas peticiones: Hardware, Software, y del procesador. 2 Principio de funcionamiento Cuando un dispositivo reclama atencin del procesador es para que este haga algo. Este "algo" es lo que se conoce como servicio; controlador o gestor de la interrupcin, ISR ("Interrupt service routine"). En cualquier caso se trata siempre de ejecutar un programa situado en algn lugar de la memoria RAM o en la ROM-BIOS. Ocurre que las direcciones de inicio de estos programas, que se conocen como vectores de interrupcin, se copian en una tabla de 1024 Bytes que se carga al principio de la memoria de usuario (direcciones 0000h a 0400h) durante el proceso de inicio del sistema ( H4), razn por la cual estas rutinas se conocen tambin como servicios del BIOS. La citada tabla se denomina tabla de vectores de interrupcin IDT ("Interrupt Description Table") y en sus 1024 bytes pueden almacenarse 256 vectores de 4 bytes. Es decir, los vectores de interrupcin son punteros de 32 bits, numerados de 0 a 255, que sealan las direcciones donde comienza la rutina que atiende la interrupcin [3]. Como veremos a continuacin, el diseo del PC solo permite 16 interrupciones distintas, por lo que puede parecer extrao que se hayan previsto 256 vectores para atenderlas. La razn es que, adems de los servicios del BIOS propiamente dichos, se cargan las direcciones de inicio de otras rutinas del Sistema Operativo, e incluso es posible cargar otras especficas de usuario. Al disear el 8088, Intel estableci un reparto de estos vectores, reservando los 5 primeros para uso interno del procesador (precisamente para atender las excepciones ). A continuacin estableci otros 27 de uso reservado, aunque no desvel ningn uso especfico para algunos de ellos. A partir de aqu, los vectores 32 a 255 estaban disponibles. El esquema resultante se muestra en la tabla adjunta. Vector Dec. Hex 0 1 2 3 0 1 2 3 Uso Error: Divisin por cero Excepciones para depuracin (ejecucin paso a paso) Interrupcin no enmascarable Punto de ruptura interrupcin (Instruccin INT)

Desbordamiento ("Overflow"). Utilizado cuando un clculo aritmtico se desborda. Instruccin INTO (reservado) Cdigo de instruccin no vlido Coprocesador no disponible Fallo doble (reservado -Rutina de atencin del Teclado-) TSS no vlido Segmento no disponible Excepcin de pila Proteccin general Fallo de pgina (reservado) Error de coprocesador (reservado) Disponibles para interrupciones enmascarables

5 6 7 8 9 10 11 12 13 14 15 16

5 6 7 8 9 A B C D E F 1A

1B17-31 1F 32- 20255 FF

Sin embargo, aunque tericamente las interrupciones 0 a 31 estaban restringidas, IBM y Microsoft utilizaron algunas de ellas sin respetar las indicaciones de Intel. En concreto, IBM y Microsoft utilizaron algunas para los servicios BIOS ( Servicios-BIOS). Es significativo que, a pesar de haber sufrido ampliaciones, la especificacin inicial se mantiene para las 31 interrupciones iniciales. Lo que hace posible que pueda cargarse un Sistema PC-DOS 1.0 en una mquina Pentium. Nota: Aparte de estos servicios del BIOS, existen otros, instalados por el propio Sistema Operativo, los denominados servicios del Sistema ( Servicios del Sistema).

El "modus operandi" es como sigue: Cuando se recibe la peticin de interrupcin, el procesador termina la instruccin que est ejecutando, guarda el contenido de los registros, deshabilita el sistema de interrupciones; ejecuta el "servicio" y vuelve a su punto de ejecucin. El servicio suele terminar con una instruccin IRET ("Interrupt Return") que restituye el contenido de los registros y vuelve a habilitar el sistema de interrupciones. En cierto sentido, el proceso es similar al que ocurre cuando aparece la invocacin de una funcin en el cdigo de un programa ( 4.4.6b). En el prrafo anterior hemos indicado someramente el proceso cuando "se recibe" una peticin, pero cabe una cuestin: Como se recibe la peticin?. Hemos adelantado que estas peticiones pueden ser generadas desde el software o incluso por el procesador, lo que nos conduce a que en realidad las nicas que deben recibirse (desde el exterior) son las que denominadas interrupciones hardware (que se originan en dispositivos externos al procesador). Antes de describir brevemente el camino hasta que la solicitud es recibida por la UCP, permitidme adelantar que para su gestin existen tres tipos de elementos de soporte:

Ciertas lneas especficas (IRQ's) en el bus de control El controlador de interrupciones (PIC). Un procesador especfico que realiza cierta elaboracin previa de las peticiones antes de entregar la seal a la UCP . Ciertas patillas especficas en el procesador .

El resumen del proceso es como sigue: Un perifrico, tarjeta o dispositivo necesita atencin; a tal efecto pone en tensin baja una de las lneas IRQ del bus de control (que le haba sido asignada). La seal es recogida por el PIC, que la procesa, la clasifica, y enva una seal a una de las patillas del procesador. A continuacin el procesador se da por notificado y pregunta que tipo de excepcin debe atender. Como respuesta, PIC asigna un nmero de servicio (0-256) en forma de un octeto que es colocado en el bus de datos, con lo que estamos en el punto inicial del proceso. Para la asignacin del nmero de servicio a partir de una de las 16 solicitudes de las IRQ, el PIC realiza un cierto proceso ("Interrupt Handling Routine") a partir de los datos de programacin iniciales y del estado actual del propio sistema de interrupciones. Por ejemplo, puede estar procesndose el servicio de una interrupcin, pero la rutina esta suspendida momentneamente porque se ha solicitado otra interrupcin de prioridad ms alta, o tal vez se recibe otra interrupcin del mismo perifrico antes de haber atendido la anterior, Etc. 3 Lneas de peticin de interrupcin El bus de control dispone de lneas especficas para el sistema de interrupciones ( H2). En el PC XT existen 8, numeradas del 0 al 7, aunque las dos primeras estn asignadas al temporizador y al teclado, con lo que solo quedaban 6 lneas para otros dispositivos, que aparecen como tales en el bus de control (IRQ2 - IRQ7). A partir del modelo AT se aadieron otras 8 lneas, numeradas del 8 al 15, mediante un segundo procesador PIC , aunque la

tecnologa empleada exigi colgarlo de la lnea IRQ2, de forma que esta lnea se dedica a atender las interrupciones del segundo controlador a travs de la lnea 9 de este ltimo, y la lnea 8 se dedic al reloj de tiempo real, un dispositivo que no exista en los modelos XT. Aunque internamente se manejan 16 lneas, no todas tienen contacto en los zcalos del bus externo; Son las marcadas con asterisco (*) en la tabla que sigue . La razn de esta ausencia en los zcalos de conexin es que son de asignacin fija, y nadie ms que ciertos dispositivos instalado en la propia placa tiene que utilizarlas. En concreto la lnea NMI est asignada al mecanismo de control de paridad de la memoria; la lnea 0 est asignada al cronmetro del sistema ( H2) y la lnea 1 al chip que controla el teclado (dispositivos que pueden requerir atencin urgente por parte del procesador). Es costumbre denominar IRQx a las que tienen prolongacin en el bus. Tericamente las restantes lneas podran ser asignadas a cualquier nuevo dispositivo, pero en la prctica algunas estn reservadas a dispositivos estndar. Por ejemplo, IRQ3 est casi siempre asignado al puerto serie COM2 y IRQ4 a COM1; IRQ6 al controlador estndar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clsicas para el XT y el AT.

Tabla-1 Nombr Int XT: Descripcin e (hex) --Paridad* NMI 0 8 Temporizador* 1 9 Teclado* IRQ2 A Reservado IRQ3 B Puertos serie COM2 IRQ4 C Puertos serie COM1 IRQ5 D Disco duro IRQ6 E Disquete IRQ7 F Impresora primaria LPT1 8 70 No aplicable 9 71 No aplicable IRQ10 72 No aplicable IRQ11 73 No aplicable IRQ12 74 No aplicable 13 75 No aplicable IRQ14 76 No aplicable IRQ15 77 No aplicable AT: Descripcin Paridad* Temporizador* Teclado* Interrupciones 8 a 15 (PIC#2) Puerto serie COM2 Puerto serie COM1 Impresora secundaria LPT2 Disquete Impresora primaria LPT1 [8] Reloj de tiempo real* Redirigido a IRQ2* no asignado no asignado Ratn PS2 Coprocesador 80287* Contr. disco IDE primario Contr. disco IDE secundario

Nota: Los usuarios de Windows 98 pueden comprobar la asignacin de IRQ's a los diversos dispositivos del sistema mediante el programa

C:\Archivos de programa\Archivos comunes\Microsoft Shared\MSINFO\[Link]. En Linux pueden consultarse en el fichero /proc/interrupts. A continuacin se nuestra la distribucin de lneas IRQ en un ordenador tpico (AT), bajo Windows-98SE [7]. IRQ Utilizacin

0 Cronmetro del sistema 1 Teclado estndar de 101/102 teclas o MS Natural Keyboard 2 Controlador programable de interrupciones 3 Puerto de infrarrojos rpidos ThinkPad de IBM 4 Puerto de comunicaciones (COM1) 5 Crystal SoundFusion(tm) Game Device 6 Controlador estndar de disquetes 7 Puerto de impresora (LPT1) 8 Sistema CMOS/reloj en tiempo real 9 (libre) 10 (libre) 11 Marcador IRQ para manejo de PCI 11 Marcador IRQ para manejo de PCI 11 Marcador IRQ para manejo de PCI 11 Marcador IRQ para manejo de PCI 11 Controlador universal de host Intel 82371AB/EB PCI a USB 11 Crystal SoundFusion(tm) PCI Audio Accelerator 11 Lucent Win Modem 11 Intel(R) PRO/100 SP Mobile Combo Adapter 11 Texas Instruments PCI-1450 CardBus Controller 11 Texas Instruments PCI-1450 CardBus Controller 11 RAGE MOBILITY-M AGP (English) 12 Puerto de mouse compatible con PS/2 13 Procesador de datos numricos 14 Controlador estndar para disco duro Bus Mastering IDE 15 Controlador estndar para disco duro Bus Mastering IDE Interrupciones en el ordenador anterior segn el fichero /proc/interrupts bajo Linux: 0: 1: CPU0 3407670 7149 XT-PIC timer XT-PIC keyboard

2: 8: 9: 11: PCI1450, 12: 14: 15: NMI: LOC: ERR: MIS:

0 XT-PIC cascade 2 XT-PIC rtc 1461 XT-PIC acpi 2508 XT-PIC usb-uhci, Texas Instruments Texas Instruments PCI1450 (#2), CS46XX 74331 XT-PIC PS/2 Mouse 90666 XT-PIC ide0 50966 XT-PIC ide1 0 0 0 0

Cuando se instala un dispositivo E/S que puede necesitar atencin del procesador, debe asignrsele una IRQ adecuada (dicho en otras palabras: cuando requiera atencin debe enviar una seal en la lnea IRQ especificada). Inicialmente esto se haca de forma manual, por medio de puentes ("Jumpers") en la placa o dispositivo, pero actualmente esta seleccin puede hacerse por software, y los dispositivos son de enchufar y usar PnP ("Plug and play" ). 4 Controlador PIC Las peticiones hardware de interrupcin del PC son manejadas por un chip, conocido como PIC#1 ("Programmable Interrupt Controller"). Originariamente era un 8259A, que puede manejar 8 peticiones (IRQ0/IRQ7), pero pronto se hizo evidente que eran un nmero excesivamente corto, por lo que en 1984 IBM aadi un segundo controlador PIC#2 en el modelo AT, que poda manejar las peticiones IRQ8 a IRQ15, aunque las interrupciones utilizables resultantes no fuesen de 16 como cabra suponer, por las razones apuntadas en el prrafo anterior. En el PC las peticiones de nmero ms bajo se atienden antes que las de nmero ms alto, as que se atienden primero IRQ0 e IRQ1; asignadas como hemos visto al cronmetro del sistema y al teclado (el cronmetro no puede ser interrumpido por nadie porque perdera la hora). Despus se atienden las peticiones IRQ8 a IRQ15 del controlador esclavo, que hereda la prioridad de IRQ2 de la que est colgado. A continuacin se atienden las IRQ3 a IRQ7 de PIC#1. Las peticiones de prioridad ms baja son las del controlador estndar de disquetes (IRQ6) y las del puerto de impresora LPT1 (IRQ7). Fsicamente, el 8259A es un chip de 28 patillas, 8 de las cuales conectan con las lneas IRQ0-IRQ7; ocho para el bus de datos (D0-D7), una entrada INTA ("Interrupt Acknowledge") y una salida INTR ("Interrupt Request"), aparte de otras auxiliares, como tensin de alimentacin y masa. Como veremos a continuacin , cuando el 8259A recibe una seal IRQ, activa la seal INTR que es recibida por el procesador. Cuando este responde con un INTA, pone en el bus de datos un byte en el rango 0/256, que es identificado a su vez por el procesador como un nmero de interrupcin.

Desde el punto de vista lgico, PIC #1 responde a las direcciones 020h-021h, mientras que PIC#2 lo hace en 0A0h-0A1h. Cada PIC dispone de tres registros de 1 byte; IRR, ISR e IMR, que en conjunto gobiernan las decisiones del dispositivo: 4.1 Registro de solicitud de interrupcin IRR ("Interrupt Request Register"). Cada bit de este registro controla el estado de una lnea IRQ. Cuando se detecta una peticin en una de estas lneas, el bit correspondiente del IRR es pueto a 1. 4.2 Registro de interrupciones activas ISR ("In Service Register"). Cada bit indica si ya existe una interrupcin activada en la lnea correspondiente. 4.3 Registro de mscara de interrupciones IMR ("Interrupt Mask Register"). Tambin aqu cada bit corresponde a una lnea IRQ, e indica si esta permitida un interrupcin de ese nivel en ese momento. El PIC es un dispositivo complejo que realiza varias tareas; a continuacin se muestra un resumen de ellas:

Puesto que existen muchos dispositivos que pueden solicitar interrupciones, es responsabilidad del PIC priorizarlas cuando existen varias IRQ's simultneas [5]. Despus de enviar una solicitud de interrupcin y el procesador contesta que est listo para atenderla, debe enviar un nmero de interrupcin (nmero de vector). Mantiene un registro de que se est procesando una interrupcin. Cuando esto sucede, no enva ms peticiones del mismo dispositivo al procesador hasta que este le responde con una seal EOI ("End Of Interrupt"), indicando que la rutina de servicio precedente ha terminado, o puede aceptar otra interrupcin. Puede enmascarar de forma selectiva cualquiera de las 8 IRQ's que tiene conectadas (como se ver ms adelante, es la nica forma de enmascarar las interrupciones no enmascarables).

El 8259A tiene distintos modos de operacin, uno de los cuales es el utilizado por los diseadores del PC; esta seleccin se realiza va software en los momentos iniciales. Tambin se decide en este momento que nmero de interrupcin deber devolver el PIC en respuesta a las seales recibidas en las lneas IRQ. Puntos importantes a destacar es que, como se ha sealado, se trata de un dispositivo programable; que esta programacin es realizada por el BIOS en la fase de inicio, y que el PIC es una parte fundamental del mecanismo de excepciones hardware. 5 Patillas del procesador

Otro elemento que interviene en el mecanismo de excepciones son ciertas patillas del procesador. Todos los miembros de la saga 8088 disponen de dos patillas, designadas INTR y NMI, para este servicio especfico ( H3.2.1). Sirven respectivamente para atender las interrupciones enmascarables y no enmascarables (nos referimos a ellas inmediatamente). A su vez, el procesador utiliza ciertas seales en algunas de sus patillas para generar un ciclo INTA ("Interrupt Acknowledge"), que sirve para notificar al PIC que ha recibido la interrupcin. 6 Tipos de interrupcin Atendiendo a su origen, en el PC existen tres tipos de interrupciones: Interrupciones hardware; interrupciones software , y excepciones del procesador . 6.1 Las interrupciones hardware ocurren cuando un dispositivo necesita atencin del procesador y genera una seal elctrica en la lnea IRQ que tiene asignada. Esta seal es recogida y procesada por el controlador de excepciones PIC antes de ser enviada al procesador, lo que puede realizarse de dos formas, segn el tipo de interrupcin sea enmascarable o no enmascarable. 6.1.1 Interrupcin enmascarable significa que, bajo control del software, el procesador puede aceptar o ignorar (enmascarar) la seal de interrupcin. Para ello se enva una seal a la patilla INTR , y el procesador la atiende o la ignora en funcin del contenido de un bit (IF) en un registro (FLAGS) que puede estar habilitado o deshabilitado ( H3.2). En el primer caso, cuando se recibe la seal, el procesador concluye la instruccin que estuviese en proceso y a continuacin responde con una combinacin de seales en algunas de sus patillas componiendo una sucesin de dos seales INTA ("Interrupt Acknowledge" H3.2.1). La primera seal es simplemente un aviso; la segunda es una peticin para que el PIC coloque en el bus de datos un Byte con el nmero de interrupcin, de forma que el procesador pueda localizar el servicio solicitado. El valor recibido (0-255) es multiplicado por 4 para calcular la direccin del vector correspondiente en la tabla de vectores de interrupcin, lo que se realiza mediante un desplazamiento binario de dos posiciones a la izquierda ( 4.9.3). A continuacin, el procesador salva en la pila los valores del registro de estado ( H3.2), del contador de programa (PC) y del segmento de cdigo (CS); deshabilita el bit IF del registro de estado, para que la interrupcin no pueda ser molestada con una nueva interrupcin enmascarable hasta que sea especficamente permitido, y finalmente ejecuta el servicio. La penltima secuencia de la rutina de servicio es enviar una seal de que la interrupcin ha terminado (EOI) para que el PIC pueda seguir enviando interrupciones. A continuacin debe restaurar los registros a su estado inicial (existente antes de que se produjera la interrupcin).

La seal de terminacin del servicio de la interrupcin EOI ("End of interrupt") es la siguiente secuencia: MOV DX, PIC0 MOV AL, EOI OUT DX, AL La primera instruccin mueve el contenido PIC0 al registro DX (PIC0 es el nemnico de la direccin ms baja de puerto A0 = 0). La segunda mueve el valor EOI (nemnico del valor 20h) al registro AL. La tercera es una sentencia de escritura a puerto; escribe el contenido del registro AL (el valor EOI puesto en la sentencia anterior) en el puerto sealado por el contenido del registro DX (establecido en la primera instruccin).

Para facilitar el manejo de interrupciones, el 8088 y sucesores disponen de algunas instrucciones especficas:

IRET Retorno de interrupcin ("Interrupt Return"). Recupera de la pila el contador de programa PC; el segmento de cdigo CS (lo que supone devolver el programa al punto de ejecucin original), y el registro de estado FLAGS (lo que supone devolver las interrupciones enmascarables al estado inicial). CLI Limpiar la interrupcin ("Clear Interrupt"); pone a cero el registro IF, deshabilitando las interrupciones enmascarables. STI Es la instruccin opuesta ("Set Interrupt") pone a 1 el registro IF habilitando las interrupciones enmascarables.

La idea importante a resaltar aqu, es que el PIC asocia un nmero entre 0 y 255 a cada peticin. Este nmero, que se conoce como nmero de interrupcin, no debe ser confundido con el nmero de lnea IRQ's que realiz la solicitud. El nmero de interrupcin sirve para identificar el servicio mediante la tabla IDT . Una vez ejecutado el servicio, deben dejarse las cosas como estaban para que el programa original pueda continuar su ejecucin. 6.1.2 Interrupcin no enmascarable significa que la interrupcin no puede ser deshabilitada por software. Este tipo de interrupciones ocurren cuando se recibe una seal en la patilla NMI ("Nonmaskable Interrupt" 5 ) del procesador. Se reservan para casos en que es crtica la respuesta, por ejemplo que se detecte un error de paridad en la memoria. Adems son de prioridad ms alta que las enmascarables.

Nota: La nica forma de enmascarar estas interrupciones es a travs de circuitos externos al procesador, por ejemplo a nivel del PIC. Cuando el procesador recibe una de estas instrucciones no se genera ningn ciclo de reconocimiento de la instruccin (INTA), y el procesador le asigna un 2 como nmero de excepcin. 6.2 Interrupciones software Los procesadores Intel de la gama x86 y compatibles, disponen de una instruccin INT que permite generar por software cualquiera de los 256 tipos de interrupcin anteriormente descritos (2 ). El proceso seguido es exactamente el mismo que si se recibe una interrupcin hardware en la patilla INTR, salvo que en este caso se conoce el tipo de interrupcin, y no se requiere ningn ciclo INTA. Por ejemplo, en lenguaje ensamblador, la instruccin INT 21 invoca la interrupcin 33d (21h), que en MS-DOS es la llamada a los servicios del Sistema. Este tipo de interrupciones son de prioridad ms alta que las de hardware (enmascarables y no enmascarables), de forma que si se recibe una interrupcin hardware mientras que se ejecuta una software, esta ltima tiene prioridad. Este tipo de interrupciones son utilizadas tanto por el Sistema Operativo como por los programas de usuario que pueden instalar las suyas particulares (hemos sealado , que algunas de las 255 posiciones de la tabla de vectores de interrupcin estn desocupadas). Precisamente, aquellas posiciones de la IDT que sealan a posiciones dentro de la ROM-BIOS (por encima de la direccin F0000h H5.1) se refieren a interrupciones relacionadas con servicios de la BIOS, mientras que las situadas en la zona de memoria convencional, se refieren a interrupciones instaladas por el Sistema o los programas de aplicacin. 6.3 Excepciones del procesador Durante el funcionamiento del procesador pueden ocurrir circunstancias excepcionales; es usual citar como ejemplo el caso de una divisin por cero. En estos casos, el procesador genera una excepcin, que es tratada como si fuese una interrupcin software (6.2 ), con la diferencia de que el nmero de interrupcin asociado depende del tipo de excepcin. En el caso de la divisin por cero el nmero asociado es cero. Este era el nico tipo de excepcin de procesador prevista en el 8088, pero en los modelos sucesivos de la saga x86 y Pentium esta posibilidad fue amplindose paulatinamente. 6.5 Las interrupciones tienen un orden de prioridad, de forma que si ocurren

dos de forma simultnea es atendida la de prioridad ms alta. El orden en que se atienden es el siguiente: 1: 2: 2: 4: Excepciones del procesador. Interrupciones software. Interrupciones hardware no enmascarables. Interrupciones hardware enmascarables.

7 Evolucin El sistema de interrupciones es una excepcin en lo que a evolucin se refiere. A partir de la introduccin del segundo controlador 8259A en 1.984, el diseo ha permanecido invariable. La razn es que su modificacin supondra un cambio demasiado drstico en la arquitectura del PC, con un parque de millones de sistemas y perifricos instalados con millones de programas y Sistemas Operativos funcionando que no podran ser trasladados "tal cual" a las nuevas mquinas [6]. Puede decirse que desde su nacimiento, el PC arrastraba ciertas carencias congnitas, que podan resumirse en escasez de Lneas de acceso directo a memoria DMA's ( H2.3); lneas de interrupciones IRQ's; direcciones de puertos, y memoria convencional ( H5.1). El resultado era que la configuracin de los primeros sistemas era una pesadilla para los instaladores, que deban configurar manualmente los dispositivos instalados poniendo y quitando los fastidiosos "Jumpers" [1]. A pesar de todo, muchas veces el resultado era que sencillamente no poda instalarse el nuevo dispositivo porque los canales DMA o lneas IRQ que podan seleccionarse estaban ya ocupadas por otros. Como consecuencia de tales deficiencias, en una conferencia sobre hardware para Windows celebrada en marzo de 1.993, Microsoft e Intel propusieron un nuevo estndar que intentaba simplificar el problema. Conocido como Plug and Play (PnP), enchufar y usar (precisamente el "sueo" de los instaladores en la poca), que se basa en varias premisas. La principal, que los dispositivos fueran configurables por software mediante un programa especial de "Set-up". Adems tanto el hardware como el software (controladores de dispositivos cargados por el Sistema), deberan ser reconfigurables dinmicamente para adaptarse a los cambios de configuracin. Por ejemplo, insertar o retirar un dispositivo PC-Card de un bus PCMCIA [2]. En realidad la especificacin PnP no resolva el problema de fondo, la escasez de ciertos recursos, pero desde luego simplificaba las cosas. 8 Interrupciones en Windows La descripcin anterior corresponde a lo que ocurre en el hardware, o lo que es lo mismo, en una aplicacin trabajando en modo real ( H5.1); es la descripcin clsica del mecanismo de interrupciones de una aplicacin bajo MS-DOS.

Hemos sealado que en los sistemas Windows, cada aplicacin corre en una mquina virtual MV ( 0.2), de modo que est ms alejada del hardware que las aplicaciones que se ejecutan en modo real. En este caso, las aplicaciones interactan con dispositivos virtuales VDs ("Virtual devices") a travs de controladores virtuales de dispositivos VxDs. En concreto, el controlador PIC es virtualizado por el VPICD ("Virtual PIC Device"); este es un controlador virtual proporcionado de forma estndar por Windows que emula las funciones del autntico controlador programable de interrupciones. Esta simulacin implica reflejar las interrupciones en las mquinas virtuales y simular E/S, por ejemplo, reconocer cuando una MV emite un final de interrupcin EOI ("End of interrupt"). Lo mismo que ocurre en modo real, durante la inicializacin del controlador virtual VPICD, se establece un manejador de excepciones por defecto para cada peticin de interrupcin (IRQ). Estos manejadores determinan que mquina virtual ser afectada y con que interrupcin. Tambin arbitran los posibles conflictos cuando diversas mquinas virtuales intentan desenmascarar la misma interrupcin. Cualquier interrupcin no enmascarada cuando se inicia Windows es considerada una interrupcin global. Este tipo de interrupciones sern reflejadas en la mquina virtual que est en ejecucin en ese momento (a su vez la MV puede enmascarar o no enmascarar esta IRQ). Si una MV desenmascara una IRQ que fue enmascarada cuando se inici Windows, es declarada propietaria de dicha interrupcin, y la IRQ ser reflejada exclusivamente en su mquina propietaria (si alguna otra MV intenta desenmascarar dicha interrupcin, Windows terminar la segunda MV, y puede sealar la necesidad de reiniciar el sistema). Si algn otro VxD virtualiza una peticin IRQ, es su responsabilidad determinar que MV debe recibir las interrupciones y arbitrar los posibles conflictos. Adems, el controlador por virtual por defecto VPICD dejar de proporcionar soporte para dicha IRQ. [Link]

Manejadores de interrupciones
Excepto para el ltimo captulo, todo lo que hemos hecho hasta ahora en el ncleo ha sido como respuesta a un proceso que lo pide, ya sea tratando con un fichero especial, enviando un ioctl(), o a travs de una llamada al sistema. Pero el trabajo del ncleo no es slo responder a las peticiones de los procesos. Otro trabajo no menos importante es hablar con el hardware conectado a la mquina. Hay dos tipos de interaccin entre la CPU y el resto del hardware de la computadora. El primer tipo es cuando la CPU da rdenes al hardware, el el otro es cuando el hardware necesita decirle algo a la

CPU. La segunda, llamada interrupcin, es mucho ms difcil de implementar porque hay que tratar con ella cuando le conviene al hardware, no a la CPU. Los dispositivos hardware tpicamente tienen una pequea cantidad de RAM, y si no lees su informacin cuando est disponible, se pierde. Bajo Linux, las interrupciones hardware se llaman IRQs (abreviatura de Interrupt Requests)11.1. Hay dos tipos de IRQs, cortas y largas. Una IRQ corta es la que se espera que dure un periodo de tiempo muy corto, durante el cual el resto de la mquina estar bloqueado y ninguna otra interrupcin ser manejada. Una IRQ larga es una que puede durar ms tiempo, y durante la cual otras interrupciones pueden ocurrir (pero no interrupciones que vengan del mismo dispositivo). Si es posible, siempre es mejor declarar un manejador de interrupciones como largo. Cuando la CPU recibe una interrupcin, detiene lo que quiera que est haciendo (a menos que se encuentre procesando una interrupcin ms prioritaria, en cuyo caso tratar con esta interrupcin slo cuando la ms prioritaria se haya acabado), salva ciertos parmetros en la pila y llama al manejador de interrupciones. Esto significa que ciertas cosas no se permiten dentro del propio manejador de interrupciones, porque el sistema se encuentra en un estado desconocido. La solucin a este problema es que el manejador de interrupciones haga lo que necesite hacer inmediatamente, normalmente leer algo desde el hardware o enviar algo al hardware, y despus planificar el manejo de la nueva informacin en un tiempo posterior (esto se llama `bottom half') y retorna. El ncleo est garantizado que llamar al bottom half tan pronto como sea posible; y cuando lo haga, todo lo que est permitido en los mdulos del ncleo estar permitido. La forma de implementar esto es llamar a request_irq() para que se llame a tu manejador de interrupciones cuando se reciba la IRQ relevante (hay 15 de ellas, ms una que se utiliza para disponer en cascada los controladores de interrupcin, en las plataformas Intel). Esta funcin recibe el nmero de IRQ, el nombre de la funcin, banderas, un nombre para /proc/interrupts y un parmetro para pasarle al manejador de interrupciones. Las banderas pueden incluir SA_SHIRQ para indicar que ests permitiendo compartir la IRQ con otro manejador de interrupciones (normalmente porque un nmero de dispositivos hardware estn en la misma IRQ) y SA_INTERRUPT para indicar que esta es una interrupcin rpida. Esta funcin slo tendr xito si no hay ya un manejador para esta IRQ, o si ya la estais compartiendo. Entonces, desde dentro del manejador de interrupciones, nos comunicamos con el hardware y despus usamos queue_task_irq() con tq_immediate() y mark_bh(BH_IMMEDIATE) para planificar el bottom half. El motivo por el que no podemos usar la queue_task estndar en la

versin 2.0 es que la interrupcin podra producirse en el medio de la queue_task de alguien 11.2. Necesitamos mark_bh porque las versiones anteriores de Linux slo tenan un array de 32 bottom half's, y ahora uno de ellos (BH_IMMEDIATE) se usa para la lista enlazada de bottom half's para los controladores que no tenan una entrada de bottom half asignada. [Link]

6.9 Generalidades de los puertos. 6.10Puerto serial y sus variantes. 6.10.1 USB. 6.10.2 Infrarrojo. 6.10.3 Fire wire. 6.11Paralelo y sus variantes. 6.12Interrupciones que intervienen en cada puerto. 6.12.1 Direcciones bases. 6.12.2 Registros. 6.13Envo y recepcin de los datos. 6.14Ejemplos de programacin entre puertos y dispositivos. VER MAS INFORMACION EN LA CARPETA DE LA MATERIA.

También podría gustarte