Saltar la navegación

5. Programa tu aportación

Rétor nos dice:

Hasta ahora hemos conocido cómo la Computación ha influido en nuestro mundo actual,su papel en el desarrollo tecnológico y la importancia del desarrollo de programas informáticos para la comunicación con las máquinas que conforman nuestra tecnología actual y permiten su uso, y también el de las aplicaciones (software).

Nos hemos iniciado además en el lenguaje de programación Python, en el que desarrollaremos nuestra programación.

Ahora es ya el momento de desarrollar nuestro pequeño proyecto, nuestra pequeña aportación que sin duda marcará el comienzo de nuestra andadura en el terreno del desarrollo de aplicaciones con el que podríamos cambiar el mundo...o hacer algo importante; porque lo dijo Steve Jobs:

Steve Jobs

“Las cosas no tienen que cambiar el mundo para ser importantes.”

1. Preparamos nuestra aportación: un reloj-alarma

Vamos a comenzar a programar nuestra aplicación, que bien podría formar parte de un SO: un reloj de alarma digital. Para ello, conozcamos primero las especificaciones:

  1. El reloj constará de una ventana en la que mostraremos los campos siguientes:El reloj: la ventana
  2. Como podemos ver, tenemos 3 etiquetas:
    1. La ubicada sobre los campos para introducir la hora-minutos-segundos de la alarma.
    2. La que indica que el campo a continuación es el que recoge la hora de alarma. Esta etiqueta muestra la frase "¿Cuándo quieres despertarte?".
    3. La etiqueta de información que indica que se deben introducir los datos para programar la alarma en formato 24 horas.
  3. Tenemos tres campos para recoger la hora, los minutos y los segundos a los que se quiere programar la alarma. Estos 3 campos serán del tipo "Entry", que tendrás que buscar en la librería tkinter, vista anteriormente para crearlos.
  4. Existe un botón de título SET cuya misión es:  cuando se pulsa el programa comienza a contar hasta llegar a la hora de la alarma. En este instante final imprimirá por pantalla el mensaje "¡Hora de levantarse!".
  5. La parte principal del programa la dedicaremos a crear la ventana y sus elementos. El comando que ejecutará el botón será la llamada a la función que tendrá de nombre alarma. Aún no hemos visto cómo se realizan las funciones, por eso solo tendrás que hacer la llamada y aquí te daremos el código que hay que incluir para su creación y que sólo tendrás que escribir y completar algunas instrucciones del interior de dicha función.

¡Vamos a ello!

2. Reflexión

Para llegar a una meta, es conveniente que seas un buen o buena estratega. Es decir, tener métodos, técnicas, “trucos” para llegar antes o de forma más fácil donde tú quieres.
Ahora te voy a enseñar una estrategia, ¡Aprovéchala para alcanzar tu reto!
El nombre de la estrategia es reflexión. Esta estrategia te ayudará a organizar la información de una forma más visual y ordenar la respuesta para realizar adecuadamente la actividad.
Podrás encontrar todo lo que necesitas sobre esta estrategia en el siguiente enlace a la guía de la competencia de aprender a aprender
Tómate el tiempo que necesites y recuerda que siempre puedes preguntarle al docente o a algún compañero o compañera cuando no entiendas algo.
 
¡Ánimo, que lo harás genial!

3. Diseñamos el código y el aspecto visual.

Sobre el papel, realiza un primer boceto del programa:

  1. Analiza en qué posiciones x-y (medido en píxeles) tendrás que ponery separar cada elemento visual para que queden con distancia entre unos y otros.
  2. Escribe y asigna nombre a las variables que contendrán cada uno de los elementos y en qué orden las definirás.
  3. Dentro de la función que es llamada al pulsar el botón: piensa qué debe ejecutar dicha función. Haz un pseudocódigo que indique: qué datos necesitarás tomar y qué operación deberás realizar para hacer saltar la alarma (imprimir el mensaje de las especificaciones).

4. Codificamos en Python nuestra ventana

Realiza en Python el código necesario para mostrar nuestra venta, según todo lo visto en la sección anterior. Para ello:

  • Consulta la documentación que te indicamos en el apartado previo sobre la librería que necesitarás: tkinter.
  • Investiga cómo posicionar cada elemento gráfico en la ventana creada mediante la propiedad .place()
  • Intenta dar los siguientes valores de formateo:
    • Utiliza para los textos la fuente Arial, tamaño 10 y en negrita.
    • Al texto de información sobre el formato en el que hay que introducir la hora ponle además, fondo negro y letra roja.
    • En la pregunta "¿Cuándo quieres despertarte? haz que tenga el texto azul.
    • Las letras del botón, muéstralas en rojo. Recuerda que la función a la que llama el botón tendrá por nombre alarma
    • A los campos para tomar la hora de programación de la alarma, ponles el fondo rosa.

Ejecuta este código cuando lo tengas creado para ver si se está mostrando todo correctamente. Depura los errores si no fuese así.

