### Week 3 lecture1

```Foundation of programming
Week 3
Last week
• ‘How to think like a programmer’
• The HTTLAP 6 step approach:
• Understand the problem
–
–
–
–
–
Devise a plan to solve it
Carry out the plan
Assess the result
Reflect on what you have learned
Document the solution
• Descriptive languages
• Pseudo Code
Lecture Outlines
• Program design methods
–
–
–
–
Top down
Bottom up
Data-structure approaches
Data-flow approaches
• Logic structures
– Sequential
– Conditional
• IF
• Switch
• Loops (iterations)
• More on pseudo-code
Reading
•
•
•
•
Chapter 5 and 6 (HTTP)
EXERCISES
Chapter 5 exercises 1 TO 10, pages 127 to 129
Chapter 6 exercises 1 to 14 , pages 162 to 166
Top down design
Bottom up design
Data flow approaches
• Data movement and transformation
• Top down flow of data
• Activity, in pairs:
– Think about the oyster card
– What is the data?
– Where does it flow from+to?
– How is it transformed?
– Try to draw a diagram of this
The four logic structures
•
•
•
•
Sequential – flows straight down
Decision – the flow splits into two
Loop – the flow repeats a section
Case – the flow splits into many streams
Example
data frlow
x = 10;
y =4;
sum = x+y;
subtract = x-y;
product = x*y;
X=10
y=4
sum=x+y
subtract=x-y
product=x*y
The sequential logic structure
1
2
Decision logic structure
Yes
1
No
2
IF(cond=TRUE) THEN instruction1 ELSE instruction2 ENDIF
Loop logic structure
No
cond
yes
1
2
body
program
WHILE(cond=TRUE) DO {instruction1 ; instruction2} ENDWHILE
The case logic structure
switch x
{
x== condition1
x== condition 2
x== condition 3
x== condition 4
}
instruction1
instruction 2
instruction 3
instruction 4
Discussion
which logic will you use?
• Which logic did you use in your solutions to
the following problems?
1. Use a filter coffee machine to make a cup of
coffee
2. Hang a picture on the wall
3. Drive a train
Making a cup of coffee
1. Put water in coffee machine;
2. Open coffee holder;
3. Put filter paper in machine;
4. Measure coffee for one cup;
5. Put coffee into filter paper;
6. Shut the coffee holder;
7. Turn machine on;
8. Wait for coffee to filter through;
9. Pour coffee into mug;
10. Turn off the machine;
Analyse our solution
• Is sugar needed?
• If (yes) how much?
• White coffee? If yes add milk?
Make a cup of coffee
modified
1.
2.
3.
4.
5.
6.
7.
8.
9.
Put water in coffee machine;
Open coffee holder;
Put filter paper in machine;
Measure coffee for one cup;
Put coffee into filter paper;
Shut the coffee holder;
Turn the machine on;
Wait for coffee to filter through;
Find out how many sugars required;
10. WHILE(sugar added not equal to
sugar required)
11. DO
11.1
11.2
add one spoon of sugar
add 1 spoon
12. ENDWHILE
13. IF (white coffee required)
13.1 add milk/cream
14. ENDIF
15. Pour coffee into mug
16. Stir coffee
17. Turn machine off
Making 6 cups of coffee
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Put water in coffee machine;
change to water for 6 cups
Open coffee holder;
Put filter paper in machine;
Measure coffee for one cup;
coffee for 6 cups
Put coffee into filter paper;
Shut the coffee holder;
Turn the machine on;
Wait for coffee to filter through;
Find out how many sugars required;
Find out weather milk required
WHILE(sugar added not equal to sugar required)
DO
12.1
12.2
add one spoon of sugar
add 1 spoon
13.
ENDWHILE
14. IF (white coffee required)
14.1 add milk/cream
15. ENDIF
16. Pour coffee into mug
17. Stir coffee
18. Turn machine off
Repeated actions
Making a 6 cups of coffee
1.
2.
3.
4.
5.
6.
7.
8.
Put waterF for 6 cups in coffee machine
Open coffee holder;
Put filter paper in machine;
Measure coffee for 6 cup;
Put coffee into filter paper;
Shut the coffee holder;
Turn the machine on;
Wait for coffee to filter through;
10. While(cups poured not equal to 6)
11. Do
1.
2.
3.
4.
Find out how many sugars required;
Find out weather milk required
WHILE(sugar added not equal to sugar required)
DO
12.1
12.2
5.
6.
add one spoon of sugar
add 1 spoon
ENDWHILE
IF (white coffee required)
14.1 add milk/cream
7.
8.
9.
ENDIF
Pour coffee into mug
Stir coffee
10.Add 1 to the number of
cups poured
12. ENDWHILE
13. Turn machine off
Making a pot of coffee
1. Find out how many cups required
2. Put waterF for number cups required
n coffee machine
3. Open coffee holder;
4. Put filter paper in machine;
5. Measure coffee for cups required
6. Put coffee into filter paper;
7. Shut the coffee holder;
8. Turn the machine on;
9. Wait for coffee to filter through;
10. While( cups poured not equal to cups required )
11. Do
1.
2.
3.
4.
Find out how many sugars required;
Find out weather milk required
WHILE(sugar added not equal to sugar required)
DO
12.1
12.2
add one spoon of sugar
add 1 spoon
5.
6.
ENDWHILE
IF (white coffee required)
7.
8.
9.
ENDIF
Pour coffee into mug
Stir coffee
14.1 add milk/cream
10.Add 1 to the number of cups
12. ENDWHILE
13. Turn machine off
Limit the cups required to six
1. Find out how many cups required
2. IF(more than zero cups required)
1. IF (more than six cup wanted)
1.
Limit cupsrequired to six;
2. ENDIF
3. Put waterF for number cups required n coffee
machine
4. Open coffee holder;
5. Put filter paper in machine;
6. Measure coffee for cups required
7. Put coffee into filter paper;
8. Shut the coffee holder;
9. Turn the machine on;
10. Wait for coffee to filter through;
11. While( cups poured not equal to cups
required )
11. While( cups poured not equal to cups
required )
12. Do
1.
2.
3.
4.
Find out how many sugars required;
Find out weather milk required
WHILE(sugar added not equal to sugar required)
DO
12.1
12.2
add one spoon of sugar
add 1 spoon
5.
6.
ENDWHILE
IF (white coffee required)
7.
8.
9.
ENDIF
Pour coffee into mug
Stir coffee
14.1 add milk/cream
10.Add 1 to the number of
cups
13. ENDWHILE
14.Turn machine off
15.ENDIF
EXERCISE
• Write a pseudo code for a program to work
out the final grade.
• (Mark >= 80) grade = ‘A’
• (70<=Mark<80) grade = ‘B’
• (60<=Mark <70) grade= ‘C’
• (50<=Mark<60) grade ‘D’
• (40<=Mark<50) grade ‘E’
• (Mark<40) grade =‘F’
Solution
Nested IFs
• IF (Mark>=80)
– grade < -- ‘A’;
• ELSE IF (Mark>=70)
– grade < -- ‘B’;
• ELSE IF (Mark>=60)
– grade < -- ‘C’;
• ELSE IF (Mark>=50)
– grade < -- ‘D’;
• ELSE IF (Mark>=40)
– grade < -- ‘E’;
• ELSE
– grade < -- ‘F’;
ENDIF
Exercise2
1) Write a pseudo code program which allow
the user to enter the monthly rain full and
add it the total rainfall for the year.
2) Change your program to work out the
average rainfall for the previous year
3) Add the average rainfall sofar (the year has
not finished yet)
Solution:
• totalRainfall < --- 0;
• onth < --- 1;
• WHILE(month <= 12)
– Display ‘please enter the month’s rain fall’;
– Get monthRainfall;
– totalRainfall < --- totalRainfall + monthRainfall;
– month < -- month +1;
• ENDWHILE;
Solution:
• totalRainfall < --- 0;
• month < --- 1;
• WHILE(month <= 12)
–
–
–
–
Display ‘please enter the month’s rain fall’;
Get monthRainfall
totalRainfall < --- totalRainfall + monthRainfall;
month < -- month +1;
• ENDWHILE
• AverageRainfall = totalRainfall /12
Solution (3)
•
•
•
•
totalRainfall < --- 0;
Get currentMonth
month < --- 1;
WHILE(month <= currentmonth)
–
–
–
–
Display ‘please enter the month’s rain fall’;
Get monthRainfall
totalRainfall < --- totalRainfall + monthRainfall;
month < -- month +1;
• ENDWHILE
• AverageRainfallsofar = totalRainfallsofar
/currenthmonth; (assuming last minute of the month)
Exercise
• Write a pseudo-code program that allows the
user the to enter the ages all students on the
class and work out the average age. The user
enters 0 when all ages are entered.
Solution
is this correct?
1. Display ‘please enter an age ( 0 to finish);
2. Get value of age;
3. WHILE(age notequal 0)
1.
2.
3.
totalAge < -- totalAge + age;
numberOfAges < -- numberOfAges + 1;
Get value of age;
4. ENDWHILE
5. If(numberOfAges >0)
1.
2.
averageAge < -- totalAge / numberOfAges;
Display averageAge;
6. ENDIF
Solution
add initialisation
1.
2.
totalAge < -- 0; // intialise totalAge to zero
numberOfAges < -- 0; // initialise numberOfAges to zero
3.
4.
5.
Display ‘please enter an age ( 0 to finish);
Get value of age;
WHILE(age notequal 0)
1.
2.
3.
6.
7.
ENDWHILE
If(numberOfAges >0)
1.
2.
8.
totalAge < -- totalAge + age;
numberOfAges < -- numberOfAges + 1;
Get value of age;
averageAge < -- totalAge / numberOfAges;
Display averageAge;
ENDIF
```