Вы находитесь на странице: 1из 7

UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA

INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

EJERCICIOS SECCION 1.1

1.- CUAL ES LA DIFERENCIA ENTRE UN COMPILADOR Y UN INTERPRETE?

COMPILADOR INTERPRETE
Lee un programa en un lenguaje (lenguaje No produce programa destino, da la
fuente) y traducirlo a otro lenguaje (lenguaje apariencia de ejecutar directamente las
destino) operaciones especificadas en el programa
origen
Detecta cualquier error en el programa
mientras lo traduce

2.- ¿CUALES SON LAS VENTAJAS DE (A) UN COMPILADOR SOBRE UN INTERPRETE, Y (B) LAS DE UN
INTERPRETE SOBRE UN COMPILADOS?

Compilador interprete
El programa destino del compilador, es más El intérprete puede ofrecer mejores
rápido que un intérprete al momento de diagnósticos de error que un compilador, ya
asignar las entradas a las salidas que ejecuta el programa fuente instrucción
por instrucción

3.- QUE VENTAJAS HAY PARA UN SISTEMA DE PROCESAMIENTO DE LENGUAJES EN EL CUAL EL


COMPILADOR PRODUCE LENGUAJE ENSAMBLADOR EN VEZ DE LENGUAJE MAQUINA?

El lenguaje ensamblador es todavía más entendible ya que usa símbolos que representan dichas
operaciones pero este se acerca mucho al lenguaje de una máquina que es el binario.

4.- A UN COMPILADOR QUE TRADUCE UN LENGUAJE DE ALTO NIVEL A OTRO LENGUAJE DE ALTO
NIVLE SE LE LLAMA TRADUCTOR DE source-to-source. ¿Qué VENTAJAS HAY EN CUANTO AL USO DE
C COMO LEGUAJE DESTINO PARA UN COMPILADOR?

“C” es un lenguaje de medio nivel pero con muchas características de bajo nivel y dispone de las
estructuras típicas de los lenguajes de alto nivel pero también permite control a muy bajo nivel y
los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en
ensamblador con código C , entonces aquí C utilizaría un compilador de alto nivel o el source to
source.

5.- DESCRIBA ALGUNAS DE LAS TAREAS QUE NECESITA REALIZAR UN ENSAMBLADOR

Es un lenguaje de programación de bajo nivel que Traduce el lenguaje ensamblador a lenguaje


máquina ya que usa código binario usualmente se ocupa para los microprocesadores y utiliza
operaciones aritméticas y lógicas.

EJERCICIOS SECCION 1.3

1.- INDIQUE CUAL DE LOS SIGUIENTES TERMINOS:

a) imperativo b) declarativo c) von Neumann


UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

d) orientado a objetos e) funcional f) de tercera generación

g) de cuarta generación h) secuencias de comandos

se aplican a los siguientes lenguajes

1) C 2) C++ 3) Cobol 4) Fortran 5) Java

6) Lisp 7) ML 8) Perl 9) Python 10) VB

SOLUCION:

a) C++, Java b) ML c) C, Fortran d) C++, Java, VB


e) ML
f) C, C++, Cobol, Fortran, Java, Lisp h) Perl, Python

EJERCICIOS SECCION 1.6

1.- PARA EL CODIGO EN C ESTRUCTURADOS POR BLOQUES DE LA FIGURA 1.13(a), INDIQUE LOS
VALORES ASIGNADOS A w,x,y Y z

𝑤 = 13, 𝑥 = 9, 𝑦 = 13, 𝑧 = 9

2.- REPITA EL EJERCICIO 1 PARA EL CODIGO DE LA FIGURA 1.13(b)


UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

𝑤 = 9, 𝑥 = 7, 𝑦 = 13, 𝑧 = 7
UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

3.- PARA EL CODIGO ESTRUCTURADO POR BLOQUES DE LA FIGURA 1.14, SUPONIENDO EL


ALCANCE ESTATICO USUAL DE LAS DECLARACIONES, DE EL ALCANCE PARA CADA UNA DE LAS
DOCE DECLARACIONES.

DECLARACION ALCANCE
w del B1 B1;B2
x del B1 B1
y del B1 B1;B2;B3;B4
z del B1 B1;B4
x del B2 B2
z de B2 B2;B3
w de B3 B3
w de B4 B4;B5
x de B4 B4;B5
y de B5 B5
z de B5 B5

4.- ¿QUE IMPRIME EL SIGUIENTE CODIGO?

32

EJERCICIOS PARA LA SECCION 2.2

1.- CONSIDERE LA SIGUIENTE GRAMATICA LIBRE DE CONTEXTO

