Las expresiones regulares Lex

Introducción

En capítulos posteriores se expondrá con detalle que Lex es un lenguaje (y un traductor para las espe¬cificaciones escritas en él) que sirve para asociar acciones a la presencia de palabras (secuencias de caracteres) leídas de un fichero de tipo texto; las formas de las palabras que se pretende detectar se especifican en Lex mediante una notación que es una ampliación de las expresiones regulares.

Pero antes de esa exposición, en este capítulo se describen las expresiones regulares Lex con una amplitud suficiente para poder realizar la especificación de las características lexicográficas más habituales de los lenguajes de programación; no se trata de una descripción exhaustiva: no se han incluido algunos aspectos más difíciles y empleados con menor frecuencia.

Aunque el capítulo empieza con un recordatorio de la definición básica de las expresiones re¬gulares, para su lectura es preciso tener conocimientos sobre el papel que tienen las expresiones re¬gulares en la caracterización de los lenguajes regulares.

Ampliación de las expresiones regulares

Las expresiones regulares (propiamente dichas, en un sentido estricto), tal y como se estudian en la teoría de lenguajes para especificar los lenguajes regulares, están constituidas por símbolos de un al¬fabeto Σ, relacionados mediante los operadores binarios alternativa ( | ) y concatenación ( • ) y el operador unario estrella ( * ); en la escritura de una expresión regular también se pueden emplear paréntesis para precisar el orden de aplicación de los operadores. El asterisco de la operación estrella suele colocarse como exponente de la parte de la expresión regular afectada.

La precedencia de los operadores es la definida por la siguiente jerarquía, relacionada de ma¬yor a menor precedencia:

1 operaciones entre paréntesis

2 operador estrella

3 operador concatenación

4 operador alternativa

Así, por ejemplo, son expresiones regulares definidas sobre el alfabeto Σ = { a, b }

b•a•a|b•b

a*•(b|b•a)

La primera denota el lenguaje regular formado por dos palabras {baa, bb} y la segunda denota el lenguaje regular de infinitas palabras {b, ba, ab, aba, aab, aaba,   }.

Entre los símbolos que aparecen en una expresión regular cabe distinguir los caracteres y los meta¬caracteres; los caracteres son los símbolos que pertenecen al alfabeto sobre el que está definida la ex¬presión regular; los metacaracteres son los símbolos que no pertenecen a ese alfabeto: los operadores y los paréntesis.

En la escritura de las expresiones regulares el punto representativo de la concatenación entre símbolos del alfabeto suele suprimirse; de acuerdo con esta notación simplificada, las anteriores ex¬presiones suelen escribirse así:

baa|bb

a*(b|ba) Dado que el espacio en blanco no es un símbolo perteneciente al alfabeto Σ sobre el que están de¬fi¬nidas las expresiones regulares anteriores, también podrían escribirse (sin ocasionar confusión y con la pretensión de favorecer la legibilidad) de esta manera:

baa | bb

a* ( b | ba )

En una especificación Lex se incluyen expresiones regulares, pero escritas con una notación que es una ampliación de la notación empleada en la definición (en sentido estricto) anterior. Esta amplia¬ción tiene como principales objetivos:

- hacer más cómoda y escueta la escritura de las expresiones regulares,

- distinguir de manera precisa los caracteres del alfabeto y los metacaracteres empleados en la es¬critura de las expresiones regulares.

Sea el alfabeto Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, la expresión regular que denota las palabras de longitud uno es:

0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

con la notación ampliada de las expresiones regulares Lex (empleando unos nuevos metacaracteres: el guión y los corchetes de abrir y de cerrar), esa misma expresión puede esribirse así:

[0–9]

Las expresiones regulares de una especificación Lex han de procesarse mediante un programa y, por ello, han de estar grabadas en un fichero de tipo texto. En estas condiciones no resulta adecuado el convenio según el cual la operación estrella se escribe en forma de exponente; por ejemplo, la ex¬presión regular

ab*

quedaría grabada en el fichero mediante la secuencia de tres caracteres consecutivos ab*. Si Σ = {+, -, *, /} es el alfabeto sobre el que definen las expresiones regulares, ¿qué lenguaje denota la expresión regular +* grabada como una secuencia de dos caracteres? La respuesta depende de si el asterisco se considera como carácter del alfabeto o como operador (metacarácter).

Las expresiones regulares empleadas en las especificaciones Lex no tienen conceptualmente ninguna diferencia con las expresiones regulares (en sentido estricto) que definen los lenguajes formales re¬gulares; lo único que aportan son modificaciones en la notación empleada en la escritura de las ex¬presiones en forma de secuencias de caracteres consecutivos susceptibles de grabarse en un fi¬chero de tipo texto. Esta notación ampliada alcanza cierta dificultad por las siguientes causas:

- para facilitar y acortar la escritura de las expresiones se introducen bastantes metacaracteres

		que se intercalan con los caracteres,

- es habitual que cualquier carácter del alfabeto ASCII forme parte del alfabeto sobre el que se

		definen las expresiones regulares y que, por lo tanto, pueda aparecer en ellas (incluso el espacio en blanco, el tabulador o el fin de línea),

- se precisa la definición de convenios para distinguir entre los caracteres y los metacaracteres.

En lo que sigue se emplea la notación  para indicar que lo que se pone a continuación de esos símbolos es la descripción del conjunto de palabras denotadas por la expresión regular que les pre¬cede. Nuevos operadores de las expresiones regulares Lex

Además de las operaciones empleadas en las expresiones regulares en sentido estricto (alternativa, concatenación y estrella, con la jerarquía entre ellas que antes se ha citado), en las expresiones regu¬lares Lex se incorporan las operaciones unarias que se describen a continuación. Los ejemplos que acompañan a las descripciones se refieren al alfabeto Σ = {x, y, z}.

Operación opcionalidad ?

Representa la presencia una única vez o la ausencia de las palabras denotadas por la expresión regu¬lar afectada; tiene la misma prioridad que la operación estrella. En general, si α es una expresión regular, se verifica la equivalencia entre α? y α|ε. Por ejemplo,

x|y?  {x, y, ε}

(x|y)?  {x, y, ε}

xz?|zzy  {x, xz, zzy}

(xz)?|zzy  {ε, xz, zzy}

Operación repetición una o más veces +

Representa la presencia una o más veces consecutivas de las palabras denotadas por la expresión re¬gular afectada; tiene la misma prioridad que la operación estrella. En general, si α es una expresión regular, se verifica la equivalencia entre α+ y αα*. Por ejemplo,

