Lecciones impartidas en clase (curso 2018/19)

Introducción

Esta lección contiene un índice de las lecciones que impartí en clase durante el curso 2018/19, 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 2018/19, 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 tanto las lecciones impartidas en el curso anterior, 2017/18, como las lecciones impartidas en el curso siguiente, 2019/20.

Semana Q08B: del 07/01/19 al 13/01/19

Esta semana empieza la segunda parte del módulo LMSGI, dedicada a la Iniciación a la programación mediante el lenguaje Python. La materia impartida a partir de esta semana entrará en el segundo examen parcial.

Presentación de los apuntes

  1. Leed la lección Presentación de los apuntes

Instalación de Python

Los apuntes presuponen que no tenéis Python instalado en vuestros ordenadores y por tanto podéis instalar todas las cosas que os pida y configurarlas de la manera específica que os pida. Si ya tenéis Python instalado y configurado a vuestra manera, lo que os pida puede interferir con vuestra instalación actual. En ese caso, enviadme un correo y os comento cómo podemos resolver la situación.

  1. Leed la lección Lenguajes de programación.

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

  2. Leed la lección 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. Leed la lección 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.

  4. Descargad e instalad Python 3.7.2

Edición de programas

En cursos anteriores, he utilizado como editor el editor IDLE incluido en la instalación de Python. Es un editor muy elemental y limitado a la programación en Python, pero que en cursos anteriores ha sido suficiente para seguir los apuntes. Como este año quiero introducir temas un poco más avanzados, nos vendrá bien utilizar un editor más potente. En principio, he pensado utilizar Visual Studio Code, aprovechando que ya tenéis cierta familiaridad por haberlo utilizado en la parte de HTML/CSS.

Esta semana, en que no tenéis que escribir todavía programas, utilizaremos únicamente IDLE, que resulta cómodo para probar instrucciones sueltas, como podéis hacer esta semana mientras leéis las lecciones.

  1. Leed la lección 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. Podéis leer toda la lección, pero tened en cuenta que esta semana no os pido que hagáis programas. Esta semana quiero que utilicéis IDLE para probar las instrucciones de las lecciones. La quincena próxima empezaréis a escribir programas, pero lo haréis con Visual Studio Code.

    Una de las ventajas de IDLE es que permite ejecutar directamente instrucciones de Python. Al leer las lecciones de teoría, es importante que probéis los ejemplos que se ofrecen y poder experimentar por vuestra cuenta las instrucciones.

  2. Leed la lección El entorno interactivo de Python.

    En principio, cuando haya que utilizar el entorno interactivo, os aconsejo utilizar IDLE, pero debéis saber que se puede utilizar el entorno interactivo también en un terminal.

Conceptos básicos de programación

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.

  1. Leed la lección 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. Leed la lección 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. Leed la lección 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 gastan las variables en Python.

  4. Leed la lección 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. Para incluir variables en cadenas, nosotros utilizaremos las cadenas "f".

Configuración de Visual Studio Code

Quincena Q09: del 21/01/19 al 03/02/19

El objetivo de esta primera quincena es que empecéis 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.

Entrada y salida

Prueba de programas

Variables y expresiones booleanas (lógicas)

  1. Leed la lección 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. Haced los 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. Haced los 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.

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

MPTC: Prueba de programa

A partir de esta quincena espero que podáis usar la utilidad MPTC (Mclibre Python Testing Client) para comprobar vuestros programas.

Temas generales

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.

  1. Leed la lección Sentencias condicionales if ... elif ... else ...
  2. Haced los ejercicios if ... elif ... else ...
  3. Consultad las soluciones de los 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 manualmente, probando con todos los casos posibles (es decir, al menos un ejemplo de cada caso) y comprobar que la respuesta de vuestro programa es correcta. También podéis probar los programas con la herramienta mptc. 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.

Ejercicios adicionales

Valores aleatorios

  1. Leed la lección Valores aleatorios.

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

  2. Leed el apartado "Otras funciones integradas" de la lección Números y operaciones aritméticas elementales.

    Las funciones max() y min() os vendrán bien para los ejercicios que os propongo a continuación.

  3. Haced los ejercicios Minijuegos (1)
  4. Consultad las soluciones de los ejercicios: Minijuegos 1)

Quincena Q11: del 18/02/19 al 03/03/19

Simulacro de examen

Podéis entregar la tarea voluntaria Simulacro de examen hasta el domingo 31 de marzo de 2019 a las 23:55.

Es un examen básico y facilito que cubre más o menos hasta la quincena Q10 (sin valores aleatorios).

Para facilitaros la realización del examen, he añadido pruebas MPTC. Todavía no tengo decidido si cuando hagáis el examen podréis acceder a pruebas MPTC (para empezar, tendría que implementar la funcionalidad de trabajar offline), pero posiblemente plantee una consulta para pediros vuestra opinión igual que se la pediré a los alumnos de presencial.

El tipo range

  1. Leed la lección El tipo range

    Python dispone de un tipo de datos que no es habitual en otros lenguajes de programación, el tipo range. En una variable de tipo de tipo range se pueden almacenar varios números (concretamente números enteros en progresión aritmética), pero estos valores no se pueden modificar.

    En la primera parte de esta lección hay una referencia 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, ya veremos las listas más adelante.

  2. Haced los 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. Consultad las soluciones de los ejercicios El tipo range

