Lecciones impartidas en clase (curso 2016/17)

Introducción

Esta lección contiene un índice de las lecciones que impartí en clase durante el curso 2017/18, así como los ejercicios que realizaron los alumnos.

Este índice se basa en las guías de estudio que ofrecí a mis alumnos de la modalidad semipresencial en la plataforma Moodle de la Conselleria de Educación. El trabajo propuesto a estos alumnos fue el mismo que siguieron en clase mis alumnos de la modalidad presencial, aunque la distribución temporal no fuera la misma.

La información se ofrece distribuida en quincenas, ya que es así como estaba (y está) organizada la modalidad semipresencial.

Es importante tener en cuenta que este índice enlaza a las lecciones actuales, no a las lecciones tal y como se encontraban en el curso 2016/17, y en algunos casos estas lecciones y ejercicios pueden haberse reducido o ampliado de forma significativa. Si algunos apartados no enlazan a ninguna lección, es porque por alguna razón he eliminado esa lección de los apuntes actuales.

También se pueden consultar las lecciones impartidas en el curso siguiente, 2017/18.

Quincena Q08: del 19/12/16 al 15/01/17

Presentación de los apuntes

Leed la página siguiente:

  1. Presentación de los apuntes

Instalación de Python y edición de programas

Leed las lecciones y haced las tareas siguientes:

  1. Lenguajes de programación.

    Esta lección es una breve presentación de lo que son los lenguajes de programación.

  2. Historia de Python.

    Esta lección comenta las diferentes versión de Python que existen. La versión que vamos a utilizar nosotros es la más moderna, es decir, Python 3.6.

  3. Instalación de Python.

    Esta lección comenta la instalación del intérprete de Python que incluye un entorno de desarrollo bastante elemental llamado IDLE que es el que vamos a utilizar.

  4. Descargad e instalad Python 3.6
  5. IDLE, entorno de desarrollo.

    Esta lección comenta el funcionamiento básico de IDLE: el uso del prompt para probar instrucciones y la edición y ejecución de programas.

Conceptos básicos de programación

El objetivo de esta primera quincena es que podáis empezar a escribir programas que pidan valores al usuario, hagan cálculos sencillos y muestren resultados al usuario. Para ello se necesitan combinar varias instrucciones y utilizar variables.

Antes de hacer los ejercicios, tenéis que leer unas lecciones que introducen los conceptos necesarios. Os aconsejo que probéis los ejemplos en el prompt del IDLE para comprobar y que intentéis variaciones de los ejemplos para comprobar que entendéis cómo funciona Python.

Leed las lecciones, haced los ejercicios y consultad las soluciones siguientes:

  1. Elementos de un programa.

    Esta lección comenta brevemente los elementos que componen un programa de Python, que se abordarán con más detalles en temas posteriores. Lo importante es que os vayáis familiarizando con el vocabulario (palabras reservadas, funciones, operadores, delimitadores, literales, etc.).

  2. Números y operaciones aritméticas.

    Los números son el tipo de dato más simple. En esta lección se comentan los diferentes tipos de números de Python y las operaciones aritméticas elementales.

  3. Cadenas de texto.

    Las cadenas de texto (es decir, fragmentos de texto) es otro tipo básico que se utiliza en cualquier programa. En esta lección se comenta cómo se escriben las cadenas en Python.

  4. Variables (1).

    Para guardar información (números o letras) durante la ejecución de un programa, se utilizan variables. En esta lección se explica cómo se utilizan las variables en Python.

  5. Salida por pantalla.

    Para hacer programas interactivos hace falta mostrar mensajes al usuario. En esta lección se explica cómo hacerlo. Los ejemplos de esta lección ya no deben probarse en IDLE, sino en programas que hay que guardar y ejecutar (aunque la salida por pantalla se muestra en la ventana de IDLE).

  6. Entrada por teclado.

    Para hacer programas interactivos hace falta que el programa solicite datos al usuario y trabaje con ellos. En esta lección se explica cómo hacerlo. Los ejemplos de esta lección ya no deben probarse en IDLE, sino en programas que hay que guardar y ejecutar (aunque la entrada de datos se hace en la ventana de IDLE).

  7. Ejercicios: Variables, E/S y Operaciones aritméticas.
  8. Soluciones ejercicios: Variables, E/S y Operaciones aritméticas.

