Materia
Ejercicios


Tarea 1: La Constelación de Santa Maria

Objetivos de aprendizaje

Después de resolver la Tarea 1, usted será capaz de:

  • Implementar un programa que requiera de entradas y salidas.
  • Diseñar e implementar programas simples usando algunas sentencias elementales de Python (asignaciones, if y while).
  • Entender el proceso de desarrollar y probar un programa en el computador usando las herramientas de desarrollo del lenguaje (Intérprete, consola, IDE).
  • Usar el módulo Turtle para hacer dibujos sencillos.
  • Implementar funciones básicas para evitar repetir código dentro de un programa.

Enunciado

La tarea consiste en desarrollar un programa que sirva de ayuda para los futuros astrónomos que visitarán nuestro país, quienes disponen de la información de las constelaciones (posición inicial y tamaño de los lados). Tu deber es ayudarlos a descifrar la información que ellos poseen dibujando las constelaciones en el plano polar del hemisferio norte y obtener la distancia a la cual se ubica una constelación de otra. Para lograr esto deberán apoyarse en el módulo Turtle de Python.

Qué hay que implementar

Su misión consiste en desempaquetar un String que contiene toda la información de las constelaciones. El String tiene la siguiente forma:

  • Los primeros caracteres indican la posición inicial en donde se debe comenzar a dibujar la constelación, cumpliéndose que, cada String contiene el caracter x y a continuación el valor asociado (valor entero), luego se tiene el caracter y seguido de su respectivo valor. Los valores anteriores indican la posición en donde comienza la constelación, en los eje coordenados x e y.

  • Luego en el String vienen las instrucciones que se deben seguir para dibujar la constelación. Dentro de estas instrucciones se pueden encontrar los caracteres r, l y c seguidos de sus respectivos valores (enteros), los cuales, dependiendo del caracter que los antecede, indican:

    • r girar a la derecha cierto ángulo (de acuerdo al valor que lo acompaña).
    • l girar a la izquierda cierto ángulo (de acuerdo al valor que lo acompaña).
    • c indica que se debe trazar una recta cuyo largo depende del valor que lo acompaña (en pixeles).

Un ejemplo con la estructura antes mencionada es:

../../_images/formaString_2016.jpg
  • El programa debe tener una ventana de tamaño (880,880) y contener un fondo con las estrellas del hemisferio norte, tal como el que se presenta a continuación.
../../_images/estrellasFondo_2016.jpg
  • Sobre la imagen anterior, se deben crear dos círculos y 8 líneas centrales, con la idea de crear un plano polar de referencia para las posiciones de las constelaciones, el cual debería verse de la siguiente forma:
../../_images/planoPosi1_2016.jpg
  • Al momento de iniciar el programa, la consola debe mostrar un menú el cual debe lucir como el que se presenta a continuación:
../../_images/menu_2016.png
  • Para las opciones 1,2 y 3 se debe considerar los sub menús de: Limpiar la pantalla y volver al menú principal. Los submenús se deben mostrar hasta que el usuario seleccione la opción de salir (volver al menú principal del programa).
  • La opción 1, ‘Buscar constelaciones’, esta opción debe mostrar al menos 4 de las 9 constelaciones anexadas al problema y preguntar al usuario qué constelación desea consultar. Una vez seleccionada la constelación se debe graficar en el plano. El programa debe seguir preguntando por las constelaciones que se deseen graficar hasta que el usuario seleccione la opción Salir. En cuyo caso vuelve al menú principal.
  • La opción 2, ‘Ingresar Constelación’, consiste en el ingreso manual de un string que representa a una constelación. El string a ingresar debe seguir el mismo formato descrito anteriormente, una vez ingresada la constelación se debe graficar en el plano.
  • La opción 3, ‘Distancia entre dos constelaciones’, esta opción debe solicitar las constelaciones sobre las cuales se desea obtener la distancia. Una vez seleccionadas las dos constelaciones, debe dibujar las constelaciones en el plano, calcular la distancia (para lo cual debe considerar los puntos de inicio de c/u de las constelaciones) y luego graficar una línea que una a las 2 constelaciones, (ver video).

A tener en consideración

El programa debe ser capaz de reconocer al menos 4 de las siguientes constelaciones (para la revisión se puede ingresar cualquiera de estas constelaciones y el programa debiera ser capaz de graficarlas en el plano)

leo = "x320y25r62c95l5c46r142c50r110c33x320y25l186c28l36c24r49c19r61c29r75c15"
cancer = "x200y0l70c63r35c33l180c33r110c59"
canisminor = "x146y140l29c25"
osamenor = "x-2y-232r74c41l40c26l25c28r84c16r94c31r99c17"
aries = "x-235y41r54c9l40c19l54c76"
cepheus = "x-128y-237r47c49r112c41r70c55r118c43r5c63r131c54"
cassioppeia = "x-102y-147r181c24l60c18r68c24l105c26"
canismajor = "x70y344r12c56r36c20l80c23l180c23l20c55r70c31r180c31r1c26"
gemini = "x142y38r138c20r89c63l9c27l25c9l22c12x142y38r76c42l30c20r8c38r87c18"
auriga = "x-10y-23r50c54l136c48l102c38r80c64r69c38r93c54r41c38"
piscis = "x-256y127r99c44l7c40r5c42l48c18l15c14r44c20x-256y127r56c12l15c19r14c17l3c39r17c19l9c66r4c26r103c25l118c18l26c25l94c19l76c21"

No desaprovechen el tiempo e intenten avanzar cada vez que puedan y crean sea necesario. Pueden revisar la documentación que hemos preparado para ustedes sobre el módulo Turtle y sus funciones.

Entrega

La fecha de entrega es el Miércoles 6 de Abril a las 23:00 hrs, vía Aula.

La tarea debe ser resuelta en equipos de dos o tres personas. De lo contrario habrá penalización en la nota. Sólo uno de los integrantes del equipo debe subir la tarea en la sección Tareas de la plataforma Aula, ingresando al campus que corresponda.

Se debe entregar un archivo con el nombre tarea-1-RUT.py, reemplazando RUT por el RUT del integrante que subirá la tarea.

Sólo debe ir el RUT sin el dígito verificador. Por ejemplo: tarea-1-18000123.py.

Al principio del archivo se debe poner un comentario indicando los RUT de los integrantes del equipo, como en el siguiente ejemplo:

# Integrantes:
# 18000123-0 Perico Los Palotes
# 18000456-7 Fulanita de Tal
# 18000890-k Federico Santa Maria

No se puede subir ningún archivo adicional.

Evite dejar para última hora la entrega de la tarea. Cerca del plazo final, la plataforma seguramente estará sobrecargada.

Se recibirán tareas con un máximo de 1 día de retraso (este día de retraso tiene descuentos, ver Rúbrica de evaluación), fuera de este plazo, no se recibirán tareas. No se recibirán tareas por correo electrónico.

Políticas de copia

Usted puede discutir la tarea con compañeros de otros grupos, pero bajo ningún motivo puede compartir o copiar el código de su tarea. Cada equipo debe escribir su propio código.

Las políticas de copia de la asignatura rigen para la tarea.

En caso de tener problemas con el desarrollo de la tarea, asista a las ayudantías o consulte en el grupo de facebook.