Bucle for

  1. Leed la lección 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. Haced los ejercicios Bucle for Minijuegos (2)
  3. Consultad las soluciones de los ejercicios Bucle for Minijuegos (2).
  4. Haced los ejercicios Bucle for (1).
  5. Consultad las soluciones de los ejercicios Bucle for (1).

Sucesiones aritméticas

  1. Leed la lección 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.

    Más adelante utilizaremos este tipo de fórmulas para la generación de dibujos SVG.

    Esta lección está en los apuntes de Temas de Informática.

  2. Haced los ejercicios Sucesiones aritméticas.

    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. Tened en cuenta que en el ejercicio 2 se pueden elegir tres niveles de dificultad.

    Estos ejercicios están en los apuntes de Temas de Informática.

  3. Haced los ejercicios Sucesiones aritméticas.

    Estos ejercicios combinan las fórmulas con los tipos range y los bucles for.

  4. Consultad las soluciones de los ejercicios Sucesiones aritméticas.

Quincena Q12: del 04/03/19 al 24/03/19

Actualizar Python 3.7.2 a Python 3.7.3

El 25 de marzo se publicó Python 3.7.3, la actualización trimestral de la rama 3.7. 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.7.3. Al tratarse de una actualización, no es necesario desinstalar previamente la versión anterior. En la lección sobre Instalación de Python he actualizado los enlaces de descarga.

Bucle while

El bucle while es el tipo de bucle que se debe utilizar cuando no sabemos cuántas veces va a ser necesario realizar el bucle.

  1. Leed la lección Bucle while
  2. Haced los ejercicios Bucle while (2).
  3. Consultad las soluciones de los ejercicios Bucle while (2).
  4. Leed la lección Biblioteca fecha y hora (necesarios para algunos ejercicios Bucle while (3).
  5. Haced los ejercicios Bucle while (3).
  6. Consultad las soluciones de los ejercicios Bucle while (3).

Ficheros

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

  1. Leed la lección Ficheros
  2. Haced los ejercicios Ficheros (1).
  3. Consultad las soluciones de los ejercicios Ficheros (1).

Quincena Q13: del 25/03/19 al 07/04/19

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, pero esta vez creando los gráficos nosotros mismos. En esta quincena se trata de familiarizarnos con el sistema de coordenadas de SVG y las formas básicas.

  1. Leed la lección SVG (apuntes de HTML).
  2. Leed la lección Formas básicas SVG (apuntes de HTML).
  3. Haced los 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. Haced los ejercicios SVG (2) viewBox

    Aunque en las plantillas de los ejercicios os indico el atributo viewBox (es decir, la porción del plano SVG que se muestra en el dibujo), he preparado una página de ejercicios de tipo test para que podáis practicar los valores del atributo viewBox. Como las preguntas se generan al azar, podéis repetirlos las veces que sea necesario.

    Nota: En el examen os indicaré los valores de los atributos viewBox, como en cursos anteriores.

Gráficos SVG (sin bucles)

Gráficos SVG (con bucles)

Para crear dibujos más complejos vamos a utilizar bucles for. Como vimos en la quincena Q11, 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. Os puede venir bien repasar los ejercicios tipo test sobre sucesiones aritméticas que vimos en la quincena Q11.

  1. Leed la lección 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. Haced los 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. Consultad las soluciones de los ejercicios SVG Ficheros (2)

Quincena Q14: del 08/04/19 al 05/05/19

Gráficos SVG (con bucles anidados)

Un bucle anidado es un bucle que se encuentra dentro de otro bucle.

  1. Leed la lección Bucle for (2)

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

  2. Haced los ejercicios Ficheros (3).
  3. Consultad las soluciones de los ejercicios Ficheros (3).
  4. [optativo] Haced los ejercicios Ficheros (4).

    Estos ejercicios son dibujos con bucles for simples (ejercicio 1) y anidados (ejercicio 2). Los dibujos propuestos 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.

  5. [optativo] Consultad las soluciones de los ejercicios Ficheros (4).

Ejercicios de repaso

El examen de este año tendrá una estructura similar al del año pasado: tres ejercicios interactivos y cuatro dibujos SVG (sin bucles y con bucles).

Como ejercicios de repaso:

  1. Haced los exámenes de años anteriores.
  2. Haced los ejercicios Ejercicios adicionales, que son una selección de ejercicios de exámenes de años anteriores. la mayoría están también en la página de exámenes, pero también hay ejercicios de exámenes anteriores al curso 15/16.

Quincena Q15: del 06/05/19 al 19/05/19

Nota: Las lecciones y ejercicios de esta semana no van para examen.

Para esta quincena he querido preparar una introducción a la programación de videojuegos y a la programación orientada a objetos mediante la biblioteca pygame, pero el material no está terminado. Espero tenerlo a lo largo del mes de mayo. Como es material que no va para examen, podéis abordarlo en el futuro.

Juegos con pygame

  1. Leed la lección Juegos con pygame: Pong

    Esta lección muestra la programación de un juego de Pong a partir de cero.

  2. Haced los ejercicios Pong (1).

    Estos ejercicios se pueden hacer al mismo tiempo que se lee la lección Juegos con pygame: Pong, para confirmar que se van entendiendo los elementos que se van añadiendo al programa.

  3. Haced los ejercicios Pong (2).

    Estos ejercicios se pueden hacer una vez terminada la lección Juegos con pygame: Pong, para confirmar que se entiende el funcionamiento del programa propuesto.