Un programa es una secuencia de símbolos y puede considerarse como un texto.

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

Download "Un programa es una secuencia de símbolos y puede considerarse como un texto."

Transcripción

1 7. DESCRIPCION FORMAL DE LENGUAJES 7.1. Léxico, Sintaxis, Semántica. Un programa es una secuencia de símbolos y puede considerarse como un texto. Los símbolos de un lenguaje pertenecen a un conjunto que se denomina vocabulario o léxico. Los símbolos también se denominan elementos léxicos o tokens. Léxico significa diccionario; y aplicado en el ambiente de lenguajes de programación se utiliza para denotar los símbolos del lenguaje. Estos símbolos, a su vez, están formados por secuencias de caracteres; y existen reglas que determinan cómo puede generarse o producirse un símbolo a partir de caracteres. Cada lenguaje de programación define reglas que permiten componer el texto de un programa como una secuencia de símbolos. El conjunto de estas reglas se denomina gramática, o más usualmente, la sintaxis del lenguaje. Sintaxis significa con orden. Cada regla establece una clase definida de objetos o categorías sintácticas; como ejemplos pueden darse algunas partes típicas de un programa: acciones, declaraciones, condiciones, expresiones, etc. Asociado a cada palabra (símbolo) y a cada frase (categoría sintáctica) debe existir un significado. Que se traduce en valores de los objetos (constantes y variables) de acuerdo a sus tipos; o en nombres de objetos o grupos de acciones; o en la especificación de las operaciones que deben efectuarse sobre esos objetos. Todas las reglas que aportan esta información se denominan: Semántica del lenguaje. Si bien las reglas para construir símbolos y frases son finitas, el conjunto de programas es infinito. Para describir con rigurosidad los lenguajes de programación se emplea una notación formal que se denomina Metalenguaje. El formulismo más conocido, y que emplearemos en la descripción, es el Formalismo Extendido Backus-Nauer. (BNF, Backus Nauer Formalism). Básicamente consiste en describir una frase, (categoría sintáctica) o parte abstracta de un programa, mediante la secuencia de componentes, de menor categoría, que pueden reemplazar dicha frase. Las reglas deben especificar hasta llegar al reemplazo por los símbolos que componen el diccionario. Prof. Leopoldo Silva Bijit

2 En este ambiente, los elementos léxicos del lenguaje se denominan símbolos terminales. Las componentes estructurales del lenguaje que serán reemplazadas, se denominan símbolos no terminales. La regla que establece el reemplazo de un símbolo no terminal por una secuencia de símbolos terminales y no terminales se denomina producción. Las reglas deben permitir verificar, con facilidad, si una secuencia de símbolos es o no una sentencia correcta del lenguaje. Un programador debe conocer cómo generar secuencias de símbolos terminales que cumplen la gramática Metalenguaje BNF Producción. Existe sólo una acción primitiva, es la producción. Es una ecuación sintáctica que permite definir una categoría sintáctica, S; mediante una expresión E. En símbolos: <S> ::= <E> Gráficamente: S E Los paréntesis de ángulo, delimitan los símbolos no terminales. En el gráfico esto se representa por un rectángulo. La secuencia ::=, es el metasímbolo para la producción. Y se lee: puede ser reemplazado por. Una producción puede considerarse la instancia de definición de S en s de E. Lo usual es que S corresponda a una parte o concepto del lenguaje. Por ejemplo: acciones, condición, tipos, etc. Prof. Leopoldo Silva Bijit

3 La expresión E, debe especificar una secuencia de símbolos; éstos, a su vez, deben especificar, en forma precisa, cómo se estructura una parte en s de sus componentes Secuenciación de símbolos. Los lenguajes estructurados suelen disponer tres formas básicas para establecer secuencias: La alternativa, la concatenación, y la iteración Alternativa. Una expresión puede considerarse como una lista de s sintácticos alternativos. En símbolos: Gráficamente: <E> ::= <T1> <T2> --- <Tn> n>0 T1 T2 E Ti Tn El metasímbolo se lee como o excluyente.- La producción anterior explica que una expresión puede remplazarse por uno (y sólo uno) de los s de la lista. Ejemplo: <acción básica> ::= <asignación> <entrada> <salida> Prof. Leopoldo Silva Bijit

4 Concatenación. Cada puede ser reemplazado por la concatenación (o producto) de es sintácticos. En símbolos: Gráficamente: <T> ::= <F1><F2> ---- <Fn> n>0 T F1 F2 Fi Fn Ejemplo: <acción repetitiva> ::= 'repeat' <acciones> 'until' <condición> Nótese que los símbolos terminales, se indican por una secuencia de caracteres entre comillas simples Repetición. Opción. a) Opción. Una o ninguna. Una forma de reemplazar un es mediante la opción. En símbolos: Gráficamente: <F> ::= [ E ] F S Prof. Leopoldo Silva Bijit