Quincena Q09: del 22/01/17 al 05/02/17

Variables y expresiones booleanas (lógicas)

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Tipos de datos booleanos

    Las variables y expresiones booleanas son aquellas que pueden tomar dos valores: Verdadero (True) o Falso (False). Estas expresiones son necesarias para expresar condiciones y se utilizan en las estructuras de selección o repetición.

  2. Ejercicios: Expresiones lógicas (1)

    Estos ejercicios son ejercicios tipo test para practicar expresiones booleanas. Repetidlos las veces que sea necesario, hasta que veáis que no cometéis errores. Las expresiones se generan al azar, así que pueden repetirse.

    Nota: Estos ejercicios y los siguientes utilizan una biblioteca que se llama Brython que traduce código de Python a código JavaScript, lo que permite incluir programas de Python (con ciertas limitaciones) en una página web y ejecutarlos en el navegador. Si os sale un ejercicio incorrecto o que evalúe incorrectamente vuestra respuesta, haced una captura de la pantalla y enviadla al foro.

  3. Ejercicios: Expresiones lógicas (2)

    Estos ejercicios son ejercicios tipo test para practicar comparaciones. Repetidlos las veces que sea necesario, hasta que veáis que no cometéis errores.

Sentencias condicionales

Las sentencias condicionales if ... elif ... else ... es la primera estructura de control del flujo del programa que vamos a ver. Permiten que un programa haga una cosa u otra en función de que se cumplan o no las condiciones que queramos.

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Sentencias condicionales if ... elif ... else ...
  2. Ejercicios: if ... elif ... else ...
  3. Soluciones ejercicios: if ... elif ... else ...

    Si al principio no sabéis cómo realizar los ejercicios, consultad las soluciones. En algunos casos, tenéis pistas para realizar los programas. Estos ejercicios se pueden resolver siempre de varias maneras. Una vez escrito el programa completamente, tenéis que probar el programa con todos los casos posibles (es decir, al menos un ejemplo de cada caso) y comprobar que la respuesta de vuestro programa es correcta. Aunque hayáis escrito un programa correcto, mirad las soluciones para ver otras formas de resolver el problema e intentad entender por qué otras soluciones también funcionan.

Quincena Q10: del 06/02/17 al 19/02/17

El tipo range

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. El tipo range

    Python dispone de un tipo de datos que no es habitual en otros lenguajes de programación, el tipo range. Un único range permite almacenar varios datos distintos, con la particularidad que tienen que ser números enteros en progresión aritmética y que una vez creados no se pueden modificar.

    En la primera parte de esta lección hay una pequeña introducción a las listas, otro tipo de datos de Python que permite agrupar varios datos en una sola variable. Lo he puesto porque el tipo range se puede entender como un caso particular de lista, pero lo importante en esta lección es que tengáis claro lo que es range.

  2. Ejercicios: El tipo range

    Los tres primeros ejercicios son ejercicios tipo test para tener claro cómo se crean tipos range, con uno, dos o tres argumentos. Los podéis repetir las veces que sea necesario. El resto de ejercicio son programas en los que se pide un dato al usuario y se muestra un resultado en forma de range().

  3. Soluciones ejercicios: El tipo range

Bucle for

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Bucle for

    La sentencia for ... es otra estructura de control del flujo del programa, que permite definir iteraciones (repeticiones). Permiten que un programa repita un conjunto de instrucciones un número definido de veces.

    Para establecer el número de repeticiones, utilizaremos el tipo range.

  2. Ejercicios: el bucle for (1).
  3. Soluciones ejercicios: Bucle for (1).

