Tema 1. Introducción a la programación

Currículo: esta unidad desarrolla todos los saberes básicos del Bloque A – Introducción a la programación correspondiente a 2º ESO. Además, se evalúan los criterios que puedes encontrar al final de esta página.

Tabla de contenidos

Bienvenidos al primer tema del curso. Ya el año pasado iniciamos nuestro camino en el mundo de la programación, pero es posible que no recuerdes muy bien de qué estamos hablando.

No te preocupes.

Este año comenzaremos recordando algunos conceptos básicos, profundizaremos en ellos, y descubriremos muchos otros que nos llevarán poco a poco a comprender cómo funcionan internamente los dispositivos que usamos a diario.

1.1. Qué es la programación

La palabra programación no solo se utiliza en computación; también la empleamos en nuestro día a día.

Por ejemplo, cuando organizamos el horario de nuestras clases, planeamos los pasos para realizar una receta o establecemos las tareas que haremos durante el fin de semana. En estos casos, estamos creando una secuencia de acciones que debemos seguir.

En el mundo de la computación, programar significa darle a un dispositivo, como un ordenador o un robot, una serie de instrucciones claras y ordenadas para que realice una tarea específica. Es como escribir una lista de pasos que la máquina debe seguir para hacer lo que queremos.

A este conjunto de instrucciones detalladas y ordenadas que nos ayudan a resolver un problema o completar una tarea le llamamos algoritmo. Piensa en un algoritmo como una receta de cocina: si sigues cada paso en el orden correcto, obtendrás un delicioso plato al final.

Estas son las características principales de un algoritmo:

  • Finito: un algoritmo siempre debe tener un final. Esto significa que después de seguir un número determinado de pasos, llegaremos a la solución o completaremos la tarea. Por ejemplo, al montar un juguete siguiendo las instrucciones, una vez que colocas la última pieza, el proceso termina.
  • Definido: cada paso del algoritmo debe ser claro y específico, sin dejar lugar a dudas. Las instrucciones deben ser fáciles de entender y no deben generar confusión. Por ejemplo, si en una receta dice “añadir dos huevos”, sabemos exactamente cuánto y qué añadir.
  • Preciso: el algoritmo debe indicar exactamente qué hacer en cada paso y en qué orden. No podemos cambiar el orden de los pasos al azar, porque podría afectar el resultado final. Siguiendo con la receta, si primero horneas el pastel antes de mezclar los ingredientes, no obtendrás el resultado deseado.

Supongamos que quieres enseñar a alguien cómo hacer un avión de papel.

Necesitas darle instrucciones claras y ordenadas:

  • Coger una hoja de papel rectangular.
  • Doblar la hoja por la mitad a lo largo y luego desdoblarla para marcar el centro.
  • Doblar las dos esquinas superiores hacia el centro para formar triángulos.
  • Doblar los bordes inclinados hacia el centro nuevamente para afinar la punta.
  • Doblar el avión por la mitad, dejando los pliegues anteriores hacia afuera.
  • Doblar las alas hacia abajo a cada lado.

Este es un algoritmo sencillo: tiene un inicio y un fin, los pasos son claros y específicos, y están en el orden correcto para lograr el objetivo.

Este libro puede ayudarte mucho a entender estos conceptos la primera vez que te aproximas al estudio de los algoritmos.

1.2. Lenguajes de programación

Para que los ordenadores puedan entender y realizar las tareas que les pedimos, necesitamos comunicarnos con ellos en un idioma que ellos entiendan. Este «idioma» es lo que llamamos un lenguaje de programación.

Cuando escribimos una serie de instrucciones usando un lenguaje de programación, creamos un programa informático. Es como escribir una guía paso a paso que el ordenador seguirá para hacer lo que queremos.

Existen diferentes tipos de lenguajes de programación, pero vamos a centrarnos en dos principales: los lenguajes textuales y los lenguajes visuales.

1.2.1. Lenguajes textuales

Los lenguajes textuales utilizan palabras y símbolos escritos para dar instrucciones al ordenador. Tienen sus propias reglas y formas de escribir, un poco como aprender un nuevo idioma con su gramática y vocabulario.

Escribimos código utilizando letras, números y símbolos. Seguimos reglas específicas (sintaxis) para que el ordenador entienda nuestras instrucciones.

Por ejemplo, Python es un lenguaje sencillo y popular para empezar a programar, o JavaScript, muy utilizado para hacer que las páginas web sean interactivas.

1.2.2. Lenguajes visuales

Los lenguajes visuales usan imágenes, bloques o formas en lugar de texto escrito. En vez de teclear código, construimos programas juntando piezas que encajan entre sí, como si fuera un puzle o bloques de construcción.

