Pseudocódigo
Introducción al uso del pseudocódigo como herramienta para el diseño y planificación de algoritmos, antes de escribir programas en un lenguaje concreto.
Introducción
Antes de comenzar a programar en un lenguaje concreto, es muy útil tener una visión clara y estructurada de lo que queremos que haga nuestro programa. Aquí es donde entra en juego el pseudocódigo, una herramienta que nos permite describir algoritmos utilizando un lenguaje intermedio, cercano al lenguaje natural, pero con una estructura lógica.
El pseudocódigo facilita la planificación de soluciones antes de traducirlas a un lenguaje de programación real. Nos ayuda a centrarnos en la lógica del problema sin preocuparnos por la sintaxis específica del lenguaje. Es ideal para aprender a resolver problemas de forma ordenada y desarrollar el pensamiento computacional.
Conocimiento previo
Referencias
- Cambridge International - Pseudocode Guide for Teachers (PDF)
- Wikipedia - Pseudocode
- Joyanes Aguilar, L. (2020). Fundamentos de programación. McGraw-Hill. ISBN: 978-607-15-1468-4.
Índice
- ¿Qué es el pseudocódigo?
- Operadores y palabras reservadas
- Tipos de datos
- Variables y constantes
- Estructuras de control
5.1. Secuencial
5.2. Alternativa
5.3. Iterativa - Estructuras modulares
6.1. Procedimientos
6.2. Funciones
6.3. Paso de paramétros
6.4. Funciones predefinidas - Estructuras de datos complejas
7.1. Vectores, Arreglos y Arrays
7.2. Matrices - Recursividad
- Operaciones de entrada y salida de datos
- Herramientas para trabajar con pseudocódigo
- Ejercicios
1. ¿Qué es el pseudocódigo?
El pseudocódigo es una herramienta muy útil para diseñar y entender algoritmos antes de traducirlos a un lenguaje de programación específico. Se trata de un lenguaje parecido al lenguaje natural, que facilita la escritura de instrucciones de manera clara y sencilla para cualquier programador, sin importar el lenguaje que vaya a usar luego.
El pseudocódigo no es un lenguaje de programación en sí mismo, sino un sistema que usa expresiones limitadas para representar las estructuras básicas de control, que vimos en los paradigmas de programación.
Cuando escribimos pseudocódigo, buscamos expresar algoritmos que tengan una solución finita, con un único punto de inicio. Esta forma de estructurar los algoritmos nos ayuda mucho a la hora de traducirlos después a un lenguaje de programación real.
2. Operadores y palabras reservadas
Aunque no existe una norma estricta para escribir pseudocódigo, es recomendable seguir ciertas convenciones que faciliten su posterior traducción a código de un lenguaje de programación.
Operadores:
Son símbolos o palabras clave que se utilizan en los lenguajes para realizar operaciones sobre uno o más valores (llamados operandos). Estas operaciones pueden ser matemáticas, lógicas, de comparación, entre otras
Tipo | Operadores |
---|---|
Aritméticos | + - * / Div Mod ^ |
Relacionales | = < <= > >= <> |
Lógicos | and or not |
Asignación | ← |
Comentarios | // |
Palabras reservadas:
Son palabras propias del lenguaje que tienen un significado especial y un uso específico. No se pueden usar literalmente como nombres de variables, funciones u otros identificadores porque están reservadas para controlar la estructura y funcionamiento del programa.
Español | Inglés | Descripción |
---|---|---|
Inicio | Start | Marca el comienzo del algoritmo o programa. |
Fin | End | Indica el final del algoritmo o programa. |
Si | If | Condicional que ejecuta un bloque si la condición es verdadera. |
Entonces | Then | Indica la acción a tomar cuando la condición del “Si” es verdadera. |
Si no | Else | Bloque alternativo que se ejecuta si la condición del “Si” es falsa. |
Otro | Otherwise | Alternativa para condiciones adicionales o por defecto. |
Para | For | Bucle que se repite un número determinado de veces. |
En | In | Usado para indicar el conjunto o rango en bucles o condiciones. |
Mientras | While | Bucle que se repite mientras la condición sea verdadera. |
Hacer | Do | Inicio del bloque que se ejecuta dentro de un bucle o condicional. |
Repetir | Repeat | Bucle que se ejecuta al menos una vez hasta que se cumpla una condición. |
Hasta que | Until | Condición que indica hasta cuándo debe continuar un bucle. |
Según | Switch | Estructura de selección múltiple basada en valores específicos. |
Caso | Case | Cada opción dentro de una estructura “Según” (switch). |
Procedimiento | Procedure | Subrutina que ejecuta una serie de instrucciones sin devolver valor. |
Función | Function | Subrutina que ejecuta instrucciones y devuelve un valor. |
Leer | Read | Captura datos ingresados por el usuario o desde una fuente externa. |
Escribir | Write | Envía información a la pantalla, a un fichero u otros dispositivos. |
Imprimir | Muestra información en pantalla o salida estándar. | |
Retornar | Return | Devuelve un valor desde una función o termina su ejecución. |
Incremento | Increment | Aumenta el valor de una variable (usualmente en bucles). |
Cada | Each | Indica iteración sobre cada elemento de una colección o conjunto. |
Por valor | By Value | Se pasa una copia del valor original al parámetro del procedimiento o función. |
Por referencia | By Reference | Se pasa la dirección de memoria de la variable original al parámetro del procedimiento o función. |
3. Tipos de datos
Los tipo de dato determina la naturaleza de la información, cómo se almacena en memoria y qué operaciones se pueden realizar sobre ella. Normalmente se utiliza para determinar una variable o constante.
Español | Inglés | Descripción |
---|---|---|
Carácter | Char | Un solo símbolo o letra. |
Cadena | String | Secuencia de caracteres. |
Entero | Integer | Número entero sin parte decimal. |
Decimal | Real | Número con parte decimal (general). |
Booleano | Boolean | Valor verdadero o falso. |
Fecha | Date | Representa fechas y horas. |
Los tipos de datos que se muestran son los más comunes y reconocidos en general, pero es posible encontrar otros tipos o subtipos que representen diferentes conjuntos o subconjuntos de datos, según el lenguaje de programación o el contexto de uso.
4. Variables y constantes
Las variables son etiquetas o nombres que representan lugares en la memoria donde se guardan valores temporales. Estas permiten almacenar, modificar y manipular datos durante la ejecución del algoritmo, simulando la lógica del programa sin necesidad de entrar en detalles técnicos específicos.
Para declarar una variable, usamos la siguiente estructura:
Inicio Definir numero1 como Entero;Fin
Aquí, Entero es el tipo de dato y numero1 el nombre de la variable, que sirve para referenciarla.
Las variables pueden cambiar de valor mediante una operación llamada asignación, que reemplaza el valor anterior por uno nuevo. Por ejemplo:
Inicio Definir numero1 como Entero; numero1 ← 5; // Se cambia el valor de 5 por 10 en la variable numero1 numero1 ← 10;Fin
Por otro lado, las constantes son valores fijos que no cambian durante la ejecución del programa. Se suelen nombrar con letras mayúsculas para hacerlas más visibles y facilitar su comprensión. La declaración es similar a la de las variables, pero solo se asigna un valor una vez, que no podrá modificarse después.
Ejemplo de constantes:
Inicio Definir PI como Real; PI ← 3,14159; Definir LIMITE_MAXIMO como Entero; LIMITE_MAXIMO ← 500;Fin
5. Estructuras de control
Las estructuras de control permiten definir el flujo de ejecución de un algoritmo. En pseudocódigo, estas estructuras siguen el estilo de la programación estructurada, dividiendo el programa en bloques lógicos. Podemos clasificarlas en tres grandes grupos: secuencial, alternativa e iterativa.
5.1. Secuencial
Las instrucciones se ejecutan en el orden en que aparecen, una detrás de otra. No hay decisiones ni repeticiones: simplemente, el programa sigue un camino lineal, de arriba a abajo.
Inicio <instrucción1> ... <instrucciónN>Fin
5.2. Alternativa
Estas estructuras permiten que el algoritmo tome decisiones. Según una condición, se ejecutará una parte del código u otra.
1. Alternativa simple (If)
Se ejecuta un bloque de instrucciones solo si se cumple una condición booleana.
Si <condición> Entonces <instrucciones>Fin Si
2. Alternativa doble (If-Else)
Permite ejecutar un bloque u otro, según se cumpla o no la condición.
Si <condición> Entonces <instrucciones1>Si no <instrucciones2>Fin Si
3. Alternativa múltiple (Switch)
Permite evaluar una expresión contra múltiples casos posibles.
Según <expresión> Hacer Caso <valor1> <instrucciones1> Caso <valor2> <instrucciones2> ... Otro caso <instruccionesN>Fin Según
Esta estructura también puede implementarse anidando varias estructuras Si - Si no.
Si <condición1> Entonces <instrucciones1>Si no Si <condición2> Entonces <instrucciones2> Si no Si <condición3> Entonces <instrucciones3> Si no <instrucciones4> Fin Si Fin SiFin Si
5.3. Iterativa
Estas estructuras permiten repetir un bloque de instrucciones mientras se cumpla una condición o durante un número de veces determinado.
1. Iteración con salida al principio (While)
Primero evalúa la condición. Si es verdadera, ejecuta las instrucciones. Si no, sale del bucle.
Mientras <condición> Hacer <instrucciones>Fin Mientras
2. Iteración con salida al final (Do-While)
Primero se ejecutan las instrucciones y luego se comprueba la condición.
Hacer <instrucciones>Mientras <condición>
Esta estructura también se puede encontrar como Repeat
. Es lo mismo.
Repetir <instrucciones>Hasta Que <condición>
3. Iteración con contador (For)
Utiliza una variable de control que se incrementa o decrementa hasta alcanzar un límite.
Con incremento positivo:
Definir i como Entero;Para i ← 1 Hasta N Con paso Incremento 1 Hacer <instrucciones>Fin Para
Con incremento negativo:
Definir i como Entero;Para i ← N Hasta 1 Con paso Incremento -1 Hacer <instrucciones>Fin Para
4. Iteración para cada elemento (For Each)
Recorre todos los elementos de un conjunto o lista.
Definir conjunto[N] Como Entero;Para Cada elemento En conjunto Hacer <instrucciones>Fin Para Cada
El uso de este tipo de estructura requiere conocer los tipos de datos complejos, que se explican en el siguiente apartado: Vectores, Arreglos y Arrays
6. Estructuras modulares
En programación, descomponer un problema en partes más pequeñas y manejables es fundamental para mejorar la organización, reutilización y legibilidad del código. Una de las formas más comunes de hacerlo es mediante estructuras modulares, como los procedimientos y funciones.
Podemos utilizar pseudocódigo para representar de manera sencilla esta descomposición modular, sin necesidad de utilizar un lenguaje de programación específico.
6.1. Procedimientos
Un procedimiento es un bloque de instrucciones independiente que recibe un nombre (Por convención, suele utilizarse un verbo en infinitivo, y la primera letra se escribe en mayúscula, para indicar la acción que realiza) y se ejecuta cuando es invocado desde otro bloque de código o desde otro programa.
Además, puede recibir uno o más parámetros de entrada (también llamados argumentos), que son variables acompañadas de su tipo de dato. Estos parámetros permiten al procedimiento trabajar con información concreta, adaptando su comportamiento a los valores recibidos. Es importante tener en cuenta que no es obligatorio definir parámetros. Si el procedimiento no necesita recibir información, se puede indicar su nombre seguido de paréntesis vacíos.
Una vez invocado, el procedimiento ejecuta todas las instrucciones definidas en su interior hasta llegar al final del bloque. Después, retorna el control al programa o bloque que lo llamó, pero no devuelve ningún valor como salida.
Sintaxis general
Procedimiento nombre (parámetro1 tipo, parámetro2 tipo, …) <instrucciones>Fin Procedimiento
- Ejemplo 1: Procedimiento sin parámetros
En este ejemplo, se define un procedimiento que no recibe argumentos. Por lo tanto, en su llamada se indicará únicamente el nombre seguido de paréntesis vacíos.
Procedimiento MostrarMensaje() Escribir "Este es un mensaje";Fin Procedimiento
Inicio MostrarMensaje();Fin
- Ejemplo 2: Procedimiento con parámetro
Utilizando el mismo ejemplo anterior, se añade un parámetro al procedimiento para mostrar una información.
Procedimiento MostrarMensaje(mensaje Cadena) Escribir "El parámetro recibido es: ", mensaje;Fin Procedimiento
Inicio Definir saludo Como Cadena; saludo ← "Hola"; MostrarMensaje(saludo);Fin
6.2. Funciones
Una función es similar a un procedimiento, con la diferencia de que siempre devuelve un valor como resultado de su ejecución. También puede recibir parámetros de entrada.
Sintaxis general
Función nombre (parámetro1 tipo, parámetro2 tipo, …) : tipoRetorno <instrucciones> ... Retornar valor;Fin Función
Ejemplo: Función que suma dos números
Función Sumar(a Entero, b Entero) : Entero Definir resultado como Entero; resultado ← a + b; Retornar resultado;Fin Función
Inicio Definir x, y, suma Como Entero; Imprimir "Introduce el primer número:"; Leer x; Imprimir "Introduce el segundo número:"; Leer y; suma ← Sumar(x, y); Imprimir "El resultado es: ", suma;Fin
6.3. Paso de paramétros
Tanto en los procedimientos como en las funciones es posible enviar parámetros, que son valores o variables que se utilizan dentro del cuerpo del bloque.
Los parámetros permiten que un procedimiento o función trabaje con datos externos, adaptando su comportamiento en función de los valores que recibe. De esta forma, se evita escribir el mismo código varias veces, reutilizando el bloque con diferentes datos.
Dependiendo de cómo se envíen los datos al procedimiento o función, los parámetros pueden comportarse de dos formas:
- Paso del parámetro por valor
En el paso por valor, al procedimiento o función se le envía una copia del dato original. Esto significa que cualquier cambio que se haga sobre el parámetro no afecta al valor original de la variable en el programa principal.
Procedimiento Incrementar(x Entero Por Valor) x ← x + 1;Fin Procedimiento
Inicio Definir x Como Entero; x ← 5; Escribir x; Incrementar(x); Escribir x;Fin
Al ejecutar el ejemplo, vemos que el valor de x sigue siendo el mismo.
55
- Paso del parametro por referencia
En el paso por referencia, al procedimiento o función se le envía la dirección de memoria de la variable original. Esto implica que cualquier cambio sobre el parámetro modificará directamente el valor de la variable original.
Procedimiento Incrementar(x Entero Por Referencia) x ← x + 1;Fin Procedimiento
Inicio Definir x Como Entero; x ← 5; Escribir x; Incrementar(x); Escribir x;Fin
Al ejecutar el ejemplo, no ocurrirá como en el anterior, esta vez x va a tener diferente valor, una vez llamado al procedimiento.
56
¿Cuándo utilizar una forma u otra?
- Se utilizará por valor, cuando queremos proteger el dato original y evitar modificaciones. Es útil si solo necesitamos leer o trabajar temporalmente con el dato.
- Se utilizará por referencia, Cuando necesitamos que el procedimiento o función modifique el valor de la variable original. Es útil, por ejemplo, para devolver resultados o actualizar valores.
6.4. Funciones predefinidas
En pseudocódigo, al igual que en la mayoría de los lenguajes de programación, existen funciones predefinidas que nos permiten realizar operaciones comunes sin necesidad de escribir todo el procedimiento desde cero.
Estas funciones están ya integradas en la gran mayoria de lenguajes y nos permiten trabajar con números, cadenas de texto y operaciones lógicas de forma más rápida y sencilla. Usarlas adecuadamente nos ayuda a escribir algoritmos más claros y no tener que desarrollar desde cero estas operaciones.
A continuación se muestran algunas funciones predefinidas:
Son funciones que permiten realizar operaciones numéricas avanzadas.
Raiz(n)
→ Devuelve la raíz cuadrada den
.Potencia(base, exponente)
→ Calcula la potencia de un número.Abs(n)
→ Devuelve el valor absoluto den
.Redon(n)
→ Redondea el númeron
al entero más cercano.Aleatorio(inf, sup)
→ Devuelve un número aleatorio entre los valores indicados.
Estas funciones nos permiten trabajar con textos o palabras (también llamadas cadenas de caracteres).
Longitud(cadena)
→ Devuelve cuántos caracteres tiene la cadena.SubCadena(cadena, inicio, fin)
→ Extrae una parte de la cadena.Concatenar(cad1, cad2)
→ Une dos cadenas en una sola.Mayusculas(cadena)
yMinusculas(cadena)
→ Convierte todo el texto a mayúsculas o minúsculas.
7. Estructuras de datos complejas
Además de los tipos de datos simples como enteros, reales o cadenas, existen estructuras de datos complejas que nos permiten almacenar y manejar colecciones de valores relacionados. Las dos estructuras más comunes son los vectores y las matrices.
Con el conocimiento que tenemos hasta ahora, si queremos almacenar en memoria el nombre de una fruta, creamos una variable. Pero, ¿qué pasa si ahora queremos almacenar una lista de frutas, por ejemplo, 100 frutas? ¿Tendríamos que crear 100 variables diferentes? Eso sería inviable y poco práctico.
Por eso, existen estructuras de datos que facilitan el almacenamiento ordenado de múltiples datos relacionados y permiten su manipulación mediante índices. Estas estructuras nos ayudan a gestionar colecciones de datos de forma eficiente y organizada.
7.1. Vectores, Arreglos y Arrays
Un vector, arreglo o array son términos que sirve para representar un conjunto de elementos del mismo tipo almacenados en una sola dimensión, es decir, una lista ordenada. Cada elemento se accede mediante un índice, que indica su posición dentro del vector.
** Declaración**
Su sintaxis es similar a la de una variable pero ahora se indica entre [ ]
la cantidad númerica de elementos. Hay que tener en cuenta que todos los elementos deben ser del mismo tipo. No es posible tener un vector con diferentes tipo de datos.
Definir numeros[5] Como Entero; // Vector con 5 elementos
Acceso y recorrido Para acceder a los elementos de un vector, se utiliza un índice, que representa la posición del elemento dentro del mismo. En este caso, el índice comenzará en 1, y cada posición se identifica por su número de orden.
El índice nunca debe superar el límite establecido en la declaración del vector. Por ejemplo, si se ha declarado un vector con 5 elementos, no es válido acceder al índice 6 o superior, ya que se estaría intentando acceder a una posición que no existe en memoria.
numero[2] ← 7; // Se añade el valor 7 a la posicion 2
Escribir "El valor en la posicion 2 es: ", numero[2];
Para recorrer los registros de los vectores se empleará un bucle.
// Añadir valores a los elementos del vectorPara i ← 1 Hasta 5 Hacer Escribir "Introduce el número ", i, ":"; Leer numeros[i];Fin Para
// Leer los valores de los elementos del vectorPara i ← 1 Hasta 5 Hacer Escribir "El número en la posición ", i, " es: ", numeros[i];Fin Para
7.2. Matrices
Una matriz es una estructura bidimensional que almacena datos en filas y columnas. Es útil para representar tablas, mapas, imágenes o cualquier tipo de información que necesite un doble índice para su acceso. Una forma sencilla de entenderlo es pensar en el tablero del juego Hundir la flota, donde cada casilla se localiza con una coordenada compuesta por una fila y una columna. Así funciona una matriz.
Declaración
Definir matriz[3,4] Como Real; // Matriz de 3 filas y 4 columnasDefinir tablero[10,10] Como Entero; // Matriz de 10 filas y 10 columnas
Acceso y recorrido Se accede a cada elemento con dos índices: fila y columna.
matriz[1,1] ← 4.5 // Se añade el valor 4.5 a la posicion 1,1
Escribir "El valor en la posicion 1,1 es: ", matriz[1,1]
Para recorrer las filas y columnas de la matriz se empleará dos bucles anidados
// Añadir valores a la matrizPara i ← 1 Hasta 3 Hacer Para j ← 1 Hasta 4 Hacer Escribir "Introduce el valor para la posición (", i, ",", j, "):"; Leer matriz[i,j]; Fin ParaFin Para
// Mostrar los valores de la matrizPara i ← 1 Hasta 3 Hacer Para j ← 1 Hasta 4 Hacer Escribir "El valor en (", i, ",", j, ") es: ", matriz[i,j]; Fin ParaFin Para
8. Recursividad
La recursividad es una técnica de programación en la que una función (o procedimiento) se llama a sí misma para resolver un problema. Es especialmente útil cuando el problema puede dividirse en subproblemas del mismo tipo, más pequeños.
Aunque puede parecer compleja al principio, la recursividad permite crear soluciones elegantes y muy potentes. Sin embargo, es importante usarla con cuidado para evitar errores como llamadas infinitas o consumo excesivo de memoria.
Una función recursiva tiene dos partes fundamentales:
- Caso base: la condición que detiene la recursión.
- Llamada recursiva: la función se llama a sí misma con un nuevo valor, acercándose al caso base.
A continuación se va a mostrar un ejemplo de un contador hacia atrás, que imprime números desde n
hasta 1. Para entenderlo mejor, se presentarán dos versiones: una iterativa y otra recursiva.
- Forma iterativa:
Funcion ContarHaciaAtras(n: Entero) Para i ← n Hasta 1 Con Paso -1 Hacer Escribir i; Fin ParaFin Funcion
Inicio ContarHaciaAtras(5);Fin
- Forma recursiva
Funcion ContarHaciaAtras(n: Entero) Si n > 0 Entonces // caso base Escribir n; ContarHaciaAtras(n - 1); // llamada recursiva Fin SiFin Funcion
Inicio ContarHaciaAtras(5); // Llamada inicialFin
En la gran mayoría de los casos, un problema puede resolverse tanto de forma iterativa como recursiva. Sin embargo, la recursividad puede resultar más intuitiva y sencilla de aplicar en ciertos contextos, especialmente en problemas con estructura jerárquica o que pueden dividirse naturalmente en subproblemas.
Ejemplos clásicos donde la recursividad destaca por su claridad son el cálculo del factorial, la serie de Fibonacci o el recorrido de estructuras de datos como árboles y grafos. Estos problemas, aunque también pueden resolverse de forma iterativa, suelen volverse mucho más complejos de implementar sin recursión. En cambio, la recursividad permite expresar la solución de manera más directa, legible y elegante.
-
🔁 El problema puede dividirse en subproblemas del mismo tipo.
Por ejemplo, para calcular el factorial de un númeron
, basta con multiplicarn
por el factorial den - 1
, lo cual es el mismo tipo de operación en una escala menor. -
❓ El número de pasos no es fijo o no se conoce de antemano.
En problemas como el recorrido de un árbol binario o la búsqueda de soluciones en un laberinto, la profundidad del proceso depende de los datos y no se puede predecir fácilmente. -
🔍 La solución iterativa es mucho más compleja o menos clara.
Algunos algoritmos, como los de recorrido en profundidad (DFS) o ciertos algoritmos de generación de combinaciones o particiones, son significativamente más sencillos de expresar con recursividad. -
📐 Existe una definición matemática recursiva.
Cuando el propio problema ya está formulado de manera recursiva (como Fibonacci o Torres de Hanoi), implementarlo recursivamente suele ser más directo y natural.
Aunque la recursividad puede ser una herramienta muy poderosa, no siempre es la mejor opción. Tiene algunas limitaciones importantes que es necesario conocer:
-
Mayor uso de memoria:
Cada llamada recursiva se guarda en la pila de ejecución del programa. Si se hacen demasiadas llamadas (por ejemplo, en una recursión profunda sin optimización), puede provocar un error de desbordamiento de pila (stack overflow). -
Posibilidad de recursión infinita:
Si no se define correctamente un caso base, o si las llamadas no se acercan a ese caso, la función nunca termina y se ejecuta indefinidamente. -
Rendimiento lento en algunos casos:
Algunas funciones recursivas, como la versión clásica de Fibonacci, recalculan muchas veces los mismos valores, lo que las hace ineficientes si no se aplican técnicas como memorización o programación dinámica. -
Mayor dificultad para depurar y encontrar errores:
El seguimiento de errores puede ser más complicado en funciones recursivas, ya que hay muchas llamadas apiladas y el flujo del programa no es tan lineal como en una versión iterativa.
9. Operaciones de entrada y salida de datos
Una de las habilidades fundamentales al empezar a programar es aprender cómo interactuar con el usuario, ya sea para pedir datos o para mostrar resultados. Estas acciones se conocen como operaciones de entrada y salida de datos.
Entrada de datos
La entrada de datos permite que el usuario proporcione información al programa. En pseudocódigo, la instrucción más común para esto es:
Leer
(oLeer nombreVariable
)
Esta instrucción pausa la ejecución del algoritmo y espera que el usuario introduzca un valor, el cual se guarda en la variable indicada.
Algoritmo EntradaEjemplo Definir edad Como Entero; Escribir "Introduce tu edad:"; Leer edad;FinAlgoritmo
En este ejemplo, el programa pide al usuario su edad y la guarda en la variable edad
.
Salida de datos
La salida de datos permite mostrar información al usuario, enviarla a un fichero u otros dispositivos. La instrucción utilizada para ello es:
Escribir
(oEscribir expresión
)
Puedes mostrar texto, el valor de una variable o el resultado de una operación.
Algoritmo SalidaEjemplo Definir nombre Como Cadena; nombre ← "Lucía"; Escribir "Bienvenida, ", nombre;FinAlgoritmo
Este ejemplo muestra un saludo personalizado, uniendo un texto fijo con el contenido de una variable.
En algunos contextos, es posible encontrar una instrucción específica para mostrar información por pantalla, normalmente utilizando la palabra clave Imprimir
.
Esto no significa que se envíe un documento a la impresora, sino que los datos indicados se visualizarán en pantalla, generalmente en la consola o salida estándar del programa.
Lo más habitual es que entrada y salida se usen juntas para construir programas interactivos.
Algoritmo EntradaSalida Definir nombre Como Cadena; Escribir "¿Cómo te llamas?"; Leer nombre; Escribir "¡Hola, ", nombre, "!";FinAlgoritmo
10. Herramientas para trabajar con pseudocódigo
PSeInt (acrónimo de “PSeudo Intérprete”) es una aplicación educativa creada con el objetivo de ayudar a estudiantes a desarrollar la lógica algorítmica utilizando pseudocódigo. Se trata de un entorno sencillo, intuitivo y en español, lo que lo convierte en una opción válida para quienes se inician en este campo.
Características
- Editor de pseudocódigo con sugerencias y coloreado de sintaxis.
- Simulador paso a paso, ideal para comprender el flujo de ejecución de los algoritmos.
- Detección de errores comunes y sugerencias para corregirlos.
- Conversión automática a otros lenguajes de programación, como Python, Java, JavaScript o C#, para visualizar cómo se implementaría un algoritmo en un lenguaje real.
- Soporte para diagramas de flujo, lo que permite representar visualmente la lógica antes de codificarla.
PSeInt permite escribir, simular y validar pseudocódigo de forma sencilla, ayudando a entender la lógica de programación sin preocuparse por la sintaxis estricta de un lenguaje específico. Además, incluye otras funcionalidades que permiten transformar pseudocódigo a un lenguaje de programación concreto.