yx+  {yx, yxx, yxxx,   }

(x|y)+z  {xz, yz, xxz, xyz, yxz, yyz,   }

Operación repetición limitada { }

Representa la presencia un número dado y limitado de veces consecutivas de las palabras denotadas por la expresión regular afectada; tiene más prioridad que la alternativa pero menos que la concate¬nación.

La cantidad de presencias se indica mediante los números puestos entre las llaves; hay tres maneras de hacerlo:

{n} presencia de n veces

{n,m} presencia de i veces, n  i  m

{n,} presencia de i veces, n  i

En general, si α es una expresión regular, se verifica la equivalencia (considerada para el valor particular 4) entre α{4} y αααα. Por ejemplo,

xy2}

(xy){2,3}  {xyxy, xyxyxy}

xy{2,}z  {xyxyz, xyxyxyz, xyxyxyxyz,    }

x(y{2,4})z  {xyyz, xyyyz, xyyyyz}

x{1,}  {x, xx, xxx,    }

xy{1,}  {xy, xyxy, xyxyxy,    }

En la expresión (xy){2,3} los paréntesis son superfluos, mejoran la legibilidad de la expresión; la expresión x{1,} denota el mismo conjunto que la expresión x+; la expresión xy{1,} no denota el mismo conjunto que la expresión xy+, sino el mismo que (xy)+.

Se observa que en los ejemplos anteriores nunca se ha utilizado el espacio en blanco como separador para una pretendida mejora en el entendimiento de lo denotado por la expresión regular; con ello se quiere insistir en que las expresiones regulares Lex están formadas por una secuencia de caracteres y metacaracteres colocados consecutivamente (el espacio en blanco no pertenece al alfabeto de las ex¬presiones de los ejemplos anteriores). Una vez descritos los nuevos operadores añadidos a las expresiones regulares Lex, se hace ahora una recapitulación de los operadores disponibles y de la jerarquía de su aplicación; relacionada de mayor a menor, es como sigue:

			1  operaciones entre paréntesis
			2  operadores +, * y ?
			3  operación de concatenación (ausencia de operador)
			4  operación de repetición limitada { }
			5  operador |

Los operadores que tienen la misma prioridad se aplican de izquierda a derecha, según se encuentran en la expresión regular; los operadores unarios (*, +, ?, {}) se aplican a la parte de la expresión regular que está situada a su izquierda (para determinar la parte afectada por el operador unario, se tiene en cuenta la jerarquía de las opereaciones). Así pues los metacaractreres hasta ahora considerados son

             (     )     *     +     ?     {     }     |

(en las expresiones regulares Lex nunca se pone el punto representativo de la operación concate¬nación). Los símbolos que aparecen entre las llaves del operador de repetición limitada forman parte del propio operador (hacen la función de metacaracteres). Una vez vistos los anteriores ejemplos iniciales de expresiones regulares sobre el alfabeto Σ = {x, y, z}, los ejemplos que se ponen en el resto de este capítulo son de expresiones regulares sobre el alfabeto formado por todos los caracteres ASCII que se pueden imprimir. Carácter seleccionado entre los caracteres de un conjunto Para indicar, dentro de una expresión regular Lex, la presencia de un carácter del alfabeto elegido entre un conjunto de caracteres, se introduce una notación más cómoda que emplea los corchetes co¬mo metacaracteres; en el sitio de la expresión regular donde deba estar el carácter se pone entre cor¬chetes el conjunto de los caracteres posibles; todos los caracteres del conjunto se ponen consecutivos, sin separación alguna entre ellos. Por ejemplo, la expresión regular:

				  x(0|1|2|3|4|5|6|7|8|9)y

representa las palabras formadas por la letra x, seguida de una cifra decimal, seguida de la letra y; con la notación de los corchetes se puede escribir así:

				      x[0123456789]y

Aunque se ponen todas las cifras decimales en el conjunto, la expresión regular define la presencia de únicamente una de ellas en cada palabra denotada. La descripción dentro de los corchetes de los caracteres que pertenecen al conjunto puede hacerse va¬rias maneras; son las siguientes: a) Descripción por enumeración. Dentro de los corchetes se ponen consecutivamente, sin separación alguna entre ellos, todos los caracteres del alfabeto que constituyen el conjunto. Por ejemplo, el siguiente conjunto representa una de las vocales minúsculas:

					[aeiou]

b) Descripción por enumeración complementaria. Dentro de los corchetes se ponen consecutivamente, sin separación alguna entre ellos, todos los caracteres del alfabeto que no pertenecen al conjunto que se define; para indicar esa exclusión se coloca el carácter ^ de inmediato a continuación del corchete de abrir. Por ejemplo, el siguiente conjunto representa uno cualquiera de los caracteres del alfabeto sobre el que están definidas las expresiones regulares, excepto las vocales mayúsculas

					[^UOIEA]

c) Descripción por rango. Cuando todos los caracteres que constituyen el conjunto tienen valores ordinales consecutivos (es¬tán seguidos en la ordenación de caracteres del alfabeto ASCII), en el conjunto se puede poner só¬lo el primero y el último separados por un guión; entre el guión y los dos caracteres extremos no hay separación alguna. Por ejemplo, el siguiente conjunto representa una de las cifras decimales:

					[0–9]

d) Descripción combinada. También pueden combinarse dentro de un mismo conjunto las tres maneras precedentes; ha de te¬nerse en cuenta que el carácter indicativo de enumeración complementaria sólo puede aparecer una vez detrás del corchete de abrir. Por ejemplo, [135A-Z97]  una de las letras mayúsculas o una de las cifras impares [a-zA-Z]  una letra cualquiera, minúscula o mayúscula [^97531a-z]  cualquier carácter del alfabeto, excepto letra minúscula o cifra impar En todas las maneras de descripción es indiferente el orden de colocación de los caracteres y también puede haber repeticiones (que resultan inútiles). Por ejemplo, el conjunto formado por los signos de puntuación coma, punto y coma, punto y dos puntos puede representarse así:

         [,;.:]               [:;,.]               [..,;::.]

y el conjunto cuyos caracteres son las cifras y las letras (minúsculas y mayúsculas), así:

       [0–9a-zA-Z]          [a-z0–9A-Z]          [00–90a-z0A-Z0]

