# Specifying Algorithms

When writing algorithms, we have several choices of how we will specify the operations in our algorithm. One option is to write the algorithm using plain English. An example of this approach is the directions to John's house given in the introduction lesson. Although plain English may seem like a good way to write an algorithm, it has some problems that make it a poor choice. First, plain English is too wordy. When we write in plain English, we must include many words that contribute to correct grammar or style but do nothing to help communicate the algorithm. Second, plain English is too ambiguous. Often an English sentence can be interpreted in many different ways. Remember that our definition of an algorithm requires that each operation be unambiguous.

Another option for writing algorithms is using programming languages. These languages are collections of primitives (basic operations) that a computer understands. While programming languages avoid the problems of being wordy and ambiguous, they have some other disadvantages that make them undesirable for writing algorithms. Consider the following lines of code from the programming language C++.

a = 1;

b = 0;

while (a <= 10)

{

b = b + a;

a++;

}

count << b;

This algorithm sums the numbers from 1 to 10 and displays the answer on the computer screen. However, without some special knowledge of the C++ programming language, it would be difficult for you to know what this algorithm does. Using a programming language to specify algorithms means learning special syntax and symbols that are not part of standard English. For example, in the code above, it is not very obvious what the symbol "++" or the symbol "<<" does. When we write algorithms, we would rather not worry about the details of a particular programming language.

What we would really like to do is combine the familiarity of plain English with the structure and order of programming languages. A good compromise is structured English. This approach uses English to write operations, but groups operations by indenting and numbering lines. An example of this approach is the directions for changing motor oil in the introduction lesson. Each operation in the algorithm is written on a separate line so they are easily distinguished from each other. We can easily see the advantage of this organization by comparing the structured English algorithm with the plain English algorithm.

 Plain English Structured English First, place the oil pan underneath the oil plug of your car. Next, unscrew the oil plug and drain the oil.  Now, replace the oil plug.  Once the old oil is drained, remove the oil cap from the engine and pour in 3 litres of oil.  Finally, replace the oil cap on the engine. 1. Place the oil pan underneath the oil plug of your car. 2. Unscrew the oil plug 3. Drain the oil 4. Replace the oil plug 5. Remove the oil cap from the engine. 6. Pour in 3 litres of oil 7. Replace the oil cap.

For the remainder of this study, we will write our algorithms using the structured English approach.