LOE/LOMLOE (BOE)Digitalización4º de Educación Secundaria Obligatoria7 min de lectura

Programación estructurada y algoritmos

El pensamiento computacional es una habilidad que nos permite abordar problemas complejos, comprenderlos y desarrollar soluciones que una computadora pueda ejecutar.

Lectura6 partesUn recorrido editorial y navegable.
Práctica12 preguntasTest y tarjetas de memoria para abrir después de leer.
Objetivo4º de Educación Secundaria ObligatoriaFormato rápido para comprobar si el tema encaja.
Parte 1

Fundamentos de Algoritmia y Pensamiento Computacional

Introducción a la resolución de problemas

El pensamiento computacional es una habilidad que nos permite abordar problemas complejos, comprenderlos y desarrollar soluciones que una computadora pueda ejecutar. El núcleo de esta habilidad es el algoritmo.

Un algoritmo se define como una secuencia ordenada y finita de pasos que conducen a la solución de un problema. Para que un algoritmo sea eficaz, debe cumplir tres fases críticas:

  1. Entrada (Input): Son los datos iniciales que necesitamos para trabajar.
  2. Proceso: Es el conjunto de operaciones y pasos lógicos que transforman la entrada.
  3. Salida (Output): Es el resultado final obtenido tras el procesamiento.

Un algoritmo debe ser preciso, definido (si se sigue dos veces, se obtiene el mismo resultado) y finito. Antes de escribir una sola línea de código, es vital realizar un análisis del problema para identificar qué datos tenemos y qué queremos lograr.

Representación gráfica de algoritmos

Para visualizar la lógica de un programa antes de programarlo, utilizamos los diagramas de flujo (o flujogramas). Estos utilizan una simbología estándar:

  • Óvalo: Inicio y fin del algoritmo.
  • Paralelogramo: Entrada o salida de datos (lectura/escritura).
  • Rectángulo: Proceso o instrucción (operaciones matemáticas, asignaciones).
  • Rombo: Decisión o condición (determina el camino a seguir según una pregunta de sí/no).

El diseño de flujogramas ayuda a detectar errores de lógica de forma visual y es una herramienta de comunicación esencial entre programadores.

El lenguaje del pseudocódigo

El pseudocódigo es un lenguaje intermedio entre el lenguaje humano y el lenguaje de programación. No tiene una sintaxis tan rígida como Python o C++, pero sigue una estructura lógica clara.

Su objetivo principal es la legibilidad. Al escribir pseudocódigo, utilizamos palabras clave como INICIO, LEER, MOSTRAR y FIN. Es fundamental incluir comentarios (anotaciones que el ordenador ignora) para explicar partes complejas del código, lo que facilita que otras personas (o nosotros mismos en el futuro) entiendan el programa.


Parte 2

Variables, Tipos de Datos y Operadores

Gestión de la información

En programación, necesitamos guardar datos para usarlos más tarde. Para ello usamos:

  • Variables: Espacios de memoria cuyo valor puede cambiar durante la ejecución.
  • Constantes: Valores que permanecen fijos (por ejemplo, el número π3,1416\pi \approx 3,1416).

El ámbito de una variable determina en qué parte del programa es accesible. Una variable global se puede usar en todo el código, mientras que una local solo existe dentro de una función específica.

Tipología de datos

No todos los datos son iguales. Los lenguajes de programación clasifican la información en:

  1. Numéricos: Enteros (int) y decimales o de coma flotante (float).
  2. Booleanos: Solo pueden tener dos valores: Verdadero o Falso.
  3. Cadenas de texto (Strings): Secuencias de caracteres alfanuméricos.

A veces es necesario realizar una conversión de tipos (casting). Por ejemplo, convertir el texto "25" en el número 25 para poder realizar operaciones matemáticas con él.

Operaciones lógicas y matemáticas

