Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Pseudocode
Informal high-level description of the operation of a computer program or other algorithm

In computer science, pseudocode describes the steps of an algorithm using a blend of programming language conventions (like assignment, conditional operators, and loops) combined with natural language for easier human understanding. Although it is not executable code, pseudocode efficiently conveys algorithm principles without machine-specific details, making it popular in textbooks and scientific publications. There is no broad standard for pseudocode syntax, but some limited standards exist for academic use. Alternatives like flowcharts, drakon-charts, and UML offer graphical representations, while languages like HAGGIS bridge pseudocode and programming languages.

We don't have any images related to Pseudocode yet.
We don't have any YouTube videos related to Pseudocode yet.
We don't have any PDF documents related to Pseudocode yet.
We don't have any Books related to Pseudocode yet.
We don't have any archived web articles related to Pseudocode yet.

Application

Pseudocode is commonly used in textbooks and scientific publications related to computer science and numerical computation to describe algorithms in a way that is accessible to programmers regardless of their familiarity with specific programming languages. Textbooks often include an introduction explaining the conventions in use, and the detail of pseudocode may sometimes approach that of formal programming languages.

Programmers frequently begin implementing an unfamiliar algorithm by drafting it in pseudocode, then translating it into a programming language while adapting it to fit the larger program. This top-down structuring approach often starts with a pseudocode sketch refined into executable code. Pseudocode is also used in standardization; for example, the MPEG standards rely on formal C-like pseudocode, these standards cannot be understood without grasping the details of the code.4

Syntax

Pseudocode generally does not actually obey the syntax rules of any particular language; there is no systematic standard form. Some writers borrow style and syntax from control structures from some conventional programming language, although this is discouraged.56 Some syntax sources include Fortran, Pascal, BASIC, C, C++, Java, Lisp, and ALGOL. Variable declarations are typically omitted. Function calls and blocks of code, such as code contained within a loop, are often replaced by a one-line natural language sentence.

Depending on the writer, pseudocode may therefore vary widely in style, from a near-exact imitation of a real programming language at one extreme, to a description approaching formatted prose at the other.

This flexibility brings both major advantages and drawbacks: on the positive side, no executable programming language "can beat the convenience of inventing new constructs as needed and letting the reader try to deduce their meaning from informal explanations", on the negative, "untested code is usually incorrect".7

An example of pseudocode (for the mathematical gamefizz buzz)

Pascal style:

procedure fizzbuzz; for i := 1 to 100 do print_number := true; if i is divisible by 3 then begin print "Fizz"; print_number := false; end; if i is divisible by 5 then begin print "Buzz"; print_number := false; end; if print_number, print i; print a newline; end

C style:

fizzbuzz() { for (i = 1; i <= 100; i++) { print_number = true; if (i is divisible by 3) { print "Fizz"; print_number = false; } if (i is divisible by 5) { print "Buzz"; print_number = false; } if (print_number) print i; print a newline; }}

Python style:

def fizzbuzz(): for i in range(1,101): print_number = true if i is divisible by 3: print "Fizz" print_number = false if i is divisible by 5: print "Buzz" print_number = false if print_number: print i print a newline

See also: Category:Articles with example pseudocode

Mathematical style pseudocode

In numerical computation, pseudocode often consists of mathematical notation, typically from matrix and set theory, mixed with the control structures of a conventional programming language, and perhaps also natural language descriptions. This is a compact and often informal notation that can be understood by a wide range of mathematically trained people, and is frequently used as a way to describe mathematical algorithms. For example, the sum operator (capital-sigma notation) or the product operator (capital-pi notation) may represent a for-loop and a selection structure in one expression:

Return ∑ k ∈ S x k {\displaystyle \sum _{k\in S}x_{k}}

Normally non-ASCII typesetting is used for the mathematical equations, for example by means of markup languages, such as TeX or MathML, or proprietary formula editors.

Mathematical style pseudocode is sometimes referred to as pidgin code, for example pidgin ALGOL (the origin of the concept), pidgin Fortran, pidgin BASIC, pidgin Pascal, pidgin C, and pidgin Lisp.

Common mathematical symbols

Type of operationSymbolExample
Assignment← or :=c ← 2πr, c := 2πr
Comparison=, ≠, <, >, ≤, ≥
Arithmetic+, −, ×, /, mod
Floor/ceiling⌊, ⌋, ⌈, ⌉a ← ⌊b⌋ + ⌈c
Logicaland, or
Sums, productsΣ Πh ← ΣaA 1/a

Example

The following is a longer example of mathematical-style pseudocode, for the Ford–Fulkerson algorithm:

algorithm ford-fulkerson is input: Graph G with flow capacity c, source node s, sink node t output: Flow f such that f is maximal from s to t (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v) for each edge (u, v) in GE do f(u, v) ← 0 f(v, u) ← 0 while there exists a path p from s to t in the residual network Gf do let cf be the flow capacity of the residual network Gf cf(p) ← min{cf(u, v) | (u, v) in p} for each edge (u, v) in p do f(u, v) ← f(u, v) + cf(p) f(v, u) ← −f(u, v) return f