Los conjuntos de caracteres y la jerarquía de las operaciones La inclusión de un conjunto de caracteres entre corchetes en una expresión regular representa la pre¬sencia de un único carácter en las palabras denotadas; por ello, en una expresión regular pueden es¬tar presentes tantas definiciones de conjuntos de caracteres como se quiera. A efectos de la jerarquía de las operaciones, el conjunto hace las veces de un único carácter del alfabeto incorporado a la ex¬presión regular. En consecuencia los conjuntos de caracteres se pueden combinar con cualquiera de los operadores y no es preciso enunciar nuevas reglas sobre el orden de realización de las operacio¬nes. A continuación se muestran algunos ejemplos (el símbolo  se usa para representar el espacio en blanco como carácter dentro de una expresión regular y el símbolo  para indicar la presencia de un espacio en blanco dentro de una palabra denotada por la expresión regular). (N|n)oche  palabra noche con la inicial en minúscula o en mayúscula [Nn]oche  mismas dos palabras que la expresión anterior (n|N)(o|O)|(s|S)(i|I)  una de palabras no o si con letras minúsculas o mayúsculas [nN][oO]|[sS][iI]  mismas ocho palabras que la expresión anterior 3[a-z]|[A-Z]*9  palabras cuya forma es un 3 seguido de una letra minúscula o bien cero o más letras ma¬yúsculas seguidas de un 9 (x|y|z)+  palabras de longitud mayor o igual que 1, formadas con las letras x, y, z [xyz]+  mismas palabras que la expresión anterior x[<>]?y  {xy, x<y , x>y} z[:=]z  {zz, z:z, z=z} x[0–9]{2}  palabras de cuatro caracteres; el primero y el tercero son x; el segundo y el cuarto son una cifra decimal; una palabra denotada es, por ejemplo, x5×3; sin embargo, la palabra x53 no está denotada z(yx[12]{0,2})  {z, zyx1, zyx2, zyx1yx1, zyx1yx2, zyx2yx1, zyx2yx2} [0–9]+[a-z]+  las palabras formadas por una o más cifras decimales, seguidas de una o más letras minús¬culas [A-Z][,;]{1,}  las palabras con un número par de caracteres; los que ocupan las posiciones impares son le¬tras mayúsculas y los de las posiciones pares son una coma o un punto y coma; por ejem¬plo: P,Q,P;M, Si en una misma expresión regular Lex hay varias definiciones de conjuntos de caracteres, para aso¬ciar los correspondientes corchetes de abrir y de cerrar se considera un recorrido de izquierda a de¬recha de los caracteres (y operadores) de la expresión regular; en este recorrido, una vez hallado un corchete de abrir, se asocia con el primero de los corchetes de cerrar que se encuentra (no tiene sen¬tido alguno pensar en “corchetes anidados”). Así, por ejemplo, la expresión x


[[]x representa la palabra x[x ya que el segundo de los corchetes de abrir es el único carácter del conjunto que se de¬fine delimitado por los otros dos corchetes. Esa expresión regular es, en efecto, correcta aunque hay más corchetes de abrir que de cerrar: de los dos corchetes de abrir uno es carácter y el otro es meta¬carácter. Los conjuntos de caracteres y los metacaracteres La forma en que se incorpora un conjunto de caracteres como parte de una expresión regular Lex hace que los corchetes de abrir y de cerrar deban considerarse como metacaracteres en algunas de sus presencias. Considérense las siguientes dos situaciones o estados que se presentan cuando se re¬corre una expresión regular de izquierda a derecha: 1) Estado sin un conjunto abierto, cuando no se ha encontrado ningún corchete de abrir o si se ha encontrado alguno también se ha encontrado su correspondiente corchete de cerrar. 2) Estado con un conjunto abierto, cuando se ha encontrado un corchete de abrir y todavía no se ha encontrado su correspondiente corchete de cerrar. Si no hay un conjunto abierto, el corchete de abrir es un metacarácter y el corchete de cerrar es un carácter; si hay un conjunto abierto el corchete de abrir es un carácter y el corchete de cerrar es un metacarácter. Entre los caracteres que se escriben delimitados por los corchetes hay dos que tienen un significado especial: ^ y -; por ello, han de considerarse como metacaracteres; así ocurre, pero teniendo en cuenta los siguientes condicionantes:

	-	Los símbolos ^ y - no son metacaracteres cuando aparecen en la expresión regular fuera del conjunto (fuera de los caracteres que se escriben entre corchetes).
	-	El símbolo ^ sólo se considera metacarácter si sigue inmediatamente al corchete de abrir; si se encuentra en otra posición dentro de los corchetes no tiene significado especial y es un carácter más del conjunto que se describe.
	-	El símbolo - sólo se considera metacarácter si, situado entre los corchetes, está precedido y se¬guido inmediatamente por algún carácter del conjunto; si ocupa la primera posición (no está pre¬cedido por ninguno) o la última posición (no está seguido por ninguno) en la secuencia delimi¬tada por los corchetes, no tiene significado especial y es un carácter más del conjunto que se des¬cribe.

Los siguientes ejemplos ilustran estas consideraciones. [a-]  las dos palabras de longitud uno a y - P[−75]Q  {P-Q, P7Q, P5Q} [uv^]  las tres palabras de longitud uno u, v y ^ 0[^^1–9]  las palabras formadas por 0, seguido de un carácter; este carácter puede ser cualquiera de los del alfabeto (sobre el que se define la expresión regular), excepto el carácter ^ y uno de los dígitos del 1 al 9 3[^-si]4+  las palabras formadas por 3, seguido de un carácter, seguido de uno o más 4; el segundo carácter de las palabras puede ser cualquiera del alfabeto en el que se definen las expresio¬nes, excepto los caracteres s, i y - a  la palabra (de cuatro caracteres) a[]b (los primeros corchetes de abrir y de cerrar son me¬tacaracteres, mientras que los otros dos corchetes son caracteres) 01?  {[], 0], 1]} Reconsideración sobre los metacaracteres De lo expuesto hasta aquí de las expresiones regulares Lex se observa que los metacaracteres pue¬den aparecer en dos contextos distintos; un metacarácter puede estar: 1) Fuera de un conjunto: no incluido en la definición de un conjunto de caracteres. 2) Dentro de un conjunto: formando parte de una secuencia de caracteres entre corchetes. En lo que sigue, y a modo de notación que facilite las explicaciones, se llaman metacaracteres exter¬nos a los que están en el contexto 1), y metacaracteres internos a los que están en el contexto 2). Haciendo un resumen de los metacaracteres vistos hasta ahora, se tiene: Externos: | * ? + { } [ ] ( ) Internos: ^ - Supresión de la calidad de metacarácter A veces es preciso considerar como carácter dentro de una expresión regular un símbolo que tiene la condición de metacarácter; por ejemplo, si se quiere escribir la expresión regular representativa de uno de los dos operadores aritméticos aditivos (+, -) y se pusiera +|-, sería inorrecto: el símbolo + es un metacarácter; aquí debería indicarse que el símbolo + se tome como carácter (con su signi¬ficado propiamente dicho). En las expresiones regulares Lex se tienen dos maneras de suprimir la calidad de metacarácter:

				1  mediante la barra hacia atrás 				2  mediante las comillas “

