Saltar a contenido

1.1.1.-Pseudocódigo

1.1.1. El pseudocódigo

Idea principal

El pseudocódigo permite describir la lógica de un algoritmo con una sintaxis sencilla, sin quedar atado a Python ni a otro lenguaje. Es un puente entre la idea y el código.

En el apartado 1.1 vimos que primero conviene analizar el problema y separar entradas, procesamiento y salidas. Ahora daremos forma a esos pasos. No buscamos escribir un programa ejecutable: buscamos que otra persona pueda leer el algoritmo, comprobarlo y traducirlo después a un lenguaje como Python.

Este contenido trabaja el RA 1 del módulo de Programación.

Código Descripción
RA 1 Reconoce la estructura de un programa informático, identificando y relacionando los elementos propios del lenguaje de programación utilizado.
CE a Se han identificado los bloques que componen la estructura de un programa informático.
CE d Se han identificado los distintos tipos de variables y la utilidad específica de cada uno.
CE g Se han clasificado, reconocido y utilizado en expresiones los operadores del lenguaje.

Qué deberías saber al terminar

Al acabar este apartado deberías poder:

  • distinguir pseudocódigo de código ejecutable;
  • declarar y utilizar variables, entradas y salidas;
  • elegir entre secuencia, condición y repetición;
  • revisar un algoritmo sencillo y detectar un posible bucle infinito.

1. Características del pseudocódigo

El pseudocódigo es una representación textual de un algoritmo. Utiliza palabras comprensibles y una estructura parecida a la de los lenguajes de programación, pero no tiene una sintaxis única ni puede ejecutarse directamente.

Sus características principales son:

  • es independiente del lenguaje de programación elegido;
  • usa un conjunto pequeño de instrucciones y estructuras;
  • facilita la lectura, la revisión y la comunicación entre personas;
  • debe describir una solución precisa y finita;
  • permite aplicar sangría para mostrar qué instrucciones pertenecen a cada bloque.

No es código Python

Inicio, Fin, Lee y Escribe son convenciones de este material. En Python se traducirán, por ejemplo, a input() y print(). La equivalencia exacta se estudiará en el apartado 1.2.

2. Estructura básica

Todo algoritmo de este tema comienza con Inicio y termina con Fin. Entre ambas marcas escribimos las instrucciones en el orden en que deben ejecutarse.

Inicio
    instrucción 1
    instrucción 2
    ...
    instrucción N
Fin

Podemos resolver el ejemplo de la compra con una secuencia sencilla:

Inicio
    Escribe "Introduce el precio:"
    Lee precio
    Escribe "Introduce el porcentaje de descuento:"
    Lee descuento
    importe_descuento = precio * descuento / 100
    total = precio - importe_descuento
    Escribe "El total es " + total
Fin

La sangría no es un adorno: permite ver qué instrucciones forman parte de un bloque. Mantener cuatro espacios facilita su futura traducción a Python.

Estas son las instrucciones y estructuras que utilizaremos en el resto del apartado:

Elemento Para qué sirve Ejemplo
Inicio y Fin Marcar el principio y el final del algoritmo. Inicio ... Fin
Lee Recibir un dato. Lee edad
Escribe Mostrar un mensaje o resultado. Escribe total
= Asignar un valor a una variable. total = precio * cantidad
Si ... Sino Elegir entre caminos según una condición. Si nota >= 5 entonces
Según Elegir entre varias opciones. Según opcion entonces
Mientras Repetir mientras se cumpla una condición. Mientras contador > 0 hacer
Para Repetir un número conocido de veces. Para i en (1...10) hacer

3. Ejemplo completo: mantenimiento de una lámpara

Vamos a transformar el problema presentado en el apartado 1.1 en un algoritmo. El objetivo es decidir qué hacer cuando una lámpara no funciona. Primero comprobamos si está enchufada; después revisamos el foco y, si el problema continúa, sustituimos la lámpara.

Inicio
    Si la lámpara funciona entonces
        Escribe "No es necesario realizar ninguna acción"
    Sino
        Si la lámpara no está enchufada entonces
            Escribe "Enchufar la lámpara"
        FinSi

        Si el foco está quemado entonces
            Escribe "Reemplazar el foco"
        FinSi

        Si la lámpara sigue sin funcionar entonces
            Escribe "Comprar una lámpara nueva"
        FinSi
    FinSi
Fin

El mismo algoritmo puede representarse gráficamente. Los rombos representan decisiones y los rectángulos representan acciones:

Diagrama de flujo del mantenimiento de una lámpara

Resumen visual de las decisiones y acciones del mantenimiento.

El siguiente diagrama muestra con más detalle todos los caminos del pseudocódigo anterior, incluidos los casos en los que la lámpara sí funciona o vuelve a funcionar después de una acción:

flowchart TD
    inicio([Inicio]) --> funciona{"¿La lámpara funciona?"}
    funciona -->|Sí| nada["No es necesario realizar ninguna acción"]
    nada --> fin([Fin])
    funciona -->|No| enchufada{"¿Está enchufada?"}
    enchufada -->|No| enchufar["Enchufar la lámpara"]
    enchufada -->|Sí| foco{"¿El foco está quemado?"}
    enchufar --> foco
    foco -->|Sí| reemplazar["Reemplazar el foco"]
    foco -->|No| sigue{"¿Sigue sin funcionar?"}
    reemplazar --> sigue
    sigue -->|Sí| comprar["Comprar una lámpara nueva"]
    sigue -->|No| fin
    comprar --> fin

