Algorithms and pseudocode · Algoritmos y pseudocódigo
| English | Español |
|---|---|
| algorithm/ˈælɡərɪθəm/ | algoritmo |
| sequence/ˈsiːkwəns/ | secuencia |
| deterministic/dɪˌtɜːmɪˈnɪstɪk/ | determinista |
| identifier table/aɪˈdentɪfaɪə ˈteɪbl/ | tabla de identificadores |
| variable/ˈveərɪəbl/ | variable |
| data type/ˈdeɪtə taɪp/ | tipo de dato |
| pseudocode/ˈsuːdəʊkəʊd/ | pseudocódigo |
| assignment/əˈsaɪnmənt/ | asignación |
| loop/luːp/ | bucle |
| count-controlled loop/kaʊnt kənˈtrəʊld luːp/ | bucle controlado por conteo |
| pre-condition loop/priː kənˈdɪʃn luːp/ | bucle con precondición |
| post-condition loop/pəʊst kənˈdɪʃn luːp/ | bucle con poscondición |
| iteration/ˌɪtəˈreɪʃn/ | iteración |
| selection/sɪˈlekʃn/ | selección |
| flowchart/ˈfləʊtʃɑːt/ | diagrama de flujo |
| stepwise refinement/ˈstepwaɪz rɪˈfaɪnmənt/ | refinamiento paso a paso |
The most expensive hyphen in history
- On 22 July 1962 the Mariner 1 rocket, bound for Venus, was blown up 293 seconds after launch.
- The cause was one missing bar over a symbol in the guidance equations. The computer followed the written steps exactly, and the written steps were wrong.
- A computer never fills in what you meant. Every step you give it must have exactly one meaning.
- That is why this lesson is about writing steps a machine can follow: algorithms 算法.
El guion más caro de la historia
- El 22 de julio de 1962, el cohete Mariner 1, con destino a Venus, fue autodestruído 293 segundos después del lanzamiento.
- La causa fue una barra faltante sobre un símbolo en las ecuaciones de guía. La computadora siguió los pasos escritos exactamente, y los pasos escritos eran incorrectos.
- Una computadora nunca rellena lo que querías decir. Cada paso que le des debe tener exactamente un significado.
- Por eso esta lección trata sobre escribir pasos que una máquina pueda seguir: algoritmos 算法.
What an algorithm is
- An algorithm is a solution to a problem expressed as a sequence of defined steps.
- Each step is unambiguous (one meaning), deterministic 确定性 (same input → same output), finite (the steps end) and effective (each step can actually be done).
- It says what to do, independent of any programming language, and every one follows input → process → output.
Every algorithm has the same shape: input, process, output
Qué es un algoritmo
- Un algoritmo es una solución a un problema expresada como una secuencia de pasos definidos.
- Cada paso es sin ambigüedades (un solo significado), determinista 确定性 (misma entrada → misma salida), finito (los pasos terminan) y efectivo (cada paso puede realizarse realmente).
- Dice qué hacer, independientemente de cualquier lenguaje de programación, y todos siguen entrada → proceso → salida.

Cada algoritmo tiene la misma forma: entrada, proceso, salida
An algorithm is "deterministic". This means: · Un algoritmo es "determinista". Esto significa:
Deterministic = same input → same output every time. (Finite = the steps end; unambiguous = one meaning per step.) · Determinista = misma entrada → misma salida cada vez. (Finito = los pasos terminan; inequívoco = un significado por paso.)
Worked example: the identifier table
- Before writing code, list every piece of data in an identifier table 标识符表: its variable 变量 name, its data type 数据类型 and a description.
- A shop's stock program stores
"Fruit",20/02/2025,12.67andTRUE. The exam asks for a name and a type for each. Category : STRING(a category of stock),DateSold : DATE(when it was sold),ItemCost : REAL(the cost),InStock : BOOLEAN(is it in stock?).- One mark per row for the name and the type, so write the type exactly as the pseudocode guide does:
INTEGER,REAL,STRING,CHAR,BOOLEAN,DATE.
An identifier table names every piece of data before you write code
Ejemplo resuelto: la tabla de identificadores
- Antes de escribir código, enumere cada pieza de datos en una tabla de identificadores 标识符表: su nombre de variable 变量, su tipo de dato 数据类型 y una descripción.
- Un programa de inventario de una tienda almacena
"Fruit",20/02/2025,12.67yTRUE. El examen pide un nombre y un tipo para cada uno. Category : STRING(una categoría de stock),DateSold : DATE(cuándo se vendió),ItemCost : REAL(el costo),InStock : BOOLEAN(¿está en stock?).- Una marca por fila para el nombre y el tipo, así que escriba el tipo exactamente como lo hace la guía de pseudocódigo:
INTEGER,REAL,STRING,CHAR,BOOLEAN,DATE.