Los operadores permiten manipular las variables:

  • Aritméticos: Suma (++), resta (-), multiplicación (*), división (//) y resto de la división (%\%).
  • Relacionales: Comparan valores (==,!=,>,<,>=,<===, !=, >, <, >=, <=).
  • Lógicos: Permiten combinar condiciones mediante las tablas de verdad:
    • AND (Y): Verdadero solo si ambas condiciones son ciertas.
    • OR (O): Verdadero si al menos una es cierta.
    • NOT (NO): Invierte el valor de verdad.

Parte 3

Estructuras de Control de Flujo

Toma de decisiones

Las estructuras condicionales permiten que el programa tome diferentes caminos según se cumplan o no ciertas condiciones.

  • Estructura simple (if): Ejecuta un bloque de código solo si la condición es verdadera.
  • Estructura compuesta (else): Define qué hacer si la condición es falsa.
  • Condicionales anidados: Es una estructura if dentro de otra, permitiendo evaluar múltiples niveles de decisión.

Selección múltiple

Cuando tenemos muchas opciones posibles para una misma variable, usar muchos if resulta ineficiente. En su lugar, usamos la estructura según/caso (switch). Esta estructura evalúa una variable y salta directamente al caso que coincida con su valor. Es habitual incluir un caso por defecto para manejar situaciones no previstas.

Bucles y repeticiones

Los bucles permiten repetir un bloque de código varias veces:

  • Bucle Mientras (while): Repite el código mientras una condición sea verdadera. Es ideal cuando no sabemos cuántas veces necesitaremos repetir la acción.
  • Bucle Para (for): Se utiliza cuando sabemos de antemano el número de repeticiones (por ejemplo, recorrer una lista de 10 elementos).

Es crucial definir correctamente la condición de parada para evitar bucles infinitos, los cuales bloquean el sistema al no terminar nunca.


Parte 4

Modularización y Funciones

Diseño descendente (Top-Down)

El diseño descendente consiste en dividir un problema grande en subproblemas más pequeños y manejables. Esta técnica mejora la mantenibilidad del código, ya que es más fácil arreglar una pieza pequeña que un programa monolítico de miles de líneas.

Creación de funciones

Una función es un bloque de código reutilizable que realiza una tarea específica.

  • Definición: Se le asigna un nombre y se describe qué hace.
  • Parámetros y argumentos: Son los datos que la función recibe para trabajar.
  • Retorno de valores: Es el resultado que la función devuelve al programa principal tras finalizar su tarea.

Bibliotecas y librerías

No siempre es necesario programar todo desde cero. Las bibliotecas son conjuntos de funciones ya creadas por otros programadores. Mediante la importación de módulos, podemos usar funciones estándar para cálculos matemáticos complejos, manejo de archivos o gráficos, consultando siempre la documentación técnica para saber cómo utilizarlas.


Parte 5

Estructuras de Datos Estáticas

Listas y Arrays

Un array (o vector) es una colección de elementos del mismo tipo almacenados bajo un único nombre. Cada elemento se identifica mediante un índice, que representa su posición.

  • En la mayoría de los lenguajes de programación, los índices comienzan en 0.
  • Si tenemos un array de 5 elementos, sus índices serán 0, 1, 2, 3 y 4.

Manipulación de colecciones

Para trabajar con arrays, solemos utilizar bucles for para realizar un recorrido. Esto nos permite:

  • Buscar un elemento específico comparándolo uno a uno.
  • Modificar todos los datos en serie (por ejemplo, subir un 10% todos los precios de una lista).

Cadenas como arrays

En muchos aspectos, una cadena de texto se comporta como un array de caracteres. Esto permite medir su longitud, extraer subcadenas (partes del texto) o realizar la concatenación (unir dos o más cadenas para formar una nueva).


Parte 6

Depuración y Buenas Prácticas

Detección de errores

Programar implica, inevitablemente, cometer errores. Se dividen en:

  1. Errores de sintaxis: El código está mal escrito y el ordenador no lo entiende.
  2. Errores de lógica: El programa funciona pero no hace lo que debería. Para detectarlos, usamos pruebas de escritorio, que consisten en seguir el algoritmo manualmente con papel y lápiz.

Calidad del código

Un buen programador escribe código para humanos, no solo para máquinas. El Clean Code (código limpio) se basa en:

  • Indentación: Dejar espacios al principio de las líneas para mostrar la jerarquía de los bucles y condiciones.
  • Nomenclatura: Dar nombres descriptivos a las variables (usar precio_final en lugar de x).

Entornos de desarrollo (IDE)

Un IDE es una aplicación que facilita la programación. Incluye herramientas como:

  • Depurador (debugger): Permite ejecutar el programa paso a paso.
  • Puntos de interrupción (breakpoints): Pausan la ejecución en una línea elegida para inspeccionar el valor de las variables en ese instante.
  • Consola de salida: Donde se muestran los resultados y los mensajes de error del sistema.
Después de leer

Pasa a la práctica con dos bloques bien visibles

Cuando hayas leído los apuntes, abre el test para comprobar lo que has entendido o las flashcards para memorizar las ideas importantes. Los dos se abren en una ventana propia.

Siguiente paso

¿Quieres ir más allá
del artículo?

Encuentra el mismo tema en Houki con el resto de preguntas, la repetición espaciada, las correcciones completas y un progreso seguido en el tiempo.