Sucesiones aritméticas

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Sucesiones aritméticas

    Esta lección es un repaso de un concepto matemático muy útil en programación: las sucesiones aritméticas. Tenéis que ser capaces de sacar de cabeza fórmulas del tipo a * n + b a partir de unos pocos valores.

    En la próxima quincena utilizaremos este tipo de fórmulas para la generación de dibujos SVG.

  2. Ejercicios: Sucesiones aritméticas.

    Los dos primeros ejercicios son ejercicios tipo test para practicar el cálculo mental de fórmulas del tipo a * n + b. Los podéis repetir las veces que sea necesario. Los otros dos ejercicios combinan las fórmulas con los tipos range y los bucles for.

    Tened en cuenta que en el ejercicio 2 se pueden elegir tres niveles de dificultad.

  3. Soluciones ejercicios: Sucesiones aritméticas.

Quincena Q11: del 20/02/17 al 05/03/17

Actualizar Python 3.6.0 a Python 3.6.1

El 23 de marzo se publicó Python 3.6.1, la primera actualización de la rama 3.6. Aunque seguramente los bugs corregidos en esta versión no nos afectaban, es conveniente utilizar siempre la última versión publicada, así que os aconsejo que os actualicéis a Python 3.6.1. En la lección sobre Instalación de Python he actualizado los enlaces de descarga y he añadido un apartado con capturas de la actualización.

Valores aleatorios

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Valores aleatorios.

    De todas las funciones que se comentan en la lección, usaremos básicamente la función randrange().

  2. Ejercicios: Bucle for (2).
  3. Soluciones ejercicios: Bucle for (2).

Ficheros

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Ficheros,

    Python permite escribir y leer ficheros. En los ejercicios lo que haremos básicamente es crear páginas web html.

  2. Ejercicios: Ficheros (1).
  3. Soluciones ejercicios: Ficheros (1).

Gráficos SVG

En la parte de HTML y CSS utilizamos gráficos SVG insertándolos en páginas web mediante la etiqueta <img>. En la parte de programación, los vamos a volver a ver para practicar los bucles, pero esta vez creando los gráficos nosotros mismos.

Leed las lecciones, haced los ejercicios y consultad las soluciones siguientes:

  1. SVG (apuntes de HTML).
  2. Formas básicas SVG (apuntes de HTML).
  3. Ejercicios: SVG (1)

    Estos ejercicios son para repasar el sistema de coordenadas de SVG. Son ejercicios tipo test que podéis repetir las veces necesarias. Hay en total doce ejercicios, divididos en bloques de cuatro ejercicios, uno para cada una de las principales formas SVG: puntos (en realidad son círculos pequeños), rectángulos, líneas y círculos.

    • el primer ejercicio de cada es muy sencillo porque las coordenadas van de 0 a 5
    • el segundo ejercicio es un poco más complicado porque las coordenadas van de 0 a 100 (de 10 en 10) y hay que afinar más la vista.
    • el tercero es un poco más complicado porque las coordenadas van de -100 a 100 y hay que aclararse con los negativos
    • el cuarto es el más lioso porque salvo con el caso de los círculos, la escala es distinta en cada eje (para ayudaros, el enunciado dice de cuánto en cuánto va la escala).
  4. Ejercicios: SVG Ficheros (1)

    En cada ejercicio se proporciona una plantilla y se piden seis dibujos, es decir, en cada ejercicio habrá que hacer seis páginas web (una para cada dibujo), todas basadas en la misma plantilla. Tened en cuenta que la plantilla del segundo ejercicio es distinta a la del primero y tercero, en el primer y tercer ejercicio las coordenadas que tenéis que utilizar están entre 0 y 300, mientras que en el segundo están entre -150 y 150.

  5. Soluciones ejercicios: Ficheros (1).

Quincena Q12: del 06/03/17 al 19/03/17

Cadenas "f"