Arrastramos y soltamos bloques que representan diferentes acciones. Los bloques están diseñados para encajar solo donde tienen sentido, ayudándonos a evitar errores.

Por ejemplo: Scratch, es un lenguaje donde podemos crear historias, juegos y animaciones arrastrando bloques de colores, o Makecode Arcade, que permite crear juegos sencillos usando bloques.

Super Mario Bros. programado en Scratch.

Los lenguajes visuales son muy útiles, especialmente cuando estamos aprendiendo a programar. Veamos por qué:

  • Fáciles de entender: no necesitas aprender reglas complicadas de escritura. Las instrucciones ya están hechas y son fáciles de comprender.
  • Menos errores: al arrastrar bloques en lugar de escribir código, es menos probable cometer errores de escritura.
  • Aprendizaje visual: los bloques suelen estar organizados por colores y categorías, lo que ayuda a entender su función.
  • Orden lógico: los bloques solo encajan donde tienen sentido, guiándonos para construir programas correctamente.
  • Opciones limitadas: solo puedes usar las instrucciones disponibles en los bloques, lo que puede limitar la creatividad en proyectos más avanzados.
  • Complejidad reducida: es más difícil crear programas muy complejos o específicos.
  • Rendimiento: en proyectos muy grandes o con muchos gráficos, el programa puede funcionar más lento o tener problemas.

📌 Para que puedas comenzar a trabajar en los ejemplos que veremos a continuación, en los que sólo haremos un recordatorio del funcionamiento de Scratch, debes tener una cuenta de usuario registrado. Si ya la tienes de años anteriores puedes recuperarla y usarla. Si no la tienes o no eres capaz de recuperarla regístrate ahora en https://scratch.mit.edu/.

1.3. Elementos de los programas con lenguaje de bloques

Cuando usamos herramientas para programar con bloques, trabajamos en una pantalla especial que nos permite comunicarnos con el programa. Esta pantalla se llama interfaz. Piensa en la interfaz como el tablero de un juego donde puedes crear tus propias reglas y ver cómo se desarrollan.

La interfaz nos permite:

  • Programar: arrastrando y conectando bloques para construir nuestro programa.
  • Visualizar: observar cómo funciona nuestro programa en tiempo real.
  • Interactuar: utilizar botones, menús y otros elementos para controlar y mejorar nuestro proyecto.

Veamos los elementos más importantes que encontrarás en estas herramientas de programación por bloques.

1.3.1. Bloques de inicio

Todos los programas necesitan un punto de partida. Los bloques de inicio definen dónde comienza el programa.

En Scratch, hay un bloque que se parece a una bandera verde. Cuando haces clic en esta bandera, ¡tu programa empieza a funcionar!

1.3.2. Bloques de movimiento

Estos bloques determinan cómo y dónde se moverán nuestros personajes o elementos en la pantalla.

Por ejemplo, si estás creando un videojuego y quieres que tu personaje avance, usarías un bloque de movimiento que diga «mover 10 pasos hacia adelante».

1.3.3. Bloques de control

Son como los jefes de nuestro programa. Estos bloques determinan el orden en el que ocurren las cosas y cómo se ejecutan las acciones.

Por ejemplo, imaginad que queréis que un personaje salte tres veces. En lugar de decirle que salte una vez y repetir eso tres veces, podéis usar un bloque de bucle que diga «saltar» y configurarlo para que se repita tres veces. A eso le llamamos bucle.

O si queréis que algo suceda solo bajo ciertas condiciones, estos bloques también son la solución: «Si tocas una moneda, suma un punto».

1.3.4. Bloques de apariencia y sonido

¿Queréis cambiar el aspecto de vuestro personaje o añadir música de fondo? Estos bloques son los encargados.

Veamos algunos ejemplos.

Cambiar disfraz: si tu personaje es un oso y quieres hacerlo andar, puedes usar un bloque que diga «cambiar disfraz» para ir mostrando cada una de las posturas que tiene el oso y dar la apariencia de que anda.

Reproducir sonido: si pisas una flor en un videojuego y quieres que suene un efecto especial, puedes usar un bloque que diga «reproducir sonido de aplastar».

1.3.5. Bloques de eventos

Son los bloques que esperan que algo suceda para activarse. Son como los interruptores que encienden las luces cuando entra alguien en una habitación.

Por ejemplo: podéis tener un bloque que diga «Cuando se presione la tecla de flecha hacia arriba, hacer que el personaje salte». Así, cada vez que presionéis esa tecla, ¡vuestro personaje saltará!

1.3.6. Bloques de operadores

Son bloques que nos permiten realizar operaciones matemáticas o lógicas.