𝑆 → 𝑆𝑆 + | 𝑆𝑆 ∗| 𝑎
a) Muestre como puede generarse la cadena aa+a* mediante esta gramática.
S → SS ∗
S → (SS +)S ∗
S → (SS +)a ∗
S → (aa +)a ∗
UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

S → aa + a ∗

b) Construya un árbol de análisis sintáctico para esta cadena.

S S *

S a *

S S +

a a +

c) ¿Qué lenguaje genera esta gramática? Justifique su respuesta.


Genera un lenguaje regular ya que se genera a partir de un lenguaje básico

2.- ¿Qué LENGUAJE SE GENERA MEDIANTE LAS SIGUIENTE GRAMATICAS? EN CADA CASO
JUSTIFIQUE SU RESPUESTA.

a) 𝑆 → 0𝑆1 | 01
𝑆 → 0 (01)1
𝑆 → 0 011
Genera una secuencia de ceros seguida por una secuencia de unos.

b) 𝑆 → +𝑆𝑆|−𝑆𝑆| 𝑎
S −> −SS
S −> −S(+SS)
S −> −a + aa
Genera un conjunto de sumas o restas de a’s.

c) 𝑆 → 𝑆(𝑆)𝑆 |𝜖
Genera un conjunto vacío o conjunto de paréntesis
d) 𝑆 → 𝑎𝑆𝑏𝑆 | 𝑏𝑆𝑎𝑆| 𝜖
S → aSbS
S → aSbS
UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

S → a(bSaS)bS
S → abSaSbs
Genera un secuencia de a y b o vacío.
e) 𝑆 → 𝑎 | 𝑆 + 𝑆 | 𝑆𝑆 | 𝑆 ∗|(𝑆)
S → (S )
S → (S ∗)
S → (SS ∗)
S → (S + SS ∗)
S → (a + aa ∗)
Genera una secuencia de a's que pueden ser vacías o todo lo anterior entre
paréntesis.

3.- ¿Cuáles DE LAS GRAMATICAS EN EL EJERCICIO 2 SON AMBIGUAS?

Las gramáticas b) y d) son ambiguas.


EJERCICIOS SECCION 2.3

1.- CONSTRUYA UN ESQUEMA DE LA TRADUCCION ORIENTADO A LA SINTAXIS, QUE TRADUZCA


EXPRESIONES ARITMETICAS DE LA NOTACION INFIJA A LA NOTACION PREFIJA, EN LA CUAL UN
ORDENADOR APARAECE ANTES DE SUS OPERANDOS; POR EJEMPLO, -xy ES LA NOTACION PREFIJA
PARA x – y. PROPORCIONE LOS ARBOLES DE ANALISIS SINTACTICO ANOTADO PARA LAS
ENTRADAS 9-5+2 Y 9-5*2

2+5-9 2*5-9

259-+ 259-*

+-952 *-952

Expr -> expr - term {print(‘-’)} Expr -> expr - term {print(‘-’)}

Expr -> expr + term {print(‘+’)} Expr -> expr * term {print(‘*’)}

Expr -> term Expr -> term

Term -> 0 print {(‘0’)} Term -> 0 print {(‘0’)}

Term -> 1 print {(‘1’)} Term -> 1 print {(‘1’)}

Term -> 2 print {(‘2’)} Term -> 2 print {(‘2’)}

…… ……

Term -> 9 print {(‘9’)} Term -> 9 print {(‘9’)}


UNIVERSIDAD CENTRAL DEL ECUADOR LUIS JONATHAN CHISIQUINGA ESPINOZA
INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

2.-CONSTRUYA UN ESQUEMA DE TRADUCCION ORIENTADO A LA SINTAXIS, QUE TRADUZCA


EXPRESIONES ARITMETICAS DE LA NOTACION POSTFIJA A LA NOTACION INFIJA. PROPORCIONE
LOS ARBOLES DE ANALISIS SINTACTICO ANOTADOS PARA LAS ENTRADAS 95-2* Y 925*-.

Expr -> expr |term - {print(‘term’)} Expr -> expr| term * {print(‘term’)}

Expr -> term |term * {print(‘term’)} Expr -> expr |term - {print(‘term’)}

Expr -> term Expr -> term

Term -> 0 print {(‘0’)} Term -> 0 print {(‘0’)}

Term -> 1 print {(‘1’)} Term -> 1 print {(‘1’)}

Term -> 2 print {(‘2’)} Term -> 2 print {(‘2’)}

…… ……

Term -> 9 print {(‘9’)} Term -> 9 print {(‘9’)}

Вам также может понравиться