Supresión con la barra hacia atrás La presencia del símbolo \ en una expresión regular hace que el símbolo que está situado a su de¬recha se considere como carácter (con su propio significado). Si el símbolo que está a su derecha es un carácter (propiamente dicho), la presencia de la barra no tiene efecto; si el símbolo que está a su derecha es un metacarácter, pierde esa calidad. Este efecto del símbolo \ se cumple para los meta¬caracteres externos y también para los internos. Debe notarse que el símbolo \ afecta exclusiva¬mente al carácter que está a su derecha.

	Así pues, el símbolo \ es un nuevo metacarácter, tanto externo como interno, ya que en cualquiera de los dos contextos en los que se encuentre no se le considera con su significado propia¬mente dicho. A continuación se exponen unos ejemplos.

\+│-  uno de los dos operadores aritméticos aditivos [01\−63]  {0, 1, 3, 6, -} \**  {ε, *, **, ***, ****,  } a\\u  la palabra (de tres caracteres) a\u \(g+\)  {(g), (gg), (ggg),  } [\[\]]  las dos palabras de longitud uno [ y ] \  las mismas palabras que la expresión anterior [\][]  las mismas palabras que la expresión anterior Supresión con las comillas En una expresión regular Lex los caracteres que están delimitados mediante el símbolo “ se consi¬deran con su significado propio, es decir, pierden la calidad de metacaracteres en el caso de que la tengan. En una misma expresión regular se pueden delimitar con comillas tantos caracteres como se quiera; si hay que delimitar varios caracteres que están consecutivos, se pueden delimitar conjunta¬mente poniendo las comillas delimitadoras una única vez para abarcarlos a todos. Cuando en una ex¬presión regular hay varias comillas, para emparejarlas se recorre la expresión de izquierda a dere¬cha; una vez encontrado un símbolo delimitador “ de inicio, se le asocia como delimitador de ter¬minación el primer símbolo “ que se encuentre a su derecha. Si aparece entre comillas un carácter que no es metacarácter, las comillas no afectan a su significado.

	Hay dos situaciones en las que la presencia de las comillas no produce la supresión de la con¬dición de metacarácter:
	1	El símbolo \ mantiene su significado de metacarácter aunque esté entre comillas.
	2	Cuando el símbolo “ está dentro de la definición de un conjunto de caracteres, es decir, está en una secuencia de caracteres delimitada por corchetes, se considera como carácter propia¬mente dicho (perdido su significado como metacarácter).

Así pues, el símbolo “ es un nuevo metacarácter externo, pero no actúa como metacarácter interno. A continuación se exponen unos ejemplos. “Antes”  la palabra (de cinco caracteres) Antes \”Antes\”  la palabra (de siete caracteres) “Antes” “+”“-“”*”“/”  la palabra (de cuatro caracteres) ±*/ “±*/”  la misma palabra que la expresión anterior a”*”b*  {a*, a*b, a*bb, a*bbb,  } b[1″-“9]a  {b1a, b9a, b”a} x”\+”y\*  la palabra (de cuatro caracteres) x+y* “De\\s\”dE”  la palabra (de siete caracteres) De\s”dE “\” es una expresión regular mal escrita: faltan las comillas de cierre Las expresiones regulares y la estructura de líneas Las expresiones regulares que se incluyen en una especificación Lex definen la forma de las pala¬bras cuya presencia se pretende comprobar en un fichero de tipo texto que se toma como entrada. A continuación se describen algunos aspectos de las expresiones regulares influidos por la estructura de líneas del fichero texto donde están grabadas las palabras denotadas y que se pretende reconocer. El carácter de final de línea Un fichero de tipo texto está organizado en líneas; por ello, se tiene un carácter especial que marca el final de cada una de las líneas que constituyen el fichero; la siguiente figura ilustra la estructura de un fichero de tipo texto (el símbolo ⌂ representa el carácter especial que indica el final de una lí¬nea).

   │           │⌂│              │⌂│    ∙ ∙ ∙ ∙ ∙        │⌂│            │⌂│
   └───────────┴─┴──────────────┴─┴──── ─ ─ ─ ─ ────────┴─┴────────────┴─┘

Si se mira el contenido del fichero como una secuencia ininterrumpida de caracteres de un cierto al¬fabeto, el carácter especial de final de línea ha de considerarse como un carácter más de la secuen¬cia; es decir, se trata de un carácter del alfabeto al que pertenecen los caracteres grabados en el fi¬chero.

	En las expresiones regulares Lex el carácter indicativo del final de línea se representa me¬diante el par de caracteres consecutivos \n. Por ejemplo,

xy\n  la palabra (de tres caracteres) xy⌂ x\ny  la palabra (de tres caracteres) x⌂y x+\n  {x⌂, xx⌂, xxx⌂,   } x\\ny  la palabra (de cuatro caracteres) x\ny x[\n:;]y  {x⌂y, x:y, x;y} Ha de observarse que \n constituye una excepción en el uso del símbolo \ como metacarácter; es¬to es, \n no indica que se considere n como un carácter con su propio significado; la excepción también se mantiene cuando la representación del final de línea se encuentra entre los caracteres de un conjunto delimitados por corchetes. (Esta excepción no ocasiona inconvenientes ya que el carácter n nunca se utiliza como metacarácter). En el principio y en el final de una línea En las expresiones regulares Lex se puede especificar que una palabra denotada por cierta expresión sólo se considere efectivamente representada por ella cuando está situada al prinicpio o al final de una línea del fichero de entrada. Por ejemplo, sea una línea cuyo contenido se representa en la si¬guiente figura

               │⌂│abb           abbbb                   ab│⌂│
       ────────┴─┴────────────────────────────────────────┴─┴──────

Las tres palabras abb, abbbb y ab están denotadas por la expresión regular ab+; pero sólo la palabra abb cumple además la condición de estar situada al principio de la línea y sólo la palabra ab cumple además la condición de estar situada al final de la línea.

	Para indicar que una palabra sólo se considera efectivamente denotada por una expresión re¬gular cuando está denotada por ella y además está situada al principio de la línea se emplea el sím¬bolo ^; si se quiere exigir que esté al final de la línea, se emplea el símbolo $ . El símbolo ^ se coloca como primer carácter de la expresión y el símbolo $ como último carácter de la expre¬sión. La presencia del símbolo $ obliga a considerar los últimos caracteres de una línea, pero ex¬cluyendo siempre el carácter de final de línea. En una misma expresión regular pueden incluirse el metacarácter de principio y también el metacarácter de final. Por ejemplo,

^ab+  las palabras denotadas por la expresión ab+ que estén situadas al principio de una línea; en las palabras de la figura anterior, abb está denotada por ^ab+, pero no lo están las pala¬bras abbbb y ab ab+$  las palabras denotadas por la expresión ab+ que estén situadas al final de una línea; en las palabras de la figura anterior, ab está denotada por ab+$, pero no lo están las palabras abb y abbbb ^[0–9]{4}  los números de cuatro cifras situados al principio de una línea [0–9]$  los números de una cifra situados al final de una línea ^-+$  secuencia de uno o más símbolos - que ocupan una línea completa

Los símbolos ^ y $ son, pues, metacaracteres cuando aparecen, respectivamente, al principio y al final de una expresión regular; son metacaracteres externos. Nótese que el símbolo ^ ya se ha des¬crito antes también como metacarácter interno; en efecto, según el sitio donde aparezca en la expre¬sión regular, puede ser metacarácter externo, metacarácter interno o carácter (con su significado pro¬piamente dicho). Contexto de una palabra Cuando se dice que una expresión regular Lex denota cierta palabra, se está considerando que esa palabra está constituida por una secuencia de caracteres consecutivos grabados en un fichero de tipo texto (con estructura de líneas). Puede hablarse, por lo tanto, de los caracteres que están grabados antes y después de la palabra, es decir, del contexto en el que se encuentra la palabra. Contexto por la derecha Se llama contexto por la derecha de una palabra (grabada en el fichero) a la secuencia de caracteres grabados en el fichero a continuación de la palabra. La siguiente figura ilustra esta definición.

             │⌂│                    δ                     │⌂│
     ────────┴─┴────────────────┴────────┴────────────────┴─┴──────
                                          

La palabra δ, que está denotada por una cierta expresión regular Lex, puede considerarse como una subpalabra de la secuencia de caracteres grabados en el fichero de tipo texto; el contexto por la derecha de δ está formado por los caracteres situados a su derecha. Por ejemplo,

               │⌂│                      │a│b│a│b│*│:│1│2│3│4│⌂│;│B│
       ────────┴─┴──────────────────────┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─────

la palabra abab*, grabada en el fichero, está denotada por la expresión regular (ab)+\*; en el contexto por la derecha de esta palabra están grabadas las siguientes secuencias de caracteres:

			:                       :1234
			:1                      :1234⌂
			:12                     :1234⌂;
			:123                    :1234⌂;B

y así sucesivamente, relacionadas por longitudes crecientes. (Nótese que el carácter de final de línea se considera como cualquier otro carácter; en la figura y en las palabras está representado mediante el símbolo ⌂).

	Si α y ß son dos expresiones regulares Lex, entonces α/ß también es una expresión regular Lex que denota las palabras δ que verifican las dos condiciones siguientes:

- δ está denotada por α - en el contexto por la derecha de δ hay una palabra denotada por ß Así, en el ejemplo anterior, la palabra abab* está denotada por las expresiones regulares (entre otras infinitas posibles) siguientes:

       (ab)+\*/:         (ab*)+\*/:[0–9]+         (ab)+\*/[:;]

pero no lo está por:

       (ab)+\*/;]
Es importante apreciar que los caracteres que constituyen el contexto por la derecha no forman parte de la palabra denotada.
En una expresión regular no puede aparecer más de una vez el símbolo / con el significado de se¬paración entre la parte de la expresión que denota la palabra propiamente dicha y la parte que denota una palabra del contexto por la derecha. Se tiene, pues, que el símbolo / es un metacarácter exter¬no; para incluir en una expresión regular el símbolo / considerado como carácter se puede emplear alguna de las notaciones ya descritas.
	El metacarácter $ cuyo significado se ha descrito anteriormente es un caso particular de contexto por la derecha; $ indica que la expresión regular a la que sigue tiene como contexto por la derecha el carácter de final de línea; esto es, si &#945; es una expresión regular se verifica que las dos expresiones regulares
                       &#945;$                  &#945;/\n
son equivalentes. Por este motivo no está permitido que en una misma expresión regular Lex se en¬cuentren los dos metacaracteres $ y /.
Las siguientes ejemplos pretenden mostrar la utilidad de la fijación de un contexto por la derecha.
[a-zA-Z]+/! &#61664;&#61664;
las palabras formadas por una o más letras (minúsculas o mayúsculas), siempre y cuando estén seguidas por signo de admiración (en el fichero donde está grabada la palabra); el signo de admiración no forma parte de la palabra denotada
[A-Z][a-z]*/[ \t\n,;.] &#61664;&#61664;
las palabras que empiezan por una letra mayúscula que va seguida de cero o más letras mi¬núsculas, siempre y cuando a continuación de la última letra de la palabra se encuentre un espacio en blanco, un carácter tabulador, un carácter de final de línea, una coma, un punto y coma o un punto (en el fichero donde esté grabada la palabra); el carácter del contexto por la derecha no pertenece a palabra denotada
Contexto por la izquierda
Se puede imponer que una palabra sólo sea denotada efectivamente por una expresión regular Lex cuando los símbolos grabados a la izquierda de la palabra cumplan una determinada condición; para ello se tienen las denominadas condiciones de contexto (start conditions); cada condición de contexto tiene asociado un nombre; si se quiere imponer una condición de contexto a una expresión regular se escribe el nombre de la condición, delimitado por los símbolos < y >, seguido inmediatamente por la expresión regular afectada. Por ejemplo, la expresión regular Lex
				   <Condicion>ab+
