Vous êtes sur la page 1sur 7

UNIVERSIDAD CENTRAL DEL ECUADOR

INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

LUIS JONATHAN CHISIQUINGA ESPINOZA

EJERCICIOS SECCION 1.1


1.- CUAL ES LA DIFERENCIA ENTRE UN COMPILADOR Y UN INTERPRETE?
COMPILADOR
Lee un programa en un lenguaje (lenguaje
fuente) y traducirlo a otro lenguaje (lenguaje
destino)

INTERPRETE
No produce programa destino, da la
apariencia de ejecutar directamente las
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
El programa destino del compilador, es ms
rpido que un intrprete al momento de
asignar las entradas a las salidas

interprete
El intrprete puede ofrecer mejores
diagnsticos de error que un compilador, ya
que ejecuta el programa fuente instruccin
por instruccin

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 todava ms entendible ya que usa smbolos que representan dichas
operaciones pero este se acerca mucho al lenguaje de una mquina 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 caractersticas de bajo nivel y dispone de las
estructuras tpicas de los lenguajes de alto nivel pero tambin permite control a muy bajo nivel y
los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en
ensamblador con cdigo C , entonces aqu C utilizara 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 programacin de bajo nivel que Traduce el lenguaje ensamblador a lenguaje
mquina ya que usa cdigo binario usualmente se ocupa para los microprocesadores y utiliza
operaciones aritmticas y lgicas.
EJERCICIOS SECCION 1.3
1.- INDIQUE CUAL DE LOS SIGUIENTES TERMINOS:
a) imperativo

b) declarativo

c) von Neumann

UNIVERSIDAD CENTRAL DEL ECUADOR


INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES
d) orientado a objetos

e) funcional

LUIS JONATHAN CHISIQUINGA ESPINOZA

f) de tercera generacin

g) de cuarta generacin 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
e) ML

b) ML

c) C, Fortran

f) C, C++, Cobol, Fortran, Java, Lisp

d) C++, Java, VB

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


INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

= 9, = 7, = 13, = 7

LUIS JONATHAN CHISIQUINGA ESPINOZA

UNIVERSIDAD CENTRAL DEL ECUADOR


INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

LUIS JONATHAN CHISIQUINGA ESPINOZA

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
x del B1
y del B1
z del B1
x del B2
z de B2
w de B3
w de B4
x de B4
y de B5
z de B5

B1;B2
B1
B1;B2;B3;B4
B1;B4
B2
B2;B3
B3
B4;B5
B4;B5
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 gramtica.

S SS
S (SS +)S
S (SS +)a
S (aa +)a

UNIVERSIDAD CENTRAL DEL ECUADOR


INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

LUIS JONATHAN CHISIQUINGA ESPINOZA

S aa + a
b) Construya un rbol de anlisis sintctico para esta cadena.

S
S

c) Qu lenguaje genera esta gramtica? Justifique su respuesta.


Genera un lenguaje regular ya que se genera a partir de un lenguaje bsico
2.- Qu LENGUAJE SE GENERA MEDIANTE LAS SIGUIENTE GRAMATICAS? EN CADA CASO
JUSTIFIQUE SU RESPUESTA.
a) 01 | 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 as.
c) () |
Genera un conjunto vaco o conjunto de parntesis
d) | |

S aSbS
S aSbS

UNIVERSIDAD CENTRAL DEL ECUADOR


INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

LUIS JONATHAN CHISIQUINGA ESPINOZA

S a(bSaS)bS
S abSaSbs
Genera un secuencia de a y b o vaco.
e) | + | | |()

S (S )
S (S )
S (SS )
S (S + SS )
S (a + aa )
Genera una secuencia de a's que pueden ser vacas o todo lo anterior entre
parntesis.
3.- Cules DE LAS GRAMATICAS EN EL EJERCICIO 2 SON AMBIGUAS?

Las gramticas 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


INGENIERIA INFORMATICA
LENGUAJES Y COMPILADORES

LUIS JONATHAN CHISIQUINGA ESPINOZA

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

Expr -> expr |term - {print(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)}

Vous aimerez peut-être aussi