Una tabla de identificadores nombra cada pieza de datos antes de escribir código
In an identifier table, the data type for a value such as 12.67 (a cost) is ____. · En una tabla de identificadores, el tipo de dato para un valor como 12.67 (un costo) es ____.
A number with a decimal part is a REAL. INTEGER is for whole numbers, STRING for text, BOOLEAN for TRUE/FALSE and DATE for a date. · Un número con parte decimal es un REAL. INTEGER es para números enteros, STRING para texto, BOOLEAN para TRUE/FALSE y DATE para una fecha.
The three constructs
IF … THEN … ELSE … ENDIF
- Assignment 赋值 stores a value with an arrow,
Total ← Total + Value;=is for comparison.DIVis whole-number division andMODthe remainder, so17 MOD 5 = 2.
The three building blocks of any algorithm
Las tres construcciones
IF … THEN … ELSE … ENDIF
- Asignación 赋值 almacena un valor con una flecha,
Total ← Total + Value;=es para comparación.DIVes división de números enteros yMODes el resto, así que17 MOD 5 = 2.
INPUT Age # sequence
IF Age >= 18 THEN
# selection
ENDIF
OUTPUT "Adult"
ELSE
OUTPUT "Minor"
ENDIF
FOR Count <- 1 TO 10 # iteration
OUTPUT Count
NEXT Count

Los tres bloques fundamentales de cualquier algoritmo
Selection: follow the IF / ELSE branches · Selección: seguir las ramas IF / ELSE
Drag the score and watch which branch runs. Selection tests each condition in turn and takes the FIRST one that is true — that is how IF … ELSE IF … ELSE works. · Arrastra la puntuación y observa qué rama se ejecuta. La selección prueba cada condición a su vez y toma la PRIMERA que sea verdadera; así es como funciona IF … ELSE IF … ELSE.
Match each of the three programming constructs to what it does. · Asocia cada una de las tres construcciones de programación con lo que hace.
Every algorithm is built from just three constructs — sequence, selection and iteration. · Todo algoritmo está construido con solo tres construcciones: secuencia, selección e iteración.
In this pseudocode, which symbol means assignment (store a value)? · En este pseudocódigo, ¿qué símbolo significa asignación (almacenar un valor)?
Assignment uses ← (e.g. x ← 5); = is reserved for comparison. · La asignación usa ← (ej. x ← 5); = se reserva para comparación.
What is the value of 17 MOD 5? · ¿Cuál es el valor de 17 MOD 5?
MOD gives the remainder: $17 = 3 \times 5 + 2$, so 17 MOD 5 = 2. (17 DIV 5 = 3.) · MOD da el resto: $17 = 3 \times 5 + 2$, por lo tanto 17 MOD 5 = 2. (17 DIV 5 = 3.)
Which loop?
FOR … NEXTwhen you know how many times: a count-controlled loop 计数循环.WHILE … ENDWHILEtests the condition before each pass, so the body may run zero times: a pre-condition loop 前测循环.REPEAT … UNTILtests after each pass, so the body always runs at least once: a post-condition loop 后测循环. Validating an input is the classic case.- A "describe the iteration construct" answer names the loop, says where the condition is tested, and gives the consequence.
A WHILE loop tests before the body runs; a REPEAT … UNTIL loop tests after it
¿Qué bucle?
FOR … NEXTcuando sabe cuántas veces: un bucle controlado por conteo 计数循环.WHILE … ENDWHILEprueba la condición antes de cada pasada, por lo que el cuerpo puede ejecutarse cero veces: un bucle de precondición 前测循环.REPEAT … UNTILprueba después de cada pasada, por lo que el cuerpo siempre se ejecuta al menos una vez: un bucle de postcondición 后测循环. Validar una entrada es el caso clásico.- Una respuesta de "describir la construcción de iteración" nombra el bucle, dice dónde se prueba la condición y da la consecuencia.

Un bucle WHILE prueba antes de que se ejecute el cuerpo; un bucle REPEAT … UNTIL prueba después
How does a WHILE loop differ from a REPEAT...UNTIL loop? · ¿En qué difiere un bucle WHILE de un bucle REPEAT...UNTIL?
WHILE checks first (can run 0 times); REPEAT...UNTIL checks after, so it always runs at least once. · WHILE verifica primero (puede ejecutarse 0 veces); REPEAT...UNTIL verifica después, por lo que siempre se ejecuta al menos una vez.
A FOR loop is count-controlled (it repeats a fixed number of times), while a WHILE loop is condition-controlled (it repeats until a condition changes). · Un bucle FOR es controlado por conteo (repite un número fijo de veces), mientras que un bucle WHILE es controlado por condición (repite hasta que cambia una condición).
Use FOR when you know how many passes; use WHILE/REPEAT when you loop until something becomes true. · Usa FOR cuando sepas cuántas pasadas harás; usa WHILE/REPEAT cuando repitas hasta que algo se vuelva verdadero.
Worked example: from words to pseudocode
- Task: input 100 integer values, add up only the positive ones, and output the total.
- Plan the data first:
Count,TotalandNextNumber, allINTEGER. Then the three constructs do the rest.
- The follow-up asks you to identify the constructs: iteration (the
FORloop repeats the input 100 times), selection (theIFdecides whether a value is added) and sequence (the statements run in order).
Ejemplo resuelto: de palabras a pseudocódigo
- Tarea: introducir 100 valores enteros, sumar solo los positivos y mostrar el total.
- Planifique los datos primero:
Count,TotalyNextNumber, todosINTEGER. Luego las tres construcciones hacen el resto.
DECLARE Count, Total, NextNumber : INTEGER
Total <- 0
FOR Count <- 1 TO 100
INPUT NextNumber
IF NextNumber > 0 THEN
Total <- Total + NextNumber
ENDIF
NEXT Count
OUTPUT Total
- La pregunta de seguimiento le pide que identifique las construcciones: iteración (el bucle
FORrepite la introducción 100 veces), selección (elIFdecide si se suma un valor) y secuencia (las instrucciones se ejecutan en orden).
Spotting constructs in an extract
- A favourite question shows five pseudocode extracts and asks you to tick which of assignment, selection, iteration each one uses.
Result ← CalculateTotal()is an assignment.WHILE IsClosedis iteration.REPEAT … INPUT Value … UNTIL Sales[4] > Valueis iteration and assignment (INPUTstores a value). IF Sales[Current] <= 150 THEN Discount ← TRUE ENDIF- Look at every line of the extract, not only the first one. A row may need two ticks.
Identificar construcciones en un extracto
- Una pregunta favorita muestra cinco extractos de pseudocódigo y le pide que marque cuáles de asignación, selección, iteración usa cada uno.
Result ← CalculateTotal()es una asignación.WHILE IsClosedes iteración.REPEAT … INPUT Value … UNTIL Sales[4] > Valuees iteración y asignación (INPUTalmacena un valor). IF Sales[Current] <= 150 THEN Discount ← TRUE ENDIF- Mire cada línea del extracto, no solo la primera. Una fila puede necesitar dos marcas.
Which constructs does this extract use? REPEAT … INPUT Value … UNTIL Total > 100. Select all · todos that apply. · ¿Qué construcciones utiliza esta extracción? REPEAT … INPUT Value … UNTIL Total > 100. Selecciona todas las que correspondan.
REPEAT … UNTIL is iteration, and INPUT Value stores a value, which counts as assignment. There is no IF or CASE, so no selection — the UNTIL condition controls the loop, it does not choose between branches. · REPEAT … UNTIL es iteración, y INPUT Value almacena un valor, lo cual cuenta como asignación. No hay IF ni CASE, por lo que no hay selección; la condición UNTIL controla el bucle, no elige entre ramas.
Flowcharts
- A flowchart 流程图 documents the same algorithm as a picture. Ovals are
STARTandEND, rectangles are processes, parallelograms areINPUT/OUTPUT, and a diamond is a decision. - A diamond is where selection happens, and a flow line that goes back up the chart is a loop.
- The exam asks both ways: pseudocode from a flowchart, and a flowchart from pseudocode or structured English. Every symbol you draw should map to one line of pseudocode.
Each flowchart symbol maps to one kind of pseudocode statement
Diagramas de flujo
- Un diagrama de flujo 流程图 documenta el mismo algoritmo como una imagen. Los óvalos son
START(inicio) yEND(fin), los rectángulos son procesos, los paralelogramos sonINPUT/OUTPUT, y un rombo es una decisión. - Un rombo es donde ocurre la selección, y una línea de flujo que vuelve hacia arriba en el diagrama es un bucle.
- El examen pide ambas formas: pseudocódigo de un diagrama de flujo, y un diagrama de flujo de pseudocódigo o inglés estructurado. Cada símbolo que dibuje debería mapearse a una línea de pseudocódigo.