La ventaja de tener las dos representaciones es que podemos comprobar la solución desde dos perspectivas: el pseudocódigo muestra las instrucciones en orden y el diagrama permite visualizar rápidamente los caminos posibles.

4. Datos, variables y operadores

Una variable es un nombre asociado a un dato cuyo valor puede cambiar durante la ejecución del algoritmo. Usaremos nombres descriptivos y en minúsculas, como precio, total o numero_intentos.

En este nivel trabajaremos con:

Elemento Utilidad Ejemplo
Lee Recibir un dato de la persona usuaria Lee edad
Escribe Mostrar un mensaje o resultado Escribe total
Variable Guardar un dato para usarlo después total = 12.50
Literal Valor escrito directamente 10, "Hola", verdadero
Operador Calcular o comparar valores +, >, ==

Los operadores más habituales son:

  • aritméticos: +, -, *, /, // y %;
  • relacionales: ==, !=, >, <, >= y <=;
  • lógicos: and, or y not.

Una expresión combina valores, variables y operadores, y produce un resultado. Por ejemplo, precio * cantidad calcula el importe de una línea de pedido y edad >= 18 produce un valor lógico.

5. Estructuras de control

Las estructuras de control determinan el orden de ejecución de las instrucciones. En pseudocódigo utilizaremos tres formas básicas.

5.1. Secuencia

Las instrucciones se ejecutan una detrás de otra:

Inicio
    Lee base
    Lee altura
    area = base * altura / 2
    Escribe area
Fin

5.2. Condición

Una condición permite elegir un camino según el resultado sea verdadero o falso. En una condicional doble se utiliza Sino:

Inicio
    Lee nota
    Si nota >= 5 entonces
        Escribe "Apto"
    Sino
        Escribe "No apto"
Fin

Cuando hay más de dos posibilidades podemos encadenar condiciones o utilizar Según:

Según opcion entonces
    1:
        Escribe "Alta"
    2:
        Escribe "Baja"
    Otro:
        Escribe "Opción no válida"

5.3. Repetición

Mientras repite un bloque mientras se cumpla una condición. La condición se comprueba antes de cada vuelta:

Inicio
    contador = 3
    Mientras contador > 0 hacer
        Escribe contador
        contador = contador - 1
    Escribe "Fin de la cuenta atrás"
Fin

El cambio de contador garantiza que la condición acabará siendo falsa. Si no modificamos ninguna variable relacionada con la condición, podemos crear un bucle infinito. Para resulta apropiado cuando conocemos el número de repeticiones:

Inicio
    suma = 0
    Para i en (1...10) hacer
        suma = suma + i
    Escribe "La suma es " + suma
Fin

Cómo escoger una estructura

Usa una secuencia para pasos que siempre ocurren, una condición para elegir entre alternativas y una repetición para ejecutar varias veces un bloque. Esta clasificación se mantendrá cuando traduzcamos el algoritmo a Python.

6. De la idea al pseudocódigo

Antes de escribir instrucciones, conviene anotar:

  1. qué datos necesitamos;
  2. qué resultado esperamos;
  3. qué operaciones relacionan esos datos;
  4. qué decisiones o repeticiones aparecen.

Por ejemplo, para mostrar el mayor de dos números:

Inicio
    Lee numero_a
    Lee numero_b

    Si numero_a > numero_b entonces
        Escribe numero_a + " es mayor"
    Sino
        Si numero_b > numero_a entonces
            Escribe numero_b + " es mayor"
        Sino
            Escribe "Son iguales"
Fin

El caso de igualdad no debe omitirse: probar casos distintos ayuda a comprobar que el algoritmo cubre todas las posibilidades razonables.

7. Buenas prácticas y revisión

  • Utilizar una instrucción por línea y una sangría coherente.
  • Elegir nombres descriptivos para las variables.
  • Escribir condiciones que puedan evaluarse claramente como verdaderas o falsas.
  • Revisar que cada Mientras tenga una forma de terminar.
  • Probar el algoritmo con valores normales, extremos e iguales.
  • Mantener el pseudocódigo independiente de detalles propios de Python.

Comprueba tu comprensión

¿Qué salida produce el algoritmo de la cuenta atrás? ¿Qué ocurriría si elimináramos contador = contador - 1? Justifica la respuesta antes de ejecutarlo en un lenguaje real.

8. Resumen

  • El pseudocódigo describe la lógica, pero no es ejecutable.
  • Inicio, Fin, Lee y Escribe ayudan a representar la estructura básica.
  • Las variables almacenan datos y las expresiones los calculan o comparan.
  • Secuencia, condición y repetición son las estructuras de control esenciales.
  • Revisar casos límite y condiciones de salida mejora la calidad del algoritmo.

Conexión con 1.2

Ya podemos describir soluciones sin preocuparnos por la sintaxis concreta. En 1.2. Practica con un lenguaje traduciremos estos algoritmos a Python, ejecutaremos un primer programa y comprobaremos qué ocurre con los datos y los tipos.

Fuentes y referencias

Presentación