Lee algunas orientaciones sobre esta parte

Para resolver estas actividades es importante que conozcas y tengas claro lo que debes hacer. Para ello, te invito a reflexionar sobre las habilidades que debes poner en juego para resolverla. Te facilito una serie de estrategias que te serán de utilidad en todos los programas que desarrolles a partir de ahora, y por supuesto para aplicar en este reto:

  • Para poder utilizar con libertad todo lo disponible en la librería tkinter te recomendamos importarlo todo usando el carácter * del siguiente modo:
    from tkinter import *
  • Necesitarás tantas variables para recoger los valores como campos a introducir por el usuario haya. En este caso son los   valores a programar en la alarma. Para no liarte, te recomendamos también darles el nombre hora - min - seg
    Como los campos de tipo Entry toman los valores como texto (consulta este método en la librería), estas variables tendrás que iniciarlas como de tipo String, así: hora=StringVar()
  • ¡Recuerda el comando que hay que añadir al final del programa codificado en Python para iniciar las ventanas!

5. ¡Definimos la función que hará funcionar nuestra alarma!

¡Vamos a definir finalmente la función que hará funcionar nuestra alarma!

Como indicábamos anteriormente, aún no sabemos trabajar con funciones. Por eso, en este apartado vamos a proporcionar el esqueleto básico de la función que deberás rellenar con las instrucciones que realicen el proceso que necesitamos. Introduce en tu programa el siguiente código:

def alarma():

   set_alarma = f"{hora.get()}:{min.get()}:{seg.get()}"

   while True:

        timesleep(1)

        ...

        ...

        #Imprime aquí por pantalla "La hora actual es: " seguida de la hora que has tomado del sistema.

        if ahora=set_alarma:         #ahora es una variable que debes iniciar

             #Imprimir por pantalla "¡Hora de levantarse!

             break

Ahora vamos a analizar este código:

  1. ¿Cuál crees que es la función de la instrucción "While True"?
  2. Verás que se usa la instrucción timesleep(1). Este comando introduce un retraso a espera de 1 segundo. ¿Por qué crees que es necesario?
  3. Ahora entra tu programación en juego. Deberás completarlo teniendo en cuenta:
    1. Hay que importar la librería time, que dispone de una función que nos da la hora y fecha actual. Tendrás que almacenarla en una variable, Tienes más información en la: documentación sobre time. Lo hemos dividido en dos líneas en el código anterior, porque verás que será necesario utilizar dos variables: una para almacenar la hora y otra para almacenar la fecha.
    2. Tras definir las variables y darles el valor correspondiente se compara con el valor actual programado por el usuario con la sentencia if. ¿Qué instrucción usaremos dentro del if para ejecutar cuando se cumpla la condición de igualdad de la comparación anterior?

¡Ejecuta tu programa y comprueba el funcionamiento de tu reloj-alarma!

6. ¿Te atreves a ponerle un sonido a la alarma?

¡Riiing!

(Atención: sólo sistemas Windows)

Finalmente, te lanzamos este desafío: cuando se imprima por pantalla el aviso ¡Hora de lenvantarse! vamos a intentar hacer sonar una alarma. ¡Sigue los pasos e investiga!:

  1. Importa la librería winsound que permite trabajar con los archivos de sonido.
  2. Busca en dicha librería la función que te permite reproducir un sonido.
  3. Descarga en tu ordenador el archivo de sonido: sonido_timbre.
  4. Introduce en tu programa la instrucción necesaria. ¿Dónde debes localizarla?

¡Prueba y hazlo sonar!

¿Cómo nos ha ido?

Es la hora de ser consciente de los aprendizajes que has adquirido: Esta parte final es la más importante ya que en ella hemos puesto en práctica todo lo visto anteriormente y hemos sido capaces de crear, mediante la Computación, una aplicación que puede utilizarse en este mundo digital. Por eso debemos pararnos ahora a reflexionar y contestar a estas preguntas. Puede ser muy útil hacer las preguntas por parejas de clase, ya que así podremos comprobar otras formas de afrontar este aprendizaje, diferentes a la nuestra y destacar los elementos más relevantes de todos los trabajados:

¿Pudiste crear tu reloj-alarma?
¿Has incluído el sonido?
¿Has podido explicar el funcionamiento de la función y de las estructuras que incluye?
¿Pudiste dar el aspecto visual que se pedía a los distintos elementos de la ventana?
¿Has personalizado el reloj-alarma?
¿Te ha resultado difícil trabajar con las librerías de Python?
¿Has  necesitado buscar en Internet ejercicios de ejemplo?
Y lo más importante ¿vamos a por más?<

Tras reflexionar sobre estas preguntas y las respuestas propias junto con tus compañeros y compañeras, pensad si individualmente necesitáis algún cambio en vuestro enfoque del aprendizaje de la programación, y cómo podéis ayudaros para un avance en equipo.