Ejemplos de pseudocódigo
15 ejemplos resueltos en pseudocódigo de Cambridge IGCSE y A-Level, desde un primer OUTPUT hasta el ordenamiento de burbuja. Cada uno muestra su salida, y puedes ejecutarlo en el editor de abajo.
Cómo leer estos ejemplos
El pseudocódigo describe los pasos de un programa en un inglés estructurado, sin las reglas estrictas de un lenguaje de programación real. Todos los ejemplos usan el estilo de Cambridge que piden los exámenes IGCSE y A-Level: DECLARE para las variables, ← para asignar, OUTPUT para mostrar, y bloques que se cierran con ENDIF, NEXT o ENDWHILE.
Cada ejemplo plantea un problema, da el pseudocódigo, muestra la salida que produce y explica cómo funciona. Pulsa Ejecútalo en el editor para cargar cualquier ejemplo en el editor de la parte superior de la página, donde puedes recorrerlo línea por línea y ver cómo cambian las variables. ¿Es tu primera vez con esta sintaxis? El editor de pseudocódigo tiene una biblioteca con todas las construcciones, lista para hacer clic.
1. Hello, World
Muestra un mensaje en pantalla.
OUTPUT "Hello, World!"Hello, World!OUTPUT muestra lo que va detrás, y el texto va entre comillas dobles. Esta única línea es un programa completo: el pseudocódigo no necesita función principal ni importaciones.
2. Suma dos números
Guarda dos números enteros, súmalos y muestra el total.
DECLARE a : INTEGER
DECLARE b : INTEGER
DECLARE total : INTEGER
a ← 12
b ← 30
total ← a + b
OUTPUT "The total is ", totalThe total is 42Cada variable se declara con un nombre y un tipo antes de usarla. La flecha ← guarda un valor, así que total ← a + b se lee "total pasa a valer a más b". Una coma en OUTPUT une el texto y el valor en la misma línea.
3. Par o impar
Decide si un número es par o impar.
DECLARE n : INTEGER
n ← 17
IF n MOD 2 = 0 THEN
OUTPUT n, " is even"
ELSE
OUTPUT n, " is odd"
ENDIF17 is oddMOD da el resto de una división. Un número par no deja resto al dividirlo entre 2, así que la prueba es n MOD 2 = 0. IF elige una de dos ramas y ENDIF cierra el bloque. En pseudocódigo, un solo = compara dos valores; nunca asigna.
4. Pon nota a un examen
Convierte una puntuación sobre 100 en una nota: A desde 80, B de 60 a 79 y C por debajo de 60.
DECLARE score : INTEGER
DECLARE grade : CHAR
score ← 74
IF score >= 80 THEN
grade ← 'A'
ELSE
IF score >= 60 THEN
grade ← 'B'
ELSE
grade ← 'C'
ENDIF
ENDIF
OUTPUT "Score ", score, " gets grade ", gradeScore 74 gets grade BLas comprobaciones van del límite más alto hacia abajo, así que una puntuación de 74 no pasa la primera prueba y sí la segunda. Poner un IF dentro del ELSE de otro es la forma en que el pseudocódigo de Cambridge escribe una cadena de else-if. Un CHAR guarda un solo carácter entre comillas simples.
5. Suma los números del 1 al 10
Suma todos los números enteros del 1 al 10.
DECLARE total : INTEGER
DECLARE i : INTEGER
total ← 0
FOR i ← 1 TO 10
total ← total + i
NEXT i
OUTPUT "Sum of 1 to 10 is ", totalSum of 1 to 10 is 55Un bucle FOR se repite un número fijo de veces: i toma los valores 1, 2, 3 y así hasta 10, y NEXT i marca el final del cuerpo del bucle. El total acumulado empieza en 0 y crece en cada vuelta. El resultado, 55, coincide con la fórmula n(n + 1) / 2.
6. Muestra una tabla de multiplicar
Muestra las cinco primeras líneas de la tabla del 7.
DECLARE i : INTEGER
FOR i ← 1 TO 5
OUTPUT "7 x ", i, " = ", 7 * i
NEXT i7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35El contador del bucle i se usa dentro del cálculo, así que cada vuelta muestra una línea distinta. OUTPUT puede unir varios textos y varios valores con comas.
7. Cuenta atrás con un bucle WHILE
Cuenta hacia atrás del 5 al 1 y luego muestra un mensaje final.
DECLARE count : INTEGER
count ← 5
WHILE count > 0 DO
OUTPUT count
count ← count - 1
ENDWHILE
OUTPUT "Liftoff!"5
4
3
2
1
Liftoff!Un bucle WHILE comprueba su condición antes de cada vuelta y se detiene en cuanto la condición es falsa. Aquí la condición es count > 0, y el cuerpo resta uno a count cada vez. Si quitas la línea que lo resta, el bucle no termina nunca. Usa WHILE cuando no sabes de antemano cuántas vueltas necesitas.
8. Encuentra el número mayor de un arreglo
Encuentra el valor más grande de una lista de seis números.
DECLARE nums : ARRAY[1:6] OF INTEGER
DECLARE i : INTEGER
DECLARE largest : INTEGER
nums[1] ← 14
nums[2] ← 3
nums[3] ← 27
nums[4] ← 9
nums[5] ← 21
nums[6] ← 6
largest ← nums[1]
FOR i ← 2 TO 6
IF nums[i] > largest THEN
largest ← nums[i]
ENDIF
NEXT i
OUTPUT "The largest number is ", largestThe largest number is 27ARRAY[1:6] declara seis posiciones numeradas del 1 al 6, porque en Cambridge los arreglos suelen empezar en 1. El programa supone que el primer elemento es el mayor, compara con él cada uno de los demás y se queda con el que sea más grande. Tras recorrer el arreglo una vez, largest guarda la respuesta.
9. Calcula una media
Calcula la media de cuatro notas de examen.
DECLARE marks : ARRAY[1:4] OF INTEGER
DECLARE i : INTEGER
DECLARE total : INTEGER
marks[1] ← 70
marks[2] ← 85
marks[3] ← 64
marks[4] ← 91
total ← 0
FOR i ← 1 TO 4
total ← total + marks[i]
NEXT i
OUTPUT "Average mark: ", total / 4Average mark: 77.5El bucle suma cada elemento del arreglo a total, y luego el programa divide entre el número de notas. El operador / da un resultado decimal, y por eso la salida es 77.5. Usa DIV cuando quieras una división entera.
10. Búsqueda lineal
Encuentra la posición del nombre Dara en una lista de nombres.
DECLARE names : ARRAY[1:5] OF STRING
DECLARE i : INTEGER
DECLARE found : BOOLEAN
names[1] ← "Ana"
names[2] ← "Ben"
names[3] ← "Chen"
names[4] ← "Dara"
names[5] ← "Eli"
found ← FALSE
i ← 1
WHILE i <= 5 AND found = FALSE DO
IF names[i] = "Dara" THEN
found ← TRUE
ELSE
i ← i + 1
ENDIF
ENDWHILE
IF found = TRUE THEN
OUTPUT "Dara is at position ", i
ELSE
OUTPUT "Not found"
ENDIFDara is at position 4La búsqueda lineal revisa los elementos uno a uno desde el principio. La condición del WHILE detiene el bucle cuando encuentra el nombre o cuando ya ha revisado todos los elementos, y el indicador found registra cuál de las dos cosas ocurrió. Funciona con datos sin ordenar, pero en una lista larga puede necesitar una comparación por elemento.
11. Ordenamiento de burbuja
Ordena cinco números de menor a mayor.
DECLARE nums : ARRAY[1:5] OF INTEGER
DECLARE i : INTEGER
DECLARE j : INTEGER
DECLARE temp : INTEGER
nums[1] ← 5
nums[2] ← 1
nums[3] ← 4
nums[4] ← 2
nums[5] ← 8
FOR i ← 1 TO 4
FOR j ← 1 TO 5 - i
IF nums[j] > nums[j + 1] THEN
temp ← nums[j]
nums[j] ← nums[j + 1]
nums[j + 1] ← temp
ENDIF
NEXT j
NEXT i
FOR i ← 1 TO 5
OUTPUT nums[i]
NEXT i1
2
4
5
8El ordenamiento de burbuja compara cada par de vecinos y los intercambia cuando están en el orden equivocado. Tras cada vuelta del bucle exterior, el mayor valor que quedaba ha llegado al final, así que el bucle interior puede parar un elemento antes cada vez. El intercambio necesita una tercera variable, temp, que guarda un valor mientras se copia el otro.
12. Factorial con una función
Escribe una función que devuelva el factorial de n (n!) y úsala para calcular 5!.
FUNCTION Factorial(n : INTEGER) RETURNS INTEGER
DECLARE result : INTEGER
DECLARE i : INTEGER
result ← 1
FOR i ← 2 TO n
result ← result * i
NEXT i
RETURN result
ENDFUNCTION
OUTPUT "5! = ", Factorial(5)5! = 120Una FUNCTION recibe parámetros, hace su trabajo y devuelve un valor con RETURN; su cabecera indica el tipo que devuelve. Las variables declaradas dentro solo existen mientras se ejecuta. 5! es 5 × 4 × 3 × 2 × 1, que da 120.
13. Cuenta las vocales de una palabra
Cuenta cuántas vocales tiene la palabra PSEUDOCODE.
DECLARE word : STRING
DECLARE letter : CHAR
DECLARE vowels : INTEGER
DECLARE i : INTEGER
word ← "PSEUDOCODE"
vowels ← 0
FOR i ← 1 TO LENGTH(word)
letter ← SUBSTRING(word, i, 1)
IF letter = 'A' OR letter = 'E' OR letter = 'I' OR letter = 'O' OR letter = 'U' THEN
vowels ← vowels + 1
ENDIF
NEXT i
OUTPUT word, " has ", vowels, " vowels"PSEUDOCODE has 5 vowelsLENGTH da el número de caracteres de una cadena, y SUBSTRING(word, i, 1) toma un carácter a partir de la posición i. El bucle recorre cada carácter y suma uno al contador cada vez que es A, E, I, O o U.
14. FizzBuzz
Muestra los números del 1 al 15, pero escribe Fizz para los múltiplos de 3, Buzz para los múltiplos de 5 y FizzBuzz para los múltiplos de ambos.
DECLARE i : INTEGER
FOR i ← 1 TO 15
IF i MOD 15 = 0 THEN
OUTPUT "FizzBuzz"
ELSE
IF i MOD 3 = 0 THEN
OUTPUT "Fizz"
ELSE
IF i MOD 5 = 0 THEN
OUTPUT "Buzz"
ELSE
OUTPUT i
ENDIF
ENDIF
ENDIF
NEXT i1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzzEl orden de las comprobaciones importa. 15 es múltiplo de 3 y de 5, así que la prueba del 15 tiene que ir primero; si no, el programa escribiría Fizz y nunca llegaría a FizzBuzz. Es un calentamiento clásico en entrevistas porque pone a prueba justo este tipo de razonamiento.
15. Intentos de contraseña con REPEAT UNTIL
Prueba hasta tres contraseñas por turno y da acceso si una de ellas es correcta.
DECLARE attempts : ARRAY[1:3] OF STRING
DECLARE tries : INTEGER
DECLARE guess : STRING
attempts[1] ← "hunter1"
attempts[2] ← "letmein"
attempts[3] ← "open sesame"
tries ← 0
REPEAT
tries ← tries + 1
guess ← attempts[tries]
OUTPUT "Try ", tries, ": ", guess
UNTIL guess = "open sesame" OR tries = 3
IF guess = "open sesame" THEN
OUTPUT "Access granted"
ELSE
OUTPUT "Locked out"
ENDIFTry 1: hunter1
Try 2: letmein
Try 3: open sesame
Access grantedUn bucle REPEAT ... UNTIL comprueba su condición al final, así que el cuerpo se ejecuta siempre al menos una vez. Se detiene cuando la contraseña coincide o tras el tercer intento. Las contraseñas probadas salen de un arreglo para que el ejemplo funcione sin teclear nada; en una respuesta de examen normalmente leerías cada una con INPUT.
Preguntas frecuentes sobre los ejemplos de pseudocódigo
¿Cuál es un ejemplo de pseudocódigo?
Uno corto decide si se aprueba un examen: IF score >= 50 THEN OUTPUT "Pass" ELSE OUTPUT "Fail" ENDIF. Se lee casi como inglés pero sigue reglas fijas, así que se puede pasar a Python, Java o cualquier otro lenguaje línea por línea. Los 15 programas de esta página van desde una sola línea hasta la búsqueda y la ordenación.
¿Cómo se escribe pseudocódigo?
Decide qué debe hacer el programa y escribe los pasos en orden con un conjunto pequeño de palabras clave: DECLARE para las variables, ← para asignar, IF para las decisiones, FOR o WHILE para repetir y OUTPUT para los resultados. Sangra el cuerpo de cada bloque, ciérralo con su palabra de cierre y pon una sola acción por línea.
¿El pseudocódigo es igual en todos los exámenes?
No. Cambridge (IGCSE y A-Level) usa DECLARE y la flecha ←, AQA usa ← sin declaraciones, el Exam Reference Language de OCR se parece a Python y Edexcel escribe SET ... TO. Estos ejemplos usan Cambridge; el editor de pseudocódigo cambia entre los cuatro estilos.
¿Se puede ejecutar pseudocódigo?
Sí, en esta página. El pseudocódigo no es un lenguaje de programación real, así que no tiene compilador oficial, pero este editor ejecuta pseudocódigo de Cambridge en tu navegador, muestra la salida y lo recorre línea por línea. Pulsa Ejecútalo en el editor debajo de cualquier ejemplo.
¿Qué diferencia hay entre pseudocódigo y diagrama de flujo?
Los dos describen un algoritmo antes de programarlo. Un diagrama de flujo dibuja los pasos como cajas y flechas, lo que va bien para procesos cortos con pocas decisiones. El pseudocódigo los escribe como texto estructurado, que aguanta programas más largos y se convierte en código real de forma más directa.
¿Hay que declarar las variables en pseudocódigo?
En el pseudocódigo de Cambridge, sí: los criterios de corrección esperan DECLARE name : TYPE antes de usar una variable. Otros estilos, como el de AQA, no usan declaraciones. Declarar una variable también le dice al lector qué tipo de valor guarda.