5 Los paréntesis cuadrados son los metasímbolos empleados para la opción, se indica que el puede ser reemplazado por la expresión o por nada. Se dice que [E] es opcional; puede estar o no. Y si está, lo hace sólo una vez. Ejemplo: <signo> ::= [ '+' '-' ] Signo + - Debe notarse que los símbolos terminales se representan encerrados en ovoides o círculos, en la descripción gráfica. La ausencia de símbolo, suele ser tratada como la ocurrencia del símbolo vacío. b) Repetición. Un también puede ser reemplazado por la repetición, de cero o más veces, de una expresión. En símbolos: <F> ::= { E } Gráficamente: F E Prof. Leopoldo Silva Bijit

6 Los paréntesis de llave denotan la repetición. Ejemplo: <número entero sin signo> ::= <dígito>{dígito} Para delimitar el número máximo de repeticiones, suele agregarse un valor entero como superíndice. Ejemplo: {digito}^3 indica a lo más 3 cifras. c) Repetición de a lo menos una vez. Una alternativa de reemplazo de, es la repetición, de una expresión, por lo menos una vez. En símbolos: <F> ::= <E> {E} La que es semánticamente equivalente a: <F> ::= {E} <E> Estableceremos la siguiente equivalencia, como convenio, para simplificar la notación: Gráficamente: <F> ::= {E*} F E d) Lista. Una construcción de uso frecuente es: <lista> ::= { <entidad> <separador> } <entidad> Prof. Leopoldo Silva Bijit

7 La lista está formada por una entidad a lo menos; en caso de existir varias entidades, éstas aparecen separadas por el separador. Nótese que después de la última entidad no debe existir un separador. Debido a su frecuente uso, la sintaxis de lista puede convenirse en anotarla, en forma abreviada, según: <lista> ::= { <entidad>* <separador> } Construcción que será frecuentemente empleada en este texto Agrupaciones. En las ocasiones que sean necesarias pueden agruparse s y es sintácticos mediante paréntesis redondos. Ejemplo: < simple> ::= ('A' 'B')('C' 'D') Las siguientes secuencias cumplen la sintaxis de simple: AC AD BC BD Sintaxis de. En símbolos: <F> ::= <S> <símbolo terminal> (E) E [ E ] { E } Los símbolos términales son secuencias de símbolos tomados del vocabulario del lenguaje. Y se representan entre comillas simples. La entidad sintáctica <S> debe considerarse representada por su identificador o nombre; y debe estar definida previamente. Prof. Leopoldo Silva Bijit

8 Descripción formal de BNF. El BNF es un lenguaje formal, y como veremos puede emplearse para describirse a sí mismo. Las siguientes producciones definen el formalismo: <sintaxis> ::= <producción> <producción> ::= <identificador> '::=' <expresión> <expresión> ::= <> { ' ' <> } <> ::= <> { <> } <> ::= <identificador> <símbolo terminal> '(' <expresión> ')' <expresión> '[' <expresión> ']' '{' <expresión> '}' El identificador denota una entidad sintáctica Ejemplos. a) 'A'['B']'C' genera ABC y AC b) 'A'{'BA'} genera A ABA ABABA... c) {'A' 'B'}'C' genera C AC BC AAC Arboles de Derivación. Una forma de ayudar a reconocer las frases y su estructura es el desarrollo de árboles de derivación. Ejemplo: Dadas las producciones: <entero con signo>::=<signo><entero> <signo>::='+' '-' Prof. Leopoldo Silva Bijit

9 <entero>::=<dígito><entero> <dígito> (recursiva) <dígito>::='0' '1' Verificar si +10 pertenece o no al lenguaje. (Específicamente si es o no un entero con signo). Una forma de verificación es la construcción de un árbol de derivación, que consiste en representar, gráficamente, los reemplazos que se efectúan desde el símbolo de partida (raíz) hasta llegar a elementos terminales (hojas). [top-down] El entero con signo puede reemplazarse por la secuencia: signo entero. enteroconsigno signo entero A su vez, signo se reemplaza por + (ya es terminal). Y entero por dígito entero. enteroconsigno signo entero + dígito entero Dígito por el terminal 1, y entero por dígito. enteroconsigno signo entero + dígito entero 1 dígito Finalmente dígito por el terminal 0. 0 Prof. Leopoldo Silva Bijit

10 El procedimiento (de reconocimiento) puede también efectuarse a la inversa, desde las hojas hacia la raíz. (bottom up) Recursividad en Producciones. Consiste, en este caso, en definir un símbolo no terminal en s de sí mismo. La recursividad permite definir lenguajes con un número finito de producciones. La definición recursiva permite generar símbolos de longitud variable. El básico de repetición puede describirse explícitamente en forma recursiva. Se tiene que: <A>::={<B>} (i) es equivalente a: <A>::=<vacío> <A><B> (ii) En forma gráfica: A B A A B Se dice que la definición ii) de A es recursiva. Puede comprobarse que existen otras formas equivalentes. Son equivalentes porque generan las mismas secuencias; cuestión que puede verificarse desarrollando árboles de derivación. Otras formas equivalentes son: Prof. Leopoldo Silva Bijit

