Anda di halaman 1dari 1

Paradigmas de Programación

Licenciatura en Ciencia de la Computación (USACH)

Examen de Suficiencia (3 de agosto de 2017)

Nombre y apellidos:

Pregunta 1 (5 pts) De forma breve, describa y compare entre sı́ los paradigmas de programación
imperativo, funcional y orientado a objetos.

Pregunta 2 (10 pts) Dado un intervalo I = [A, B] del eje real, con A ≤ B, y dado un conjunto S
de intervalos, la función f ree(I, S) devuelve el conjunto de los subintervalos maximales de I = [A, B]
que no tienen puntos en común (salvo los extremos) con ningún intervalo de S. Como casos
particulares, si todo el intervalo I está cubierto por intervalos de S se devuelve el conjunto vacı́o.
Además, si ningún punto de I está cubierto se retorna {I}. Por ejemplo:

A B
|=====================================================|
S: |--------| |---------| |-----------| |----|
|-----| |--------| |---| |-----|

free: |=====| |===| |===|

Un intervalo [a, b] ⊂ R del eje real se puede representar en Python como una lista I de longitud
2 donde I[0]=a e I[1]=b, es decir, I=[a,b]. Además, un conjunto de intervalos se representa
mediante una lista de intervalos no repetidos.
Implemente eficientemente en Python la función iter free(I,S) que define una estructura iterable
capaz de recorrer los intervalos de f ree(I, S) en orden de izquierda a derecha.

Pregunta 3 (10 pts) Implemente en Scheme la función (transpose A) que devuelve la transpuesta
de la matriz A. Una matriz se representa mediante una lista de listas, correspondiente a la lista de
la filas. Por ejemplo, (transpose ’((1 2 3) (4 5 6))) => ((1 4) (2 5) (3 6)).

Pregunta 4 (10 pts) Implemente en Java una jerarquı́a de clases para modelar expresiones
lógicas. Las expresiones lógicas se dividen en dos grupos: las atómicas y las no atómicas. Al primer
grupo pertenecen las constantes 0 y 1 (donde 0 es falso y 1 es verdadero); y las variables, donde de
cada variable se conoce su nombre y su valor (0 ó 1). Al segundo grupo pertenecen las expresiones
que se obtienen de otras expresiones, estas útlimas atómicas o no: la negación de una expresión, la
conjunción (AND) de dos expresiones, y la disjunción (OR) de dos expresiones. A toda expresión
se le puede aplicar el método evaluar() que devuelve el valor de verdad (0 ó 1) de la expresión, ası́
como el método contiene variables() que devuelve verdadero si y solo si la expresión contiene
alguna variable. Utilice las clases de su jerarquı́a para instanciar la siguiente expresión:

((not x1) OR x2) AND (x2 OR 1)

donde las variales x1 y x2 valen 0 y 1, respectivamente.