Programming - Controlling program flow in plain English. Uses making a cup of coffee example. Explaining sequence, branching depending on a condition and repetition sequences. Applicable to most programming languages.

John McGuinn's C Tutorial

ICRA This site does not contain Adult material

Controlling Program Flow in Plain English.
Applies to most programming languages.

Results per page:

Match: any search words all search words

C Home page | ' C ' Books | Student Software | Tutorial 2. Outputting text | Tutorial 3. Variables | Tutorial 5. Controlling program flow in plain English | Tutorial 6 Branching & Looping | Tutorial 90.' C ' Error Messages | Tutorial 99. Quick reference | ASCII Codes | Download files |

Contents

 

Controlling Program flow - Overview

This tutorial is going to look at simple instructions for making a cup of coffee. These instructions are written in plain English, and how they are arranged into steps so that the steps can be converted to code.

The steps have been deliberately made simple. E.g. Fill the kettle. This Step can be broken down into many sub steps. Fill through spout, or lift lid and fill. Take kettle to sink. Place under tap. Turn on tap. Etc. etc.

  • This tutorial looks at how the flow of execution of the instructions, within a program, takes place.
  • The following principals are true to the majority of programming dialects.
  • Thus learning a second programming dialect is usually easier than learning the first one. You do not have to re-learn these control principles.
  • The actual code that is required to execute these principals is covered in individual language specific courses.

All programs can be written using these very simple constructs.

  1. Sequence
  2. Repetition (aka iteration or Loops)
  3. Conditional Branching
  4. Combined Branching and Repetition

Most programmable dialects also have more complex constructs that when learnt make life easier for the programmer.

| Top of Page |

Sequence

When you start to learn programming, the initial programs are very simple and usually consist of a sequence of instructions that are executed one after the other.

A sequence of instructions is a list of instructions, which are executed in the order in which they are written.

I will illustrate this using a example of writing a few simple instructions for making a cup of instant coffee that includes sugar and milk!

  1. Fill the kettle
  2. Boil water
  3. Coffee in cup
  4. Pour on water
  5. Add sugar
  6. Add milk

Assume that we are now going to make 2 cups of coffee. This could be achieved with the following sequence of instructions

.

  1. Fill the kettle
  2. Boil water
    
            
  3. Coffee in cup
  4. Pour on water
  5. Add sugar
  6. Add milk
    
            
  7. Coffee in cup
  8. Pour on water
  9. Add sugar
  10. Add milk
  • You are probably thinking that you would not make 2 cups of coffee in this order, please be patient. We will work towards a better human way shortly.
  • It can clearly be see that instruction 7 - 10, are identical to instructions 3 - 6.
  • Note how the use of the blank lines (white space) helps to make this fact stand out, and makes the instructions a little easier to follow. Remember to use white space in your programs.

In the next section I will now show you a better way of writing these instructions. Reusing the code that is in steps 3 - 6

| Top of Page |

 

Repetition (aka iteration or Loops)

From our example above a better method is to introduce an instruction that will iterate though some of our previous sequential instructions, and create a loop of instructions.

  • A loop allows the repeated execution of 1 or more instructions.
  • The example below will cater for any reasonable number of people.
  • A suggestion of carrying on with the serving of biscuits is included. To demonstrate the white space principle to improve the readability.

1. Fill the kettle
2. Boil water 
3. Count people requiring coffee:
4. Store answer in a variable CoffeeCount
.
5. Repeat following steps, value of CoffeeCount number of times 
6.         Coffee in cup
7.         Pour on water
8.         Add sugar
9.         Add milk
10. End Repeat Construct
.
11. Count people requiring biscuits etc. .....

Note:

  • Because the new code has additional steps, steps 3-6 have become steps 6 - 9 and in a bold black font for easy recognition.
  • The Control Structure Steps 5 and 10 are also repeated and are in bold blue font.
  • How I have used white space to emphasise the loop by leaving a blank line before and after the loop.
  • Additional white space by indenting the instructions that will be iterated.
  • That we must state exactly which instructions are going to be included within the loop.
  • This is usually achieved by stating the start and end of the loop. When coding how this is done depends on the dialect , and control structure, used. Standard methods of doing this is either :-
    • Using a pair of marker symbols, one for the start and one for the end of the loop. E.g.
      • [ repeated code ] in Smalltalk.
      • { repeated code } in C and C++
    • Or a pair of instructions similar to those used in the steps:- Repeat …. End Repeat
    • or a combination of both.
  • A variable, CoffeeCount, is used, steps 4 and 5 the variable . Step 4 would obtain the value, 2 in our example. Then step 5 would use this value, 2, and repeat the loop twice.
  • That the above instructions would also work for a single cup of coffee.

Work out what is happening, i.e. in what order is each line being executed.

Question 1.. You may be thinking that you would make your 2 cups of coffee differently. I.e. by putting coffee into 2 cups, pouring the water into both cups, adding milk and sugar to them both.

Rewrite the loop section starting line 5, so that the coffee will be made in the manner described.

Go to Answer 1.

Note how the solution given is working. Assuming that the value of CoffeeCount is still 2. Then all the code that is bold will be repeated twice, before the code in the next section is carried out