indica que en el contexto por la izquierda de la palabra denotada debe cumplirse la condición de con¬texto cuyo nombre es Condicion.
	Ni la definición ni el uso de las condiciones de contexto se exponen aquí; sólo se deja cons¬tancia de su existencia.
	Obsérvese que los símbolos < y > son metacaracteres externos; el símbolo < se considera como metacarácter cuando aparece como primer carácter de una expresión regular; el símbolo > se considera como metacarácter cuando puede asociarse con el metacarácter <.
Otros aspectos de las expresiones regulares Lex
En este apartado se agrupan varias consideraciones relativas a las expresiones regulares Lex que no han tenido cabida en los apartados anteriores.
El significado del espacio en blanco y del tabulador (horizontal)
Es frecuente que el espacio en blanco sea uno de los caracteres del alfabeto sobre el que están defi¬nidas las expresiones regulares Lex; esto es, en el fichero donde están las palabras denotadas por las expresiones regulares hay espacios en blanco. Así pues, el espacio en blanco suele ser un carác¬ter.
	En una especificación Lex las expresiones regulares se escriben siguiendo ciertas normas; una de esas normas indica que una expresión regular es una secuencia de caracteres cuya terminación está indicada mediante un espacio en blanco. En consecuencia el espacio en blanco también es un me¬tacarácter: marca el final de la expresión.
	Para conseguir que el espacio en blanco se considere como carácter se emplean las mismas notaciones ya vistas para otros símbolos que también pueden ser metacaracteres y caracteres. A con¬tinuación se muestran unos ejemplos (en ellos el símbolo &#61649; recalca la presencia del carácter espacio en blanco en una expresión regular y el símbolo &#61582; marca el espacio en blanco en las palabras deno¬tadas; el símbolo &#61500; señala la posición del espacio en blanco que es el metacarácter que indica el fi¬nal de la expresión regular).
el"&#61649;&#61649;"sur&#61500; &#61664;&#61664;  la palabra (de siete caracteres) el&#61567;&#61567;sur
z[&#61649;:z    (este ejemplo ya se ha comentado antes)

0[]1+  {01, 011, 0111,  } 0[\]1+  las mismas palabras que la expresión anterior 0″”1+  las mismas palabras que la expresión anterior 0\1+  las mismas palabras que la expresión anterior “”+  secuencia de uno o más espacios en blanco consecutivos []+  las mismas palabras que la expresión anterior [\]+  las mismas palabras que la expresión anterior sal:””  la palabra (de cinco caracteres) sal:

En las expresiones regulares Lex el carácter tabulador (horizontal) se representa con el par de sím¬bolos consecutivos \t. Por ejemplo, las siguientes cinco expresiones regulares

   [\t]+      (\|\t)+      (“”|\t)+      [\\t]+      (“\”|\t)+

son equivalentes y representan una secuencia de uno o más espacios en blanco o tabuladores conse¬cutivos. (En las dos últimas la barra inclinada que precede al espacio en blanco es superflua: está pa¬ra poner énfasis en la presencia del espacio en blanco).

	Nótese que la representación del tabulador es una excepción en el uso del símbolo \ como metacarácter (tanto si el carácter tabulador forma parte de un conjunto de caracteres delimitado por corchetes como si no): el carácter t no se toma aquí con su propio significado.

El tabulador tiene el mismo significado que el espacio en blanco cuando actúa de metacarácter: para marcar la terminación de una expresión regular que se está grabando se puede pulsar la tecla del es¬pacio en blanco o la tecla del tabulador. Secuencias de escape Todas las secuencias de escape del lenguaje de programación C se admiten en las expresiones regu¬lares Lex con la misma notación y el mismo significado

        \n      \t      \v      \b      \r      \a      \f

Las dos primeras (que son las que habitualmente se emplean en las especificaciones Lex) se refieren al final de línea y al tabulador (horizontal) y ya se han comentado anteriormente. En todas ellas la presencia del símbolo \ no se considera con el significado de metacarácter que tiene en otras situa¬ciones; esto es, la letra que constituye el segundo carácter de la secuencia no representa la letra pro¬piamente dicha; el significado especial de las secuencias de escape también se mantiene cuando for¬man parte de un conjunto de caracteres delimitado por corchetes. La palabra vacía En las expresiones regulares Lex no suele aparecer la palabra vacía ya que su presencia no es útil en las especificaciones Lex; no obstante hay expresiones regulares representativas de la palabra vacía; así puede observarse en estos ejemplos: “”  secuencia de cero caracteres []  conjunto sin caracteres 2718  la palabra (de 4 caracteres) 2718 271[]8  la misma palabra que la expresión anterior 27″”18  la misma palabra que la expresión anterior El carácter universal En las expresiones regulares Lex el símbolo punto ( . ) es un metacarácter que representa un ca¬rácter cualquiera del alfabeto sobre el que están definidas las expresiones, excepto el carácter repre¬sentativo del final de línea; se trata de un metacarácter externo. Por lo tanto cuando se emplea el sím¬bolo punto como carácter hay poner una de las notaciones que suprimen su calidad de metaca¬rácter. Nótese que el metacarácter punto representa un carácter cualquiera, pero sólo uno. Así en: a[.:]b  {a.b, a:b} a(\.:)b  las mismas palabras que la expresión anterior .+  palabra formada por uno o más caracteres del alfabeto puestos de forma consecutiva, sin la presencia del carácter de final de línea Subexpresiones con nombre Para hacer más cómoda o más legible la escritura de las expresiones regulares Lex es posible aso¬ciar un nombre a una expresión regular y, después, usar ese nombre como subexpresión de una ex¬presión regular más compleja.

	Para utilizar como componente de una expresión regular el nombre de otra expresión definida previamente basta con incorporar ese nombre delimitado por llaves en el lugar en el que proceda co¬locar la subexpresión. Por ejemplo, en cada una de las siguientes líneas se asocia un nombre a una expresión regular:
				   cifras       [0–9]+
				   letrasMin    [a-z]{1,3}
				   letraMay     [A-Z]
				   Asignacion   :=
				   puntoYcoma   ;

Una vez definidos esos nombres, se pueden emplear como componentes de otras expresiones regu¬lares; así por ejemplo:

			    1)  x{cifras}
			    2)  {cifras}{letrasMin}
			    3)  \({letraMay}*\)
			    4)  a{Asignacion}{letrasMin}{puntoYcoma}