Por ejemplo: si en un juego tienes 5 monedas y recoges 3 más, necesitarás un bloque de operador que sume esos números para saber que ahora tienes 8 monedas.

Como has podido ver, los lenguajes de programación basados en bloques son como enormes cajas de herramientas. Cada bloque tiene su función y, al combinarlos de la forma adecuada, podéis crear desde sencillos programas hasta videojuegos completos. La magia reside en cómo decidís ensamblar estos bloques. Así que, ¡manos a la obra y a construir!

1.4. Secuencia de instrucciones. Medios de expresión de algoritmos.

Pongamos que queréis preparar un bocadillo de jamón y queso. Antes de empezar, probablemente ya tenéis en mente los pasos que debéis seguir: abrir el pan, poner el jamón, añadir el queso, cerrar el bocadillo… En programación, esta serie de pasos ordenados que seguimos se llama secuencia de instrucciones. Y, al conjunto de estos pasos diseñados para realizar una tarea concreta, lo llamamos algoritmo.

Por ejemplo: imaginaos un juego donde un personaje debe recoger una llave y luego abrir una puerta. La secuencia sería:

  1. Moverse hacia la llave.
  2. Recoger la llave.
  3. Moverse hacia la puerta.
  4. Usar la llave en la puerta.
  5. Entrar por la puerta abierta.

Si cambiamos el orden, ¡el personaje podría intentar abrir la puerta antes de tener la llave!

Lo que acabamos de hacer es expresar un algoritmo en lenguaje natural. Pero existen otras maneras de expresar un algoritmo:

  • Lenguaje Natural: es simplemente explicar el algoritmo con palabras, como si se lo estuvieras contando a un amigo. Por ejemplo: «Si quieres encender la televisión, primero coge el mando a distancia, luego pulsa el botón rojo, y por último selecciona el canal que deseas ver.»
  • Pseudocódigo: es una manera más estructurada y técnica de representar un algoritmo. No es exactamente código de programación, pero se asemeja y es fácil de convertir en código real. Observa este ejemplo para ver la televisión:
Algoritmo sencillo para describir el proceso “Ver un programa de televisión”.
  • Diagrama de Flujo: es una representación gráfica de un algoritmo. Utiliza formas y flechas para representar las instrucciones y el flujo del algoritmo. Por ejemplo, esta es una solución sencilla para gestionar el encendido del portátil de clase.

Estas plantillas te facilitarán mucho la elaboración de diagramas de flujo.

1.5. Generación de tareas repetitivas y condicionales

Piensa en tu rutina diaria. Hay ciertas acciones que haces una y otra vez, como lavarte los dientes o atarte los zapatos. En la programación, estas acciones repetitivas y las decisiones que tomamos (por ejemplo, si llueve llevaré paraguas, si no, no) se pueden representar mediante tareas repetitivas y condicionales. Veamos las opciones que tenemos con cada una de ellas.

1.5.1. Tareas repetitivas: Bucles

Un bucle es una estructura que nos permite repetir una o varias instrucciones múltiples veces. Imagina que quieres contar del 1 al 10. En lugar de escribir 10 líneas de código, podemos usar un bucle que repita la acción de sumar 1, 10 veces.

  • Bucle FOR: se utiliza cuando sabemos cuántas veces queremos que se repita una acción.

Por ejemplo: si decides hacer 10 flexiones, contarías cada una hasta llegar a 10.

  • Bucle WHILE: se utiliza cuando no sabemos cuántas veces se repetirá una acción, pero sí conocemos la condición bajo la cual debe seguir repitiéndose.

Por ejemplo: seguir escuchando música mientras estás de buen humor.

1.5.2. Tareas condicionales: Estructuras de decisión

Las estructuras condicionales nos permiten tomar decisiones en nuestros programas. Dependiendo de si se cumple una condición, el programa seguirá un camino u otro.

  • IF (Si…entonces): evalúa una condición y, si es verdadera, ejecuta ciertas acciones.
  • IF…ELSE (Si…entonces…si no): añade una alternativa en caso de que la condición no se cumpla.
  • SWITCH (Según…): permite evaluar varias condiciones y actuar cuando se cumpla cada una de ellas.

Nuestra vida cotidiana está llena de repeticiones y decisiones. En programación, podemos representar estas situaciones usando bucles y estructuras condicionales. Estas herramientas son básicas para crear programas útiles que se adapten a diferentes necesidades.

Y lo mejor es que, a medida que los comprendas y practiques, te darás cuenta de cómo se parecen a las decisiones y repeticiones que haces todos los días.

1.6. Pantallas de interacción con el usuario.