| Top of Page |

Conditional Branching

Selection allows the program to branch and either execute an instruction or group of instructions, or not execute those instruction(s).

In our example not everybody will require sugar, so we could refine the line to the following

        Add sugar

to

      Do you require sugar?
      If answer is yes
            Add sugar
      End If construct
  • The instruction "Add sugar" would only be carried out the answer to the question Do you require sugar? is yes.
  • The action of adding sugar depends on the result of a Boolean condition.
    • Boolean condition results can be one of 2 possible answers. The main ones depending on the dialect are:-
      • true or false.
      • 0 or 1.
        • There are variants to actual numbers used.
      • yes or no.
1. Fill the kettle
2. Boil water 
3. Count people requiring coffee:
4. Store answer in a variable CoffeeCount
 .
5. Repeat following step, value of CoffeeCount number of times
6.         Coffee in cup
7. End Repeat Construct
 .
8. Repeat following step, value of CoffeeCount number of times
9.         Pour on water
10. End Repeat Construct
.
11. Repeat following steps, value of CoffeeCount number of times
  .
12.        Do you require sugar?
13.        If answer is yes
14.                  Add sugar
15.        End If construct
  .     
16. End Repeat Construct
  .
17. Repeat following step, value of CoffeeCount number of times     
18.        Add milk
19. End Repeat Construct
 .
20. Count people requiring biscuits etc. .....

Notes

  • Step 12 is the condition, which is tested in step 13.
  • The start (step 13) and end (step 15) of the Branching constructs.
  • The pairing of start and end instructions can easily be seen by the white space, and indentation. Pay particular attention to the vertical line up of the start and end lines.
    • The complete Add sugar construct is nested within a Repeat construct, hence the additional indentation.
  • For each start there should be a corresponding end.
    • In complicated constructs nested to several levels, missing a single end line can be difficult to spot.
      • Placing a suitable comment against each start and end can help you recognise the pair.
    • Some languages allow a short cut one line exception to this rule.

> Care must be taken the answer is 0 (zero) to the question how many people require a cup of coffee because some loop instructions will always execute the loop at least once, and this may be an undesirable result. This depends on the programming dialect used, and the actual instruction used. Look for information on this possible problem. And remember to test loops with 0 to ensure that you do not receive unexpected results.

| Top of Page |

Combined Conditional testing and Repetition

Alternatives:-

  • Some branching constructs combine with a loop construct.
  • The conditional test may be at the start or at the end.

Conditional test at start

1. 
   Some condition
2. Repeat while the condition is true
3.       Code to be repeated
4.       Some condition
5. End Repeat Construct
  • Step 1. This step is only executed once, the white space can be placed in front of the "Some condition" or after it.
  • The loop will not be executed if the condition is false.
  • The loop will repeat while ever the condition remains true.
    • This creates a problem --- How to end the loop.
    • Additional code is required within the loop that allows the condition result to change. So that the loop will terminate. 2 possible ways of doing this :-
      • Incrementing / decrementing the value of a variable used in the condition.
      • Obtaining user input, that will alter the value of a variable in the condition.
  • The additional same condition, step 4, within the loop, is for the following test, step 2.

Conditional test at the end the construct, e.g.

1. Start loop
2.       Code to be repeated
3.       Some condition
4. Repeat while the condition is true
  • The loop will always be executed at least once, think what you could do if this is a problem.
  • The loop will repeat while ever the condition remains true. See above for preventing problems.

Programming Languages

The main words, words with the following as a prefix, or part of words, to look out for in the various programming dialects, that are connected to these structures are:-

if, then, else, while, repeat, until, with, do, for, loop, true, false, switch, case, default, end, exit, continue, break

| Top of Page |

Answers

Answer Question 1.

1. Fill the kettle
2. Boil water 
3. Count people requiring coffee:
4. Store answer in a variable CoffeeCount
 .
5. Repeat following steps, value of CoffeeCount number of times
6.         Coffee in cup
7. End Repeat Construct
 .
8. Repeat following steps, value of CoffeeCount number of times
9.         Pour on water
10. End Repeat Construct
  .
11. Repeat following steps, value of CoffeeCount number of times
12.        Add sugar
13. End Repeat Construct
  .
14. Repeat following steps, value of CoffeeCount number of times     
15.        Add milk
16. End Repeat Construct
  .
17. Count people requiring biscuits etc. .....

Return to Question 1

 

 

 

| Top of Page |

More courses for Open University students by John McGuinn.
HTML and Web Design tutorial suitable for Beginers and students of Open University Courses for T171, TT

Smalltalk  suitable for Beginers and students of Open University Courses an Object-Oriented Approach M885
and discontinued Object-oriented courses M878 and M206

Other Sites to Visit

Leeds guide my home town City of Leeds information

 

Relax in the sun

Benidorm and Costa Blanca   Gran Canaria  Malta and Gozo   Resorts in Spain   Tenerife

 

 

AireWeb Web Site Designers


Leeds Web Design Web Designers Hosting Domain names Web site Promotion

Leeds my home town

Relax in the sun.

Benidorm   Tenerife   San Marino apartments to rent

Copyright © John G McGuinn 2001-03