11 <A> ::= <vacío> <B><A> <A> ::= <vacío> <A><B><A> (iii) (iv) La secuencia BBBB, puede lograrse para el caso (ii) según: A es reemplazado por AB; luego A es nuevamente reemplazado por AB ABB; luego A por AB, queda ABBB; otra vez A por AB, queda ABBBB; finalmente A por el símbolo vacío. Ejemplo: <S>::='z' 'y'<s> S z y S Genera las secuencias: z yz yyz yyyz... Puede escribirse: <S>::={'y'}'z' S z y Asociatividad en Producciones. El uso de recursividad en las producciones, permite establecer reglas de asociatividad sin uso de paréntesis. Puede emplearse recursividad por la izquierda. Ejemplo: Prof. Leopoldo Silva Bijit

12 <expresión>::= <expresión><operador><variable> <variable> <operador> ::= '+' '*' <variable> ::= 'x' 'y' La secuencia x+y*x+y se interpreta ((x+y)*x)+y Prof. Leopoldo Silva Bijit

13 Con la derivación: exp exp op var exp op var + y exp op var * x var + y x Se refleja la asociatividad, agrupando primero las hojas más alejadas de la raíz. También puede emplearse recursividad por la derecha: Ejemplo: <expresión> ::=<variable><operador><expresión> <variable> <operador> ::='+' '*' <variable> ::='x' 'y' La secuencia x+y*x+y se interpreta: x+(y*(x+y)) Con la derivación: exp var op exp x + var op exp y * var op exp x + var y Prof. Leopoldo Silva Bijit

14 Ambigüedad en Producciones. Ciertas producciones pueden llevar a ambigüedades semánticas: Ejemplo: <expresión> ::=<expresión><operador><expresión> <variable> <operador> ::='+' '*' <variable> ::='a' 'b' 'c' Puede comprobarse que la secuencia: a+b*c puede interpretarse como a+(b*c) y también como (a+b)*c. Comprobar lo anterior generando los árboles de derivación correspondientes. Obviamente en una gramática deben evitarse producciones que generen ambigüedades Precedencia de operadores en expresiones aritmético lógicas. El formalismo BNF, permite reflejar el orden o jerarquía de los operadores en una expresión aritmética o lógica. Por ejemplo: Si se tiene que el operador * tiene precedencia (o mayor jerarquía) que el operador +; entonces la secuencia a+b*c se interpreta como: a+(b*c) Es decir, se realiza primero la multiplicación, luego la adición. En Pascal los operadores definidos en un BNF tienen precedencia a los operadores definidos en un BNF. Y éstos tienen precedencia respecto de los definidos en una componente de un. Los operadores definidos en un BNF tienen igual jerarquía. Lo anterior puede comprobarse observando los diagramas sintácticos en el Report pág El uso cuidadoso de las reglas de composición de expresiones aritméticas y lógicas, permite escribirlas sin usar, en general, los paréntesis. Sin embargo, para mejorar la legibilidad suelen emplearse éstos. Prof. Leopoldo Silva Bijit

15 Cuando se escriben expresiones complejas empleando paréntesis, suele usarse la regla de contar los paréntesis abiertos y los cerrados: deben estar balanceados Expresiones en Pascal. Con los elementos desarrollados hasta el momento puede profundizarse en la forma de construir expresiones en Pascal. Las siguientes reglas se desprenden de la gramática dada por los grafos, como se verá a continuación. Reglas para construir expresiones: i) Las expresiones están formadas por operadores y operandos. ii) Son fórmulas o reglas para computar valores. iii) Precedencia de operadores: Mayor precedencia: NOT Luego: operadores de multiplicación: * / DIV MOD AND Después: operadores de suma : + - OR Finalmente: operadores relacionales: = <> >= <= > < La precedencia se refiere al orden de evaluación. Es decir, cuáles operadores reciben primero sus operandos. iv) Secuencias de operadores de igual precedencia se ejecutan de izquierda a derecha. Conociendo estas reglas, no es necesario conocer sobre aspectos sintácticos. Las siguientes producciones son parte de la definición de la sintaxis de Pascal, y tienen que ver con la generación de expresiones: <> ::=<cte. sin signo> <variable> '('<expresión> ')' <> ::=<> <> <op. mult.> <> <exp.simple> ::=<> <exp.simple> <op. suma> <> <signo> <expresión> ::=<exp.simple> Prof. Leopoldo Silva Bijit

16 <exp.simple> <op. rel> <exp.simple> <op.mult.> ::= '*' '/' 'AND'' 'MOD'' 'DIV' <op. suma> ::= '+' '-'' 'OR' <op. rel> ::= '>' '<'' '>='' '<='' '='' '<>' Nótese que se emplea recursividad por la izquierda, esto implica un recorrido, de la secuencia de tokens en la expresión, desde izquierda a derecha. Prof. Leopoldo Silva Bijit

