PRÁCTICO N o 5 TIMBA NOTA: En cada ejercicio que se pida el desarrollo de un programa o proceso TIMBA, realice el mismo utilizando la técnica de refinamiento sucesivo con al menos 3 niveles de refinamiento siendo la tercera la versión final. Ejercicio 1: Dado el siguiente programa TIMBA, resuelva cada una de las consignas. MIENTRAS PILA mazo no esta vacia TOME UNA CARTA DE PILA mazo, SI LA CARTA ESTA BOCA ABAJO INVIERTA LA CARTA, SI CARTA ES IGUAL A 1 O CARTA ES IGUAL A 3 O CARTA ES IGUAL A 5 O CARTA ES IGUAL A 7 O CARTA ES IGUAL A 11 DEPOSITELA EN PILA pila1 SI CARTA ES IGUAL A 2 O CARTA ES IGUAL A 4 O CARTA ES IGUAL A 6 O CARTA ES IGUAL A 10 O CARTA ES IGUAL A 12 DEPOSITELA EN PILA pila2 UCP EJECUTE CON LAS SIGUIENTES CARTAS: LA PILA mazo TIENE 12 DE ESPADAS - 5 DE OROS - 3 DE COPAS - 4 DE ESPADAS - 4 DE OROS - 5 DE COPAS - 7 DE ESPADAS - 7 DE COPAS - 6 DE ESPADAS, LA PILA pila1 NO TIENE CARTAS, LA PILA pila2 NO TIENE CARTAS 1. Marcar las dos partes que componen el programa TIMBA. 2. Señalar y diferenciar las sentencias operativas, de selección e iterativas, presentes en el proceso. 3. Determinar el estado inicial de cada pila utilizada en el programa indicando, si la tiene, que carta está en el tope. 4. Según su interpretación del programa, enunciar el problema al que dá solución el mismo. Ejercicio 2: Dada una pila no vacía de cartas diseñe, en lenguaje TIMBA, un programa que genere una pila llamada PILAARRIBA con las cartas de la pila que están boca arriba y una llamada PILAABAJO con las cartas de la pila que están boca abajo. Las cartas pueden estar boca arriba o boca abajo. Identifique las partes del programa. Ejercicio 3: Utilizando el lenguaje TIMBA diseñe un programa que, dado un mazo completo de cartas en una pila, arme 10 pilas en las que cada una sólo tenga cartas con el mismo valor. Suponga todas las cartas boca arriba. Identifique las partes del programa. Práctico 5: TIMBA Página 1 Dpto. de Informática
Ejercicio 4: Diseñar un programa, utilizando el lenguaje TIMBA, que tome las cartas de la pila Juntas, no vacía, y las separe en cuatro pilas distintas, de modo tal que en cada una todas las cartas sean del mismo palo. Suponga todas las cartas boca abajo. Identifique las partes del programa. Ejercicio 5: Ejecutar el programa en Timba obtenido al combinar el siguiente proceso algorítmico con cada una de las declaraciones que se detallan a continuación y expresar el estado final obtenido en cada una de las pilas. En caso de detectarse un error informar, además del estado de las pilas alcanzado, el motivo del error. MIENTRAS LA PILA AA NO ESTA VACIA TOME UNA CARTA DE LA PILA AA, SI LA CARTA ESTA BOCA ABAJO INVIERTA LA CARTA, SI LA CARTA ES DE VALOR DISTINTO A 11 O LA CARTA ES DEL PALO OROS DEPOSITE LA CARTA EN LA PILA CC DEPOSITE LA CARTA EN LA PILA BB 1. UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA AA TIENE 1 DE OROS - 2 DE OROS - 1 DE COPAS - 3 DE OROS - 4 DE COPAS - 3 DE ESPADAS - 11 DE BASTO - 1 DE ESPADA - 11 DE ESPADA - 5 DE OROS - 6 DE COPAS - 11 DE COPAS, PILA BB NO TIENE CARTAS, PILA CC NO TIENE CARTAS, PILA D NO TIENE CARTAS. 2. UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA AA TIENE 1 DE OROS - 2 DE OROS - 1 DE COPAS - 3 DE OROS - 4 DE COPAS - 3 DE ESPADAS - 1 DE BASTO - 1 DE ESPADA - 5 DE ESPADA - 11 DE OROS, PILA BB NO TIENE CARTAS, PILA CC NO TIENE CARTAS, PILA D NO TIENE CARTAS, PILA E NO TIENE CARTAS. 3. UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA AA TIENE 1 DE OROS - 2 DE OROS - 1 DE COPAS - 3 DE OROS - 4 DE COPAS - 3 DE ESPADAS - 1 DE BASTO - 1 DE ESPADA - 5 DE ESPADA - 5 DE OROS - 6 DE COPAS, PILA BB NO TIENE CARTAS, PILA CC NO TIENE CARTAS. Ejercicio 6: Diseñar un proceso, utilizando el lenguaje TIMBA, que busque en una pila no vacía dos cartas que tengan el mismo número que el tope de la pila y coloque las 3 juntas en una pila nueva. Las cartas pueden estar boca arriba o boca abajo. Ejercicio 7: Dadas dos pilas A y B, se pide diseñar un proceso para lograr que, si ambos topes son reyes, se intercambien los mismos. En caso contrario y si el valor del tope de A está incluido en el rango 2... 7, generar una nueva pila con los topes de A y B. Todas las cartas están boca abajo. Práctico 5: TIMBA Página 2 Dpto. de Informática
Ejercicio 8: Dado el siguiente problema: Se tiene una pila de cartas, llamada A, conteniendo cartas de los cuatro palos. Se pretende obtener una pila donde se encuentren intercaladas la mayor cantidad posible de cartas de palo OROS y de palo COPAS. Las cartas pueden estar boca arriba o boca abajo. Para el cuál se tiene el siguiente proceso algorítmico que resuelve el problema: MIENTRAS LA PILA A NO ESTA VACIA TOME UNA CARTA DE LA PILA A, SI LA CARTA ES DEL PALO OROS DEPOSITE LA CARTA EN LA PILA B SI LA CARTA ES DEL PALO COPAS DEPOSITE LA CARTA EN LA PILA C REPITA, MIENTRAS LA PILA B NO ESTA VACIA Y LA PILA C NO ESTA VACIA DEPOSITE LA CARTA EN LA PILA A, TOME UNA CARTA DE LA PILA C, 1. Considera qué el código anterior es correcto? Realice las correcciones necesarias. 2. Expresar el estado final obtenido en cada una de las pilas luego de ejecutar el programa que resulta al combinar el proceso algorítmico, diseñado en el punto anterior, con cada una de las declaraciones que se detallan a continuación. En caso de detectarse un error expresar, además del estado de las pilas alcanzado, el motivo del error. a) UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA A TIENE 1 DE OROS - 2 DE BASTO - 1 DE ESPADA - 5 DE ESPADA - 5 DE OROS - 6 DE COPAS - 10 DE COPAS, PILA B NO TIENE CARTAS, PILA C NO TIENE CARTAS, PILA D NO TIENE CARTAS. b) UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA A TIENE 1 DE OROS - 2 DE BASTO - 1 DE ESPADA - 5 DE ESPADA - 5 DE OROS, PILA B NO TIENE CARTAS, PILA C NO TIENE CARTAS, PILA D NO TIENE CARTAS, PILA E NO TIENE CARTAS. c) UCP EJECUTE CON LAS SIGUIENTES CARTAS: PILA A TIENE 1 DE OROS - 2 DE BASTO - 1 DE ESPADA - 5 DE ESPADA - 5 DE OROS - 6 DE COPAS, PILA B NO TIENE CARTAS, PILA C NO TIENE CARTAS. Práctico 5: TIMBA Página 3 Dpto. de Informática
Ejercicio 9: Dada dos pilas no vacías A y B, diseñar un proceso en lenguaje TIMBA que genere otra pila, topes, donde queden las cartas que, encontrándose simultáneamente en el tope de su pila, coincidan en el valor. Si son distintas entonces descartelas. Las cartas de A y B pueden estar boca arriba o boca abajo. Ejercicio 10: Utilizando el lenguaje TIMBA diseñe un proceso que, dada una pila busque en ella la sota de espadas o de bastos, la ponga en otra pila, y vuelva a poner las cartas que sacó de la primer pila otra vez en su lugar. Las cartas están boca abajo. Ejercicio 11: Dada una pila de cartas, que pueden estar boca arriba o boca abajo, de la que se sabe que contiene dos copas, diseñar un proceso en lenguaje TIMBA, que permita extraer de la misma las copas y todas las cartas intermedias. Ejercicio 12: Diseñar un proceso, utilizando el lenguaje TIMBA que: Tome las cartas de una pila, las separe en cuatro pilas distintas, de modo tal que en cada una las cartas sean todas del mismo palo y luego arme nuevamente una sola pila en la que queden intercaladas las cartas de acuerdo a su palo (por ejemplo oro, copa, espada, basto, oro, copa,... ). Las cartas pueden estar boca arriba o boca abajo y en la pila final deben quedar boca arriba. Modifique el proceso anterior de forma tal que, al rearmar nuevamente la pila se tenga la precaución de poner cada carta en el estado en que estaba, esto es, si una carta estaba boca arriba originalmente, quede boca arriba, si estaba boca abajo quede boca abajo. Ejercicio 13: Utilizando el lenguaje TIMBA diseñe un proceso que saque el tope de una pila y arme dos nuevas pilas, una pila con las cartas mayores o iguales que el tope y otra con las cartas que son menores. Las cartas de la pila original pueden estar boca arriba o boca abajo. Ejercicio 14: Diseñe un proceso en lenguaje TIMBA que, dada una pila, la reorganice de modo tal que las cartas mayores que el tope queden boca arriba y las que son menores o iguales boca abajo, y la carta que era el tope en medio de los dos grupos. Ejercicio 15: Dada una pila de cartas organizarla de tal forma que todas las cartas de copas que hay en ella queden juntas y boca abajo. Utilice el lenguaje TIMBA. Ejercicio 16: Diseñe un proceso tal que dada una pila A con al menos dos cartas, si la base es mayor que 4 dejar en A las cartas en el orden que estaban inicialmente, pero con el tope y la base intercambiadas y todas las cartas boca abajo. Sino dejar la pila en el estado inicial. Práctico 5: TIMBA Página 4 Dpto. de Informática
Ejercicio 17: Dadas dos pilas, algunas y muchas, y utilizando el lenguaje TIMBA diseñe un proceso capaz de determinar si las dos pilas tienen la misma cantidad de cartas. Si es así dejar todas las cartas en la pila algunas, sino colocarlas a todas en la pila muchas. Ejercicio 18: Diseñe un proceso capaz de determinar si una pila tiene una cantidad par o impar de cartas. Si la pila tiene cantidad par de cartas, entonces todas ellas deben quedar en otra pila, sino deben quedar en la pila original. Ejercicio 19: Utilizando el lenguaje TIMBA diseñe un proceso que permita, dada una pila de cartas armar tres pilas de forma tal que, en una estén las cartas con número menor a cinco, en otra todas las cartas con número mayor que cinco y en la tercera los cinco que haya en la pila. Si no había ningún cinco entonces ponga las cartas de mayor valor sobre las de menor valor. Ejercicio 20: Diseñe un proceso utilizando el lenguaje TIMBA que, dada una pila de cartas llamada siete, determine si en ella hay más cartas con valor mayor que siete o más cartas con valor menor o igual que siete. Si la mayoría de las cartas son mayores que siete entonces deje el tope de la pila siete boca arriba, sino déjelo boca abajo. Ejercicio 21: Utilizando el lenguaje TIMBA diseñar un proceso que permita, dada dos pilas, decidir en cuál de las dos el número cinco aparece primero. Si en alguna no hay un cinco entonces armar con todas las cartas una sola pila llamada nohay. Sino dejar el tope de la pila, en la que el 5 aparece primero, boca abajo. Si en ambas pilas el cinco aparece en la misma posición entonces dejar las dos pilas con el tope boca abajo. Ejercicio 22: Dada una pila de cartas cuyo único palo es espada, genere otra pila de cartas, llamada orden, donde las cartas aparezcan ordenadas de mayor (base) a menor (tope). Sólo es posible usar una pila auxiliar Aux. Práctico 5: TIMBA Página 5 Dpto. de Informática