Banco de Preguntas Parte 1

Anuncio
Lenguajes de Programación
FCC
Verano 2002
BANCO DE PREGUNTAS
1.- En base a los temas estudiados en el curso, que criterios utilizaría para analizar y escoger un
lenguaje, para resolver un cierto tipo de problema.
2.- ¿A que se refiere cuando se habla de la ortogonalidad de un lenguaje?¿Qué entendería por un
lenguaje 100% Ortogonal? ¿Puede haber un lenguaje no ortogonal?
3.-¿De que le sirve contar con un lenguaje que permita un gran nivel de abstracción?
4.- ¿Cuáles son los principales problemas que enfrenta la compilación por separado de
subprogramas?
5.- Enumere dos de las estrategias que se siguen para resolver los problemas de la compilación
por separado que mencionó en la pregunta 4.
6.- ¿Cuáles son los aspectos básicos que hay que considerar en el Diseño de un Lenguaje?
Descríbalos.
7.-¿Cuáles son los componentes fundamentales de un Lenguaje? Descríbalos.
8.-¿Cuando es necesario utilizar un Cargador o Editor de Vínculos para generar un programa
ejecutable? Explique el por qué?
9.- ¿Trate de describir con sus propias palabras los conceptos de Enlace y Tiempo de Enlace?
10.- Explique que significan los conceptos de Enlace Temprano y Enlace Tardío, y ¿Para qué le
sirve a un diseñador definir si un lenguaje realizará enlaces tardíos o tempranos? Y a usted ¿Para
qué le sirve saber esto?
11.- ¿Cuál es la principal diferencia entre un Lenguaje Imperativo y uno Declarativo?
12.- ¿Cuál es la principal diferencia entre un Lenguaje Estructurado en Bloques y uno Orientado
a Objetos?
13.- ¿Sí los Lenguajes Funcionales y los Lógicos son ambos declarativos, ¿porqué se clasifican
por separado?, es decir ¿cuáles son sus diferencias?.
14.-¿Para qué sirve especificar la Sintaxis de un Lenguaje?
15.-¿Por qué la descripción de la Sintaxis de un Lenguaje no es suficiente para la especificación
del mismo, es decir porque se requiere de su Semántica?
16.- Describa y enliste los, que a su juicio son los tres principales Elementos Sintácticos de un
Lenguaje.
17.- Describa las etapas por las que pasa el proceso de traducción de un programa, desde su
sintaxis original hasta una forma ejecutable.
1
Lenguajes de Programación
FCC
Verano 2002
18.- ¿Qué es y para que sirve una Gramática BNF?
19.- ¿Qué es y para que sirve un Árbol Semántico?
20.- ¿Qué es y para que sirve una Gramática de Atributos?
21.- ¿En qué consiste el Análisis Léxico de un Programa?
22.- ¿En qué consiste el Análisis Sintáctico de un Programa?
23.- ¿En qué consiste el Análisis Semántico de un Programa?
2
Lenguajes de Programación
FCC
Verano 2002
PROBLEMAS
1. Para un lenguaje que se utilice, evalúe las razones de su éxito de acuerdo con la lista de 8
atributos de un buen lenguaje.¿Se debería ampliar la lista?
2. Considere el lenguaje simple siguiente. a y b representan nombres de variables enteras. Cada
enunciado puede tener un rótulo como prefijo. Los enunciados en el lenguaje incluyen:
a=b
a=a+l
a=a-1
si a = 0 entonces ir a L
si a > 0 entonces ir a L
ir a L
alto
Asignar a a el valor de b
Sumar 1 a a
Restar 1 de a
Si a = 0 transferir el control al enunciado L
Si a > 0 transferir el control al enunciado L
Transferir el control al enunciado L
Detener la ejecución
Por ejemplo, el programa que computa a = a + b puede estar dado por:
L:
a=a+1
B=b-1
si b > 0 entonces ir a L
alto
(a) Escriba los programas siguientes en este lenguaje:
(1) Dados a y b, computar X = a + b
(2) Dados a y b, computar X = a * b
(3) Dados a, b, c y d, computar X = a * b y Y = e * d
(b) Exponga un conjunto mínimo de extensiones necesario para que este lenguaje sea fácil de
usar. Tome en cuenta conceptos como subprogramas, enunciados nuevos, declaraciones, etcétera.
2. Las características del C permiten expresar el mismo significado de muchas maneras ¿Cuántos
enunciados diferentes puede usted escribir en C que sumen 1 a la variable X, es decir, que sean
equivalentes a X = X + 1 ? Analice las ventajas y desventajas de este aspecto del diseño del C.
3. Suponga que un nuevo diseño de lenguaje provee tres tipos básicos de datos: entero, real y de
carácter. También proporciona la capacidad para declarar arreglos y registros de datos. Los
arreglos tienen elementos del mismo tipo y los registros los tienen de tipos mixtos. Use el
concepto de ortogonalidad para criticar estas dos variantes del nuevo diseño:
(a) Los elementos de arreglos y registros pueden ser de cualquiera de estos tipos básicos de datos
y ellos mismos también pueden ser arreglos o registros (por ejemplo, un elemento de un registro
puede ser un arreglo).
(b) Los elementos de arreglos y registros pueden ser del tipo entero o real. Los arreglos de
caracteres se llaman cadenas y reciben un tratamiento especial. Los elementos de registros
pueden ser del tipo de carácter. Los registros pueden tener arreglos o elementos, pero los arreglos
3
Lenguajes de Programación
FCC
Verano 2002
no pueden tener registros como elementos. Los arreglos no pueden tener arreglos como
elementos, pero se suministran arreglos multidimensionales para obtener el mismo efecto.
4. Escriba una gramática BNF para el lenguaje compuesto por todos los números binarios que
contienen al menos tres 1 consecutivos. (El lenguaje incluye las cadenas 011101011,
000011110100 y 1111110, pero no 010101l.)
5. La sintaxis del lenguaje mono es bastante simple, aunque sólo los monos lo pueden hablar sin
cometer errores. El alfabeto del lenguaje es {a, b, d, #} donde # representa un espacio. La
gramática es:
<alto> ::=
<oclusiva>::=
<sílaba> ::=
<palabra> ::=
<oración>::=
b|d
<alto> a
<oclusiva> | <oclusiva> <alto> | a <oclusiva> | a <alto>
<sílaba> | <sílaba> <palabra> <sílaba>
<palabra> | <oración># <palabra>
De los oradores siguientes, ¿cuál es el agente secreto que se hace pasar por un mono?
Simio:
Chimpancé:
Babuino:
ba # ababadada # bad # dabbada
abdabaadab # ada
dad # ad # abaadad # badadbaad
6. Usando la gramática BNF para enunciados de asignación simples, siguiente:
1 .<enunciado de asignación> ::=
<variable> = <expresión aritmética>
2 .<expresión aritmética> ::= <término> | <expresión aritmética> + <término>
<expresión aritmética) - <término>
3. <término> ::=
<factor) <término> × <factor> | <término>|
<factor>
4. <factor> ::=
<variable> <número> | <expresión aritmética>
5. <variable> ::=
<identificador> | <identificador> [<lista de subíndices>]
6. <lista de subíndices> ::=
<expresión aritmética> | <lista de subíndices>, <expresión
aritmética>
construya los árboles de análisis sintáctico para los enunciados de asignación siguientes:
(a) X:= U
V×W+X/Y
ó
(b) A[I,J] := I + J
7. Desarrolle una gramática de atributos para la gramática del problema 5, tal que permita evaluar
las expresiones (a) ó (b).
8. Proponga una extensión al lenguaje Litte Quilt y desarrolle el código para construir la figura:
4
Lenguajes de Programación
FCC
Verano 2002
9. Pase a notación postfija la expresión X:= U V × W + X / Y y calcule su valor mediante un
árbol ó una pila, con U=1, V=2, W=3, Y=4, X=16.
10. Obtenga el valor de la expresión:
let val x = 5 in y = 2 * x in let val x = y + 2 in x = x*x + y*y end end.
5
Descargar