17 Ejemplo: Igual Precedencia. La semántica de a/b/c es (a/b)/c de acuerdo a la regla iv) ya que hay secuencia de operadores de igual precedencia. De acuerdo a las producciones, puede establecerse el siguiente árbol de derivación: op. mult. op. mult. / variable / variable c variable b a El cual permite interpretar según: (a/b)/c Nótese que el recorrido es sub-árbol izquierdo, raíz y sub-árbol derecho, comenzando por la hoja más a la izquierda. Entonces la regla iv) se debe a que las producciones usan recursividad por la izquierda. En forma similar: a/b*c se interpreta: (a/b)*c Ejemplo: Regla de Precedencia. Para la expresión: a+b*c aplicando la regla iii), la multiplicación tiene precedencia sobre la suma, por lo tanto se ejecuta primero. Por lo tanto, se lee: a+(b*c) Prof. Leopoldo Silva Bijit

18 Igual semántica se obtiene del árbol de derivación: exp. simple exp.simple op. suma + op. mult. * variable variable variable c a b Ejemplo: Limitación en Relaciones. Las producciones elegidas para Pascal, impiden escribir la siguiente expresión algebraica, que frecuentemente aparece en desarrollos: a>b>c Si ensayamos el siguiente árbol de derivación, se tiene: expresión exp.simple op. rel. exp.simple > variable Prof. Leopoldo Silva Bijit a

19 Y debido a la ocurrencia de sólo un operador relacional, no puede reconocerse como expresión simple a: b>c. Un árbol completo para el caso anterior, se ilustra a continuación, partiendo de expresión: expresión exp. simple op. mult. (expresión) AND (expresión) exp. simple op. rel exp.simple exp. simple op. rel exp.simple > > variable variable variable variable a b b c Que indica que debe escribirse: (a>b) AND (b>c) Prof. Leopoldo Silva Bijit

20 Grafos sintácticos para expresiones en Pascal. Considerando las definiciones de las producciones, no siempre es sencillo encontrar grafos sintácticos reducidos, que las representen. Sin embargo, en varios textos aparecen estos grafos reducidos, sin explicaciones. Veamos el desarrollo del grafo de, a partir de la producción: <> ::= <> <> <op. mult.> <> Puede verse que eliminando la recursividad explícita, queda la siguiente producción iterativa equivalente: <> ::= <> { <op.mult.><> } Revisando la definición de lista en se obtiene: <> ::= { <op.mult.>* <> } Con el siguiente grafo: op.mult Similarmente, la producción de expresión simple, puede escribirse: <exp.simple>::=[<signo>] { <op.suma>* <> } Conviene, como tarea, dibujar los grafos para expresiones aritméticas en forma separada de los grafos para expresiones lógicas, y comparar con los que aparecen en los textos. Prof. Leopoldo Silva Bijit

21 7.3. Símbolos del lenguaje. Léxico en Pascal. El texto de un programa está formado por una secuencia de símbolos o elementos léxicos. Los elementos léxicos, a su vez, están formados por secuencias de caracteres. Existen reglas de composición que determinan cómo pueden generarse o producirse un símbolo a partir de caracteres; que en el caso de programas de alto nivel, se consideran símbolos terminales. El conjunto de símbolos terminales es el vocabulario del lenguaje (reglas léxicas) Conjuntos de Caracteres. Los caracteres están estandarizados y les corresponde un código único (de un código de 7 bits, ISO estándar). Con 7 bits pueden codificarse 128 caracteres diferentes. Suele emplearse el código ASCII (Código Estándar Americano para el Intercambio de Información), que usa 8 bits por carácter, dejando un bit para controlar la paridad. La paridad consiste en dejar un número par o impar de unos en una palabra del código, y se emplea con fines de detección de errores. Los elementos del código que se representan (visualmente) mediante un símbolo gráfico se denominan caracteres gráficos. Entre ellos 26 letras mayúsculas, 26 minúsculas, 10 dígitos decimales, 32 caracteres especiales (signos), y el espacio. El resto del código (33 símbolos, no gráficos) está formado por caracteres de control, que se emplean para dar efectos de formato y para controlar la comunicación de caracteres entre un equipo y otro. Se denominan de formato a: tabulación horizontal y vertical, retorno de carro, alimentación de nueva línea y alimentación de nuevo formulario. En el texto de un programa sólo se permiten caracteres gráficos y de formato. Prof. Leopoldo Silva Bijit