Cada símbolo de diagrama de flujo se mapea a un tipo de instrucción de pseudocódigo
In a flowchart, what does a diamond represent? · En un diagrama de flujo, ¿qué representa un rombo?
Diamonds are where selection happens, and a diamond whose flow line goes back up the chart is a loop test. Rectangles are processes, parallelograms input/output, ovals START and END. · Los rombos son donde ocurre la selección, y un rombo cuya línea de flujo vuelve arriba en el diagrama es una prueba de bucle. Los rectángulos son procesos, los paralelogramos entrada/salida, los óvalos INICIO y FIN.
Worked example: the guessing game
- The program picks a random integer from 1 to 100, then asks for guesses until the user gets it. The user must guess at least once, so the loop is a
REPEAT … UNTIL.
- Follow the flowchart: one decision diamond for the loop test, two for the hints, and every flow line ends up back at
INPUT Guessor atEND.
The guessing game as a flowchart: the loop returns to the input until the guess matches
Ejemplo resuelto: el juego de adivinanza
- El programa selecciona un número entero aleatorio del 1 al 100, luego pide adivinanzas hasta que el usuario acierta. El usuario debe adivinar al menos una vez, por lo que el bucle es un
REPEAT … UNTIL.
DECLARE Target, Guess : INTEGER
Target <- INT(RAND(100)) + 1
REPEAT
INPUT Guess
IF Guess < Target THEN
OUTPUT "Too low"
ELSE
IF Guess > Target THEN
OUTPUT "Too high"
ENDIF
ENDIF
UNTIL Guess = Target
OUTPUT "Correct"
- Siga el diagrama de flujo: un rombo de decisión para la prueba del bucle, dos para las pistas, y cada línea de flujo termina volviendo a
INPUT Guesso aEND.

El juego de adivinanza como diagrama de flujo: el bucle vuelve a la entrada hasta que la adivinanza coincide
Why is REPEAT … UNTIL the right loop for the guessing game? · ¿Por qué REPEAT … UNTIL es el bucle correcto para el juego de adivinanza?
A post-condition loop always runs its body once before testing, which matches a game that needs at least one guess. A WHILE loop would need a guess before the loop just to have something to test. · Un bucle de post-condición siempre ejecuta su cuerpo una vez antes de probar, lo cual coincide con un juego que necesita al menos una apuesta. Un bucle WHILE necesitaría una apuesta antes del bucle solo para tener algo que probar.
Stepwise refinement
- Stepwise refinement 逐步求精 means starting from an outline and expanding each step into more detailed steps, again and again, until every step can be written directly as pseudocode.
- "Process an order" → "get the items", "calculate the total", "take payment" → "calculate the total" becomes "for each item, add price × quantity; apply any discount".
- Each level is a refinement of the one above, and the finished levels together are the design. "Describe stepwise refinement" wants the outline, the expansion and the stopping rule.
Refine each step until it can be coded directly
Refinamiento progresivo
- Refinamiento progresivo 逐步求精 significa comenzar desde un esquema y expandir cada paso en pasos más detallados, una y otra vez, hasta que cada paso pueda escribirse directamente como pseudocódigo.
- "Procesar un pedido" → "obtener los artículos", "calcular el total", "recibir el pago" → "calcular el total" se convierte en "para cada artículo, añadir precio × cantidad; aplicar cualquier descuento".
- Cada nivel es un refinamiento del que está encima, y los niveles terminados juntos son el diseño. "Describir el refinamiento progresivo" quiere el esquema, la expansión y la regla de parada.