Se puede descargar desde su sitio oficial: 👉 https://pseint.sourceforge.net/
11. Ejercicios
Ejercicio 1: Operaciones Básicas
Declara tres variables numéricas: a
, b
y resultado
. Pide al usuario que introduzca los valores de a
y b
, y luego muestra en pantalla la suma, resta y multiplicacion de ambos.
Ejercicio 2: Operaciones para la figura de un círculo
Define una constante llamada PI
. Pide al usuario que introduzca el radio de un círculo y calcula su área utilizando la fórmula área = PI * radio².
Ejercicio 3: Control de mayoría de edad
Pide al usuario una edad y muestra un mensaje que indique si es mayor de edad o no.
Ejercicio 4: Login
Pide al usuario una contraseña y verifica si coincide con la cadena “1234”. Repite la solicitud hasta que acierte.
Ejercicio 5: Cuadrado de un número
Crea una función llamada Cuadrado
que reciba un número y devuelva su cuadrado. Luego, en el algoritmo principal, pide un número al usuario, llama a la función y muestra el resultado.
Ejercicio 6: Saludar Usuario
Define un procedimiento llamado SaludarUsuario
que pida el nombre del usuario y lo salude. Llama al procedimiento desde el algoritmo principal.
Ejercicio 7: Lista de frutas
Crea un vector llamado frutas
con espacio para 5 elementos. Pide al usuario que introduzca los nombres de 5 frutas y luego muestra la lista completa.
Ejercicio 8: Tabla de multiplicar por 5
Crea una matriz de 10x5 que represente la tabla de multiplicar del 1 al 10. En cada fila se guardará la operación a multiplicar, de la siguiente forma:
| 1 | x | 5 | = | 5 || 2 | x | 5 | = | 10 || 3 | x | 5 | = | 15 |...
Muestra la tabla completa en pantalla.
🧠 Estos ejercicios son solo una pequeña introducción. Para dominar la lógica de programación, es fundamental seguir practicando de forma constante.
🛠️ Puedes encontrar más actividades para desarrollar tus habilidades en el siguiente enlace: 👉ejercicios👈