22 Elementos Léxicos (tokens). En lenguajes de alto nivel es usual definir las siguientes unidades: i) Delimitadores ii) Identificadores iii) Números (literal numérico) iv) Carácter v) Strings vi) Comentarios vii) Separadores El efecto de un programa depende solamente de la particular secuencia de elementos léxicos que lo forman. Existen reglas que determinan como puede generarse una frase a partir de los elementos léxicos. El conjunto de reglas se denomina gramática del lenguaje. La gramática o estructura del lenguaje permite determinar si una secuencia de palabras (tokens) es una sentencia correcta o no. La estructura de las frases es esencial en el reconocimiento del significado de éstas (semántica) Separadores En algunos casos es necesario un separador explícito para separar elementos léxicos adyacentes. Se consideran separadores al espacio, a los caracteres con efecto de formato y el final de una línea. Suele no definirse qué causa el fin de línea, en algunos sistemas pueden ser uno o más caracteres de control. Reglas para el uso de separadores: a) Se requiere a lo menos un separador entre un identificador o número y el identificador o número adyacente. b) Se permite uno o más separadores entre dos elementos léxicos adyacentes. También se acepta uno o más separadores, antes del primer elemento léxico del programa y después del último. (Formato libre) Prof. Leopoldo Silva Bijit