La semana pasada descubrí que Python 3.6 introdujo una forma de escribir las cadenas que se llama cadenas "f" que permite incluir variables y expresiones en las cadenas. Con esta notación no hace falta ni utilizar el operador "+" para concatenar cadenas ni utilizar la función str() para convertir números en cadenas, así que creo que será más sencillo para vosotros utilizar esta notación. He reescrito las soluciones de los ejercicios usando esta notación, pero igual me he dejado alguno por error. De cara al examen, me dará a igual la notación que utilicéis, la "clásica" o la "moderna".

Leed los apartado añadidos en las lecciones siguientes:

  1. Entrada por teclado (variables en input().
  2. Cadenas (cadenas largas).

Gráficos SVG (Bucles)

Para crear dibujos más complejos que los de la semana anterior, esta quincena vamos a utilizar bucles for. Como vimos en la quincena Q10, un bucle for permite repetir una misma instrucción las veces que queramos. En el caso de los dibujos, para dibujar diez líneas, en vez de escribir diez instrucciones que dibujen una línea, escribiremos un bucle que repita diez veces una instrucción que dibuje una línea. Por supuesto para eso hace falta que las líneas tengan relación entre sí. En los ejercicios propuestos la relación se puede expresar mediante sucesiones aritméticas.

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Ejemplos de ejercicios resueltos

    En esta lección se explica el proceso que hay que llevar a cabo para generar un dibujo mediante bucles for. La complicación de los ejercicios reside en el número de formas utilizadas y en el número de fórmulas distintas que se necesita expresar. En esta lección se explican cuatro dibujos distintos, de menor a mayor complejidad.

  2. Ejercicios SVG Ficheros (2) En cada ejercicio se proporciona una plantilla y se piden seis dibujos, es decir, en cada ejercicio habrá que hacer seis programas que generen cada uno de los dibujos en una página web, todas basadas en la misma plantilla. Tened en cuenta que las plantillas no son todas iguales: en el primer y tercer ejercicio las coordenadas que tenéis que utilizar están entre 0 y 300, mientras que en el segundo están entre -150 y 150.

    Todos los dibujos se pueden hacer con un único bucle, como podéis comprobar en las soluciones. El tercer ejercicio es un poco más difícil, porque hay que dibujar varias figuras en cada iteración (dos líneas, cuatro cuadrados o cuatro círculos). Otra forma de hacerlo es escribir varios bucles seguidos, de manera que cada bucle dibuje una parte del dibujo.

  3. Soluciones ejercicios SVG Ficheros (2)

Bucles for anidados

Un bucle anidado es un bucle dentro de un bucle. Esta quincena veremos la teoría y la quincena que viene haremos ejercicios.

Leed la lección:

  1. Bucle for (2)

    Para los ejercicios de la próxima quincena, es suficiente con leer el apartado Bucles anidados (variables independientes), aunque podéis leer también el apartado Bucles anidados (variables dependientes).

Quincena Q13: del 20/03/17 al 02/04/17

Bucles for anidados

En esta quincena vamos a ver bucles for anidados, es decir, un bucle for que contiene a su vez otro bucle for. Los utilizaremos para generar gráficos mediante Brython.

Haced los ejercicios y consultad las soluciones siguientes:

  1. Ejercicios: Ficheros (3).
  2. Soluciones ejercicios Ficheros (3).
  3. [optativo] Ejercicios: Ficheros (4).

    Estos ejercicios son dibujos con bucles for simples (ejercicio 1) y anidados (ejercicio 2). Lo "interesante" es que los dibujos están basados en ilusiones ópticas, en los que rectas paralelas parecen no serlo o segmentos de la misma longitud parece ser unos más grandes que otros.

[Optativo] Bucle while

Aunque no va a entrar en el examen, os invito a ver los bucles while, que se utilizan cuando no sabemos al empezar el bucle cuántas veces va a ser necesario realizar el bucle.

Leed la lección, haced los ejercicios y consultad las soluciones siguientes:

  1. Bucle while
  2. Ejercicios Bucle while (2).
  3. Soluciones ejercicios Bucle while (2).
  4. Ejercicios Bucle while (3).
  5. Soluciones ejercicios Bucle while (3).