1.1. Entrada / Salida <stdio.h>

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

Download "1.1. Entrada / Salida <stdio.h>"

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

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:

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

EJERCICIOS. Algo de C CADENAS

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

SSL Guia de Ejercicios

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

Caracter a caracter los datos pueden ser escritos o leidos carácter a carácter, con las funciones fputc() y fgetc().

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

Entrada/Salida. Entrada/Salida. Flujos de texto. Flujos de datos. Flujos binarios. Flujos estándares ANSI

Entrada/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 detalles

LENGUAJE. Tema 8 Ficheros

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

Tema 13: Manejo de archivos en lenguaje C

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

6. Archivos. Programación II, FCFM, BUAP

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

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

Archivos. Programación en C 1

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

Tema 5. Entrada y Salida

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

Para C un chero no es más que una porción de almacenamiento

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

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

Archivos. Conceptos SESION 13

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

1.1. Gramática Léxica

1.1. Gramática Léxica SINTAXIS Y FUNCIONNES DE C 1.1. Gramática Léxica 1.1.1. Elementos Léxicos -> ->

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informá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 detalles

CAPITULO 2: LENGUAJES

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

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

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

Tema 3: Entrada/Salida de Ficheros

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

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

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

Programación I Teoría : Entrada/Salida - Archivos.

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

Prof. Dr. Oscar Bruno SSL CLASE 2

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

Tema 07: Tipos de datos en C & entrada y salida estándar

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

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

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

DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES

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

08 Análisis léxico IV

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

Concepto 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

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

Informática Ingeniería en Electrónica y Automática Industrial

Informá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 detalles

MIS. Lizbeth Alejandra Hernández González

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

1. Cadenas EJERCICIO 1

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

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

FILE *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 detalles

Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:

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

LEER RECUPERAR EXTRAER DATOS DE FICHEROS O ARCHIVOS EN C. FGETC, GETC, FGETS, FSCANF. EJERCICIOS (CU00538F)

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

Operaciones de E/S en ANSI C

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

U.A.B.C. Facultad de Ingeniería Programación Estructurada UNIDAD VI. UNIDAD VI Archivos.

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

Alfabetos, cadenas y lenguajes

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

Expresiones regulares, gramáticas regulares

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

Ficheros. Archivo, o fichero: Características:

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

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior ARCHIVOS. (File Management)

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

ENTRADA/SALIDA. Relación Programa - Sistema Operativo - Hardware

ENTRADA/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 detalles

Bloque 9. Ficheros de texto

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

7. Manejo de Archivos en C.

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

Autómata finito y Expresiones regulares A* C. B

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

Expresiones regulares, gramáticas regulares

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

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

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Informá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 detalles

Elementos de un programa en C

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

DEL AUTÓMATA FINITO A LA EXPRESIÓN REGULAR

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

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

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

El operador contenido ( ) permite acceder al contenido de

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

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

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

Entrada y Salida de Datos. Lectura de archivos.

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

Informática I para Bachillerato

Informá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 detalles

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

UNIDAD 2 Descripción de un programa

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

ESPECIFICACIÓN DE SÍMBOLOS

ESPECIFICACIÓ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 detalles

Tipos de datos y Operadores Básicos

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

07 Análisis léxico III

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

Capítulo 9. Lectura y escritura de ficheros

Capí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 detalles

Algoritmos y estructuras de datos

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

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES LENGUAJES FORMALES

INTRODUCCIÓ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 detalles

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

Repaso Clase Anterior

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

Lenguaje de programación C. Introducción

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

El lenguaje C. 1. Identificadores, constantes y variables

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

Lenguajes y Gramáticas

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

Introducción a la Programación en C Gestión de Ficheros

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

Temas. Objetivo. Símbolo, alfabeto. Hileras y operaciones con hileras. Operaciones con lenguajes

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

06 Introducción al procesamiento de imágenes BMP con ANSI C

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

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

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

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

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

Tipos de Datos en C. Palabras reservadas en C

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

Tema 3. Estructuras de control

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

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

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

Expresiones regulares, gramáticas regulares Unidad 3

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

7.1.1) archivos ) jerarquía de los datos

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

Lenguaje de Programación: C++ ARCHIVOS I/O

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

Archivos & 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. 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 detalles

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

Lección 2 Introducción al lenguaje C

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

Programación I Ficheros de texto

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

Máquinas de estado finito y expresiones regulares

Má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 detalles

Sea G = (V N, V T, S, P) una gramática libre de contexto, un árbol es un árbol de derivación para G si:

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

Curso Básico de Computación Preliminares

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

Tema 2: Lenguajes Formales. Informática Teórica I

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

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

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

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

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

LENGUAJE. Tema 2 Elementos de un programa

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

o Archivos secuenciales: imitan el modo de acceso de los antiguos ficheros secuenciales almacenados en cintas magnéticas y

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

El alumno podrá : Manejar el acceso a memoria Manejar y manipular Archivos Programar estructuras y apuntadores de forma mas eficiente y avanzada

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

Curso Básico de Computación

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

Introducción a la Programación

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

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno

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

Prácticas de Lenguajes, Gramáticas y Autómatas

Prá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 detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informá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 detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informá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