En las expresiones regulares en las que se han incorporado los nombres no se ha dejado ningún es¬pacio en blanco; si hubiese alguno, se tomaría como el metacarácter que marca el final de la expre¬sión regular. Los caracteres que aparecen entre las llaves hacen la función de metacaracteres: repre¬sentan a otra expresión regular. Las expresiones a las que se asocia un nombre suelen denominarse macros o sustituciones y la aso¬ciación del nombre a la expresión se denomina definición de la macro o definición de la sustitución.

	La razón de estos nombres es que para obtener la forma de las palabras denotadas por una expresión que contenga un nombre entre llaves se realiza una sustitución literal del nombre (incluidas las llaves delimitadoras) por la secuencia de caracteres que tiene asociada. (Esta forma de sustitución coincide con la que se aplica a las macros de algunos lenguajes de programación). Las cuatro expre¬siones regulares antes definidas son:
	       1)  x[0–9]+                    3)  \([A-Z]*\)
	       2)  [0–9]+[a-z]{1,3}           4)  a:=[a-z]{1,3};

Las llaves de abrir y de cerrar usadas aquí para delimitar el nombre de la subexpresión (de la macro) también se emplean como operador unario de repetición limitada; no hay posibilidad de confusión: los caracteres por los que empieza la secuencia delimitada por las llaves son distintos en uno y otro caso; los nombres asociados a las subexpresiones se escriben como los identificadores del lenguaje C (con letras, dígitos y el carácter guión inferior; el primer carácter del nombre de la subexpresión no puede ser un dígito).

	Ha de prestarse especial cuidado al definir los nombres de las subexpresiones (de las macros) para evitar resultados indeseados al hacerse la sustitución literal. El siguiente ejemplo muestra una sustitución que produce resultados habitualmente inesperados. Sean las definiciones:
				consonante  t|d
				vocal  a|e|i|o|u

si se escribe la expresión regular {consonante}{vocal}, es probable que un despiste de la in¬tuición lleve a pensar que se están especificando las palabras formadas por una vocal seguida de una consonante; pero no es así, la sustitución literal indica que la expresión regular realmente escrita es:

				t|da|e|i|o|u

Para obtener el resultado supuestamente esperado habría que definir los nombres así:

				consonante  (t|d)
				vocal  (a|e|i|o|u)

La asociación de nombres a expresiones regulares que después se incorporan como componentes de otras expresiones puede hacerse en varios pasos, tal y como se muestra en el siguiente ejemplo:

			   letraMin     [a-z]
			   letrasMay    [A-Z]{1,3}
			   letra        (letraMin})
			   palabra      {letra}+

Relación de metacaracteres A continuación se pone una relación resumida de los metacaracteres, externos e internos, de las ex¬presiones regulares Lex que se han descrito en este capítulo. - Externos:

	.	Representación de cualquier carácter, excepto el final de línea
	()	Modificación en el orden de aplicación de las operaciones
	|	Operación alternativa
	*	Operación estrella
	?	Operación opcionalidad
	+	Operación repetición una o más veces
	{}	Operación repetición limitada: cuando la secuencia entre llaves empieza por un dígito; los caracteres que están entre las llaves forman parte del operador 
	{}	Incorporación del nombre de una subexpresión: cuando la secuencia entre llaves empieza por una letra o por el carácter guión inferior; los caracteres que están entre las llaves for¬man el nombre y también son metacaracteres
	[]	Definición de un conjunto de caracteres
	\	Supresión de la calidad de metacaráter; excepto en las secuencias de escape
	””	Supresión de la calidad de metacarácter; excepto para el carácter 	^	Ajuste al principio de una línea; cuando es el primer símbolo de la expresión
	$	Ajuste al final de una línea; cuando es el último símbolo de la expresión
	/	Fijación de un contexto por la derecha
	<>	Condición de contexto; cuando está delante del primer símbolo de la ex¬presión
		El símbolo  representa en esta relación el carácter espacio en blanco; el espacio en blanco como metacarácter significa la terminación de la escritura de una expresión regular

- Internos:

	^	Definición complementaria de un conjunto
	-	Rango de caracteres en un conjunto
	\	Supresión de la calidad de metacarácter; except

Estoy invitando a todos los maestros y profesionales de esta area y/o carrera a colaborar construyendo este sitio dedicado a esta hermosa y util profesion aportando el material apropiado a cada uno de los mas de 1,000 temas que lo componen.

Tambien los invito a aportar material a los mas de 30,000 temas que constituyen las 30 carreras profesionales que se imparten en los Institutos Tecnologicos de Mexico y se encuentran en este sitio.

www.MiTecnologico.com es un esfuerzo personal y de muchos amigos de MEXICO y el Mundo Hispano por devolver algo de lo mucho que hemos recibido en el proceso de la educacion superior, saludos Prof Lauro Soto, Ensenada, BC, Mexico

PARA EMPEZAR SOLO USAR OPCION edit ABAJO Y EMPIEZA A CONSTRUIR , SALUDOS Y MUCHAS GRACIAS


Competencias Digitales (Tic’s Basicas) a practicar con este TEMA:

  • Usar (click en )www.Google.com para buscar y localizar UN material academico apropiado y que se pueda recomendar para el tema, ver VIDEO BUSQUEDAS abajo en esta pagina.
  • En el post ( o tema ) apropiado en el Libro de Blogger, pegar el material localizado y que se recomienda para este tema, ver VIDEO BLOGGER abajo en esta pagina.

pd: Recordar incluir la fuente del tema usando el formato de citacion apropiado, ver VIDEO WIKIPEDIA abajo en esta pagina.

  • En el editor de Blogger usar colores para destacar los parrafos mas importantes y usar subrayados para las citas mas relevantes.
  • En el post ( o tema ) apropiado en el libro en Blogger, para incluir ecuaciones o notacion matematica se debera usar el icono del editor de Blogger IMAGE y construir esta notacion matematica con imagenes Latex, ver VIDEO LATEX ABAJO.
  • Construir al final y despues de la fuente del material, un breve resumen ( no mas de 2–3 parrafos) explicando palabras propias el contenido del tema.

pd: Se pueden usar alguna de las citas que encontradas dentro del tema, solo recordar encerrarla entre comillas.

pd: Se pueden usar tambien cambios en fonts para darle mas visibilidad, consistencia y relevancia al resumen del tema.

  • PUNTOS EXTRAS Si se usa una segunda fuente valiosa de informacion y recordar encadenar los dos materiales mediante uno o dos parrafos apropiados.
  • Enviar a el maestro o compañeros un correo electronico que incluya la liga a el tema en blogger para revision, recomendacion, sugerencias y evaluacion, ver VIDEO LIGAS GMAIL abajo.
  • Sacar una cuenta (click en)http://docs.google.com, usando el correo de Gmail y tratar de conseguir el mismo usuario que se construyo en Gmail y Blogger ver VIDEO GOOGLE DOCS abajo en esta pagina.

