1.1. Entrada / Salida <stdio.h>
|
|
- Consuelo Gutiérrez Cruz
- hace 5 años
- Vistas:
Transcripción
1 Entrada / Salida <stdio.h> Tipos FILE Registra toda la información necesitada para controlar un flujo, incluyendo su indicador de posición en el archivo, puntero asociado a un buffer (si se utiliza), un indicador de error que registra sin un error de lectura/escritura ha ocurrido, y un indicador de fin de archivo que registra si el fin del archivo ha sido alcanzado. fpos_t Posibilita registrar la información que especifica unívocamente cada posición dentro de un archivo Macros NULL Ver Definiciones Comunes. EOF Expresión constante entera con tipo int y valor negativo que es retornada por varias funciones para indicar fin de archivo; es decir, no hay mas datos entrantes que puedan ser leídos desde un flujo, esta situación puede ser porque se llegó al fin del archivo o porque ocurrió algún error. Contrastar con feof y ferror. SEEK_CUR SEEK_END SEEK_SET Argumentos para la función fseek. stderr stdin stdout Expresiones del tipo FILE* que apuntan a objetos asociados con los flujos estándar de error, entrada y salida respectivamente Operaciones sobre Archivos int remove(const char* nombrearchivo); Elimina al archivo cuyo nombre es el apuntado por nombrearchivo. Retorna (ok? 0 : 0) int rename(const char* viejo, const char* nuevo); Renombra al archivo cuyo nombre es la cadena apuntada por viejo con el nombre dado por la cadena apuntada por nuevo. Retorna (ok? 0 : 0) Acceso FILE* fopen (
2 2 const char* nombrearchivo, const char* modo ); Abre el archivo cuyo nombre es la cadena apuntada por nombrearchivo asociando un flujo con este según el modo de apertura. Retorna (ok? puntero al objeto que controla el flujo : NULL). FILE* freopen( const char* nombrearchivo, const char* modo, FILE* flujo ); Abre el archivo cuyo nombre es la cadena apuntada por nombrearchivo y lo asocia con el flujo apuntado por flujo. La cadena apuntada por modo cumple la misma función que en fopen. Uso más común es para el redireccionamiento de stderr, stdin y stdout ya que estos son del tipo FILE* pero no necesariamente lvalues utilizables junto con fopen. Retorna (ok? flujo : NULL). int fflush (FILE* flujo); Escribe todos los datos que aún se encuentran en el buffer del flujo apuntado por flujo. Su uso es imprescindible si se mezcla scanf con gets o scanf con getchar, si se usan varios fgets, etc. Retorna (ok? 0 : EOF). int fclose (FILE* flujo); Vacía el buffer del flujo apuntado por flujo y cierra el archivo asociado. Retorna (ok? 0 : EOF) Entrada / Salida Formateada Flujos en General int fprintf (FILE* f, const char* s,...); Escritura formateada en un archivo ASCII. Retorna (ok? cantidad de caracteres escritos : < 0). int fscanf (FILE* f, const char*,...); Lectura formateada desde un archivo ASCII. Retorna (cantidad de campos almacenados) o retorna (EOF si detecta fin de archivo). Flujos stdin y stdout Cadenas int scanf (const char*,...); Lectura formateada desde stdin. Retorna (ok? cantidad de ítems almacenados : EOF). int printf (const char*,...); Escritura formateada sobre stdout. Retorna (ok? cantidad de caracteres transmitidos : < 0). int sprintf (char* s, const char*,...); Escritura formateada en memoria, construyendo la cadena s. Retorna (cantidad de caracteres escritos).
3 3 int sscanf (const char* s, const char*,...); Lectura formateada desde una cadena s. Retorna (ok? cantidad de datos almacenados : EOF) Entrada / Salida de a Caracteres int fgetc (FILE*); ó int getc (FILE*); Lee un carácter (de un archivo ASCII) o un byte (de un archivo binario). Retorna (ok? carácter/byte leído : EOF). int getchar (void); Lectura por carácter desde stdin. Retorna (ok? próximo carácter del buffer : EOF). int fputc (int c, FILE* f); ó int putc (int c, FILE* f); Escribe un carácter (en un archivo ASCII) o un byte (en un archivo binario). Retorna (ok? c : EOF). int putchar (int); Eescritura por carácter sobre stdout. Retorna (ok? carácter transmitido : EOF). int ungetc (int c, FILE* f); "Devuelve" el carácter o byte c para una próxima lectura. Retorna (ok? c : EOF) Entrada / Salida de a Cadenas char* fgets (char* s, int n, FILE* f); Lee, desde el flujo apuntado f, una secuencia de a lo sumo n-1 caracteres y la almacena en el objeto apuntado por s. No se leen más caracteres luego del carácter nueva línea o del fin del archivo. Un carácter nulo es escrito inmediatamente después del último carácter almacenado; de esta forma, s queda apuntando a una cadena. Importante su uso con stdin. Si leyó correctamente, s apunta a los caracteres leídos y retorna s. Sí leyó sólo el fin del archivo, el objeto apuntado por s no es modificado y retorna NULL. Si hubo un error, contenido del objeto es indeterminado y retorna NULL. Retorna ( ok? s : NULL). char* gets (char* s); Lectura por cadena desde stdin; es mejor usar fgets() con stdin. Retorna (ok? s : NULL). int fputs (const char* s, FILE* f); Escribe la cadena apuntada por s en el flujo f. Retorna (ok? último carácter escrito : EOF). int puts (const char* s); Escribe la cadena apuntada por s en stdout. Retorna (ok? 0 : EOF) Entrada / Salida de a Bloques unsigned fread (void* p, unsigned t, unsigned n, FILE* f);
4 4 Lee hasta n bloques contiguos de t bytes cada uno desde el flujo f y los almacena en el objeto apuntado por p. Retorna (ok? n : < n). unsigned fwrite (void* p, unsigned t, unsigned n, FILE* f); Escribe n bloques de t bytes cada uno, siendo el primero el apuntado por p y los siguientes, sus contiguos, en el flujo apuntado por f. Retorna (ok? n : < n) Posicionamiento int fseek ( FILE* flujo, long desplazamiento, int desde ); Ubica el indicador de posición de archivo del flujo binario apuntado por flujo, desplazamiento caracteres a partir de desde. desde puede ser SEEK_SET, SEEK_CUR ó SEEK_END, comienzo, posición actual y final del archivo respectivamente. Para flujos de texto, desplazamiento deber ser cero o un valor retornado por ftell y desde debe ser SEEK_SET. En caso de éxito los efectos de ungetc son deshechos, el indicador de fin de archivo es desactivado y la próxima operación puede ser de lectura o escritura. Retorna (ok? 0 : 0). int fsetpos (FILE* flujo, const fpos_t* posicion); Ubica el indicador de posición de archivo (y otros estados) del flujo apuntado por flujo según el valor del objeto apuntado por posicion, el cual debe ser un valor obtenido por una llamada exitosa a fgetpos. En caso de éxito los efectos de ungetc son deshechos, el indicador de fin de archivo es desactivado y la próxima operación puede ser de lectura o escritura. Retorna (ok? 0 : 0). int fgetpos (FILE* flujo, fpos_t* posicion); Almacena el indicador de posición de archivo (y otros estados) del flujo apuntado por flujo en el objeto apuntado por posicion, cuyo valor tiene significado sólo para la función fsetpos para el restablecimiento del indicador de posición de archivo al momento de la llamada a fgetpos. Retorna (ok? 0 : 0). long ftell (FILE* flujo); Obtiene el valor actual del indicador de posición de archivo para el flujo apuntado por flujo. Para flujos binarios es el número de caracteres (bytes ó posición) desde el comienzo del archivo. Para flujos de texto la valor retornado es sólo útil como argumento de fseek para reubicar el indicador al momento del llamado a ftell. Retorna (ok? indicador de posición de archivo : 1L). void rewind(file *stream); Establece el indicador de posición de archivo del flujo apuntado por flujo al principio del archivo. Semánticamente equivalente a (void)fseek(stream, 0L, SEEK_SET), salvo que el indicador de error del flujo es desactivado. No retorna valor Manejo de Errores int feof (FILE* flujo);
5 5 Chequea el indicador de fin de archivo del flujo apuntado por flujo. Contrastar con la macro EOF (Contrastar con la macro EOF retornada por algunas funciones). Retorna (indicador de fin de archivo activado? 0 : 0). int ferror (FILE* flujo); Chequea el indicador de error del flujo apuntado por flujo (Contrastar con la macro EOF retornada por algunas funciones). Retorna (indicador de error activado? 0 : 0). void clearerr(file* flujo); Desactiva los indicadores de fin de archivo y error del flujo apuntado por flujo. No retorna valor. void perror(const char* s); Escribe en el flujo estándar de error (stderr) la cadena apuntada por s, seguida de dos puntos (:), un espacio, un mensaje de error apropiado y por último un carácter nueva línea (\n). El mensaje de error está en función a la expresión errno. No retorna valor.
6 6 LAS EXPRESIONES REGULARES (ERs) La forma más precisa y más útil de REPRESENTAR a los Lenguajes Regulares. EXPRESIONES REGULARES PARA LENGUAJES REGULARES FINITOS Utiliza caracteres del alfabeto, el símbolo, y los operadores: concatenación ( ), que ordena la ubicación de ciertos caracteres, y unión (+), ó, que representa una elección entre caracteres o grupos de caracteres. El operador concatenación tiene mayor prioridad que el operador unión. a representa L = {a}. representa L = { }. a b L = {ab}. a+ba, que se lee a unión ba o a ó ba LRs {a} {ba} o, {a, ba}. ab, que también se puede escribir ab +, representa L = {, ab}. La ER aa+b (aa unión b) es diferente a la ER a(a+b) La factorización en el ámbito de las ERs tiene alguna diferencia con la que se puede hacer entre las expresiones aritméticas. Ello se debe a que, como ya se informó, la concatenación no es conmutativa. En consecuencia, debemos hablar de factorización a izquierda, si se realiza porque se detectó un prefijo común a dos o más palabras, o de factorización a derecha, si lo que se detectó es un sufijo común. La ER abb+aab a(b+a)b. abbaac+abac+abacccac. ab(ba+ +accc)ac. La ER ba + ab no se puede factorizar a izquierda ni tampoco a derecha. Dos Expresiones Regulares son EQUIVALENTES si representan el mismo Lenguaje Regular. Las ERs a+b y b+a son equivalentes porque ambas representan al LR {a, b}. En cambio, las ERs a(a+b) y (a+b)a no son equivalentes El lenguaje Todas las palabras con dos caracteres sobre el alfabeto {a, b} puede ser representado por las siguientes Expresiones Regulares equivalentes: aa+ab+ba+bb = a(a+b)+b(a+b) = (a+b)(a+b). EL OPERADOR POTENCIA La ER +(a+b) 3 representa al LR: La palabra vacía y todas las palabras de tres caracteres sobre el alfabeto {a, b}. El lenguaje Todas las palabras de longitud 27 sobre el alfabeto {a, b} y que comienzan con 25 aes se puede representar mediante la siguiente ER: a 25 (a+b) 2. El lenguaje Todas las palabras de longitud 27 sobre el alfabeto {a, b} se representa fácilmente mediante la siguiente ER: (a + b) 27. EJERCICIOS (1) Escriba una ER que represente al LR Todas las palabras que comienzan con una a, seguida de dos o tres bes.
7 7 (2) Escriba una ER que represente al LR Todas las palabras de longitud 5 que comienzan con una a y terminan con una b. (3) Escriba una ER que represente al LR La palabra vacía y todas las palabras de longitud 5 que comienzan con aa o con bb, y que terminan con aa o con bb. (4) Compruebe que las ERs 1(0+1)(0+1)1 y son equivalentes. (5) Describa, mediante una frase sin ambigüedades, al LR del ejercicio anterior. (6) Escriba, por enumeración, el LR +(a+b) 3. (7) Sea la ER Obtenga una ER más compacta, que sea equivalente a esta expresión. Ayuda: utilice las factorizaciones que crea conveniente. EXPRESIONES REGULARES PARA LENGUAJES REGULARES INFINITOS Para representar repeticiones indeterminadas, incorporamos el operador estrella de Kleene o clausura de Kleene, o, más simplemente, operador estrella. El operador estrella de Kleene o clausura de Kleene genera la cadena vacía y todas las cadenas que se forman con la repetición, de su operando, un número de veces a elección. La ER a*, L = {a n / n 0}, La ER aa* L = {a n / n 1}, a +. El operador clausura positiva se utiliza para simplificar la escritura de ERs como la del Ejemplo 18: la ER aa* se puede escribir a +, por lo que a + = aa* = a*a. Las siguientes ERs son equivalentes: = * = +. Volviendo a las ERs a* y a +, se pueden comprobar las siguientes equivalencias: (1) a*a* = a*, ya que a*a* = ( + a + aa +...) ( + a + aa +...) = + a + aa +... = a*; (2) a + = aa* = a*a = aa*a* = a + a* = a*a + = a*a*aa*, entre otras. ( + a)* = ( + a) + = a*, porque la palabra vacía pertenece al lenguaje original. Nota 3: En los ejemplos que siguen se presentarán ERs acompañadas, cada una, por una frase que describe al LR que esta expresión representa. Se podrá apreciar que, muchas veces, resulta difícil elaborar una frase que sea clara, corta y sin ambigüedades. Esto se debe a que, cualquiera sea el Lenguaje Natural que utilicemos para describir un determinado Lenguaje Formal (en nuestro caso empleamos el castellano), la frase será, muchas veces, ambigua. Conclusión: cuando nos referimos a LRs, debemos preferir a las ERs por sobre las frases que describen a estos lenguajes. Consideremos la Expresión Regular ab*. ab +. ab + a, a*b* Las ER (ab)* y ER a*b* son equivalentes? La ER a* + b* es un subconjunto del LR representado por la ER a*b*. ER b*ab*ab* representa al lenguaje Todas las palabras sobre el alfabeto {a, b} con exactamente dos aes. Algunas palabras de este lenguaje son: aa, babba, bbaabbb, aba. Ejemplo 29 Consideremos ahora la ER (b*ab*ab*)*,
8 8 La ER (1+0)1* representa el LR Todos los números binarios que comienzan con un 1 o con un 0, el cual puede estar seguido por una secuencia de 1s. Los cuatro números binarios de menor longitud y que pertenecen a este lenguaje son: 1, 0, 11 y 01. LA EXPRESIÓN REGULAR UNIVERSAL Y SU APLICACIÓN Denominamos EXPRESIÓN REGULAR UNIVERSAL (ERU) a la ER que representa al Lenguaje Universal sobre un alfabeto Si el alfabeto es {a, b}, la ERU es (a+b)*. Algunas palabras son:, a, bbbabaa. Si el alfabeto es {0, 1}, la ERU es (0+1)*. Algunas palabras son: , Si el alfabeto es {a, b, c}, la ERU es (a+b+c)*. Algunas palabras son: cbaabbcca, bbbbbb. Las ERUs tienen una aplicación muy importante en la construcción de ERs que representan a un gran número de LRs infinitos, como apreciaremos en los ejemplos que siguen. El LR Todas las palabras sobre el alfabeto {a, b} que comienzan con a, se representa fácilmente mediante la siguiente ER: a (a + b)*. Si el LR fuera Todas las palabras que comienzan con a, sobre el alfabeto {a, b, c}, la ER que lo representa sería: a (a + b + c)*. ER a (a + b)* a. Ejemplos Dado el alfabeto = {a, b}, el LR Todas las palabras que terminan con aa o con bb se representa mediante la ER (a + b)* (aa + bb). Dado el alfabeto = {a, b}, el LR Todas las palabras que contienen como mínimo dos aes se representa mediante la ER (a + b)* a (a + b)* a (a + b)*. Otra ER que representa el mismo lenguaje del ejemplo anterior es b*ab*a (a + b)*. Afirmamos, entonces, que estas dos ERs son equivalentes porque representan el mismo lenguaje; en consecuencia: (a + b)* a (a + b)* a (a + b)* = b*ab*a (a + b)*. A cada ER le corresponde un único LR. Sin embargo, un LR puede ser representado por varias ERs, como sucede en el ejemplo anterior. Afirmamos entonces: dos ERs son equivalentes si representan el mismo LR. El LR Todas las palabras sobre el alfabeto {a, b} que tienen por lo menos una a y por lo menos una b puede ser representado por la siguiente ER: (a + b)* a (a + b)* b (a + b)* + (a + b)* b (a + b)* a (a + b)*. O por esta otra: (a + b)* (a (a + b)* b + b (a + b)* a) (a + b)*. El LR Todos los números binarios que comienzan con un número impar de 1s se puede representar mediante la ER 1 (11)* (0 + 1)*, o mediante esta otra: ( ) (0 + 1)* (11) + (0 + 1)*. EXPRESIONES REGULARES Y LENGUAJES DE PROGRAMACIÓN
9 9 Los componentes básicos de un LP los identificadores, las palabras reservadas, las constantes, los operadores, los símbolos de puntuación constituyen diferentes LRs. Como tales, los podremos representar mediante ERs. Ejemplo 48 Sea un LP 1 en el que IDENTIFICADOR es una secuencia de letras y dígitos que comienza con letra. Supongamos que L representa a cualquiera de las letras y D representa a cualquiera de los dígitos. Entonces, el LR infinito IDENTIFICADOR puede representarse mediante la ER L (L+D)*. Ejemplo 49 Sea un LP 2 en el que CONSTANTE REAL es una secuencia de dígitos (por lo menos uno), seguido de un punto, seguido, no obligatoriamente, de una secuencia de dígitos. Entonces, el LR infinito CONSTANTE REAL puede representarse mediante la ER D +. D*. Ejemplo 50 Sea un LP 3 que solo tiene tres PALABRAS RESERVADAS: if, else y while. Entonces, este LR finito puede representarse mediante la ER if + else + while. 4.6 DEFINICIÓN FORMAL DE LAS EXPRESIONES REGULARES Las ERs se construyen utilizando los operadores básicos unión (+), concatenación ( ) y clausura de Kleene (*), y se definen formalmente de la siguiente manera recursiva: (1) ø es una ER que representa al LR vacío (sin palabras). (2) es una ER que representa al LR que solo contiene la palabra vacía: { }. (3) Todo símbolo x de un alfabeto corresponde a una ER x que representa a un LR que solo tiene una palabra con ese símbolo x. Ejemplo: Si = {a, b}, entonces a es una ER que representa al LR {a} y b es una ER que representa al LR {b}. (4) Una cadena s es una ER s que representa a un LR que solo contiene la palabra s. Ejemplo: dada la cadena abc, la ER abc representa al LR {abc}. (5) Si R 1 y R 2 son ERs, entonces R 1 + R 2 es una ER. Ejemplo: si R 1 = a y R 2 =, entonces a+ es una ER. (6) Si R 1 y R 2 son ERs, entonces R 1 R 2 (o, simplemente, R 1 R 2 ) es una ER. Ejemplo: si R 1 = a y R 2 = b, entonces ab es una ER. (7) Si R 1 es una ER, entonces R 1 * es una ER. Ejemplo: si R 1 = a, entonces a* es una ER. (8) Si R 1 es una ER, entonces (R 1 ) es una ER. Ejemplo: si R 1 = a, entonces (a) es una ER. A los tres operadores básicos descriptos para construir ERs, agregamos, como ya hemos visto, dos operadores que simplifican sensiblemente la escritura de algunas ERs. Ellos son: el operador clausura positiva y el operador potencia, los cuales ya hemos definido oportunamente. En consecuencia: (9) Si R 1 es una ER, entonces R 1 + es una ER. Ejemplo: si R 1 = a, entonces a + es una ER. (10) Si R 1 es una ER, entonces R 1 n (con n 0 y entero) es una ER. Ejemplo: si R 1 = a, entonces a 216 es una ER. Con respecto a la precedencia de los operadores, ya se ha informado que: (1) Los operadores clausura de Kleene, clausura positiva y potencia tienen prioridad máxima;
10 10 (2) El operador concatenación tiene prioridad media; y (3) El operador unión tiene prioridad mínima. 4.7 EQUIVALENCIAS ÚTILES ENTRE EXPRESIONES REGULARES En esta sección se conocerán algunas equivalencias que existen entre diferentes ERs y que pueden ser empleadas para simplificar la escritura de ciertas expresiones complejas. Esta es una sección ardua de leer, pero puede resultar de mucha utilidad en más de una ocasión. Sugerencia: recorra las equivalencias presentadas, siguiendo su lectura con algunos ejemplos propios y sencillos, y luego utilice esta sección como material de referencia. Sean R 1, R 2 y R 3 Expresiones Regulares; entonces: R 1 + R 2 = R 2 + R 1, porque el operador unión es conmutativo (R 1 + R 2 ) + R 3 = R 1 + (R 2 + R 3 ) = R 1 + R 2 + R 3 (R 1 R 2 ) R 3 = R 1 (R 2 R 3 ) = R 1 R 2 R 3 R 1 R 2 + R 1 R 3 = R 1 (R 2 + R 3 ) (simplificación por concatenación a izquierda) R 1 R 3 + R 2 R 3 = (R 1 + R 2 ) R 3 (simplificación por concatenación a derecha) (R 1 *)* = R 1 * ( + R 1 )* = R 1 * (R 1 * R 2 *)* = (R 1 + R 2 )* [por ejemplo: (a*b*)* = (a + b)* ] R 1 R 1 * = R 1 * R 1 = R R 1 + = R 1 * R R 1 * = R 1 * (R 1 + )* = R 1 * (R 1 *) + = R 1 * R 1 * R 1 * = R 1 * A continuación se agregan algunas equivalencias que corresponden a las ERUs, las que serán ejemplificadas sobre un alfabeto particular. Sea el alfabeto = {a, b}; entonces, el LU sobre este alfabeto está representado por la ER (a+b)*, y se verifican las siguientes equivalencias: (a + b)* + (a + b)* = (a + b)* (a + b)* (a + b)* = (a + b)* (a + b*)* = (a + b)* (a*b*)* = (a + b)* EXPRESIONES REGULARES EXTENDIDAS Las Expresiones Regulares también se emplean para representar datos que serán procesados por herramientas de software como Lex y Awk. Lex es una herramienta diseñada para ayudar a la escritura de compiladores e intérpretes, si bien también resulta útil para otras aplicaciones no tan complejas como, por ejemplo, aquellas que requieren algún tipo de búsqueda de patrones en su texto de entrada. En todos los casos, Lex utiliza las ERs para describir los patrones que debe encontrar y procesar.
11 11 Awk es un lenguaje de programación que posibilita resolver tareas en las que existe la manipulación habitual de datos, mayormente en forma de texto, como, por ejemplo: modificar el formato de los datos, controlar su validez, buscar patrones con cierta propiedad, etc UN METALENGUAJE PARA EXPRESIONES REGULARES Lex, Awk y cualquier otra herramienta que necesite representar ERs para su posterior procesamiento, considera a estas expresiones como un lenguaje. Este lenguaje de las ERs está formado por: (1) operandos, que son los caracteres del alfabeto; (2) operadores: clausura de Kleene, clausura positiva, concatenación, unión, y otros que serán incorporados a continuación, todos los cuales deben ser representados en la misma línea (no se permiten supraíndices ni subíndices); y (3) ciertos caracteres especiales, llamados metacaracteres, que colaboran en la descripción, sin ambigüedades, de la Expresión Regular en cuestión. Un metalenguaje es un lenguaje que se usa para describir otro lenguaje. El que queremos describir es el lenguaje de las ERs, y el metalenguaje que utilizaremos tiene símbolos que no son ni operandos ni operadores que agregamos para describir, de forma inequívoca, a las ERs; a estos símbolos los llamamos metacaracteres. Estos metalenguajes no están estandarizados, es decir: existen diferentes metalenguajes para describir el lenguaje de las ERs. Pero lo fundamental, en este momento, es definir y aprender a trabajar con cierto metalenguaje; esto servirá, luego, para comprender y trabajar con cualquier metalenguaje. A continuación se presenta un subconjunto del metalenguaje utilizado por Lex, Awk y otras herramientas, para describir a las ERs. Observe que los metacaracteres utilizados no solo describen las operaciones conocidas, sino que también ayudan a representar nuevos operadores: operador unión de expresiones (ejemplo: ab b representa la ER ab+b) [ ] clase de caracteres, simplifica la unión de caracteres (ejemplo: [abx] representa la ER a+b+x) [ ] clase de caracteres en un intervalo (ejemplo: [a d] representa la ER a+b+c+d) { } operador potencia, repetición determinada (ejemplo: a{3} representa la ER aaa) {,} operador potencia extendido a un intervalo (ejemplo: a{1,3} representa la ER a+aa+aaa)? cero o una ocurrencia de la expresión que lo precede (ejemplo: a? representa la ER a+ ) operador clausura de Kleene, cero o más copias de quien lo precede (ejemplo: a representa la ER a*) + operador clausura positiva, una o más copias de quien lo precede (ejemplo: a+ representa la ER a + ) ( ) agrupa una ER (ejemplo: ((ab)? b)+ representa (ab+ +b) + ) Nota 8: Observe que no existe un operador explícito para la concatenación. La aparición de un carácter o de una clase de caracteres inmediatamente a continuación de otro representa la concatenación de estos caracteres o clases de caracteres. Ejemplo 51 [ab][cd] equivale a (a+b)(c+d) = ac + ad + bc + bd.
12 12 Nota 9: En el metalenguaje, los espacios en blanco son opcionales, aunque no pueden existir en una concatenación. Nota 10: Los operadores unarios (clausura de Kleene, clausura positiva, potencia y?) tienen máxima prioridad. Nota 11: si un símbolo utilizado como metacarácter es un carácter de una ER, se lo debe preceder de una barra invertida (\) para evitar una interpretación errónea (ejemplo: \+). Ejemplo 52 En este metalenguaje, la expresión a? (a b) b representa a la ER (a+ε) (a+b) b. Ejemplo 53 La expresión \? [0-9]+ representa el LR de todos los números enteros en base 10, eventualmente precedidos por el signo negativo. Ejemplo 54 La expresión (\+ \ )? [0-9]+ es muy similar a la del ejemplo anterior, pero, ahora, el número entero en base 10 puede estar precedido por cualquiera de los dos signos. Por caso, los números 204, 204 y +204 pertenecen al lenguaje representado. Ejemplo 55 La expresión [0-9] \.[0-9]+ representa el LR de todas las constantes reales en punto fijo, sin signo, y con dígitos decimales optativos antes del punto decimal. Algunos números que pertenecen a este lenguaje son: , 0.18,.024 y EJERCICIOS (1) Describa, mediante una frase, al lenguaje representado por la ER ab 10 (a + b) 6. (2) Explique por qué las ERs a* y a + no son equivalentes. (3) Verifique si el lenguaje asociado a la expresión a + es un subconjunto del lenguaje asociado a la ER a*. (4) Describa, mediante una frase, al LR representado por la ER a + b + y escriba sus tres palabras de menor longitud. (5) Describa, mediante una frase, al LR representado por la ER a + a y escriba sus tres palabras de menor longitud. (6) Compruebe que la ER a* + b* representa un LR que es un subconjunto del LR representado por la ER a*b*. (7) Escriba una ER que represente a Todas las palabras sobre el alfabeto {0,1} que tienen exactamente tres 0s. (8) Compruebe que la ER a* + b* no representa al mismo lenguaje que (a + b)*. (9) Explique la diferencia que existe entre a*b*, (ab*)* y (a*b)*. Escriba las palabras comunes a los tres LRs. (10) Describa, mediante una frase, al lenguaje representado por la ER ab* + (ba)*. (11) Escriba una ER que represente al lenguaje Todas las palabras sobre el alfabeto {0, 1} que comienzan con un 1 y terminan con un 0. (12) Escriba una ER que represente al lenguaje Todos los números binarios que comienzan con una cantidad impar de 1s o que solo tienen 1s.
13 13 (13) Escriba una ER que represente al lenguaje Todas las palabras sobre el alfabeto {a, b, c} que comienzan con aa y terminan con cc, o que comienzan con un número impar de bes, o que solo tienen ces. (14) Escriba una ER que represente al lenguaje Todas las palabras sobre el alfabeto {a, b, c} que terminan con doble letra, o que comienzan con a y tienen un número impar de aes en total. (15) Escriba una ER que denote el lenguaje Todos los números binarios que terminan con doble 1, o que terminan con un triple 0, o que comienzan con una cantidad de 1s que es múltiplo de cuatro y terminan con 010. (16) Escriba una Definición Regular que represente al lenguaje de comentarios en C. (17) Escriba una Definición Regular que represente al lenguaje de los números reales en C (reales en punto fijo y reales en punto flotante, sin signo). (18) Escriba una Definición Regular que represente al lenguaje Todas las palabras sobre {a, b} que terminan con abb, o que comienzan con ba y terminan con bba.
OPERACIONES SOBRE LENGUAJES REGULARES LA UNIÓN DE LENGUAJES REGULARES
OPERACIONES SOBRE LENGUAJES REGULARES LA UNIÓN DE LENGUAJES REGULARES Sean L1 y L2 dos LRs. Entonces L1 L2, es un LR Si L1 es representado por una ER R1 y L2 es representado por cierta expresión R2, la
Más detallesNo todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:
1 Clase 3 SSL EXPRESIONES REGULARES Para REPRESENTAR a los Lenguajes Regulares. Se construyen utilizando los caracteres del alfabeto sobre el cual se define el lenguaje, el símbolo y operadores especiales.
Más detallesEJERCICIOS. Algo de C CADENAS
EJERCICIOS (1) Sea el lenguaje Todos los números binarios que contienen el grupo 00 por lo menos una vez. Dibuje el DT de un AFN que lo reconozca. (2) Escriba la descripción formal del AFN diseñado en
Más detallesSSL Guia de Ejercicios
1 SSL Guia de Ejercicios INTRODUCCIÓN A LENGUAJES FORMALES 1. Dado el alfabeto = {a, b, c}, escriba las palabras del lenguaje L = {x / x }. 2. Cuál es la cardinalidad del lenguaje L = {, a, aa, aaa}? 3.
Más detallesCaracter a caracter los datos pueden ser escritos o leidos carácter a carácter, con las funciones fputc() y fgetc().
Notas auxiliares sobre manejo de archivos Las funciones de entrada salida (E/S) de las librerías estandar de C, permiten leer y escribir datos a, y desde, archivos y dispositivos. La caracteristica fundamental
Más detallesEntrada/Salida. Entrada/Salida. Flujos de texto. Flujos de datos. Flujos binarios. Flujos estándares ANSI
Entrada/Salida Entrada/Salida Mario Medina C. mariomedina@udec.cl Funciones de entrada/salida no son parte del lenguaje propiamente tal Bibliotecas son parte del estándar ANSI C Biblioteca estándar:
Más detallesLENGUAJE. Tema 8 Ficheros
LENGUAJE Tema 8 Ficheros FICHEROS EN C Los ficheros, en contraposición con las estructuras de datos vistas hasta ahora (variables simples, vectores, registros, etc.), son estructuras de datos almacenadas
Más detallesTema 13: Manejo de archivos en lenguaje C
Tema 13: Manejo de archivos en lenguaje C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco)
Más detalles6. Archivos. Programación II, FCFM, BUAP
6. Archivos Programación II, FCFM, BUAP Definición Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio externo) y no en memoria
Más detallesTema 6. Gestión de ficheros en C. Programación en Lenguajes Estructurados
Tema 6. Gestión de ficheros en C Programación en Lenguajes Estructurados Tema 6. Gestión de ficheros en C 6.1. Introducción a los ficheros En la mayor parte de los programas se quiere almacenar información
Más detallesArchivos. Programación en C 1
Archivos Programación en C 1 Índice Tipos de archivos. Apertura de archivos. Cierre de archivos. Lectura de archivos. Escritura de archivos. Acceso directo en archivos binarios. Programación en C 2 Introducción
Más detallesTema 5. Entrada y Salida
Tema 5 Entrada y Salida Contenidos 1. Conceptos Previos de Entrada y Salida de Datos. 2. Funciones de Salida de Datos. putchar puts printf 3. Funciones de Entrada de Datos. getchar gets scanf 4. Ficheros
Más detallesPara C un chero no es más que una porción de almacenamiento
Ficheros en C Para C un chero no es más que una porción de almacenamiento de memoria. C representa un chero como una estructura, de hecho el chero stdio.h contiene la dención de un chero como si fuese
Más detallesFundamentos de Informática 7. Introducción al manejo de archivos
Fundamentos de Informática 7. Introducción al manejo de archivos Fundamentos de Informática Grado en Ingeniería Química 2 Contenidos Introducción Apertura y cierre de archivos Lectura/escritura de datos
Más detallesArchivos. Conceptos SESION 13
Archivos SESION 13 Conceptos Definición Un archivo es una secuencia de bits almacenados en algún dispositivo externo tal como un disco o una cinta magnética. En C un archivo es simplemente un flujo(stream)
Más detalles1.1. Gramática Léxica
SINTAXIS Y FUNCIONNES DE C 1.1. Gramática Léxica 1.1.1. Elementos Léxicos -> ->
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida por ficheros en Entrada y salida por ficheros ficheros y secuencias en Apertura y cierre de un fichero Fin de fichero Entrada
Más detallesCAPITULO 2: LENGUAJES
CAPITULO 2: LENGUAJES 2.1. DEFINICIONES PREIAS SIMBOLO: Es una entidad indivisible, que no se va a definir. Normalmente los símbolos son letras (a,b,c,.., Z), dígitos (0, 1,.., 9) y otros caracteres (+,
Más detallesUNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN INGENIERÍA DE SOFTWARE UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 8 Material visual: Diapositivas Unidad de competencia
Más detallesTema 3: Entrada/Salida de Ficheros
Tema 3: Objetivo: Almacenar datos en un dispositivo de almacenamiento secundario (p.e. disco duro). Pasos a seguir: 1 Abrir fichero 2 Escribir/leer del fichero 3 Cerrar fichero 1 Tema 3: Abrir el fichero:
Más detallesFicheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen
Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,
Más detallesProgramación I Teoría : Entrada/Salida - Archivos.
Programación I Teoría : Entrada/Salida - Archivos http://proguno.unsl.edu.ar proguno@unsl.edu.ar Entrada/Salida Interacción del programa con su ambiente para leer (entrada) y escribir (salida) datos. 2
Más detallesProf. Dr. Oscar Bruno SSL CLASE 2
SSL CLASE 2 Repaso de los temas de la clase anterior Introducción a la materia: Los LP contienen un conjunto LF algunos son finitos (ej. los operadores, otros infinitos, ej. constantes o identificadores)
Más detallesTema 07: Tipos de datos en C & entrada y salida estándar
Tema 07: Tipos de datos en C & entrada y salida estándar M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo
Más detallesLaboratorio de Arquitectura de Redes. Entrada y salida estándar
Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada
Más detallesDEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES
1 DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES Los LENGUAJES FORMALES están formados por PALABRAS, las palabras son CADENAS y las cadenas están constituidas por SÍMBOLOS de un ALFABETO. SÍMBOLOS
Más detalles08 Análisis léxico IV
2 Contenido Expresiones regulares Lenguaje generado por una expresión regular Precedencia de las operaciones con las expresiones regulares Ejemplos Definiciones regulares Extensiones de las expresiones
Más detallesConcepto Concept s Los L nom res re d e e los h c eros: exter te n r os o o fí s fí ico nom re ú nico i del del ar chiv chiv o o o ficher ficher en
Conceptos Los nombres de los ficheros: externos o físico (nombre único del archivo o fichero en el sistema de archivos) e interno o lógico (identificador del fichero dentro de un programa). Las operaciones
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:
Más detallesMIS. Lizbeth Alejandra Hernández González
MIS. Lizbeth Alejandra Hernández González Función en Pascal Descripción VariableArch:Text VariableArch:File of Integer Assign(VariableArch,Nombre) FileMode=valor; Reset(VariableArch); Append(VariableArch);
Más detalles1. Cadenas EJERCICIO 1
LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 - BOLETÍN DE EJERCICIOS Víctor J. Díaz Madrigal y José Miguel Cañete Departamento de Lenguajes y Sistemas Informáticos 1. Cadenas La operación reversa aplicada
Más detallesFILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.
FICHEROS El sistema de archivos de C está diseñado para secuencias que son independientes del dispositivo. Existen dos tipos se secuencias: de texto que es una ristra de caracteres organizados en líneas
Más detallesPor ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:
Arreglos unidimensionales y multidimensionales Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua.
Más detallesLEER RECUPERAR EXTRAER DATOS DE FICHEROS O ARCHIVOS EN C. FGETC, GETC, FGETS, FSCANF. EJERCICIOS (CU00538F)
APRENDERAPROGRAMAR.COM LEER RECUPERAR EXTRAER DATOS DE FICHEROS O ARCHIVOS EN C. FGETC, GETC, FGETS, FSCANF. EJERCICIOS (CU00538F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C
Más detallesOperaciones de E/S en ANSI C
Operaciones de E/S en ANSI C Las operaciones de entrada/salida estándar (realizadas habitualmente con printf y scanf) se realizan en realidad sobre ficheros que representan los dispositivos mediante los
Más detallesU.A.B.C. Facultad de Ingeniería Programación Estructurada UNIDAD VI. UNIDAD VI Archivos.
6.1 INTRODUCCION UNIDAD VI Archivos. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo
Más detallesAlfabetos, cadenas y lenguajes
Capítulo 1 lfabetos, cadenas y lenguajes 1.1. lfabetos y cadenas Un alfabeto es un conjunto finito no vacío cuyos elementos se llaman símbolos. Denotamos un alfabeto arbitrario con la letra Σ. Una cadena
Más detallesExpresiones regulares, gramáticas regulares
Expresiones regulares, gramáticas regulares Los LR en la jerarquía de Chomsky La clasificación de lenguajes en clases de lenguajes se debe a N. Chomsky, quien propuso una jerarquía de lenguajes, donde
Más detallesFicheros. Archivo, o fichero: Características:
Ficheros Archivo, o fichero: Es una estructura de datos en memoria externa, cuyo tiempo de vida no está ligado a la ejecución del programa que lo crea o lo maneja. Un fichero existe desde que un programa
Más detallesAnalista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior ARCHIVOS. (File Management)
ARCHIVOS (File Management) 1 Archivos Un archivo es una colección de bytes almacenados en un dispositivo. Un archivo contiene datos, el sistema que lo alberga contiene metadatos del mismo En un programa
Más detallesENTRADA/SALIDA. Relación Programa - Sistema Operativo - Hardware
ENTRADA/SALIDA UPCO ICAI Departamento de Electrónica y Automática 1 Relación Programa - Sistema Operativo - Hardware Mi programa no maneja directamente el hardware El sistema operativo es el que maneja
Más detallesBloque 9. Ficheros de texto
Bloque 9 Ficheros de texto Ficheros Necesitamos un tipo de datos que nos permita guardar datos de forma permanente en el disco: ficheros El SO se encarga de gestionar físicamente el fichero A nosotros
Más detalles7. Manejo de Archivos en C.
7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de
Más detallesAutómata finito y Expresiones regulares A* C. B
Autómata finito y Expresiones regulares A* C. B Conceptos Alfabeto ( ): es el conjunto finito no vacío de símbolos. Ejemplo: = {0,1}, el alfabeto binario Cadenas: secuencia finita de símbolos pertenecientes
Más detallesExpresiones regulares, gramáticas regulares
Expresiones regulares, gramáticas regulares Los LR en la jerarquía de Chomsky La clasificación de lenguajes en clases de lenguajes se debe a N. Chomsky, quien propuso una jerarquía de lenguajes, donde
Más detallesObjetivos. El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes.
Objetivos El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes. Al final de esta práctica el alumno podrá: 1. Utilizar las herramientas para
Más detallesInformática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.
Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el
Más detallesElementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Más detallesDEL AUTÓMATA FINITO A LA EXPRESIÓN REGULAR
DEL AUTÓMATA FINITO A LA EXPRESIÓN REGULAR Muchas veces es más fácil y seguro dibujar el DT de un AF que reconozca al lenguaje, para luego obtener la ER a partir de este autómata. Se presenta un método
Más detallesTEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.
Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C
Más detallesEl operador contenido ( ) permite acceder al contenido de
3. Memoria Dinámica y Punteros Objetivos: Distinguir los conceptos de memoria estática y memoria dinámica Comprender el concepto de puntero como herramienta de programación Conocer cómo se definen y cómo
Más detallesTEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Más detallesEntrada y Salida de Datos. Lectura de archivos.
1 Entrada y Salida de Datos. Lectura de archivos. Son innumerables los casos en los que son necesarios guardar datos entre ejecuciones de un programa para poder ser recuperados en futuras sesiones. Los
Más detallesInformática I para Bachillerato
CIMAT C/C++ Cadenas de caracteres, I/O. CIMAT Sesión 14 Recordatorio de Cadenas A diferencia de otros lenguajes de programación que emplean un tipo denominado cadena string para manipular un conjunto de
Más detallesLenguaje C Entrada y Salida de Datos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Lenguaje C Entrada y Salida de Datos Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia E/S por consola Se refiere a las operaciones que ocurren
Más detallesUNIDAD 2 Descripción de un programa
Descripción de un programa Estructura general de un programa. Elementos básicos. Tipos de datos simples: enteros, reales y carácter. Representación de datos en memoria. Operaciones sobre tipos de datos
Más detallesESPECIFICACIÓN DE SÍMBOLOS
1 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE COMPUTACIÓN ESPECIFICACIÓN DE SÍMBOLOS Elaborado el Sábado 24 de Julio de 2004 I.- COMPONENTES LÉXICOS, PATRONES Y LEXEMAS (extraído de
Más detallesTipos de datos y Operadores Básicos
Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?
Más detalles07 Análisis léxico III
2 Contenido Lenguaje Operaciones entre lenguajes Lenguajes regulares Expresiones regulares 3 Lenguaje Un lenguaje es un conjunto de palabras (cadenas) de un determinado alfabeto Σ. Formalmente: Se llama
Más detallesCapítulo 9. Lectura y escritura de ficheros
Capítulo 9. Universidad del País Vasco / Euskal Herriko Unibertsitatea 235 Índice del capítulo 1. Introdución......................................... 237 2. Objetivos...........................................
Más detallesAlgoritmos y estructuras de datos
Algoritmos y estructuras de datos Aritmética de direcciones y cadenas Francisco Javier Zaragoza Martínez Universidad Autónoma Metropolitana Unidad Azcapotzalco Departamento de Sistemas 8 de mayo de 2015
Más detallesINTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES LENGUAJES FORMALES
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesTema 1. Ficheros FUNDAMENTOS DE PROGRAMACIÓN II. Profesor: Fernando Pereñíguez García. Escuela Politécnica
Tema 1. Ficheros FUNDAMENTOS DE PROGRAMACIÓN II Profesor: Fernando Pereñíguez García Escuela Politécnica Fernando Pereñíguez García Departamento de Grado en Ingeniería Informática Universidad Católica
Más detallesRepaso Clase Anterior
Mayo 22, Lunes Repaso Clase Anterior Glosario Tareas Prof. Esp. Ing. José María Sola 258 Agenda para esta clase Especificación Formal de Máquintas de Estado Expresiones Regulares Prof. Esp. Ing. José María
Más detallesLenguaje de programación C. Introducción
Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la
Más detallesEl lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
Más detallesLenguajes y Gramáticas
Lenguajes y Gramáticas Teoría de Lenguajes Fernando Naranjo Introduccion Se desarrollan lenguajes de programación basados en el principio de gramática formal. Se crean maquinas cada vez mas sofisticadas
Más detallesIntroducción a la Programación en C Gestión de Ficheros
Gestión de Ficheros Christopher Expósito-Izquierdo cexposit@ull.edu.es Airam Expósito-Márquez aexposim@ull.edu.es Israel López-Plata ilopezpl@ull.edu.es Belén Melián-Batista mbmelian@ull.edu.es José Marcos
Más detallesTemas. Objetivo. Símbolo, alfabeto. Hileras y operaciones con hileras. Operaciones con lenguajes
0 1 Temas Símbolo, alfabeto Hileras y operaciones con hileras Operaciones con lenguajes Objetivo Que el estudiante logre conocer, comprender y manejar conceptos vinculados con la Teoría de Lenguajes Formales
Más detalles06 Introducción al procesamiento de imágenes BMP con ANSI C
06 Introducción al procesamiento de imágenes BMP con ANSI C Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo
Más detallesLenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores
Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 2) 2007 1 Derivaciones El proceso de búsqueda de un árbol sintáctico para una cadena se llama análisis sintáctico. El lenguaje generado
Más detallesProgramación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
Más detallesTipos de Datos en C. Palabras reservadas en C
Tipos de Datos en C Tipo Tamaño de bits Rango char 8-128 a 127 unsigned char 8 0 a 255 signed char 8-128 a 127 int 16 32768 a 32767 unsigned int 16 0 a 65535 signed int 16 Igual que int short int 16 Igual
Más detallesTema 3. Estructuras de control
Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)
Más detallesUna expresión es una combinación de uno o más operandos y operadores para obtener un resultado.
1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.
Más detallesExpresiones regulares, gramáticas regulares Unidad 3
Expresiones regulares, gramáticas regulares Unidad 3 Los LR en la jerarquía de Chomsky La clasificación de lenguajes en clases de lenguajes se debe a N. Chomsky, quien propuso una jerarquía de lenguajes,
Más detalles7.1.1) archivos ) jerarquía de los datos
7.1) introducción 7.1.1) archivos El problema de los datos utilizados por un programa, es qué todos los datos se eliminan cuando el programa termina. En la mayoría de los casos se desean utilizar datos
Más detallesLenguaje de Programación: C++ ARCHIVOS I/O
UG C++ Lenguaje de Programación: C++ ARCHIVOS I/O Universidad de Guanajuato Octubre 2010 Como abrir un archivo Antes de poder escribir datos en un archivo, debemos abrirlo, esto significa que debemos decirle
Más detallesArchivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.
Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17 Archivos
Más detallesInstituto Técnico Jesús Obrero 4to año Programación Profesor: Luis Vallenilla
Instituto Técnico Jesús Obrero 4to año Programación Profesor: Luis Vallenilla Definición Archivos en Lenguaje C Estructura de datos dinámica y homogénea, compuesta por una colección de registros del mismo
Más detallesLección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
Más detallesProgramación I Ficheros de texto
1 Ficheros de texto Iván Cantador 2 Ficheros (I) 3 Un fichero o archivo es un conjunto de bits que es tratado por el sistema operativo como única unidad lógica Un fichero está identificado por su nombre
Más detallesMáquinas de estado finito y expresiones regulares
Capítulo 3 Máquinas de estado finito y expresiones regulares En este tema definiremos y estudiaremos máquinas de estado finito, llamadas también máquinas de estado finito secuenciales o autómatas finitos.
Más detallesSea G = (V N, V T, S, P) una gramática libre de contexto, un árbol es un árbol de derivación para G si:
09:50 1 Temas Gramáticas libres de contexto Árbol de derivación Derivación más a la izquierda y más a la derecha Ambigüedad Factorización a izquierda Gramáticas propias Expresiones Regulares Objetivo Que
Más detallesCurso Básico de Computación Preliminares
Curso Básico de Computación Preliminares Feliú Sagols Troncoso Matemáticas CINVESTAV-IPN 2010 Curso Básico de Computación (Matemáticas) Preliminares 2010 1 / 11 1 Preliminares
Más detallesTema 2: Lenguajes Formales. Informática Teórica I
Tema 2: Lenguajes Formales Informática Teórica I Teoría de Lenguajes Formales. Bibliografía M. Alfonseca, J. Sancho y M. Martínez. Teoría de Lenguajes, Gramáticas y Autómatas, R.A.E.C., Madrid, (1998).
Más detallesFundamentos de Informática 5. Operadores, expresiones (y su aplicación)
Fundamentos de Informática 5. Operadores, expresiones (y su aplicación) Fundamentos de Informática Grado en Ingeniería Química 2 Contenidos Operadores De asignación Aritméticos De incremento Relacionales
Más detallesLaboratorio de Arquitectura de Redes. Entrada y salida por archivos en lenguaje C
Laboratorio de Arquitectura de Redes Entrada y salida por archivos en lenguaje C Entrada y salida por archivos lenguaje C Archivos y secuencias en lenguaje C Apertura y cierre de un archivo Fin de fichero
Más detallesLEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.
LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.
Más detallesLENGUAJE. Tema 2 Elementos de un programa
LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar
Más detalleso Archivos secuenciales: imitan el modo de acceso de los antiguos ficheros secuenciales almacenados en cintas magnéticas y
CAPITULO IX ARCHIVOS Introducción El almacenamiento de datos en las estructuras de datos, vistas anteriormente, sólo es temporal, es decir, cuando termina el programa los datos se pierden. Para la conservación
Más detallesEl alumno podrá : Manejar el acceso a memoria Manejar y manipular Archivos Programar estructuras y apuntadores de forma mas eficiente y avanzada
, UNIVERSIDAD AUTÓNOMA DE CHIHUAHUA Clave: 08MSU007H Clave: 08USU4053W FACULTAD DE INGENIERÍA PROGRAMA DEL CURSO: LENGUAJES DE PROGRAMACIÓN II DES: Ingeniería Ingeniería en Sistemas Programa(s) Educativo(s):
Más detallesCurso Básico de Computación
CINVESTAV IPN México City 2010 1 Preliminares 1.1 Cadenas, alfabetos y lenguajes Un símbolo es un ente abstracto que no se puede definir formalmente. Letras o dígitos son ejemplos
Más detallesIntroducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
Más detallesSintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno
1.1. Gramática Léxica 1.1.1. Elementos Léxicos Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno ->
Más detallesPrácticas de Lenguajes, Gramáticas y Autómatas
Prácticas de Lenguajes, Gramáticas y Autómatas Cuarto cuatrimestre (primavera) de Ingeniería en Informática Curso 2010-2011 http://webdiis.unizar.es/asignaturas/lga Profesor Responsable: Jorge Júlvez Dpto.
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
V1.1 Informática Ingeniería en Electrónica y Automática Industrial Datos en lenguaje C Datos en lenguaje C Introducción Tipos de datos básicos y modificadores Tipos de datos enteros Tipos de datos reales
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Datos en lenguaje C V1.1 Datos en lenguaje C Introducción Tipos de datos básicos y modificadores Tipos de datos enteros Tipos de datos reales
Más detalles