JAGF - Unidad Didáctica Programación en Python
JAGF - Unidad Didáctica Programación en Python
JAGF - Unidad Didáctica Programación en Python
Ciclos y condicionales”
(Para 3° Semestre de la Licenciatura en Física y
Matemáticas)
Por:
Jorge Adán González Flores
1
Índice Temático
1. Introducción .................................................................................................................3
1.1. Objetivo de la unidad didáctica ..............................................................................3
2
1. Introducción
El siglo XX y XXI se ha caracterizado por los avances tecnológicos notorios en ámbitos de
la computación. De hecho cada vez es más común que los jóvenes tengan acceso a un
celular o una computadora, esto hace que sea cada vez más importante dirigir el uso de
estas tecnologías a actividades productivas como lo es la correcta operatividad de los
dispositivos así como el conocimiento de cómo funcionan las aplicaciones que utilizamos
diariamente. Es por eso que el conocimiento de creación de programas y aplicaciones es
cada vez más útil y necesaria para las actividades de cualquier ciencia o mercado.
Se espera que con haber incorporado los diagramas de flujo y el pseudocódigo al plan de la
unidad didáctica se tenga un entendimiento intuitivo del funcionamiento de cómo opera un
compilador como Python.
3
2. Programas
Objetivo: Observar cómo es la forma en que los estudiantes escriben instrucciones, esto
con el fin de detectar fortalezas y debilidades en cuanto a la precisión o ambigüedad de la
redacción.
Esta prueba se realizó en salón de clases de Didáctica de las Ciencias obteniendo los
siguientes resultados: Se observó que hubo estudiantes que tenían un formato de
redacción muy similar al de la programación misma, declarando desde el principio los
ingredientes a utilizar (análogos a la declaración de las variables) así como la
sistematización en el orden a realizar cada uno de los pasos (proceso).
Esto se puede deber a que esta prueba fue aplicada a estudiantes de los últimos semestres
de la licenciatura en física y matemáticas, donde muchos de nosotros llevamos
anteriormente cursos de programación. Sin embargo no deja de ser útil ver cuando los
estudiantes ya tienen cierta familiarización con la redacción de instrucciones.
Hubo también casos en que no se tenía mucha precisión, por ejemplo cuando se dice que se
añade agua en una cacerola, no se especifica ni la cantidad en litros ni tampoco un
estimado visual que pudiera ayudar. Pero esto es común en un estudiante, pues no
siempre se está habituado a estas edades a cocinar o a escribir instrucciones de este tipo.
Objetivo: Introducir al alumno a los elementos de la programación por medio del juego
“Kids Coding” así como su relación con las definiciones intuitivas de algoritmo y
ciclo/bucle.
https://www.google.com/doodles/celebrating-50-years-of-kids-coding
4
- Se le pedirá al alumno que complete los primeros 6 niveles de manera individual,
aunque si se tienen menos computadoras que alumnos se tendrá que hacer equipos de
manera que los alumnos queden uniformemente repartidos en el equipo de cómputo
correspondiente.
Explicación: El juego contiene todas las indicaciones para su uso pero se deja la
explicación de la mecánica para el lector de este archivo así como su relación con los
elementos de la programación.
El juego consiste en un conejo que sigue instrucciones específicas dadas por el jugador con
el objetivo de recolectar todas las zanahorias de cada nivel. El jugador buscará colocar las
piezas de la parte inferior correspondientes al movimiento del conejo (Figura 1) para que
una vez ejecutada la línea el conejo recolecte todas las zanahorias del nivel.
Después de dar clic en el botón de inicio, el conejo ejecutará exactamente la acción escrita
en el renglón inferior, en este caso el conejo hace dos pasos hacia adelante, gira en sentido
horario, y hace otros dos pasos hacia adelante para terminar de recolectar todas las
zanahorias (sin caer de los bloques). De esta manera el conejo ha recolectado todas las
zanahorias y el nivel ha sido completado.
A primera instancia parece mostrar solamente una ejecución de pasos (algoritmo simple),
pero conforme se va avanzando los niveles se observa que empiezan a aparecer elementos
relativos a la programación como lo es el concepto de pasos repetitivos de manera
sistemática (Figura 2)
5
Figura 2. El bucle/ciclo en el juego
El juego ofrece un tutorial para esta nueva herramienta y es a partir de entonces que el
movimiento del conejo ya es descrito en un formato bucle. Un ejemplo del uso de esta
herramienta se observa en la figura 3.
2.3. Relación del juego “Kids Coding” con los ciclos y los algoritmos
Actividad 3. Una vez finalizado el punto 2.2 se procederá a hacer una mesa de debate
donde se buscará relacionar las siguientes definiciones con las experiencias adquiridas del
juego “Kids Coding”: (es recomendable que el alumno anote cada uno de los puntos a
discutir)
6
• Analizar un problema. ¿Cuál era el problema a resolver en este caso?
• Planificación. ¿Cómo procediste para planificar la solución?
• Edición o escritura. ¿Cuáles eran los métodos de escritura en este juego?
• Compilación/ejecución. ¿Cómo se ejecutaban las acciones una vez escrito el plan?
• Corrección de errores. ¿Cuáles fueron tus pasos a seguir después de un error?
• Bucles. ¿Cómo definirías el comando “bucle” en este juego?
7
3. Representación de algoritmos
Actividad 6. Crea algunas etiquetas para facilitar la identificación de las etapas del
proceso para la receta de cocina que escribiste previamente. Escribe cómo resultó la
descripción de este proceso.
8
Como en cualquier disciplina, es muy importante que todos los que practican dicha
disciplina se pongan de acuerdo, en la programación es común convenir en etiquetas para
que sea fácil identificar las acciones de un proceso tal cual como se hizo en la actividad 6.
Una manera de ponernos de acuerdo entre todos es designar las siguientes etapas:
Inicio
Tomar la olla
Introducir agua
Encender el fuego
Esperar 1 minuto
Fin
9
A pesar de ser un ejemplo simple, podemos ver que es la declaración de un proceso preciso,
poco ambiguo, aunque tiene ciertas desventajas, por ejemplo note aquí que el pseudocódigo
podría ser ambiguo ya que en el ejemplo anterior:
• Se da por sentado que se sabe las definiciones de los elementos (Olla, taza, bolsa de
té).
• No se menciona con exactitud cuánta agua poner.
• No se detalla cómo poner la olla al fuego.
En esta actividad aprenderemos a relacionar los procesos que tiene un programa con un
diagrama de flujo, utilizaremos solo 4 símbolos normalizados:
10
Ya estamos familiarizados con los elementos Inicio/Fin, Proceso, Entrada/Salida.
Actividad 9. Crear un diagrama de flujo de cómo preparar una torta de jamón utilizando
el símbolo “Decisión” considerando que puede o no haber todos los ingredientes requeridos.
Tenemos que 1 𝑖𝑛 = 2.54 𝑐𝑚 , por lo que si queremos convertir por ejemplo 10𝑐𝑚 a
pulgadas podemos hacer una regla de 3
2.54 𝑐𝑚 → 1 𝑖𝑛
10 𝑐𝑚 → 𝑋 𝑖𝑛
así
11
(10𝑐𝑚) ∙ (1 𝑖𝑛)
𝑋= = 3.9𝑖𝑛
(2.54𝑐𝑚)
2.54 𝑐𝑚 → 1 𝑖𝑛
𝑎 𝑐𝑚 → 𝑋 𝑖𝑛
así
𝑎
𝑋=
2.54
donde 𝑋 es el valor en pulgadas que estábamos buscando. Esta fórmula nos servirá para el
programa que queremos.
Inicio
2- LEER: distancia
3- CALCULAR pulgadas=distancia/2.54
Fin
Note que en el paso 3 hemos utilizado la fórmula que obtuvimos previamente. Para
ilustrar el uso de un diagrama de flujo veamos que este mismo proceso se puede
representar de la siguiente manera:
12
Vea que ambas representaciones se refieren al mismo proceso, sin embargo el diagrama de
flujo es más preciso por contener símbolos normalizados.
Actividad 10. Escribe el nombre de cada símbolo normalizado utilizado en este diagrama
de flujo (ya sea Entrada/Salida, Inicio/Fin, Proceso o Decisión).
13
4. Algoritmos y estructuras de programación.
https://translate.google.com/?hl=es
Actividad 13. Utilizar el traductor de google inglés → español para traducir lo siguiente:
Run:
Print:
If:
Else:
Input:
Output:
While:
Hello world:
print("Hola Mundo")
(Con este pequeño programa buscaremos que el alumno identifique los elementos
subyacentes y extrapole su uso en distintos casos)
14
Actividad 14. Entrar al sitio web Online Python Compiler:
https://www.onlinegdb.com/online_python_compiler
Solución.
15
En el primer ejemplo, “practicar todos los días” es la condición, y “en el futuro serás bueno”
es la consecuencia.
Actividad 16. Escribir una condición simple cualquiera y hacer un pseudocódigo de ello.
16
cuadrada, hasta para cocinar: seguir una receta para hornear unas galletas, entre otras
cosas. Un ejemplo de un proceso infinito es el contar los números naturales.
Actividad 17. En función a la actividad 2, resolver lo siguiente: (he escrito las soluciones)
El algoritmo es: Si No
Ambiguo ×
Preciso ×
El procedimiento es finito ×
comenzar
17
Actividad 20. Del siguiente diagrama de flujo:
ii) ¿Cómo se redactaría en lenguaje común esta condición y consecuencia? Considere los
casos en que 𝑎 > 𝑏, 𝑎 < 𝑏 y 𝑎 = 𝑏.
18
i) ¿en qué línea se establece la condición?
Solución.
“Si hay limones entonces haré y beberé limonada, si no entonces beberé agua.”
“Si hay limones entonces haré y beberé limonada, si no entonces beberé agua.”
En el idioma inglés la palabra Else significa “de otro modo”, por lo que esta misma oración
se puede escribir como
Por esta razón que a la condicional doble también se le llama condicional If-Else
19
Actividad 22. Dá un ejemplo de una condicional doble y realiza un pseudocódigo de esa
oración.
Solución.
20
Actividad 24. Considera el siguiente problema: “Realice un programa que pida un
número al usuario y diga si es positivo, negativo o cero”.
21
Diagrama 1.
22
Diagrama 2.
23
Diagrama 3.
24
ii) Escriba por qué son incorrectos los otros dos diagramas.
Cuando se tienen muchas condiciones, para probar nuestros diagramas de flujo es bueno
dar un valor específico y recorrerlo para ver a dónde nos lleva. Esto también aplica cuando
tenemos código.
if: a = = b:
Solución. i) imprime “a es mayor que b”. ii) imprime “b es mayor que a”. iii)
25
4.5. La documentación en la programación: Resumen sobre la
sintaxis de Python.
La sintaxis (de un lenguaje de programación) es una palabra caprichosa para referirse a
las reglas que deben seguirse al escribir el código de los programas. El escribir
correctamente estas reglas es como garantizamos que Python va a hacer lo que queremos.
Imprimir en pantalla:
print(“Texto”)
Condicional simple:
if <condición> :
Condicional doble:
if <condición> :
else:
<consecuencia 2>
Actividad 26. Entra a google.com y busca “Python if else”. Escribe un ejemplo que hayas
encontrado utilizando la sintaxis if-else.
https://www.w3schools.com/python
https://www.programiz.com/python-programming/
https://www.guru99.com/
27
5. Operaciones matemáticas en Python
Los operadores aritméticos son los elementos que relacionan dos números por una
operación matemática. En Python estas operaciones matemáticas son las siguientes:
La suma, resta, multiplicación y división son las que ya hemos trabajado previamente. La
potenciación es el uso de exponentes para abreviar la multiplicación, por ejemplo:
24 = 2 ∙ 2 ∙ 2 ∙ 2 = 16
La división entera a//b es como la división que conocemos, pero toma la parte entera, por
ejemplo:
5
= 2.5
2
5//2=2
28
El módulo a % b hace la división de a entre b y el residuo es el resultado, por ejemplo
5
Esta es la división 2 en la cual se muestra que el residuo es igual a 1, por lo tanto
5%2=1
Usemos esto en la siguiente actividad:
29
Si utilizas Python desde un archivo descargable (IDE) entonces es probable que la
terminal aparezca en una ventana aparte.
Para hacer programas más versátiles y que manejen la información dada, nos interesa que
el programa interactúe con el teclado. El objetivo de esta sección será lograr pedir al
usuario información que se escribirá con el teclado, y se almacene de alguna manera en
nuestro programa.
En Python es posible lograr esto mediante la función input() que significa entrada. La
función input() permite obtener texto escrito por teclado. Al llegar a la función, el
programa se detiene esperando que se escriba algo y se pulse la tecla Intro, como muestra
el siguiente ejemplo:
Como es muy habitual avisar al usuario qué es lo que queremos que ingrese por medio del
print(), Python también tiene una forma alternativa de hacer esto mismo de una manera
más corta:
A lo largo de este curso utilizaremos la segunda forma. Con este programa podemos ver
que dato almacena lo que se ha escrito con el teclado. El dato puede ser texto, números o
una combinación de éstos, sin embargo hay que saber que Python entiende que lo que
30
hemos ingresado siempre es una cadena de texto. Pruebe el programa para ver su
funcionamiento.
ii) Modifique el programa para añadir otra casilla que diga “Edad”.
iii) Con la idea del programa, crea tu propio listado para añadir a un amigo y su número
de teléfono manera de agenda.
El detalle con esta forma de capturar datos es que Python siempre entiende como que
estamos ingresando texto. Si quisiéramos entonces que Python entendiera que queremos
guardar números para manejarlos después, es necesario que “evaluemos el texto”, por
ejemplo:
En este programa se utiliza la función int() (recuerda que la palabra Integer significa
Entero). Esta función se encarga de transformar el dato en la forma
31
Actividad 29. Transcriba el programa mostrado anteriormente:
iii) Pruebe el programa con dos valores con puntos decimales. ¿Qué ocurrió?
i) Modifica la sección “Tu nombre” y “Tu edad” escribiendo tu nombre y tu edad. Prueba el
programa y di qué hace.
32
ii) ¿Los espacios en la línea 11 y 12 son necesarios?
iii) Añade una tercera opción para este menú con la información de la escuela a la que
perteneces.
Como pudimos ver en esta actividad, los espacios en la línea 11 y 12 si son necesarios, esto
ocasiona que conforme vamos añadiendo más opciones el programa tiende a espaciarse a
la derecha. Sin mencionar que parece cansado estar escribiendo la forma:
else:
if(condición):
else:
if(condición 2):
Para evitar esto, Python tiene integrada una función llamada elif(): (como una fusión de
else, if). Un ejemplo del uso de esta función es el siguiente:
Una ventaja rápida que podemos ver de este método es que podemos copiar y pegar de
manera que podemos realizar un menú de opciones múltiples de una manera también más
rápida. Además de solucionar el problema de la tendencia del código a irse a la derecha.
33
Actividad 32 (Cambio de representación). Realice:
ii) Combine este código con el código realizado en la actividad 29 parte iv) para leer num1
y num2 dados por el usuario. Sugerencia: Haz primero un diagrama de flujo.
Utilizando este método también es posible calcular fórmulas, por ejemplo en la geometría
sabemos que el área de un círculo está dada por
34
𝐴 = 𝜋𝑟 2
𝑃 = 2𝜋𝑟
Como vemos estas relaciones solo dependen del radio del círculo. (Recuerda que el
diámetro de un círculo es dos veces su radio.)
𝐴𝑟𝑒𝑎 = 𝑏 × 𝑎 𝑃𝑒𝑟í𝑚𝑒𝑡𝑟𝑜 = 2𝑏 + 2𝑎
35
Actividad 36. Se tiene que el volumen de un cono está dada por
1 2
𝑉= 𝜋𝑟 ℎ
3
Realice un programa que calcule el volumen del cono y el área de la base circular, dados
los valores del usuario.
36
Proyecto. Crear una calculadora personal. (Formato semi-abierto)
Explicación: Con calculadora personal se refiere a que añadiremos las operaciones que
sean más necesarias para nosotros, puede ser algún cálculo relacionado a la materia de
matemáticas que estés usando activamente, o cualquier cosa que te interese, sin embargo
debe cumplir con los siguientes requisitos:
• Suma
• Resta
• Multiplicación
• División
3. Debe contener un menú (formato libre) que permita al usuario acceder a cada operación.
Un ejemplo de un menú es el siguiente:
En este ejemplo, al presionar las teclas 1-8 se accede al programa específico para realizar
el cálculo descrito.
37
Formato de entrega: La entrega se realizará copiando el código finalizado del
compilador de Python
38
Mediante un correo con tu nombre completo en el asunto.
Se envía a: [email protected]
39
Referencias bibliográficas
[1] Peter C. Norton, Alex Samuel (2005). Beginning Python. Whiley Publications. United
States.
[2] Preiss B.R. (2004). Data structures and algorithms in Python. Dover Publications.
United States.
[3] David Beazley (2001). Python essential reference [2nd ed]. New Riders Publications.
San Francisco. United States.
[4] Magnus Lie Hetland (2005). Beginning Python: From Novice to Professional [1 ed.].
Apress. New York. United States.
Sitios Web:
https://www.w3schools.com/python
https://www.programiz.com/python-programming/
https://www.guru99.com/
40