Machine compilation of pseudocode style languages

Natural language grammar in programming languages

Several attempts to bring elements of natural language grammar into computer programming have produced programming languages such as HyperTalk, Lingo, AppleScript, SQL, Inform, and to some extent Python. In these languages, parentheses and other special characters are replaced by prepositions, resulting in quite verbose code. These languages are typically dynamically typed, meaning that variable declarations and other boilerplate code can be omitted. Such languages may make it easier for a person without knowledge about the language to understand the code and perhaps also to learn the language. However, the similarity to natural language is usually more cosmetic than genuine. The syntax rules may be just as strict and formal as in conventional programming, and do not necessarily make development of the programs easier.

Mathematical programming languages

An alternative to using mathematical pseudocode (involving set theory notation or matrix operations) for documentation of algorithms is to use a formal mathematical programming language that is a mix of non-ASCII mathematical notation and program control structures. Then the code can be parsed and interpreted by a machine.

Several formal specification languages include set theory notation using special characters. Examples are:

Some array programming languages include vectorized expressions and matrix operations as non-ASCII formulas, mixed with conventional control structures. Examples are:

See also

Further reading

  • Zobel, Justin (2013). "Algorithms". Writing for Computer Science (Second ed.). Springer. ISBN 978-1-85233-802-2.
  • Roy, Geoffrey G (2006). "Designing and explaining programs with a literate pseudocode". Journal on Educational Resources in Computing. 6 (1). Association for Computing Machinery (ACM): 1. doi:10.1145/1217862.1217863. ISSN 1531-4278. S2CID 25810599.
  • Ulate-Caballero, Bryan Alexander; Berrocal-Rojas, Allan; Hidalgo-Cespedes, Jeisson (2021-10-25). "Concurrent and Distributed Pseudocode: A Systematic Literature Review". 2021 XLVII Latin American Computing Conference (CLEI). IEEE. pp. 1–10. doi:10.1109/clei53233.2021.9640222. ISBN 978-1-6654-9503-5.
  • Reisig, Wolfgang (2007). "Abstract State Machines for the Classroom". Logics of Specification Languages. Monographs in Theoretical Computer Science. An EATCS Series. Springer Berlin Heidelberg. pp. 15–46. ISBN 978-3-540-74107-7. Retrieved 2023-10-05.
  • Mitchell, Joan L.; Pennebaker, William B.; Fogg, Chad E.; LeGall, Didier J. (1996). "Pseudocode and Flowcharts". MPEG Video Compression Standard. New York, NY: Springer US. pp. 105–116. doi:10.1007/0-306-46983-9_6. ISBN 978-0-412-08771-4.
  • Bellamy, Rachel (1994-06-01). "What Does Pseudo-Code Do? A Psychological Analysis of the use of Pseudo-Code by Experienced Programmers". Human-Computer Interaction. 9 (2). Informa UK Limited: 225–246. doi:10.1207/s15327051hci0902_3. ISSN 0737-0024.
Look up pseudocode in Wiktionary, the free dictionary.

References

  1. Reisig 2007, p. 23, Pseudocode Programs and Their Semantics. - Reisig, Wolfgang (2007). "Abstract State Machines for the Classroom". Logics of Specification Languages. Monographs in Theoretical Computer Science. An EATCS Series. Springer Berlin Heidelberg. pp. 15–46. ISBN 978-3-540-74107-7. Retrieved 2023-10-05. https://books.google.com/books?id=pGrD8NtyR_EC&pg=PA23

  2. An often-repeated definition of pseudocode since at least 2003 is "a detailed yet readable description of what a computer program or algorithm must do, expressed in a formally-styled natural language"

  3. Ulate-Caballero, Bryan Alexander; Berrocal-Rojas, Allan; Hidalgo-Céspedes, Jeisson (2021). "Concurrent and Distributed Pseudocode: A Systematic Literature Review". 2021 XLVII Latin American Computing Conference (CLEI). pp. 1–10. doi:10.1109/CLEI53233.2021.9640222. ISBN 978-1-6654-9503-5. 978-1-6654-9503-5

  4. Mitchell et al. 1996, p. 105. - Mitchell, Joan L.; Pennebaker, William B.; Fogg, Chad E.; LeGall, Didier J. (1996). "Pseudocode and Flowcharts". MPEG Video Compression Standard. New York, NY: Springer US. pp. 105–116. doi:10.1007/0-306-46983-9_6. ISBN 978-0-412-08771-4. https://doi.org/10.1007%2F0-306-46983-9_6

  5. McConnell, Steve (2004). Code Complete. Pearson Education. p. 54. ISBN 978-0-7356-1967-8. Avoid syntactic elements from the target programming language 978-0-7356-1967-8

  6. Invitation to Computer Science, 8th Edition by Schneider/Gersting, "Keep statements language independent" as quoted in this stackexchange question /wiki/Judith_Gersting

  7. Lamport, Leslie (2 January 2009). "The PlusCal Algorithm Language" (PDF). Microsoft Research. Retrieved 28 May 2024. https://www.microsoft.com/en-us/research/uploads/prod/2016/12/The-PlusCal-Algorithm-Language.pdf