Todos, en algún momento, hemos jugado a un videojuego, utilizado una aplicación móvil o navegado por una página web. Lo que quizás no hayas notado es que, en todos estos casos, estamos usando «pantallas de interacción». Estas pantallas son el puente entre nosotros, los usuarios, y los programas.

1.6.1. ¿Qué es una pantalla de interacción?

Una pantalla de interacción, también conocida como interfaz de usuario, es el espacio donde los usuarios interactúan con una máquina, programa o dispositivo. Es lo que ves y con lo que interactúas cuando utilizas cualquier software.

Imagina un ascensor. Los botones que pulsas para seleccionar un piso son una forma de interfaz. El panel te muestra qué piso has seleccionado y cuándo llegas.

1.6.2. Elementos clave de las pantallas de interacción

  • Botones (button): permiten que el usuario realice acciones específicas, como enviar información, avanzar a la siguiente página o comenzar un juego.
  • Campos de texto (text field): espacios donde puedes escribir o introducir información, como tu nombre en un juego o tu dirección de correo electrónico en un formulario.
  • Imágenes y gráficos (image and graphic): estos elementos mejoran la estética y pueden proporcionar información visual.
  • Deslizadores y barras de desplazamiento (slider, range): permiten navegar a través de contenidos extensos o ajustar valores, como el volumen de la música.
  • Casillas de verificación (checkbox): permiten seleccionar uno o varios elementos de una lista disponible, simplemente pulsando sobre ellos. 
  • Botones radio (radio button): son como casillas de verificación en los que sólo es posible activar una de las opciones simultáneamente.
  • Ventanas emergentes (pop-ups): pequeñas ventanas que aparecen para proporcionar información adicional o avisar sobre algo.

1.6.3. Diseño centrado en el usuario

Cuando diseñamos una pantalla de interacción, es vital pensar en quién la usará. Por ello, es importante que sea:

  • Intuitiva: debe ser fácil de entender. Si los usuarios se sienten confundidos, es probable que abandonen la aplicación.
  • Atractiva: un buen diseño visual puede hacer que las personas quieran usar la aplicación durante más tiempo.
  • Adaptable: debe poder usarse en diferentes dispositivos, desde ordenadores hasta móviles.

Piensa en tu videojuego favorito. Seguramente, te resulta sencillo saber qué botón presionar para saltar, correr o recoger objetos, y esto es gracias a un diseño centrado en el usuario. Recuerda qué hizo que abandonaras la última vez una aplicación; es muy probable que el motivo estuviera relacionado con uno de los puntos anteriores.

1.6.4. La importancia de las pruebas

Una vez que se diseña una pantalla de interacción, es importante probarla. Esto nos permite detectar errores y mejorarla antes de que llegue al público general.

Imagina que has inventado un nuevo juguete. Antes de venderlo, se lo das a algunos amigos para que jueguen y te den su opinión. De esta manera, puedes hacer ajustes según lo que ellos te sugieran. Este proceso lo puedes repetir tantas veces como sea necesario hasta que la gran mayoría de los usuarios se encuentre satisfecho con tu creación. El mundo de las aplicaciones es exactamente igual; hasta que no sea probado por una cantidad suficiente de usuarios no alcanzarás un producto de calidad.

Probadores de juegos en una importante empresa de desarrollo.

Recuerda: las pantallas de interacción son la cara de los programas que usamos a diario. A través de ellas, podemos comunicarnos con el mundo digital de manera amigable.

La próxima vez que juegues a un videojuego o uses una aplicación, ¡fíjate en cómo está diseñada su interfaz y piensa en todo el trabajo que hay detrás!

1.7. Recordando Scratch

Si recuerdas, el año pasado realizamos todas las practicas de programación con Scratch, puesto que es una excelente manera de comenzar a dar los primeros pasos.

Sin embargo, es posible que hayas olvidado algunos de los conceptos importantes que necesitamos seguir ampliando este año. Por eso, te animo a que sigas estos tutoriales sobre cómo se construyen algunos videojuegos sencillos con Scratch:

PACMAN

Esquivar balones

Atrapar objetos

Saltos

Carreras

Flappy Bird

SNAKE

Laberintos

Rompecabezas

Memoria visual

Preguntas y respuestas

Plataformas

Si quieres seguir profundizando en el mundo de Scratch, aquí tienes una buena opción.

1.8. Prácticas de programación

Este año, como hemos avanzado antes, vamos a ir un poco más allá practicando con otra aplicación parecida pero un poco más compleja, que nos va a permitir crear videojuegos de una manera mucho más efectiva. Se llama MakeCode Arcade, y si terminas dominándolo, podrás crear videojuegos de altísima calidad.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *