Pseudocode is a plain-language description of an algorithm's steps that borrows the structure of a programming language, such as IF, FOR and RETURN, but is written for people to read rather than for a computer to run.
This guide covers what the term means, the elements most pseudocode uses, a complete worked example with Python, C++ and Java versions, how much detail to include, and the mistakes that make pseudocode hard to turn into working code.
What does pseudocode mean?
The word combines "pseudo", meaning false or imitation, with "code". It looks like a program but is not one: no compiler or interpreter accepts it as written.
In simple terms, pseudocode is a recipe for a program. It lists what the program must do, in order, with the decisions and repetitions shown clearly, while leaving out details such as variable types, semicolons and library calls.
Pseudocode is an informal, human-readable outline of an algorithm that mixes everyday language with programming structures. It lets you settle the logic of a solution before you commit to the syntax of Python, C++, Java or any other language, and anyone who knows basic programming ideas can follow it.
Why use pseudocode?
Pseudocode is used wherever people need to agree on how an algorithm works before, or instead of, writing real code. Textbooks and research papers use it so that readers with different language backgrounds can all follow the same algorithm.
| Reason | What it gives you |
|---|---|
| Plan before you code | You solve the logic first, so typing the real program becomes translation rather than invention. |
| Language-neutral | The same outline can be turned into Python, C++, Java or any other language. |
| Easy to review | Teachers, teammates and non-programmers can spot a logic error without reading real syntax. |
| Teaching and exams | Students learn loops, decisions and variables without fighting a compiler. Some exam boards publish their own pseudocode conventions. |
| Documentation | Specifications and papers describe an algorithm once, for every reader, instead of tying it to one language. |
| Cheap to change | Rewriting a line of pseudocode costs seconds; rewriting tested code costs far more. |
Does pseudocode have a standard syntax?
No. There is no single, universal standard for pseudocode. Each textbook, course or specification usually states its own conventions at the start, and writers often borrow the look of a language they already know.
Limited standards do exist for specific settings, such as the conventions an exam board sets for its own papers. Technical specifications also declare rules up front; Microsoft's VBA file-format specification, for example, states that all array indexing in its pseudocode is zero-based.
| Style | What it looks like | Where you see it |
|---|---|---|
| Pascal style | procedure, begin / end, := for assignment |
Older textbooks and algorithm courses |
| C style | Braces { } around blocks, i++ for counting |
Material aimed at C, C++ or Java programmers |
| Python style | def, indentation instead of END markers |
Introductory programming courses |
| Keyword style | Capitalised IF, THEN, END IF, FOR EACH, ← for assignment |
School and exam-board pseudocode |
| Mathematical style | Set notation, Σ for sums, ← for assignment |
Research papers and numerical computing |
Whichever style you pick, use it consistently and state any rule a reader could misread, such as whether counting starts at 0 or 1.
Common elements of pseudocode
Almost every piece of pseudocode is built from the same small set of constructs. The keywords below are a common convention, not a requirement.
| Element | Typical keywords | Example line |
|---|---|---|
| Input | INPUT, READ, GET |
INPUT list of scores |
| Output | OUTPUT, PRINT, DISPLAY |
OUTPUT "Average:", average |
| Assignment | ←, :=, SET ... TO |
total ← 0 |
| Selection (decision) | IF ... THEN ... ELSE ... END IF |
IF score ≥ 50 THEN |
| Count-controlled loop | FOR ... TO ..., FOR EACH ... IN ... |
FOR EACH score IN scores |
| Condition-controlled loop | WHILE ... DO, REPEAT ... UNTIL |
WHILE attempts < 3 DO |
| Function or procedure | FUNCTION, PROCEDURE, RETURN |
FUNCTION AverageScore(scores) |
| Comment | // or a plain note |
// ignore blank entries |
| Arithmetic and comparison | + - × ÷, = ≠ < > ≤ ≥, AND, OR, NOT |
IF age ≥ 18 AND member = true THEN |
A complete pseudocode example
This example reads a list of test scores, reports the average and counts how many scores pass a mark of 50. It uses input, output, assignment, a loop, two decisions and a guard against an empty list.
PROCEDURE GradeReport
INPUT scores // a list of numbers
IF scores is empty THEN
OUTPUT "No scores entered"
STOP
END IF
total ← 0
passed ← 0
FOR EACH score IN scores
total ← total + score
IF score ≥ 50 THEN
passed ← passed + 1
END IF
END FOR
average ← total ÷ count of scores
OUTPUT "Average:", average
OUTPUT "Passed:", passed, "of", count of scores
END PROCEDURE
Each indented block belongs to the line above it, and every IF and FOR has a matching END line, so the reader always knows where a decision or loop finishes.
You should see: For the scores 72, 45 and 90, the procedure outputs an average of 69 and "Passed: 2 of 3".
Pseudocode in Python, C++ and Java
Translating pseudocode is a line-by-line job once the logic is settled. The table maps each line type from the example above to the matching construct in three common languages.
| Pseudocode | Python | C++ | Java |
|---|---|---|---|
PROCEDURE GradeReport |
def grade_report(scores): |
void gradeReport(const std::vector<double>& scores) |
static void gradeReport(double[] scores) |
total ← 0 |
total = 0 |
double total = 0; |
double total = 0; |
FOR EACH score IN scores |
for score in scores: |
for (double score : scores) |
for (double score : scores) |
IF score ≥ 50 THEN |
if score >= 50: |
if (score >= 50) |
if (score >= 50) |
count of scores |
len(scores) |
scores.size() |
scores.length |
OUTPUT "Average:", average |
print("Average:", average) |
std::cout << "Average: " << average; |
System.out.println("Average: " + average); |
END IF, END FOR |
End of indentation | Closing brace } |
Closing brace } |
Python reads closest to pseudocode because it uses indentation for blocks, which is why Python-style pseudocode is common in introductory courses. The logic is identical in all three languages; only the syntax changes.
How detailed should pseudocode be?
Write enough detail that another programmer could produce working code without asking you a question, and no more. The right level depends on who reads it and why.
| Your situation | Level of detail | Why |
|---|---|---|
| Sketching an idea before coding it yourself | High level: one line per major step | You only need the order of the steps and the main decisions. |
| Handing the design to another developer | Every decision, loop and edge case written out | They cannot ask what you meant once you are gone. |
| School assignment or exam answer | Follow the course or exam-board conventions exactly | Marks depend on the expected keywords and structure. |
| Explaining an algorithm in a paper or document | Full logic, with library details replaced by plain phrases | Readers need the method, not one language's function names. |
| Planning a large program | Top-level outline first, then expand each step separately | Breaking the problem down keeps each piece readable. |
A useful test: if a line would translate into more than about a dozen lines of real code, split it. If it translates into one keyword, such as a semicolon, it is too detailed.
Pseudocode versus source code
| Pseudocode | Source code | |
|---|---|---|
| Audience | People | A compiler or interpreter, then people |
| Syntax rules | Informal, set by the writer or course | Strict, set by the language |
| Runs on a computer | No | Yes |
| Variable types and declarations | Usually left out | Required in languages such as C++ and Java |
| Library and system calls | Replaced by a plain phrase, such as "sort the list" | Must name the exact function |
| How it is checked | By hand, tracing values line by line | By running it and testing the output |
| Tied to one language | No | Yes |
The trade-off is that pseudocode is never tested by a machine, so errors survive until someone traces it carefully or turns it into real code.
Edge cases to define
Most pseudocode bugs are not in the main path but at the edges. Decide each of these before you write the main loop, and write the decision into the pseudocode.
| Edge case | Question to answer | How it looks in pseudocode |
|---|---|---|
| Empty input | What happens with no items at all? | IF scores is empty THEN OUTPUT "No scores entered" |
| Single item | Does the logic still work with one value? | Trace the loop once with one score |
| Boundary values | Is the limit included or excluded? | score ≥ 50 rather than score > 50 |
| Invalid input | What if the value is negative, text or missing? | IF score < 0 OR score > 100 THEN skip it |
| Starting index | Does counting start at 0 or 1? | State it once, such as "lists are numbered from 0" |
| Division | Can the divisor be zero, and should the result be whole or decimal? | Guard the count, and say "average as a decimal" |
| Duplicates and ties | Which item wins when two are equal? | IF score ≥ best THEN keeps the last one |
Pseudocode, flowcharts, and formal specifications
Pseudocode is one of several ways to describe an algorithm before it becomes code. Flowcharts show the same logic as a diagram, while formal specifications describe required behaviour in mathematical notation.
| Pseudocode | Flowchart | Formal specification | |
|---|---|---|---|
| Form | Structured text | Diagram of boxes joined by arrows | Mathematical notation |
| Building blocks | Keywords such as IF, FOR, RETURN |
Oval for start and end, rectangle for a process, diamond for a decision, parallelogram for input and output | Sets, logic and state descriptions |
| Standard | None universal | ISO 5807 defines flowchart symbols | Defined by each language, such as Z, VDM or B |
| Best for | Detailed step-by-step logic | Showing flow and branching at a glance | Proving that an implementation meets its requirements |
| Drawback | Cannot be tested by a machine | Takes much more space for long algorithms | Needs specialist training to read and write |
Many beginners draw a flowchart to see the branches, then write pseudocode to fill in the detail. Formal specifications are mostly used in safety-critical and research work.

How to write effective pseudocode
- Write one sentence stating what the algorithm takes in and what it must produce, such as "Given a list of scores, output the average and the number of passes".
- List the main steps in order as plain sentences, without any keywords yet.
- Pick one set of keywords, such as
IF,FOR EACH,WHILEand←, and use only those throughout. - Turn each step into a line that starts with one of those keywords or a clear verb such as calculate, store or output.
- Indent everything inside a loop or decision, and close each block with a matching
END IF,END FORorEND WHILE. - Give every variable a starting value before it is used, such as
total ← 0. - Add the edge cases: empty input, boundary values, invalid data and division by zero.
- Use descriptive names such as
passedandaverageinstead of single letters. - Trace the finished pseudocode by hand with two or three sample inputs before you write any real code.
How to check pseudocode with a trace table
Pseudocode cannot be run, so it is checked by hand. A trace table, sometimes called a dry run or desk check, records each variable's value after every line.
- Choose a small test input whose answer you already know, such as the scores 72, 45 and 90.
- Draw a table with one column per variable (
score,total,passed) and one column for output. - Work through the pseudocode one line at a time, writing a new row whenever a variable changes.
- After the loop ends, compare the output column with the answer you expected: an average of 69 and 2 passes.
- Repeat with an edge-case input, such as an empty list and a score of exactly 50.
- Fix any line where the table shows an unexpected value, then trace again.
If every row matches what you expected, the logic is ready to translate into a real language.
Common pseudocode mistakes
These problems make pseudocode hard to follow or produce wrong code once it is translated. Each has a quick fix.
Ambiguous instructions
A line such as "process the data" can be read several ways, so two programmers write two different programs.
- Replace vague verbs with exact actions: "add each score to total" instead of "process the scores".
- Name the variable each line reads or changes.
Unclear nesting
Without consistent indentation and END markers, the reader cannot tell which lines belong inside a loop or decision.
- Indent every line inside a block by the same amount.
- Close each
IF,FORandWHILEwith its ownENDline.
Missing initialization
A running total or counter is used before it has a starting value.
- Set every counter and total before the loop, such as
total ← 0. - Check each variable in a trace table: its first row must have a value.
Missing loop control
A WHILE loop never changes its condition, so it never ends, or a loop stops one item early or late.
- Make sure something inside every
WHILEloop moves it toward its exit condition. - State the first and last values a counting loop takes.
Hidden assumptions
The writer assumes the list is sorted, never empty or always valid, but never says so.
- Write each assumption as a line or a comment, such as
// scores are between 0 and 100. - Add a check for any assumption the input could break.
Too much or too little detail
Pseudocode copied from real syntax is as hard to read as code, while one-line summaries leave the logic undecided.
- Remove semicolons, type declarations and library names.
- Split any line that hides a decision or a loop into separate lines.
Pseudocode FAQ
What is pseudocode in simple terms?
Pseudocode is a step-by-step plan for a program written in plain words mixed with a few programming keywords such as IF and REPEAT. It describes what a program should do so a person can follow it, but a computer cannot run it.
What is pseudocode in programming and computer science?
In programming and computer science, pseudocode is an informal way to describe an algorithm. Programmers use it to plan code before writing it, and textbooks and research papers use it to explain algorithms to readers who use different programming languages.
What is pseudocode in Python, C++ or Java?
Pseudocode is not part of Python, C++ or Java. It is language-neutral, and the same pseudocode can be translated into any of them. Python-style pseudocode borrows Python's indentation and keywords, which makes it read closest to the final code.
Why is pseudocode useful and important?
Pseudocode lets you solve the logic of a problem before dealing with syntax. It is quick to change, easy for others to review, works for any language, and catches design mistakes before they become bugs in tested code.
Why is pseudocode an example of an algorithm?
Pseudocode is a way of writing an algorithm, not a different thing. An algorithm is the ordered set of steps that solves a problem; pseudocode is one notation for writing those steps down, alongside flowcharts and real code.
Can pseudocode be executed?
No. Pseudocode leaves out details a computer needs, such as variable types and exact function names, so no compiler or interpreter can run it. It is checked by tracing it by hand, then translated into a real language to run.
Which programming language is pseudocode written in?
None. Pseudocode is not a programming language and has no single official syntax. Writers often borrow the look of a familiar language such as Pascal, C or Python, but the content stays readable to anyone who knows basic programming ideas.
Should pseudocode include comments?
Yes, when a comment explains why a step exists or states an assumption, such as the valid range of an input. Pseudocode is already plain language, so avoid comments that only repeat what the line says.
How do you explain pseudocode to kids?
Describe pseudocode as instructions for a task written in short, numbered steps, like a recipe or directions to a friend's house. It uses words such as IF and REPEAT so the steps can later be turned into a real computer program.
When is pseudocode used?
Pseudocode is used when planning a program before coding, when explaining an algorithm in a textbook, paper or specification, in programming classes and exams, and when a design must be reviewed by people who use different languages.
The bottom line on pseudocode
Write pseudocode for any algorithm with more than a couple of decisions or loops, and trace it by hand before you write real code. It separates the hard part, getting the logic right, from the routine part, typing the syntax. There is no official format, so choose one set of keywords, define your edge cases, and keep the detail at the level your reader needs.