23 c) En Pascal los comentarios son considerados separadores Comentarios (en Pascal). Cualquier secuencia de caracteres encerrados entre paréntesis de llave se denomina comentario. La secuencia no debe contener }. Los comentarios se emplean para mejorar la legibilidad del programa; y deben ocuparse con frecuencia para aclarar el significado de variables, o de acciones. Los comentarios pueden sacarse del texto sin alterar el significado del programa. Se emplean como símbolos alternativos las secuencias de dos caracteres (* y *) que reemplazan a { y } respectivamente Carácter. Un carácter literal se forma encerrando uno de los 95 caracteres gráficos (incluyendo el espacio) entre comillas simples. Ej: '*' '"' 'g' ' ' Para representar la comilla simple como carácter, se escribe dos veces: '''' Strings. ( tira, mensaje, texto, hileras, cadenas) Son secuencias de caracteres gráficos entre comillas simples. Para incluir una comilla, se la escribe dos veces. 'O''Higgins'. El largo del string es el número de caracteres que forman la secuencia. Se emplean para intercalar texto (legible) en la salida. Pueden usarse para alertar al operador que se requiere una entrada o una operación de su parte (prompts); o bien para hacer más comprensible la salida (mensajes) Números. Se habla de literal numérico cuando se quiere enfatizar que se está haciendo referencia a cómo se escribe un número como una secuencia de caracteres. Prof. Leopoldo Silva Bijit

24 Existen enteros y reales. Los reales incluyen un punto (la coma decimal). Entre los reales, se habla de punto fijo y punto flotante (o formato científico y exponencial; llevan la letra E). <signo> ::= ['+' '-'] <constante entera sin signo> ::= { dígito* } <constante entera> ::= <signo> <constante entera sin signo> <real punto fijo> ::= {dígito*} '.' {dígito} <exponente> ::= ('e' 'E')<constante entera> <real punto flotante> ::= {dígito*} ['.'{dígito*}] <exponente> <constante real> ::= <real punto fijo> <real punto flotante> Un resumen de las producciones anteriores es: número + - dígito. + dígito E dígito - La representación anterior no considera aspectos prácticos como máximo número representable, exactitud de representación, etc., que dependen de la instalación. La sintaxis de número se abstrae de estos detalles y sólo explica cómo se escriben Identificadores. Se usan como nombres y también como palabras reservadas. Comienzan con una letra, que puede ser seguida de cualquier combinación de letras y números. El espacio no se acepta dentro de un identificador. Sirven para dar nombre a: constantes, tipos de datos, variables, procedimientos, funciones. identificador letra letra dígito Prof. Leopoldo Silva Bijit

25 En Pascal estándar sólo se reconocen los primeros 8 caracteres del identificador. Las palabras reservadas tienen un significado especial en el lenguaje y no pueden emplearse como identificadores de objetos. Los siguientes símbolos son palabras reservadas de Pascal: div mod nil in or and not if then else case of repeat until while do for to downto begin end const var type array record set file function procedure program packed with label goto Estos símbolos también pueden ser clasificados como delimitadores. Existen también identificadores estándares que el lenguaje predefine. Por ejemplo, el nombre de algunas funciones y procedimientos. Pueden usarse sin definirse previamente. Además podrían ser redefinidos dentro del programa; es decir, cambiar el significado estándar Delimitadores. Es uno de los siguientes caracteres especiales:, ' : ( ) ; ^ [ ]. * + - / = < > O uno de los siguientes delimitadores, compuestos de dos caracteres especiales adyacentes: :=.. <> >= <= Algunos delimitadores se usan como operadores. Otros para establecer mecanismos de acceso o selección de datos estructurados. Prof. Leopoldo Silva Bijit

26 Resumen. <texto de un programa> ::= { { <separador> } <token> } <separador> ::= <espacio> <fin de línea> <comentario> <token> ::= <palabra reservada> <delimitador> <nombre> <constante> <constante> ::= <contante entera> <constante real> <constante caracter> <string> Ejemplos Indicar árbol de derivación. Evaluar expresiones y poner paréntesis, de acuerdo a la sintaxis de Pascal. Solución: a) 80/5/4 b) sqrt(sqr(3)+11*5) c) x:=2*y-5.02 a) expresión / / constante constante constante Prof. Leopoldo Silva Bijit

27 La expresión se evalúa ((80/5)/4) b) expresión identif. función ( expresión ) sqrt termino + * identif. función (expresión) constante constante sqr 11 5 constante 3 Se evalúa: sqrt(sqr(3)+(11*5)) c) asignación variable := expresión x - * constante variable constante Prof. Leopoldo Silva Bijit

28 2 y 5.02 Se evalúa: x := ((2*y)-5.02) Escribir todas las secuencias que cumplen la sintaxis dada por: a) {'A' 'B'}'C' b) 'A'{'BA'} c) ('A' 'B')('C' 'D') d) 'A'['B']('C' 'D') Si el número de secuencias es mayor que 10, escribir por lo menos 5 de ellas. a) {'A' 'B'}'C' número de secuencias>10 1) C 2) AC 3) BC 4) ABC 5) AAC b) 'A'{'BA'} A B C número de secuencias >10 1) A 2) ABA 3) ABABA 4) ABABABA 5) ABABABABA c) ('A' 'B')('C' 'D') A AB número de secuencias = 4 1) AC 2) AD 3) BC 4) BD d) 'A'['B']('C' 'D') A B C D Prof. Leopoldo Silva Bijit

29 número de secuencias = 4 1) AC 2) AD 3) ABC 4) ABD A B C D Prof. Leopoldo Silva Bijit

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

Asumiremos que se dispone de procedimientos para leer y escribir caracteres. Se desarrollan algunas funciones primitivas que nos serán útiles.

Asumiremos que se dispone de procedimientos para leer y escribir caracteres. Se desarrollan algunas funciones primitivas que nos serán útiles. 26. Representación de números. Conversiones 26.1. Representación y conversión. Los números son representados internamente, en un computador digital, en sistema binario. Externamente se representan mediante

Más detalles

Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores

Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 1) 1 Aspectos Formales Los compiladores traducen lenguajes que están formalmente definidos a través de reglas que permiten escribir

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas. 2. ACCIONES PRIMITIVAS. En los lenguajes de alto nivel existen cuatro instrucciones primitivas que reflejan lo que un computador puede realizar (en este nivel de abstracción). Se describirán las instrucciones

Más detalles

NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN

NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN G r a m á t i c a s UNIVERSIDAD DE SONORA DEPARTAMENTO DE MATEMÁTICAS LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN Dra. María de Guadalupe Cota Ortiz Lenguaje

Más detalles

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso. Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

LENGUAJES Y GRAMÁTICAS

LENGUAJES Y GRAMÁTICAS LENGUAJES Y GRAMÁTICAS Orlando Arboleda Molina Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle 20 de septiembre de 2008 Contenido Lenguajes y Gramáticas Gramáticas Gramáticas

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

'type' <nombre conjunto> '=' 'SET OF' <tipo base>

'type' <nombre conjunto> '=' 'SET OF' <tipo base> 20. CONJUNTOS. SET. 20.1. Valores. Un tipo de datos especifica el conjunto de valores que una variable de ese tipo puede adoptar. El tipo conjunto es estructurado a partir de un tipo base; el tipo base

Más detalles

Conceptos básicos sobre gramáticas

Conceptos básicos sobre gramáticas Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática

Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis léxico Formalización y desarrollo Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

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

GRAMATICAS LIBRES DEL CONTEXTO

GRAMATICAS LIBRES DEL CONTEXTO GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.

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

Álgebra y Trigonometría

Álgebra y Trigonometría Álgebra y Trigonometría Conceptos fundamentales del Álgebra Universidad de Antioquia Departamento de Matemáticas 1. Números Reales El conjunto de los números reales está constituido por diferentes clases

Más detalles

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda

Más detalles

Curso de Programación Avanzada en C

Curso de Programación Avanzada en C Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados

Más detalles

Diseño de Compiladores I. Estructura General de un Compilador

Diseño de Compiladores I. Estructura General de un Compilador Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce

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

GRAMÁTICAS LIBRES DE CONTEXTO

GRAMÁTICAS LIBRES DE CONTEXTO GRAMÁTICAS LIBRES DE CONTEXTO Definición Una gramática libre de contexto (GLC) es una descripción estructural precisa de un lenguaje. Formalmente es una tupla G=, donde Vn es el conjunto

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

CONJUNTOS. Los conjuntos son conceptos primitivos que representan una totalidad, una reunión de cosas.

CONJUNTOS. Los conjuntos son conceptos primitivos que representan una totalidad, una reunión de cosas. CONJUNTOS CPR. JORGE JUAN Xuvia-Narón Los conjuntos son conceptos primitivos que representan una totalidad, una reunión de cosas. Un conjunto está formado por una serie de elementos susceptibles de poseer

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

Tema 2. Concepto de Algoritmo

Tema 2. Concepto de Algoritmo Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos

Más detalles

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANALIZADOR LÉXICO (AL) El Analizador léxico (scanner), lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Más detalles

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación. NÚMEROS REALES Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación. Un conjunto es una colección bien definida

Más detalles

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura:

1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura: 1. ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del más simple al más complejo, tiene la siguiente estructura: PROGRAM Nombre_del_programa; ZONA de DECLARACIONES ZONA de INSTRUCCIONES

Más detalles

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus

Más detalles

Características de JavaScript

Características de JavaScript Características de JavaScript Qué es JavaScript? o Lenguaje de programación interpretado utilizado fundamentalmente para dotar de comportamiento dinámico a las páginas web. o Cualquier navegador web actual

Más detalles

3.3. TEORÍA BÁSICA DE CONJUNTOS Utilizar tablas de verdad para comprobar la equivalencia lógica p q p q.

3.3. TEORÍA BÁSICA DE CONJUNTOS Utilizar tablas de verdad para comprobar la equivalencia lógica p q p q. 3.3. TEORÍA BÁSICA DE CONJUNTOS 83 a) p q b) p q c) q p 7. Sabiendo que la proposición compuesta ( q) (q p) es falsa, indicar cuál es el valor de verdad de las proposiciones p y q. 8. Utilizar tablas de

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

Programación en Lenguaje C

Programación en Lenguaje C Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo

Más detalles

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante. Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una

Más detalles

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los

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

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

El proceso del Análisis Léxico

El proceso del Análisis Léxico El proceso del Análisis Léxico El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente

Más detalles

Introducción a la lingüística computacional

Introducción a la lingüística computacional Introducción a la lingüística computacional César Antonio Aguilar Facultad de Lenguas y Letras 17/08/2017 Cesar.Aguilar72@gmail.com Síntesis de la clase pasada (1) En la clase anterior nos dedicamos a

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

UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT

UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT UNIÓN INTERNACIONAL DE TELECOMUNICACIONES UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT LENGUAJE HOMBRE-MÁQUINA JUEGO DE CARACTERES Y ELEMENTOS BÁSICOS Recomendación UIT-T Z.314

Más detalles

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor

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

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en

Más detalles

ANÁLISIS SINTÁCTICO I GRAMÁTICAS

ANÁLISIS SINTÁCTICO I GRAMÁTICAS 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

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC. Programación n Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño o Vargas MsC. Variables y expresiones aritméticas Variables Conceptos de Memoria Una variable es un espacio en la memoria

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto

Más detalles

Introducción. Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas

Introducción. Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas Gramáticas Introducción Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas En algunos lenguajes, una sucesión de símbolos depende del

Más detalles

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas Guía Modelos de Computación Tema I: Lenguajes y Gramáticas Introducción La sintaxis de un lenguaje natural, esto es, la de los lenguajes hablados, como el inglés, el español, el alemán o el francés, es

Más detalles

Introducción a la programación: Algoritmos

Introducción a la programación: Algoritmos Introducción a la programación: Algoritmos Algoritmo La palabra algoritmo proviene del nombre del matemático persa del siglo IX Muhammad ibn Musa al-jwarizmi Un algoritmo es una secuencia ordenada de pasos,

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

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores Tipos De Datos Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como b, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de

Más detalles

Semántica: principales usos. Semántica: principales enfoques. Semántica Operacional. Sintaxis abstracta de un lenguaje (sujeto) Semántica Operacional

Semántica: principales usos. Semántica: principales enfoques. Semántica Operacional. Sintaxis abstracta de un lenguaje (sujeto) Semántica Operacional Semántica: principales enfoques Semántica Operacional Se define el significado mediante una máquina abstracta (con estados) y secuencias de cómputos sobre dicha máquina Semántica Denotacional El significado

Más detalles

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013 Compiladores Análisis Sintáctico Ascendente Adrian Ulises Mercado Martínez Facultad de Ingeniería, UNAM 5 de septiembre de 2013 Adrian Ulises Mercado Martínez (FI,UNAM) Compiladores 5/07/2013 1 / 34 Índice

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación

Más detalles

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION DIIAGRAMAS DE FLUJO Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para

Más detalles

LÓGICA SECUENCIAL Y COMBINATORIA

LÓGICA SECUENCIAL Y COMBINATORIA LÓGICA SECUENCIAL Y COMBINATORIA SESIÓN # 3 1.9 Códigos alfanuméricos. Además de los datos numéricos, una computadora debe ser capaz de manejar información no numérica. En otras palabras, una computadora

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En C, todas las sentencias

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

Operadores y Expresiones

Operadores y Expresiones Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los

Más detalles

Gramaticas Independientes del Contexto, ejemplos y ejercicios

Gramaticas Independientes del Contexto, ejemplos y ejercicios OpenStax-CNX module: m16320 1 Gramaticas Independientes del Contexto, ejemplos y ejercicios Carlos Arturo Cortés Fuentes This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Tema: Introducción a Compiladores y al Lenguaje Micro C

Tema: Introducción a Compiladores y al Lenguaje Micro C Compiladores. Guía 1 1 Tema: Introducción a Compiladores y al Lenguaje Micro C Contenido En esta guía se presenta una breve introducción a los conceptos básicos que se utilizan en el ámbito de los compiladores

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Tema 2.- Expresiones y funciones

Tema 2.- Expresiones y funciones UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA CONTENIDOS: 1. TIPOS DE DATOS 2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIICADORES COMO LOCALIDADES DE MEMORIA OBJETIO EDUCACIONAL: El alumno conocerá las reglas para cambiar fórmulas matemáticas

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

Uno de los conceptos más útiles en ciencias de la computación es la pila.

Uno de los conceptos más útiles en ciencias de la computación es la pila. 23. PILA. (Stack). Tipos de Datos Abstractos. 23.1 Conceptos. Uno de los conceptos más útiles en ciencias de la computación es la pila. Una pila es una colección ordenada de elementos de igual tipo, en

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

CONJUTOS NÚMERICOS NÚMEROS NATURALES

CONJUTOS NÚMERICOS NÚMEROS NATURALES CONJUTOS NÚMERICOS NÚMEROS NATURALES El conjunto de números naturales tiene gran importancia en la vida práctica ya que con sus elementos se pueden encontrar elementos u objetos de otros conjuntos. El

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

Guía práctica de estudio 05: Pseudocódigo

Guía práctica de estudio 05: Pseudocódigo Guía práctica de estudio 05: Pseudocódigo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Autorizado por: M.C. Alejandro Velázquez Mena Guía

Más detalles

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.

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

Resumen anual de Matemática 1ª Convocatoria: jueves 24 de noviembre, 2016 Octavo nivel 2ª Convocatoria: miércoles 1 de febrero, 2017 broyi.jimdo.

Resumen anual de Matemática 1ª Convocatoria: jueves 24 de noviembre, 2016 Octavo nivel 2ª Convocatoria: miércoles 1 de febrero, 2017 broyi.jimdo. Resumen anual de Matemática 1ª Convocatoria: jueves 4 de noviembre, 016 Octavo nivel ª Convocatoria: miércoles 1 de febrero, 017 broyi.jimdo.com Contenidos Los números... Objetivo 1... El conjunto de los

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

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

INICIACIÓN A LA PROGRAMACIÓN II

INICIACIÓN A LA PROGRAMACIÓN II INICIACIÓN A LA PROGRAMACIÓN II 1. Caracteres... 2 2. Identificadores... 4 3. Palabras clave o reservadas... 5 4 Variables y constantes. Datos... 6 5 Arrays... 8 6. Comentarios... 9 7. Expresiones... 11

Más detalles

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Universidad Rafael Urdaneta Escuela de Ingeniería de Computación Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Asignación

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

FUNDAMENTOS DE OBJECT PASCAL

FUNDAMENTOS DE OBJECT PASCAL FUNDAMENTOS DE OBJECT PASCAL 1. ASPECTOS GENERALES DE LA SINTAXIS Los bloques de código quedan delimitados por y end. Se usa punto y coma como separador de sentencias de código. Comentarios: - ias líneas:

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

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

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

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales.

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales. EL SISTEMA DE LOS NÚMEROS REALES Introducción El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales. Números tales como:1,3, 3 5, e,

Más detalles

Estructuras de Control. Secuencia y Selección

Estructuras de Control. Secuencia y Selección Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 Contents 1 Estructuras de control 2 1.1 Clasificación.............................. 2 1.2 La secuencia..............................

Más detalles

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona

Más detalles

Tema: Análisis Léxico

Tema: Análisis Léxico Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Léxico Contenido En esta guía se dará a conocer la manera en que un compilador realiza el análisis

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En Java, todas las sentencias

Más detalles

Conceptos previos. Revisión de Sistemas Lógicos Formatos Numéricos. Dpto. Ingeniería Electrónica y Comunicaciones

Conceptos previos. Revisión de Sistemas Lógicos Formatos Numéricos. Dpto. Ingeniería Electrónica y Comunicaciones Conceptos previos Revisión de Sistemas Lógicos Formatos Numéricos Revisión de Sistemas Lógicos Álgebra de Boole Base matemática de la Electrónica Digital Consta de dos elementos: 0 lógico y 1 lógico Tecnología

Más detalles

Capítulo 9. Introducción a los lenguajes formales. Continuar

Capítulo 9. Introducción a los lenguajes formales. Continuar Capítulo 9. Introducción a los lenguajes formales Continuar Introducción Un lenguaje es un conjunto de símbolos y métodos para estructurar y combinar dichos símbolos. Un lenguaje también recibe el nombre

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles