Actividad de UNIT Ciudad

Se plantea definir el siguiente TAD y luego implementar como UNIT de Pascal:

TipoCiudad con a lo sumo 10 lugares turísticos. Implemente las siguientes operaciones:

·         Crear una ciudad: crea una ciudad con un  nombre, con cantidad en cero de lugares turísticos.

·         Cambiar nombre a una ciudad: dada una ciudad cambiar su nombre.

·         Cantidad de lugares turísticos disponibles: devuelve la cantidad de lugares turísticos para una ciudad.

·         Agregar un lugar turístico: dada una ciudad y un nombre del lugar turístico lo agrega a  la ciudad.

·         Iniciar recorrido turístico: dada una ciudad inicia el recorrido por los lugares turísticos.

·         Devolver lugar turístico: dada una ciudad retorna el nombre del lugar turístico actual.

·         Siguiente lugar turístico: dada una ciudad se desplaza al siguiente lugar turístico.

·         Asignar una ciudad a otra ciudad.

·         Ver nombre de la ciudad, dada una ciudad devuelve el nombre de la misma.

 

(b)   Utilizando la UNIT definida en el punto (a) realice un programa que permita administrar las consultas de la agencia de viajes “Mucho recorrido”. Dicha agencia necesita:

i)                    Crear un árbol binario ordenado de nombres de ciudades. Para ello realice el procedimiento de carga de datos y creación del árbol.

ii)                  Con el árbol cargado en el punto i) resuelva la siguiente situación: un cliente quiere conocer los nombres de los destinos turísticos para una ciudad determinada. Dichos destinos deben ser mostrados por pantalla.

 Les dejamos las soluciones hechas por los alumnos en el siguiente mural:

act2

 

 

 

 

Mural de soluciones al problema de elegir personas para dos equipos

Les dejamos el enlace al mural donde encontrarán los ejercicios resueltos por los alumnos con sus correcciones.

mural1

 

Selección de jugadores para dos equipos

ronda

Imagen extraída de http://laura-laurarocket.blogspot.com.ar/2011/08/la-ronda-juego-musicalizado-que-se-hace.html

Se quiere crear un programa que simule el funcionamiento del  “Procedimiento de selección”. Supongamos un grupo de amigos se juntan para jugar un juego de mesa que se desarrolla en dos equipos. Para eso deben seleccionar que amigos estarán en cada equipo.
La selección la quieren realizar de la forma más azarosa posible y se les ocurre realizar el siguiente procedimiento de selección:
a.    Los alumnos se ponen en ronda.
b.    Se comienza por un compañero que es señalado como el primero de la ronda.
c.    Tira un dado (con valores entre 1 y 6)
d.    En el primer tiro se avanzan tantos lugares en el sentido de las agujas del reloj, como indique el dado.
e.    La persona seleccionada sale de la ronda y va a formar parte del equipo 1.
f.    El siguiente a la persona que fue elegida vuelve a tirar el dado.
g.    Pero esta vez se debe mover en el sentido antihorario, contando tantos lugares como el dado indique.
h.    La persona seleccionada sale de la ronda y va a parar al equipo 2.
i.    El procedimiento se sigue realizando hasta que quede una sola persona y esa persona va al equipo que le corresponde (puede ser el 1 o el 2)

Se pide desarrollar un programa que simule el procedimiento de selección que:
1.    Utilice las estructuras de datos adecuadas al problema. Tengan presente que puede ocurrir que tengan que construir una estructura nueva.
2.    No deben utilizar memoria de más (eficiencia con el uso de memoria).
3.    No deben hacer recorridos de mas (eficiencia con respecto al tiempo de ejecución)
4.    Deben crear y cargar la estructura inicial de personas a jugar.
5.    Deben MODULARIZAR la solución, sino está mal.
6.    Al finalizar la selección deben mostrar quienes quedaron en el equipo 1 y quienes quedaron en el equipo 2.
7.    El programa debe tener todos los mensajes necesarios para saber que cargar, que esta mostrado que se debe hacer, ejemplo: Ingrese un nombre y presione  Enter, etc.

__________________________________________________________________________

Los alumnos trabajaron en grupos y se acordo la siguiente solución durante el segundo cuatrimestre de 2013:

Solución acordada

UNIT MICRO

auto-coche-omnibusLes dejamos el enunciado y  la implementación de la UNIT Micro realizada en la actividad 2.

Esta implementación fue realizada por los alumnos: Arcuri Antonio, Ríos Mauricio, Santos José.

ENUNCIADO

Defina e implemente la UNIT micro de 30 asientos (numerados de 1 a 30). Implemente las siguientes operaciones:
Crear un micro: crea un micro vacío para un destino, una fecha dada y con un importe de valor de asiento.
Ocupar un asiento específico: dado un número de asiento el mismo se ocupa.
Cantidad de asientos libres: retorna la cantidad de asientos no ocupados.
Liberar un asiento específico: dado un número de asiento el mismo se libera.
Asiento ocupado: dado un número de asiento, retorna Verdadero en caso que el mismo esté ocupado, Falso en caso contrario.
Ver asiento libre: retorna un número de asiento libre.
Asiento válido: dado un número de asiento retorna verdadero si el mismo pertenece al micro, falso en caso contrario.
Hay asiento libre: retorna verdadero en caso que exista al menos un asiento libre, falso en caso contrario.
Asignar un micro a otro micro.

Descarga la solución de la UNIT Micro desde el siguiente link: UNIT micro

Juego de la oración

listaCircularAlumnos les dejamos el enunciado e implementación del juego de la oración en Pascal.

Es mismo fue realizado utilizando una lista circular y fue acordado entre los alumnos del curso del primer cuatrimestre de 20131.

ENUNCIADO:

Se quiere crear un programa que simule el “Juego de la Oración”. Supongamos un grupo de amigos que se juntan a jugar al juego de la oración. Se disponen los participantes en una ronda. Cada persona debe ir agregando una palabra, a una oración que se va creando conjuntamente. Es decir, se inicia por un participante diciendo una palabra, el segundo debe decir la palabra que dijo el anterior más una nueva, el tercero las dos palabras anteriores más una nueva, etc. Así si algún participante olvida la oración o agrega más de una palabra queda eliminado.

El juego finaliza cuando queda un solo participante. El juego informa el nombre y apellido de la persona ganadora.

Notas:
• Tenga en cuenta en la solución que plantee que debe cargar la estructura de datos inicial para poder jugar.
• El juego debe funcionar bien y garantizar que se termine al producirse una frase errónea.
• Considere alguna situación que permita interrumpir el programa en el caso que nunca ningún participante se equivoque.
• Debe modularizar la solución.
• Debe simular todo el juego, teniendo en cuenta la pantalla, debe ir informando si el juego va ok o se produce un error, que se debe ingresar.
• Debe informar el nombre del jugador ganador.
• Debe informar el nombre de la persona que sale del juego cada vez que se comete un error.

Descargar desde el siguiente link el: Juego_De_La_oracion

 

Código de la UNIT “Cola de enteros”

colaHola  les dejamos el código completo de una cola de enteros en Pascal, esta preparado para ser compilado como una UNIT.

UNIT Cola de Enteros

 

Actividad de listas Año 2012

A continuación dejamos algunas de las actividades realizadas en el curso y las propuestas de solución que realizaron los alumnos.

En esta oportunidad vamos a trabajar con el concepto de lista circular doblemente enlazada:

En una lista circular doblemente enlazada, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista doblemente enlazada.

 

 

PROBLEMA 1

1. Realizar un programa que:
a. Genere una lista doblemente enlazada circular donde cada nodo contiene un número entero.
b. Realizar un modulo que dada una lista doblemente enlazada circular y un valor n >0, debe recorrer la lista y obtener en cada pasada el cociente de la división del valor del nodo por el número n (el divisor). Por ejemplo si el nodo tiene el valor 35 y hay que dividir por 5, lo que queda en el nodo es 7.
El recorrido se termina cuando todos los nodos de la lista circular presentan en su contenido un valor donde el resto de la división es igual al valor del dividendo.

Descargar la solución: ListaCircularDobleG8 realizada en Septiembre de 2012 por los alumnos Ailan Julian,  Colazo Exequiel y Crudele Emilio.

 

PROBLEMA 2

Realizar un programa que:
a. Genere una lista doblemente enlazada circular. Cada nodo contiene un número entero.
b. Realizar un modulo que dada una lista doblemente enlazada circular y un valor n >0, debe recorrer la lista y modificar el valor de cada nodo con el valor actual del nodo elevado a la potencia n. En cada pasada el valor de n se decrementa en uno. El recorrido se detiene cuando n es menor o igual a 1.

Descargar la solución ListaCircularG13Potencias realizada en Septiembre de 2012 por los alumnos: : Alza Juan Mateo;  Basanta Sofia;   Blanco Regojo Mauricio; Evangelista y Mauro Ariel

Les dejamos también otra solución ListaCircularG11Potencias realizada por otro grupo al mismo problema en septiembre 2012. Los alumnos son: Bob Mauro David, Discoli Tomás, Garcia  Manuel, Garcia Morzone, Isidro Sergio, Santarcángelo, Zazzetta Marco