Refine cada paso hasta que pueda codificarse directamente
Put the stages of stepwise refinement in order. · Coloca las etapas del refinamiento progresivo en orden.
Outline first, then refine level by level; you stop when a step is one line of pseudocode. · Primero el esquema, luego refina nivel por nivel; te detienes cuando un paso es una sola línea de pseudocódigo.
Logic statements
- Parts of a solution are defined by logic statements: conditions built from comparisons (
=,<>,<,>,<=,>=) joined byAND,ORandNOT. - A valid mark:
Mark >= 0 AND Mark <= 100. A discount applies if the customer is a member or spends over 50:IsMember OR Total > 50. NOT (Mark < 40)says the same thing asMark >= 40. Write the statement, then test it with a value on each side of the boundary.
Comparisons joined by AND, OR and NOT build the conditions an algorithm needs
Enunciados lógicos
- Partes de una solución están definidas por enunciados lógicos: condiciones construidas a partir de comparaciones (
=,<>,<,>,<=,>=) unidas porAND,ORyNOT. - Una marca válida:
Mark >= 0 AND Mark <= 100. Un descuento aplica si el cliente es miembro o gasta más de 50:IsMember OR Total > 50. NOT (Mark < 40)dice lo mismo queMark >= 40. Escriba el enunciado, luego pruébelo con un valor de cada lado del límite.

Las comparaciones unidas por AND, OR y NOT construyen las condiciones que necesita un algoritmo
NOT (Mark < 40) is true for exactly the same values of Mark as Mark >= 40. · NOT (Mark < 40) es verdadero para exactamente los mismos valores de Mark que Mark >= 40.
Negating "less than 40" gives "40 or more". Test the boundary: Mark = 40 makes Mark < 40 false, so NOT of it is true, and 40 >= 40 is also true. · Negar "menor que 40" da "40 o más". Prueba el límite: Mark = 40 hace que Mark < 40 sea falso, por lo que NOT de ello es verdadero, y 40 >= 40 también es verdadero.
Marks that slip away
←assigns and=compares.IF Total = 0is a test;Total = 0on its own line earns nothing.- Every construct closes:
ENDIF,ENDWHILE,UNTIL,NEXT,ENDCASE. A missing closer breaks the structure mark. - Declare before you use, and initialise a running total to
0. WHILEmay never run,REPEATalways runs once. Choose the loop that matches the task, and say why if asked.
Marcas que se escapan
←asigna y=compara.IF Total = 0es una prueba;Total = 0en una línea por sí solo no obtiene nada.- Cada construcción se cierra:
ENDIF,ENDWHILE,UNTIL,NEXT,ENDCASE. Un cierre faltante rompe la estructura de la marca. - Declare antes de usar, e inicialice un total acumulativo en
0. WHILEpuede que nunca se ejecute,REPEATsiempre se ejecuta una vez. Elija el bucle que coincida con la tarea, y diga por qué si se le pregunta.
You've got it
- an algorithm's steps are unambiguous, deterministic, finite, effective; plan the data in an identifier table
- three constructs: sequence, selection (
IF/CASE), iteration (FOR/WHILE/REPEAT);WHILEtests before,REPEATafter - a flowchart and pseudocode describe the same algorithm; stepwise refinement expands an outline until it can be coded
- conditions are logic statements: comparisons joined with
AND,OR,NOT
Lo has logrado
- los pasos de un algoritmo son sin ambigüedades, deterministas, finitos, efectivos; planifique los datos en una tabla de identificadores
- tres construcciones: secuencia, selección (
IF/CASE), iteración (FOR/WHILE/REPEAT);WHILEprueba antes,REPEATdespués - un diagrama de flujo y pseudocódigo describen el mismo algoritmo; refinamiento progresivo expande un esquema hasta que puede codificarse
- las condiciones son enunciados lógicos: comparaciones unidas con
AND,OR,NOT