This document describes four different techniques (natural-language, pseudo-code, flowchart, Nassi-Schneiderman) for developing an algorithm. Two of these techniques -- pseudo-code and flowcharts -- are widely used today. However, the Nassi-Schneiderman Notation is perhaps the easiest to convert to a procedural programming language (e.g., C++). Included within each technique description is a list of advantages and disadvantages, and two examples to illustrate the technique.
This technique results in a series of numbered steps that are executed in sequence. Each step is written using your natural language (in my case, English), using the sentence structure inherent with this language.
First Example
Problem Statement: Obtain a number from the user, then display twice this number back to the user.
Advantages
Disadvantages
Second Example
Refer to the comparison of the four techniques for a second example.
Navigation: Go to top, natural-language, pseudo-code, flowchart, Nassi-Schneiderman.
This technique results in a series of numbered steps that are executed in sequence. Each step is written using a subset of your natural language (in my case, English). This subset is based on a common set of verbs found in procedural programming languages and the common mathematical operators (+, -, *, /, =).
First Example
Problem Statement: Obtain a number from the user, then display twice this number back to the user.
Advantages
Disadvantages
Second Example
Refer to the comparison of the four techniques for a second example.
Navigation: Go to top, natural-language, pseudo-code, flowchart, Nassi-Schneiderman.
This technique results in a series of symbols, connected by arrows that indicate the sequence in which the symbols are performed. Each symbol contains either a natural language or pseudo-code statement, and has a unique use within the flowcharting technique. These symbols and their use (purpose) are:
![]() |
The rectangle symbol is used to denote a process (statement) that is performed in sequence. After the statement is performed, flow continues to the next symbol in the flowchart. |
![]() |
The rhombus symbol is used to denote either input from the user or output to the user. After the input or ouptut is performed, flow continues to the next symbol in the flowchart. |
![]() |
The diamond symbol is used to denote a decision. After the decision is performed, flow continues in one of two paths, depending on the result of the decision. The two paths coming from the decision symbol are typically labeled as Yes/No or True/False. |
![]() |
The arrow symbol is used to connect the other symbols and indicate the direction of execution (flow). |
![]() |
The circular symbol is used to connect different parts of a flowchart. This symbol is used when the flowchart is larger than can fit onto one page. The connector symbol is used to branch between the separate pages of the flowchart and has no signficance on the logical correctness of the flowchart. |
![]() |
The oval symbol is used to start (begin) and stop (end) the flowchart. The start oval indicates where the flowchart begins execution. The stop oval ends the execution of the flowchart. |
First Example
Problem Statement: Obtain a number from the user, then display twice this number back to the user.

Advantages
Disadvantages
Second Example
Refer to the comparison of the four techniques for a second example.
Navigation: Go to top, natural-language, pseudo-code, flowchart, Nassi-Schneiderman.
This technique results in a series of symbols, contained within a box. The symbols are executed starting with the first symbol at the top of the box, and continuing until the bottom of the box is reached. Each symbol contains either a natural language or pseudo-code statement, and has a unique use within the Nassi-Schneiderman Notation. These symbols and their use (purpose) are:
![]() |
The rectangle symbol is used to denote a statement that is performed in sequence. After the statement is performed, flow continues to the next symbol in the Nassi-Schneiderman chart. |
![]() |
The decision structure contains a condition which is tested. When the condition is true, the instructions underneath the True branch are executed. When the condition is false, the instructions underneath the False branch are executed. After the appropriate instructions are performed, flow continues with the next symbol contained within the Nassi-Schneiderman chart. |
![]() |
The loop structure contains a loop statement along with instructions to execure as long as the loop statement is true. After the instructions are performed (zero or more times), flow continues with the next symbol contained within the Nassi-Schneiderman chart. |
First Example
Problem Statement: Obtain a number from the user, then display twice this number back to the user.

Advantages
Disadvantages
Second Example
Refer to the comparison of the four techniques for a second example.
Navigation: Go to top, natural-language, pseudo-code, flowchart, Nassi-Schneiderman.
This section allows you to compare the four techniques by showing a similar solution for the same problem statement, written in each of the techniques.
Problem Statement: Obtain numbers from the user, then display the average of all numbers entered once the user has completed the entry of numbers.
| Natural-language Algorithm | Pseudo-code Algorithm |
|
|
Flowchart
Nassi-Schneiderman chart