320 likes | 514 Views
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
E N D
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
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
Decision logic structure No Yes 1 2 IF(cond=TRUE) THENinstruction1 ELSEinstruction2 ENDIF
Loop logic structure No cond yes 1 2 body program WHILE(cond=TRUE) DO {instruction1 ;instruction2}ENDWHILE
switch x { x== condition1 instruction1 x== condition 2 instruction 2 x== condition 3 instruction 3 x== condition 4 instruction 4 }
Discussionwhich logic will you use? • Which logic did you use in your solutions to the following problems? • Use a filter coffee machine to make a cup of coffee • Hang a picture on the wall • Drive a train
Making a cup of coffee • 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 machine on; • Wait for coffee to filter through; • Pour coffee into mug; • Turn off the machine;
Analyse our solution • Is sugar needed? • If (yes) how much? • White coffee? If yes add milk?
Make a cup of coffeemodified • 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; • WHILE(sugar added not equal to sugar required) • DO 11.1 add one spoon of sugar 11.2 add 1 spoon • ENDWHILE • IF (white coffee required) 13.1 add milk/cream • ENDIF • Pour coffee into mug • Stir coffee • Turn machine off
Making 6 cups of coffee • 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 add one spoon of sugar 12.2 add 1 spoon • ENDWHILE • IF (white coffee required) 14.1 add milk/cream • ENDIF • Pour coffee into mug • Stir coffee • Turn machine off Repeated actions
Making a 6 cups of coffee • 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; • While(cups poured not equal to 6) • Do • Find out how many sugars required; • Find out weather milk required • WHILE(sugar added not equal to sugar required) • DO 12.1 add one spoon of sugar 12.2 add 1 spoon • ENDWHILE • IF (white coffee required) 14.1 add milk/cream • ENDIF • Pour coffee into mug • Stir coffee • Add 1 to the number of cups poured • ENDWHILE • Turn machine off
Making a pot of coffee While( cups poured not equal to cups required ) Do Find out how many sugars required; Find out weather milk required WHILE(sugar added not equal to sugar required) DO 12.1 add one spoon of sugar 12.2 add 1 spoon ENDWHILE IF (white coffee required) 14.1 add milk/cream ENDIF Pour coffee into mug Stir coffee Add 1 to the number of cups ENDWHILE Turn machine off • Find out how many cups required • Put waterF for number cups required n coffee machine • Open coffee holder; • Put filter paper in machine; • Measure coffee for cups required • Put coffee into filter paper; • Shut the coffee holder; • Turn the machine on; • Wait for coffee to filter through;
Limit the cups required to six • Find out how many cups required • IF(more than zero cups required) • IF (more than six cup wanted) • Limit cupsrequired to six; • ENDIF • Put waterF for number cups required n coffee machine • Open coffee holder; • Put filter paper in machine; • Measure coffee for cups required • Put coffee into filter paper; • Shut the coffee holder; • Turn the machine on; • Wait for coffee to filter through; • While( cups poured not equal to cups required ) • While( cups poured not equal to cups required ) • Do • Find out how many sugars required; • Find out weather milk required • WHILE(sugar added not equal to sugar required) • DO 12.1 add one spoon of sugar 12.2 add 1 spoon • ENDWHILE • IF (white coffee required) 14.1 add milk/cream • ENDIF • Pour coffee into mug • Stir coffee • Add 1 to the number of cups • ENDWHILE • Turn machine off • 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’
SolutionNested 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 • Write a pseudo code program which allow the user to enter the monthly rain full and add it the total rainfall for the year. • Change your program to work out the average rainfall for the previous year • 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.
Solutionis this correct? • Display ‘please enter an age ( 0 to finish); • Get value of age; • WHILE(age notequal 0) • totalAge< -- totalAge + age; • numberOfAges < -- numberOfAges + 1; • Get value of age; • ENDWHILE • If(numberOfAges >0) • averageAge < -- totalAge / numberOfAges; • Display averageAge; • ENDIF
Solutionadd initialisation • totalAge< -- 0; // intialisetotalAge to zero • numberOfAges < -- 0; // initialise numberOfAges to zero • Display ‘please enter an age ( 0 to finish); • Get value of age; • WHILE(age notequal 0) • totalAge< -- totalAge + age; • numberOfAges < -- numberOfAges + 1; • Get value of age; • ENDWHILE • If(numberOfAges >0) • averageAge < -- totalAge / numberOfAges; • Display averageAge; • ENDIF