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.
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:
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,orynot.
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:
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:
Cuando hay más de dos posibilidades podemos encadenar condiciones o utilizar
Según:
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:
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:
- qué datos necesitamos;
- qué resultado esperamos;
- qué operaciones relacionan esos datos;
- 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
Mientrastenga 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,LeeyEscribeayudan 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¶
- Python Software Foundation: el tutorial de Python.
- Aprende con Alf: fundamentos de programación.
- Joyanes Aguilar, Luis. Fundamentos de programación.