Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 RESOLUCIÓN DE EJERCICIOS DE LA RECUPERACIÓN DEL PRIMER PARCIAL Ejercicio 1: 20/05/2015 Dado un número real positivo cualquiera, se pide calcular y mostrar su parte decimal. Ejemplo: para el número 4,25 la salida del algoritmo debería serla parte decimal de 4,25 es 0,25. Se pide diseñar la solución al problema, utilizando al menos 2 niveles de refinamiento sucesivo, además de la versión final. Especificar, también, el ambiente y el procesador considerados. A continuación se muestran, como ejemplo, las soluciones de dos de los alumnos que rindieron la recuperación del parcial, que se han considerado adecuadas (aunque alguna de ellas tenga alguna falencia que pueda aparecer indicada en la corrección). 2015 - Departamento de Informática - Universidad Nacional de San Luis 1
2
3
Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 Antes de dar ejemplos de posibles soluciones a los ejercicios 2 y 3, cabe aclarar que cada uno de los ejercicios se consideraría correctamente respondido si la respuesta otorgada cumple con la consigna pedida. En las resoluciones que se muestran de los ejercicios se han agregado muchos más detalles, de manera de que dichas resoluciones les sirvan para comprender más cabalmente algunas de las posibles opciones de respuestas válidas. Ejercicio 2: Dada la siguiente condición de una sentencia de selección de un proceso algorítmico en Lenguaje TIMBA: LA PILA A1 NO ESTA VACIA Y LA PILA A2 NO ESTA VACIA Y LA CARTA ES DE MENOR VALOR QUE TOPE DE LA PILA A2 Y LA CARTA ES DE IGUAL VALOR QUE TOPE DE LA PILA A1 O LA CARTA NO ESTA BOCA ABAJO Y LA CARTA NO ES DE VALOR MAYOR O IGUAL A 10 Se pide: 1. Identifique las proposiciones simples y reescriba la condición en Lógica Proposicional, considerando la jerarquía de los conectivos. Nombrando a cada una de las proposiciones simples de la siguiente manera: P: LA PILA A1 ESTA VACIA Q: LA PILA A2 ESTA VACIA R: LA CARTA ES DE MENOR VALOR QUE TOPE DE LA PILA A2 S: LA CARTA ES DE IGUAL VALOR QUE TOPE DE LA PILA A1 T: LA CARTA ESTA BOCA ABAJO U: LA CARTA ES DE VALOR MAYOR A 10 V: LA CARTA ES DE VALOR IGUAL A 10 y considerando que las conjunciones tienen mayor jerarquía que las disjunciones y que evaluamos de izquierda a derecha los conectivos de igual jerarquía, la fórmula que representa la condición en Lógica Proposicional sería: (((( P Q) R) S) ( T (U V))) 2. Describa una situación de las pilas y del procesador en la que se ejecutarían las sentencias que se encuentren entre el SI y el SINO, porque la condición es verdadera. Para que se ejecuten las sentencias que se encuentren entre el SI y el SINO, la condición debe ser verdadera. Como la condición es una disjunción, basta con que la fórmula ((( P Q) R) S) sea verdadera, o la fórmula ( T (U V)) sea verdadera, o que ambas lo sean. Por ejemplo, la siguiente situación haría a la condición verdadera y por consiguiente que en el condicional se ejecutaran las sentencias entre el SI y el SINO: La pila A1 contiene la carta: 2 DE ESPADAS, La pila A2 contiene la carta: 4DEBASTOS y UCP tiene en mano la carta 2deOROS. En este caso, como ((( P Q) R) S) es verdadera, la condición representada por (((( P Q) R) S) ( T (U V))) también lo es. Más aún, en este caso también sería verdadera ( T (U V)). 2015 - Departamento de Informática - Universidad Nacional de San Luis 4
Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 3. Describa una situación de las pilas y del procesador en la que se ejecutarían las sentencias que se encuentren entre el SINO y el NADA MAS, porque la condición es falsa. Para que se ejecuten las sentencias que se encuentren entre el SINO y el NADA MAS, la condición debe ser falsa. Como la condición es una disjunción es necesario que la fórmula ((( P Q) R) S) sea falsa y que la fórmula ( T (U V)) también sea falsa. Por ejemplo, la siguiente situación haría a la condición falsa y por consiguiente que en el condicional se ejecutaran las sentencias entre el SINO y el NADA MAS: La pila A1 contiene la carta: 12 DE ESPADAS, La pila A2 contiene la carta: 12 DE BASTOS y UCP tiene en mano la carta 12 de OROS. En este caso, ((( P Q) R) S) es falsa y ( T (U V)) también. Por lo tanto, la condición representada por (((( P Q) R) S) ( T (U V))) también lo es. 4. Describa una situación de las pilas y del procesador en la que ocurriera un error al intentar evaluar la condición. Para que ocurra un error al intentar evaluar la condición, bastaría con que alguna de las pilas fuera vacía o que la carta que UCP tiene en la mano esté boca abajo. Por ejemplo, la siguiente situación provocaría error al intentar evaluar la condición: La pila A1 está vacía, La pila A2 contiene la carta: 12 DE BASTOS y UCP tiene en mano la carta 12 de OROS. El procesador daría en este caso el siguiente mensaje de error: USTED QUIERE COMPARAR EL VALOR DE LA CARTA CON EL DEL TOPE DE LA PILA A1 Y LA PILA ESTA VACIA- Otros ejemplos podrían ser los siguientes: La pila A1 contiene la carta: 12 DE ESPADAS, La pila A2 está vacía y UCP tiene en mano la carta 12 de OROS. La pila A1 contiene la carta: 12 DE ESPADAS, La pila A2 contiene la carta: 12 DE BASTOS y UCP tiene en mano la carta 12 de OROS. A continuación se muestra, como ejemplo, la solución de uno de los alumnos que rindió elparcial, que se ha considerado adecuada (aunque tenga alguna falencia que pueda aparecer indicada en la corrección). 2015 - Departamento de Informática - Universidad Nacional de San Luis 5
6
7
Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 Ejercicio 3: Sea el lenguaje de primer orden L σ cuyo vocabulario σ = f, g, P, Q, a, b consta de dos símbolos de función f y g, donde f es unario y g es binario; dos símbolos de predicado, donde P es unario y Q es binario, y dos símbolos de constante a y b. El dominio de la interpretación I de L σ es el conjunto de los números naturales N. La interpretación del vocabulario no lógico es como sigue: a I = 0, b I = 1 f I : N N, donde f I (x) = x +1 g I : N N N, donde g I (x, y) = x + y P I N, donde P I = {x/x N x es par } Q I N N, donde Q I = {(x, y)/x N 2 x es igual a y } a) Traducir las siguientes fórmulas al cálculo de predicados, usando el lenguaje L σ y considerando la interpretación I. 1. El sucesor de 4 es par. Como no existe una constante que represente al número natural 4, hay que conseguirlo con las funciones y constantes que provee el lenguaje L σ. Una manera de lograrlo es f(f(f(b))), porque 4 es el sucesor del sucesor del sucesor de 1 y sucesor está simbolizado por f yel número natural 1 por la constante b. Además, como a su vez se habla del sucesor de 4 debe ser f(f(f(f(b)))) y como ser par es expresado por el símbolo P, entonces una fórmula podría ser: P (f(f(f(f(b)))) 2. La suma de cualquier número par y cualquier número impar es impar. Como se habla de cualquier número par y de cualquiera impar, en la fórmula las variables que representen dichos números deben estar cuantificadas. Claramente, para expresar la suma se debe usar el símbolo de función g y para expresar el predicado ser par (o no serlo) se debe utilizar el símbolo P.Además, sólo se quiere generalizar que la suma de dos números cualesquiera es impar cuando un número es par y el otro impar y no en otro caso. Por consiguiente, se debe escribir una implicación o condicional, cuyo antecedente sea justamente la condición que uno de los números sea par y el otro impar. ( x( y((p (x) P (y)) P (g(x, y))))) 3. Hay un número que al sumarle 2 se obtiene un número impar. Como se habla de la existencia de un número natural, se debe cuantificar la variable que lo representa. Nuevamente, como no contamos con una constante que represente al número natural 2, se lo puede representar, entre otras posibilidades, mediante: g(b, b) o f(b) (o 2 es 1+1 o es el sucesor de 1). Como se habla de la suma, se debe usar el símbolo de función g y como se necesita expresar el predicado ser impar se utiliza el símbolo de predicado P. Así, una fórmula podría ser: ( x P (g(x, g(b, b)))) 2015 - Departamento de Informática - Universidad Nacional de San Luis 8
Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 b) Analizar cada una de las fórmulas escritas en a), determinando si la fórmula es un enunciado (fórmula cerrada o fórmula sin variables libres), en caso de no serlo indique cuáles son las apariciones de variables libres y cuáles las de variables ligadas; mostrando, si existen cuantificadores, el alcance de cada uno. 1. La fórmula P (f(f(f(f(b)))) es un enunciado, ya que es una fórmula sin variables, sólo aparece la constante b, y por consiguiente no aparecen variables libres. No existen cuantificadores 2. La fórmula ( x( y((p (x) P (y)) P (g(x, y))))) es un enunciado, porque las variables que aparecen son x e y, pero todas sus apariciones son ligadas por los dos cuantificadores universales. El alcance de cada uno de los cuantificadores sería: alcance del y {}}{ ( x ( y ((P (x) P (y)) P (g(x, y))) ) }{{} alcance del x 3. La fórmula ( x P (g(x, g(b, b)))) es un enunciado, ya que la única variable que aparece es x y todas sus apariciones son ligadas por el cuantificador existencial. El alcance del cuantificador sería: ( x P (g(x, g(b, b))) ) }{{} alcance del x c) Para aquellas fórmulas escritas en a) que sean enunciados, determinar si son verdaderas o no bajo esta interpretación. 1. Para determinar el valor de verdad de la fórmula debemos utilizar la interpretación en I de cada uno de los símbolos utilizados: b I =1, f I es la función sucesor en N y P I corresponde al conjunto de los números pares. Así, V I (P (f(f(f(f(b))))) = F, porque: ) I(f(f(f(f(b))))) = I(f(f(f(b)))) + 1 = I(f(f(b))) + 1 +1 = I(f(b)) + 1 +1 + 1 = }{{}}{{}}{{} f I (x)=x+1 f I (x)=x+1 f I (x)=x+1 = I(b) }{{} f I (x)=x+1 +1+1+1+1= 1 y 5 no es un número par, o lo que es lo mismo 5 / P I. }{{} +1+1+1+1=5 N b I =1 2. Para determinar el valor de verdad de la fórmula debemos utilizar la interpretación en I de cada uno de los símbolos utilizados: g I (x, y) =x + y y P I correspondiendo al conjunto de los números pares. Así, V I ( x( y((p (x) P (y)) P (g(x, y)))))) = V, porque la única manera de que fuera falso sería que para un par de números c, d N, tales que c fuera par y d fuera impar, o lo que es lo mismo que V I (P (x/c)) = VyV I ( P (y/d)) = V, pero que V I ( P (g(x/c, y/d))) = F. Es decir que la suma I(g(x/c, y/d)) fuera un número par, o lo que es lo mismo que V I (P (g(x/c, y/d))) = V. Así c + d por ser un número par sería divisible por 2, por lo cual deberían ser c y d ambos divisibles por 2, pero los números divisibles por 2 son los números pares y así d sería unnúmero par, lo cual contradice la hipótesis de que c era par y d era impar. Por lo tanto se llega a un absurdo! Así, no es posible que esta fórmula x( y((p (x) P (y)) P (g(x, y)))))) sea falsa en I y entonces confirmamos que V I ( x( y((p (x) P (y)) P (g(x, y)))))) = V 2015 - Departamento de Informática - Universidad Nacional de San Luis 9
Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 3. Finalmente, para ver el valor de verdad de la fórmula ( x P (g(x, g(b, b)))) nuevamente debemos utilizar la interpretación en I de cada uno de los símbolos de L σ utilizados: g I (x, y) =x + y, b I =1y P I correspondiendo al conjunto de los números naturales pares. Entonces, para mostrar que V I (( x P (g(x, g(b, b))))) = V, bastaría conmostrarun número natural c tal que al sumarle dos se obtenga un número impar, o lo que es lo mismo tal que V I ( P (g(x/c, g(b, b))))) = V. Claramente I(g(b, b)) = 2 porque: I(g(b, b)) = I(b) + I(b) }{{} g I (x,y)=x+y = 1 }{{} + }{{} 1 =2 N b I =1 b I =1 Así, sea por ejemplo 5 N, podemos ver que V I ( P (g(x/5,g(b, b))))) = V, ya que: I(g(x/5,g(b, b))) = 5 + I(g(b, b)) }{{} g I (x,y)=x+y =5+I(b)+I(b) }{{} g I (x,y)=x+y =5+ 1 }{{} + }{{} 1 =7 N b I =1 b I =1 y entonces V I ( P (g(x/5,g(b, b))))) = V porque 7 / P I, o lo que es lo mismo porque existe el número natural 5 tal que al sumarle 2 se obtiene 7 N y 7 es un número natural impar. A continuación se muestra, como ejemplo, la solución de uno de los alumnos que rindió elparcial, que se ha considerado adecuada (aunque tenga alguna falencia que pueda aparecer indicada en la corrección). 2015 - Departamento de Informática - Universidad Nacional de San Luis 10
11
Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 Ejercicio 4: Para el siguiente proceso algorítmico en Lenguaje TIMBA: DEFINICION DE PROGRAMA MIENTRAS PILA mazo NO ESTA VACIA Y PILA pila1 ESTA VACIA TOME UNA CARTA DE PILA mazo, INVIERTA LA CARTA, SI LA CARTA ES DE VALOR IGUAL A 12 y LA CARTA ES DEL PALO OROS DEPOSITE LA CARTA EN LA PILA pila1, SINO DEPOSITE LA CARTA EN LA PILA pila2, NADA MAS, REPITA, SI PILA pila1 NO ESTA VACIA MIENTRAS PILA pila2 NO ESTA VACIA TOME UNA CARTA DE PILA pila2, SI LA CARTA ES DEL PALO COPAS Y LA CARTA ES MENOR O IGUAL A 7 DEPOSITE LA CARTA EN LA PILA pila3, SINO DEPOSITE LA CARTA EN LA PILA mazo, NADA MAS, REPITA, SINO NADA MAS; a) Realice el Diagrama de Flujo correspondiente al proceso. b) Realice la ejecución con cada una de las descripciones de pilas dadas a continuación, indicando en cada caso el estado inicial y final de cada pila. En caso de existir errores o advertencias enúncielos. 1. UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA mazo TIENE 10 DE ESPADAS - 5 DE BASTOS - 12 DE OROS - 3 DE ESPADAS - 2 DE ESPADAS - 5 DE COPAS - 1 DE COPAS - 1 DE ESPADAS - 4 DE BASTOS - 2 DE OROS, PILA pila1 no tiene cartas, PILA pila2 no tiene cartas, PILA pila3 no tiene cartas 2. UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA mazo TIENE 1 DE ESPADAS - 3 DE BASTOS - 12 DE OROS - 4 DE ESPADAS - 12 DE ESPADAS - 6 DE OROS - 1 DE COPAS - 1 DE ESPADAS - 4 DE OROS - 2 DE OROS, PILA pila1 no tiene cartas, PILA pila2 no tiene cartas, PILA pila3 no tiene cartas, PILA pila4 no tiene cartas A continuación se muestran, como ejemplo, las soluciones de dos de los alumnos que rindieron la recuperación del parcial, que se han considerado adecuadas (aunque alguna de ellas tenga alguna falencia que pueda aparecer indicada en la corrección). 2015 - Departamento de Informática - Universidad Nacional de San Luis 12
13
14
15
16
Resolución de Problemas y Algoritmos - Ing. en Comp. e Ing. en Inf. Año 2015 Ejercicio 5: Dado el siguiente problema: Se desea buscar en un pila de cartas llamada Inicio, donde todas las cartas están boca arriba, los dos primeros unos. Si se encontraron, buscar en las cartas que quedaron en Inicio el siete de espadas. En caso de estar, dejar en una pila aparte los dos unos y el siete de espadas. Se pide desarrollar un proceso algorítmico en Lenguaje TIMBA que resuelva el problema utilizando la técnica de refinamiento sucesivo con al menos 2 niveles de refinamiento, siendo la segunda versión la versión final. A continuación se muestran, como ejemplo, las soluciones de dos de los alumnos que rindieron la recuperación del parcial, que se han considerado adecuadas (aunque alguna de ellas tenga alguna falencia que pueda aparecer indicada en la corrección). 2015 - Departamento de Informática - Universidad Nacional de San Luis 17
18
19
20
21