Download Examen de Lenguajes de Programación

Document related concepts
no text concepts found
Transcript
Examen de Lenguajes de Programación
1.
Explicar que entendemos por encapsulación y modularidad en los
lenguajes de programación. Explicar con ejemplos los diferentes grados
de modularidad y abstracción alcanzados en lenguajes de diferentes
paradigmas (C, Pascal, Ada, Java, ML, Prolog). Destacar también la
utilidad de este concepto en los diferentes lenguajes.
2. Explicar en que consisten los mecanismos de control de errores.
Escribir ejemplos en C y Java.
3. Dado el siguiente código en Smalltalk:
select: aBlock
"For each element in the receiver, evaluate
aBlock with that element as the argument.
Answer a new collection containing those elements
of the receiver for which aBlock evaluates to true."
| answer |
answer := self species new.
self do: [ :element |
(aBlock value: element)
ifTrue: [answer add: element]].
^answer
Al ejecutarlo el resultado es:
#(1 2 3 4 5 6 7) select: [:c | c odd]
(1 3 5 7)
'ABCDE' select: [:c | c isVowel]
'AE’
a) ¿ Que entendemos por código genérico? ¿ Cómo se consigue en el
paradigma orientado a objetos? ¿ Y en el imperativo ?
b) ¿ por qué este es un ejemplo de código genérico ?
c) Al ser Smalltalk tipado dinámicamente, ¿La ligadura de un mensaje a
un método concreto se realiza en tiempo de ejecución o compilación ?
¿Por qué? ¿ Y en Java?
4. Explicar con ejemplos como resuelve, un lenguaje sin variables como
ML, problemas como: entrada/salida, almacenamiento de valores
intermedios, selección, iteración y abstracción. Utilizar esta estructura
iterativa para explicar estos conceptos:
for (int i =0;i<10; i++)
5. Dado el siguiente código en ML:
fun map ff nil = nil
| map ff (front::rest) = (ff front) :: (map ff rest);
Explicar por qué es una función de alto nivel, decir para que sirve, y poner
ejemplos de su utilización.
6.
1
2
3
4
5
6
7
a)
Dado este código en prolog:
change(you,i).
change(are,[am,not]).
change(french,german).
change(do,no).
change(X,X).
alter([],[]).
alter([H|T], [X |Y]) :- change(H,X),alter(T,Y).
Explicar para qué sirve la claúsula alter y poner un ejemplo de su
utilización.
b) Explicar brevemente que es la unificación y el backtracking
aplicándolos a este ejemplo concreto.
c) ¿ Influye el orden de las reglas en el resultado de la consulta ?
¿Qué sucedería si intercambiásemos las líneas 1 y 5?
7. Dada esta gramática ambigua:
Expr ::= Num
| Expr + Expr
| Expr - Expr
| Expr * Expr
Num:= Dig
| Num Dig
Dig:= 0| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Dibujar dos arboles sintácticos posibles de la expresión 40-3-9.
¿Influye el árbol sintáctico generado en la semántica de la expresión?
NOTA: Los alumnos que escogieron el modelo 3 de prácticas no tienen que
resolver los ejercicios 1 y 2 (ya tenéis 3 puntos).
Puntuación: 1. 2 2. 1 3. 2 4. 1.5 5. 1 6. 1.5 7. 1