SdA 1: Introducción a la Programación en PSeInt
📌 Saber Básico A.2: Conceptos de instrucción y secuenciación, algoritmo vs. código
Ayer, en la entrada de Python, ya adelantamos las definiciones rápidas de instrucción, secuenciación, algoritmo y código como conceptos fundamentales. Hoy nos detenemos específicamente en ellas, porque este es su saber básico propio (A.2), y la programación didáctica pide trabajarlas apoyándonos en PSeInt y en diagramas de flujo, no solo en Python directamente. Ese es el paso que faltaba.
1. Instrucción y secuenciación
- Instrucción: una orden concreta y elemental que el ordenador puede ejecutar (leer un dato, calcular algo, mostrar un resultado…).
- Secuenciación: el hecho de que las instrucciones se ejecutan una detrás de otra, en el orden en que están escritas, salvo que una estructura de control (que veremos en el A.3) indique lo contrario.
Idea clave: un programa, en su forma más simple, es una secuencia de instrucciones. El orden importa: cambiar el orden de dos instrucciones puede cambiar completamente el resultado.
2. Algoritmo vs. código: la distinción que hoy toca fijar bien
- Algoritmo: una secuencia ordenada y finita de pasos lógicos que resuelve un problema, expresada en lenguaje natural o pseudocódigo, sin atarse a ningún lenguaje de programación concreto.
- Código (programa): la traducción de ese algoritmo a un lenguaje de programación específico (Python, en nuestro caso), con su sintaxis exacta.
Idea clave: el algoritmo es la idea; el código es una de las muchas formas posibles de escribir esa idea. El mismo algoritmo puede traducirse a Python, a C++, a Java… y seguiría siendo el mismo algoritmo. Lo que cambia es solo la forma de escribirlo, no la lógica.
3. Las tres formas de representar un algoritmo antes de programar
Antes de escribir código directamente, en esta unidad vamos a practicar representar el algoritmo de tres formas, de la más libre a la más formal:
| Representación | Qué es | Herramienta |
|---|---|---|
| Lenguaje natural | Los pasos descritos como los explicarías a otra persona | Papel, tu cabeza |
| Diagrama de flujo | Los pasos representados con símbolos gráficos normalizados y flechas que marcan el orden | Papel o PSeInt (lo genera automáticamente) |
| Pseudocódigo | Los pasos escritos con una sintaxis parecida a la de un lenguaje real, pero simplificada y en español | PSeInt |
Solo el último paso, ya en clase de programación propiamente dicha, es traducir ese pseudocódigo a código real (Python).
Símbolos básicos del diagrama de flujo
- Óvalo: inicio o fin del algoritmo
- Paralelogramo: entrada o salida de datos (leer, escribir)
- Rectángulo: un proceso o cálculo
- Rombo: una decisión (lo veremos en detalle en el A.3)
- Flechas: indican el orden de ejecución, es decir, la secuenciación
4. Ejemplo trabajado: un mismo algoritmo, tres formas distintas
Problema: pedir un número al usuario y decir si es par o impar.
a) En lenguaje natural:
- Pedir un número al usuario.
- Calcular el resto de dividir ese número entre 2.
- Si el resto es 0, decir “Es par”.
- Si no, decir “Es impar”.
b) Como diagrama de flujo:
Sí
No
Inicio
Leer número
¿número MOD 2 = 0?
Escribir “Es par”
Escribir “Es impar”
Fin
c) Como pseudocódigo en PSeInt:
Algoritmo ParOImpar
Definir numero Como Entero
Escribir "Introduce un número:"
Leer numero
Si numero MOD 2 = 0 Entonces
Escribir "Es par"
SiNo
Escribir "Es impar"
FinSi
FinAlgoritmo
d) Como código en Python (la traducción final, ya vista ayer):
numero = int(input("Introduce un número: "))
if numero % 2 == 0:
print("Es par")
else:
print("Es impar")
Fíjate: las cuatro representan exactamente el mismo algoritmo. Ni el diagrama ni el pseudocódigo “son menos programación” que el Python: son el mismo razonamiento lógico en distintos niveles de formalidad.
5. ¿Por qué no escribimos código directamente?
- Separar el diseño de la implementación permite centrarse primero en si la lógica es correcta, sin pelearte a la vez con la sintaxis exacta de un lenguaje.
- Un algoritmo bien diseñado es independiente del lenguaje: si mañana cambiamos de Python a otro lenguaje, el algoritmo (y el diagrama de flujo) siguen siendo válidos tal cual.
- PSeInt permite ejecutar y comprobar el pseudocódigo antes de traducirlo, por lo que los errores de lógica se detectan antes de complicarse con la sintaxis de Python.
📝 PARA TU LIBRETA (Resumen clave para copiar)
Copia en tu cuaderno estos 5 puntos:
- Instrucción: una orden elemental que ejecuta el ordenador. Secuenciación: el orden en el que se ejecutan, de arriba abajo.
- Algoritmo: la lógica de la solución, en lenguaje natural o pseudocódigo, independiente del lenguaje de programación.
- Código: la traducción concreta de un algoritmo a un lenguaje de programación específico (sintaxis exacta).
- Un mismo algoritmo se puede representar de tres formas antes de programar: lenguaje natural → diagrama de flujo → pseudocódigo (en PSeInt).
- Símbolos del diagrama de flujo: óvalo = inicio/fin, paralelogramo = entrada/salida, rectángulo = proceso, rombo = decisión, flecha = orden de ejecución.
PRÁCTICA
FICHA DE EJERCICIOS: DE LA IDEA AL ALGORITMO
Materia: Creación Digital y Pensamiento Computacional (1.º Bachillerato)
Saber Básico A.2: Conceptos de instrucción y secuenciación, algoritmo vs. código
Nombre y Apellidos: ____________________________________________________
Curso y Grupo: 1.º Bach. ____ | Fecha: __ /__ /2026
📖 Referencia rápida (consulta si tienes dudas)
Algoritmo NombreAlgoritmo
Definir variable Como Tipo
Escribir "texto"
Leer variable
Si condición Entonces
instrucción
SiNo
instrucción
FinSi
FinAlgoritmo
Símbolos del diagrama de flujo: óvalo = inicio/fin · paralelogramo = entrada/salida · rectángulo = proceso · rombo = decisión.
🧩 BLOQUE 1: Traza de Algoritmo y Predicción de Salida (15 min)
Analiza cada pseudocódigo e indica qué mostrará en pantalla.
1.1. Secuencia simple
Algoritmo Precio
Definir precio, descuento Como Real
precio <- 20
descuento <- precio * 0.1
precio <- precio - descuento
Escribir "Precio final: ", precio
FinAlgoritmo
- Evolución de las variables:
descuento = _____precio (final) = _____ - Salida por pantalla: ____________________________________________________
1.2. Secuencia con decisión
Algoritmo Acceso
Definir edad Como Entero
Escribir "Introduce tu edad:"
Leer edad
Si edad >= 16 Entonces
Escribir "Puedes sacarte el carné de ciclomotor"
SiNo
Escribir "Todavía no puedes"
FinSi
FinAlgoritmo
Si el usuario introduce 15, ¿qué muestra el algoritmo? ____________________________
Si el usuario introduce 16, ¿qué muestra? ____________________________
Reflexión: este algoritmo tiene una instrucción Si, que veremos en detalle en el próximo saber básico (A.3). Aun así, ¿en qué orden se ejecutan sus instrucciones? ¿Sigue habiendo secuenciación, o desaparece en cuanto aparece una decisión?
Respuesta: ____________________________________________________________________
🐛 BLOQUE 2: Depuración y Caza de Errores (15 min)
2.1. Pseudocódigo con errores
# PSEUDOCÓDIGO CON ERRORES:
Algoritmo Suma
Escribir "Introduce dos números:"
Leer a
Leer b
total <- a + b
Escribir "La suma es: ", total
- Errores encontrados(pista: falta declarar algo, y falta cerrar el algoritmo):
- Pseudocódigo corregido:
2.2. Algoritmo vs. código: la traducción no coincide
Un compañero escribió este algoritmo en lenguaje natural:
“Pide un número. Si el número es mayor que 100, dilo en voz alta como ‘Número grande’. Si no, di ‘Número pequeño’.”
Pero al traducirlo a Python, escribió esto:
numero = int(input("Introduce un número: "))
if numero > 100:
print("Número pequeño")
else:
print("Número grande")
- ¿El código es una traducción fiel del algoritmo? ____________________________
- ¿Qué ha fallado exactamente? ¿Es un error del algoritmo o un error de la traducción a código?
Respuesta: ____________________________________________________________________ - Corrige el código para que sí coincida con el algoritmo original:
✍️ BLOQUE 3: De la idea al algoritmo, en papel (20 min)
Para cada problema, complétalo en sus tres representaciones: lenguaje natural, diagrama de flujo (dibújalo a mano con los símbolos de la referencia) y pseudocódigo en PSeInt.
Problema A: Conversor de temperatura
“Un programa debe pedir una temperatura en grados Celsius y mostrarla convertida a grados Fahrenheit. La fórmula es: F = C × 9/5 + 32.”
a) Pasos en lenguaje natural:
b) Diagrama de flujo: (dibújalo en el espacio de abajo, con óvalo de inicio/fin, paralelogramos de entrada/salida y rectángulo de proceso)
c) Pseudocódigo en PSeInt:
Problema B: Comprobador de mayoría de edad
“Un programa debe pedir la edad de una persona y decir si es mayor o menor de edad (18 años).”
a) Pasos en lenguaje natural:
b) Diagrama de flujo: (usa también el rombo de decisión)
c) Pseudocódigo en PSeInt:
🔑 SOLUCIONARIO RÁPIDO (Para el profesor/a de guardia)
- Bloque 1.1:
descuento = 2.0,precio (final) = 18.0. Salida:Precio final: 18 - Bloque 1.2: con 15 → “Todavía no puedes”; con 16 → “Puedes sacarte el carné de ciclomotor”. La secuenciación sigue existiendo: las instrucciones se siguen ejecutando de arriba abajo, solo que una de ellas (
Si) decide cuál de dos caminos se sigue. - Bloque 2.1: Falta
Definir a, b, total Como Entero(o Real); falta la líneaFinAlgoritmoal final. - Bloque 2.2: El código no es fiel: ha invertido los mensajes de las dos ramas (dice “pequeño” cuando debería decir “grande” y viceversa). Es un error de traducción a código, no del algoritmo original, que estaba bien planteado.
numero = int(input("Introduce un número: ")) if numero > 100: print("Número grande") else: print("Número pequeño") - Problema A (PSeInt):
Algoritmo ConversorTemperatura Definir celsius, fahrenheit Como Real Escribir "Introduce la temperatura en Celsius:" Leer celsius fahrenheit <- celsius * 9/5 + 32 Escribir "En Fahrenheit es: ", fahrenheit FinAlgoritmo - Problema B (PSeInt):
Algoritmo MayoriaDeEdad Definir edad Como Entero Escribir "Introduce tu edad:" Leer edad Si edad >= 18 Entonces Escribir "Eres mayor de edad" SiNo Escribir "Eres menor de edad" FinSi FinAlgoritmo