pd: Si ya se tiene una cuenta ignorar esta competencia digital.

pd: Google Docs es el equivalente a OFFICE pero con la caracteristica que todos sus componentes ( procesador de palabras, presentacion electronica y hoja de calculo) estan completamente en internet, es decir todos los archivos o material estaran en linea, seguros y siempre disponibles, ademas de que se pueden trabajarlos desde cualquier pc, ya sea la personal, la del laboratorio de la escuela o la de un lugar publico como la biblioteca o un cafe internet.

  • Construir una Presentacion Electronica ( usando muy pocos slides) del tema en GOOGLE DOCS e incrustrarla en el tema de bloger ver VIDEO GOOGLE DOCS en esta pagina abajo.

pd: Recordar que una presentacion electronica, es solamente un resumen muy condensado del tema ( o mapa o guia mental ), que ayuda a recordar los elementos y conceptos mas basicos del tema, cuando se estan exponiendo frente a un grupo.

pd: No olvidar incluir un primer slide con el titulo de la presentacion electronica, un segundo slide con un indice de la presentacion electronica y un ultimo slide con dos o tres parrafos de conclusiones y bibliografia.

  • Buscar en Google Imagenes o www.Flickr.com o www.PhotoBucket.com una galeria de fotos o de imagenes apropiadas al tema actual,
  • Para los casos de Photobucket y Flicker, ambos sitios proporcionan ligas a sus imagenes y tambien objetos (los recuerdan??), que se pueden incluir en el tema del libro apropiado en Blogger.

pd: para estos sitios deberan obtener una cuenta usando el correo de gmail y de preferencia obtener el mismo usario que se ha venido manejando a lo largo del curso.

pd: Tratar de usar resoluciones y tamaños de imagenes chicos o medianos, recordar que todo este material termina en el post del tema en Blogger y esa pagina no tiene mucho espacio para desplegar fotos o imagenes.

pd: El formato apropiado para fotos o imagenes es JPG, tratar de no usar otros formatos.

pd: Se puede construir y conseguir esta coleccion o galeria de imagenes con:

1) Usando Google Imagenes, recordar conseguir solo imagenes que tengan permiso de publicacion abierto, no usar imagenes o fotos que tengan derechos reservados.

pd: Estas fotos almacenarlas en un folder en el desktop o escritorio de su computadora y subirlas a el post en blogger usando el icono IMAGE del editor de Blogger.

2) Flickr y Photo Bucket tambien tienen una gran cantidad de imagenes que se pueden usar o mejor dicho enlazar a el tema o post en Blogger.

3) Tambien se puede usar la camaras digitales o las camaras de sus telefonos celulares.

4) Tambien se puede usar el programa o aplicacion llamado Srip32.exe( solo buscar srip32 en google) bajarlo e instalarlo, este programa permite capturar una pantalla de la pc, es decir si se encuentra un sitio con imagenes o incluso texto apropiado o relevante al tema, capturar la pantalla con srip32 y ya se tendra la imagen, ver VIDEO Srip32 abajo.

  • Incluir al menos una imagen de cada uno de los dos sitios (flickr y Photobucket) en el tema o post que se esta construyendo en Blogger.
  • PUNTOS EXTRAS Si se incluyen una galeria completa de imagenes apropiadas desde cualquiera de estos sitios de FLICKR o Photobucket.
  • Sacar una cuenta (click en)www.DivShare.com, usando el correo de Gmail y tratar de conseguir el mismo usuario que se consiguio en Gmail y Blogger y Flickr ver VIDEO DIVSHARE abajo en esta pagina.

pd: Si ya se tiene una cuenta ignorar esta competencia digital.

pd: Usar Divshare para almacenar material en audio (MP3) apropiado a el tema ( no usarlo para almacenar material comercial o les suspenden la cuenta)

pd: El material en Audio, con formato MP3 se debera producir usando un microfono en la pc y programas de aplicacion apropiados, llamados editores de audio, un ejemplo de ellos es el SOUND RECORDER que ya viene en Windows, pero se recomienda usar mejor AUDACITY ( solo buscar en google AUDACITY) bajarlo e instalarlo, ver VIDEO AUDACITY abajo.

  • Crear al menos dos archivos de audio mp3:

1) El primero de ellos sera la lectura completa de este tema en voz apropiada. ( o aprender a editar con audacity la voz)

2) El segundo de ellos sera un resumen del tema. ( buena voz o editarla con audacity)

3) Ambos archivos subirlos a Div Share (recordor que tienen que ser MP3) y el reproductor que proporciona gratis Div Share, ver VIDEO DIVSHARE abajo e insertarlo en el lugar apropiado del tema que se esta construyendo en Blogger.

4) Ejemplo del reproductor incrustado en una pagina:

  • Sacar una cuenta (click en)www.YouTube.com, usando el correo de Gmail y tratar de conseguir el mismo usuario que se consiguio en Gmail y Blogger y Flickr.

pd: Si ya se tiene una cuenta ignorar esta competencia digital.

  • Para producir video se pueden usar tres fuentes:

1) Localizar Videos apropiados en Youtube.

2) Usar nuestras camaras digitales o nuestros telefonos celulares para producir video.

3) Producir un video de la propia pantalla de la computadora ( muy similar a lo que se hizo con Srip32) pero usando un programa especializado en video, tal como CAMSTUDIO (click en www.CamStudio.org) bajar e instalar ( no olvidar bajar e instalar el CODEC que esta abajo en el mismo sitio.

3.1) para Usar Camstudio solo recordar que es muy similar a Srip32 Solo que el resultado final es un archivo de video AVI.

  • Producir un video de resumen del tema (usar camstudio con el fondo de la pagina con el tema e irlo comentando en voz apropiada)
  • Producir un video en vivo con la exposicion del tema ( pueden usar la presentacion electronica de fondo o cualquier otro material, pizarron, filminas, rotafolios, etc.)
  • Subir los videos a su cuenta en Youtube e incluirlos o ligarlos en la pagina en Blogger, tambien los pueden subir directamente a BLOGGER ver VIDEO BLOGGER VIDEO abajo.

Saludos y suerte prof Lauro Soto, Ensenada, BC, Mexico.