Este libro interactivo Jupyter está pensado para comprender y aprender a escribir programas en Python. Su contenido se enmarca en la legislación vigente sobre la asignatura TIC II y además está pensado para profundizar en dos objetivos trasversales: Entender el papel de la tecnología en la sociedad actual y fomentar el emprendimiento.
Por ello, la teoría y ejemplos presentados en este libro están pensados para aprender a programar aplicaciones sencillas para la empresa ficticia PIZZAS NAZARIES S.L. El objetivo es que aunque no se tenga ningún conocimiento previo y algunos de los conceptos son un poco abstractos, pensar en un ejemplo real ayude a entender los contenidos.
¿Cómo funciona este libro interactivo? Debes ir ejecutando cada una de las celdas de código que vayas encontrado. En algunas sólo tendrás que darle a "play" y en otras tendrás que escribir tu propio código. Debes ejecutar todas las celdas que contienen código, si no lo haces es posible que algunos ejemplos de código* no funcionen.
Los apartados marcados con el título ¡Prueba sin miedo! están pensados para que escribas pequeños trozos de código. Podrás comprobar si lo has entendido la explicación y autoevaluar tus avances. Intenta resolver todos los apartados. Si no consigues resolver alguno pide ayuda a tu profesor.
## ¡ EMPECEMOS ! ##
Estos son los temas que se tratarán en esta parte del curso.
Un programa informático se parece a hacer una pizza. Para hacer una pizza tu sigues una serie de pasos en un orden concreto, desde estirar la masa hasta encender el horno y meter la pizza en él. Piensa que tuvieras que explicarle a alguien cómo se hace una pizza, no sólo le tendrías que decir los ingredientes sino cada uno de los pequeños pasos a seguir. Un programa informático es muy parecido. Cada uno de los pasos para hacer la pizza, como poner el tomate en la base o encender el horno en un programa informático las llamamos instrucciones. Y un programa puede estar formado por una o varias instrucciones. Cada instruccion ejecutan una acción. El conjunto de instrucciones escritas es el código del programa.
Un lenguaje de programación es simplemente una manera de escribir las acciones que quieres llevar a cabo. Igual que le dices a un amigo "Ahora, enciende el horno" le puedes decir "Now, turn on the oven" o "Maintenant, allumer le four". El lenguaje es diferente, pero la acción es la misma. Seguramente tú prefieras dar las instrucciones en el lenguaje con el que más cómodo te sientas. Por eso es importante sentirte cómodo también con el lenguaje de programación.
Imagina que cambias el orden de ejecución de la creación de una pizza de diagrama de la figura de arriba. ¿Seguirías obteniendo una pizza?
Vamos a pensarlo. Si cambiamos el orden de "poner pimiento" con "poner salami" probablemente la pizza que obtengamos al final sea exactamente igual. ¿No crees?
Incluso si "encendemos el horno" antes de "estirar la masa", aparte del consumo de electricidad probablemente no notaríamos la diferencia.
Ahora bien, hay ciertas acciones que deben seguir un orden. No puedes "poner el tomate" si no has "estirado la masa". Ni "hornear" si no has "encendido el horno". Son cosas que tú sabes que tienen que mantener un orden porque de lo contrario, nunca podrás obtener una rica pizza nazarí. Pues en programación pasa igual, habrá cosas que puedas cambiar de sitio en el orden de ejecución, pero habrá otras donde tendrás que estar atento y respetar el orden de prelación.
Un programa informático se compone de una o varias instrucciones. Las instrucciones son líneas de código que ejecutan una acción. Pyhon, es un lenguaje de programación interpretado. Esto quiere decir que irá linea por linea traduciendo a código máquina y ejecutando cada una de las instrucciones que escribas.
Por ejemplo, la siguiente instrucción sirve para mostrar en la consola el mensaje "Pizzería Nazarí, ¿Qué desea?" en la pantalla.
Como esto es un libro interactivo, puedes ejecutar la instrucción directamente dentro de él. Haz clic sobre la celda de abajo y luego pulsa el icono de "play".
print("Pizzería Nazarí, ¿Qué desea?")
Lógicamente, si añadimos varias lineas de instrucciones una detrás de otra en un programa estas se ejecutarán secuencialmente. En el siguiente ejemplo puedes comprobarlo.
print("Pizzería Nazarí, ¿Qué desea?")
print("Hoy tenemos 2x1 a domicilio")
Ya has aprendido tu primera función en Python, la función print. Es una función predefinida de Python, que puede ser llamada desde tu programa simplemente escribiendo print("lo que sea"). Es interesante que notes que entre los parentesis se incluye el mensaje, que es el parámetro que se le pasa a la función.
# Escribe una instrucción usando print avisando al cliente de que su pizza está en el horno
Las funciones predefinidas te ayudarán a escribir tus programas. Son como los ladrillos de una casa. Con unas pocas funciones que conozcas podrás escribir muchos programas y cada vez más complejos. Vamos a aprender una nueva función, la función help que nos proporciona ayuda sobre cualquier otra función.
help(print) # Nos muestra información de ayuda sobre la función predefinida print
Como habrás podido comprobar, nos muestra en la consola algunas opciones de la función print. Y también habrás notado que la ayuda está en inglés, algo habitual en los lenguajes de programación. ¡Programar te ayudará a practicar inglés!
# Haz que se muestre la ayuda disponible sobre la propia función help
print (2+2)
Podemos escribir la instrucción print de la siguiente manera
print(3 + 5)
Donde estamos usando un operador, el signo +, que sirve para operar sobre los dos números. En el siguiente ejemplo puedes encontrar también el uso del operador + para concatenar dos cadenas de texto.
Usar operadores es muy práctico. Dentro de la instrucción podemos encontrar expresiones literales como "El precio de la pizza barbacoa es: " o variables, que las veremos más adelante, y que permiten mayor versatilidad.
En los siguientes ejemplos también tienes posibles usos de operadores aritméticos, que nos serán útiles para calcular el precio total de las pizzas, de los ingredientes, dividir entre el número de clientes, etc. Prueba a cambiar los ejemplos para ver cómo funciona.
En Python podemos hacer operaciones sobre las variables que tenemos de forma muy sencilla. A modo de resumen, las principales operaciones en python son:
Símbolo | Operación |
---|---|
+ | Suma |
- | Resta |
* | Multiplicación |
/ | División |
// | División redondeando hacia abajo |
% | Devuelve el residuo de la división |
** | Eleva a la potencia |
print("El precio de la pizza barbacoa es: " + "9,95€")
# Sumamos dos números
3 + 5
# Sumamos y multiplicamos. Date cuenta de que la operación de multiplicación tiene prioridad sobre la de suma.
# El orden de operación (prelación) si no hay paréntesis es: Multiplicación, división, suma y resta
# Aquí primero se efectuará el 5 * 8 y luego al resultado se le suma 3. ¡EJECUTALO Y COMPRUÉBALO!
3 + 5 * 8
# Efectúa ahora este cálculo y date cuenta de que no es el mismo resultado que la operación anterior.
(3 + 5) * 8
# Prueba a efectuar esta operación mentalmente y luego comprueba el resultado
(3 + 5) * 4 / 2
# Tenemos 4 clientes en una mesa. Han pedido 3 pizzas a 9,95€.
# Escribe una expresión aritmética para obtener cuanto tiene que pagar cada uno
Nos gustaría saludar a cada cliente por su nombre cuando se conecta para pedir una pizza. Para poder hacerlo necesitamos introducir un concepto de programación básico: las variables.
Piensa en el número de pizzas que has vendido en un mes. O en el número de clientes que hay ahora mismo en el local. O el precio de la pizza margarita. O en el nombre de tus clientes. Esa información es muy útil guardarla en algún sitio. Ese sitio se llama variable. Esta información, como bien habrás adivinado puede ser de muchos tipos. Desde un nombre a un precio en euros. Y además puede cambiar con el tiempo, como el número de mesas ocupadas en el local a lo largo del día. Por tanto ya podemos decir dos cosas de las variables, que se pueden modificar durante la ejecución del programa y que hay de varios tipos.
Hay muchos tipos de variables. Aquí puedes ver algunos ejemplos:
int
) - Como el número de mesas del local (7,8,9...)float
o double
) - También llamados "coma flotante", porque tienen decimales.char
) y cadenas de caracteres (string
) - Como la "p" o "pizza"bool
), estos últimos sólo pueden tomar dos valores: verdadero (True
) o falso (False
). - Pedido pagado si/noPongamos por ejemplo que queremos almacenar el precio de una pizza. Para ello tenemos que declarar la variable, algo así como bautizarla. Una posible declaración sería PizzaBarbacoa=9,95
. Fíjate que al ser un número con decimales hemos declarado la variable como fipo float. Lo curioso de Python, a diferencia de otros lenguajes de programación, es que no necesita que le digamos explicitamente qué tipo de variable estamos declarando. Es decir, si declaramos PizzaBarbacoa=9,95
, Python ya entiende que tiene que usar un tipo float para guardar el precio de la pizza en la variable PizzaBarbacoa
.
En la figura siguiente puedes ver más tipos de variables y cual sería su posible uso en nuestra pizzería.
# Declara una variable para almacenar el número de mesas ocupadas y otra con el precio de la pizza carbonara
#
Imagina que tienes mucha hambre. Tú y un amigo vais a pedir pizza pero no teneis nada claro qué sale más rentable, si pedir 2 pizzas medianas o una pizza familiar. ¡Vamos a usar Python y un poco de matemáticas para averiguarlo!
Lo primero que vamos a hacer es recordar como se calculaba el area de una pizza. La ecuación para calcularlo es
$$Area=\pi \cdot radio^{2}$$Ahora lo que vamos a hacer es ir almacenando en variables los tamaños de las pizzas de una pizzería muy famosa:
Pizza | Radio | Precio |
---|---|---|
Mediana | 14,5 cm | 5€ |
Familiar | 17,25 cm | 9€ |
# Declaramos las variables para cada pizza. Completa con los datos de la tabla anterior los datos
# Sustituye los XX con los valores de la tabla. También definimos el valor de Pi que vamos a usar
# Recuerda, en Python se usa un "." para separar los decimales en lugar de una ",". Tenlo en cuenta al copiar los datos.
radio_pizza_mediana=XX.XX
radio_pizza_familiar=XX.XX
precio_pizza_mediana=XX.XX
precio_pizza_familiar=XX.XX
pi=3.1416
Ahora, haciendo uso de los operadores que hemos explicado antes, vamos a calcular el área de cada pizza. Ten en cuenta que las variables donde vamos a ir almacenando las áreas calculadas se definen en el momento que se ejecuta la operación. No necesitas declararlas antes.
Completa la ecuación para calcular en area con las variables que has definido antes. Hemos completado la primera para que sea más fácil.
# Ahora, haciendo uso de los operadores que hemos explicado antes, vamos a calcular el área de cada pizza
# Las variables de area se definen en el momento que se ejecuta la operación
# Completa la ecuación para calcular en area con las variables que has definido antes
area_pizza_mediana= pi * radio_pizza_mediana**2
area_pizza_familiar=
# Y vamos a ver el área de cada pizza ejecutando un print
print(area_pizza_mediana)
print (area_pizza_familiar)
# Nos queda saber qué pizza es más económica
# Vamos a calcular la razón precio/ área.
# El valor más pequeño será el de la pizza más rentable
# Escribe las ecuaciones para obtener la razón precio/área de los dos tipos de pizza.
precio_por_unidad_de_area_pizza_mediana=
precio_por_unidad_de_area_pizza_familiar=
# Imprimimos los resultados por pantalla
print ("La pizza mediana tiene un ratio precio/área de ",precio_por_unidad_de_area_pizza_mediana,"Euros/cm^2" )
print ("La pizza familiar tiene un ratio precio/área de ",precio_por_unidad_de_area_pizza_familiar,"Euros/cm^2" )
En este tema hemos aprendido cómo el la estructura de un programa informático buscando la similitud con hacer una pizza. Hemos visto también los primeros elementos del lenguaje Python y hemos hablado de los tipos de datos con elementos que ya conocemos de una pizzería.
Al final de este tema, deberías ser capaz de escribir un programa sencillo que haga cálculos que presente los resultados por pantalla