62
1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

Embed Size (px)

Citation preview

Page 1: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

1

CSE1301Computer Programming

Lecture 4:Components of an Algorithm

Page 2: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

2

Recall

• What is the problem solving process?

• What is an algorithm?

• What are some examples?

• What are values and variables?

• What are instructions or primitives?

Page 3: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

3

Topics

• More components of an algorithm

• The software development process

• Top-down design

Page 4: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

4

Components of an AlgorithmValues and VariablesInstruction (a.k.a. primitives)

• Sequence (of instructions)

• Procedure (involving instructions)

• Selection (between instructions)

• Repetition (of instructions)

• Documentation (beside instructions)

Page 5: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

5

Sequence

• A series of instructions

• ...to be carried out one after the other...

• ...without hesitation or question

• Example:

– How to cook a Gourmet MealTM

Page 6: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

6

Sequence -- Example

1. Open freezer door 2. Take out Gourmet Meal™ 3. Close freezer door 4. Open microwave door 5. Put Gourmet Meal™ on carousel 6. Shut microwave door 7. Set microwave on high for 5 minutes 8. Start microwave 9. Wait 5 minutes 10. Open microwave door 11. Remove Gourmet Meal™ 12. Close microwave door

Page 7: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

7

Components of an Algorithm

Values and VariablesInstruction (a.k.a. primitives)Sequence (of instructions)

• Procedure (involving instructions)

• Selection (between instructions)

• Repetition (of instructions)

• Documentation (beside instructions)

Page 8: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

8

Procedure

• A named sequence of instructions

• So that you can– Refer to it collectively (by name)– ...instead of individually (by each instruction in

the sequence)

• Example:

– Drive_To_Uni

Page 9: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

9

Procedure -- Example procedure Drive_To_Uni { 1. find car keys 2. disable car alarm 3. open car door 4. get in car 5. shut car door 6. put keys in ignition 7. start car 8. back car out of

driveway 9. drive to end of street 10. turn right 11. drive to end of street 12. turn left ...etc...etc...etc

...etc...etc...etc...

52. find parking space

53. pull into parking space

54. turn off engine

55. remove keys from ignition

56. open car door

57. get out

58. shut car door

59. lock car door

60. enable alarm

}

Page 10: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

10

Procedure – Example (cont)

procedure Do_Wednesday{ Wake_up Have_Shower Eat_Breakfast Drive_To_Uni Sit_1301_Lecture ...etc...etc...etc... Drive_From_Uni ...etc...etc...etc...}

procedure Do_Week

{

Do_Monday

Do_Tuesday

Do_Wednesday

Do_Thursday

...etc...etc...etc...

}

Page 11: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

11

Procedure – Example (cont)

procedure Do_Wednesday{ Wake_up Have_Shower Eat_Breakfast Drive_To_Uni Sit_1301_Lecture ...etc...etc...etc... Drive_From_Uni ...etc...etc...etc...}

In this subject, we also use the following words to refer to a “Procedure” :

• Sub-routine• Module• Function

Page 12: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

12

Procedure – Example (cont)

procedure Do_Wednesday{ Wake_up Have_Shower Eat_Breakfast Drive_To_Uni Sit_1301_Lecture ...etc...etc...etc... Drive_From_Uni ...etc...etc...etc...}

We use brackets to mark the beginning and end of a sequence.

Page 13: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

13

Procedure – Example (cont)

procedure Do_Wednesday{ Wake_up Have_Shower Eat_Breakfast Drive_To_Uni Sit_1301_Lecture ...etc...etc...etc... Drive_From_Uni ...etc...etc...etc...}

An instruction invoking a procedure is known as a “procedure call”

Page 14: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

14

Procedure• A procedure may have a set of parameters

procedure customerService ( myName ,timeOfDay ){ say “Good timeOfDay” say “My name is myName” say “How can I help you?”}

customerService ( “Ann”, “Morning” )

customerService (“Ann”, “Afternoon” )

customerService ( “Jeff”, “Afternoon” )

Page 15: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

15

Components of an Algorithm

Values and VariablesInstruction (a.k.a. primitives)Sequence (of instructions)Procedure (involving instructions)

• Selection (between instructions)

• Repetition (of instructions)

• Documentation (beside instructions)

Page 16: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

16

Selection• An instruction that decides which of two

possible sequences is executed

• The decision is based on a single true/false condition

• Examples:

– Car repair

– Reciprocals

Page 17: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

17

Selection Example -- Car Repairif (motor turns) then {

CheckFuelCheckSparkPlugsCheckCarburettor

}else {

CheckDistributorCheckIgnitionCoil

}

Page 18: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

18

Selection Example –Car Repair (cont)

if (motor turns) then {

CheckFuelCheckSparkPlugsCheckCarburettor

}else {

CheckDistributorCheckIgnitionCoil

}

Should be a true or false condition.

Page 19: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

19

Selection Example --Car Repair (cont)

if (motor turns) then {

CheckFuelCheckSparkPlugsCheckCarburettor

}else {

CheckDistributorCheckIgnitionCoil

}

Sequence if the condition is true.

Page 20: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

20

Selection Example --Car Repair (cont)

if (motor turns) then {

CheckFuelCheckSparkPlugsCheckCarburettor

}else {

CheckDistributorCheckIgnitionCoil

}

Sequence if the condition is false.

Page 21: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

21

Selection Example -- Reciprocals

Q. Give an algorithm for computing the reciprocal of a number.

Examples:

Reciprocal of 2: 1/2

Reciprocal of -3/4: 1/(-3/4) = -4/3

Reciprocal of 0: “undefined”

Page 22: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

22

Selection Example – Reciprocals (cont)

Q. Give an algorithm for computing the reciprocal of a number.

Algorithm: input Num if (Num is not equal 0) then { output 1/Num } else {

output "infinity" }

Page 23: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

23

Selection Example-- Reciprocals

input Num if (Num is not equal 0) then { output 1/Num } else { output "infinity"

}

Algorithm:

Num is a variable whose value depends on the actual number the user provides.

Page 24: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

24

Selection Example – Reciprocals (cont)

input Num if (Num is not equal 0) then { output 1/Num } else { output "infinity"

}

Algorithm:

Condition depends on the value of Num

Page 25: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

25

Selection Example – Reciprocals (cont)

input Num if (Num is not equal 0) then { output 1/Num } else { output "infinity"

}

Algorithm:

For a given value of Num, only one of these two sequences can be executed

Page 26: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

26

Selection Example – Reciprocals (cont)

input Num if (Num is not equal 0) then { output 1/Num } else { output "infinity"

}

Algorithm:

Executed if Num is not equal to 0

Page 27: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

27

Selection Example – Reciprocals (cont)

input Num if (Num is not equal 0) then { output 1/Num } else { output "infinity"

}

Algorithm:

Executed if Num is equal to 0

Page 28: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

28

Selection -- Exercise

input Num if (Num is not equal 0) then { output 1/Num } else {

output "infinity" }

Will the following algorithms produce the same output?

Algorithm 1: input Num

if (Num is not equal 0)

then

{

output 1/Num

}

output "infinity"

Algorithm 2:

Page 29: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

29

Selection – Several Conditions

• What if several conditions need to be satisfied?if ( today is Wednesday and the time is 10.00am )

then

{

Go to CSE1301 Lecture

}

else

{

Go to Library

} Solution 1

Page 30: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

30

Selection – Several Conditions (cont)

Solution 2

Often called a “nested selection”

if ( today is Wednesday ) then {

if ( the time is 10.00am ) then { Go to CSE1301 Lecture } } else ...etc...etc...etc...

Page 31: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

31

Selection – At Least One of Several Conditions

• What if at least one of several conditions needs to be satisfied?if ( I feel hungry or the time is 1.00pm or my

mate has his eye on my lunch )

then

{

Eat my lunch now

}

Page 32: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

32

Selection – Several Courses of Action• What if there are several courses of action? if ( button pressed is 1 )then{ CheckAccountBalance}else{ if ( button pressed is 2 ) then { TransferFunds } else { if ( button pressed is 3 ) then

{ PayBills } else { if ( button pressed is 4 ) then { ExitPhoneBanking } else { say “Invalid option” } } }} Form 1

Page 33: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

33

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else{ if ( button pressed is 2 ) then { TransferFunds } else { if ( button pressed is 3 ) then

{ PayBills } else { if ( button pressed is 4 ) then { ExitPhoneBanking } else { say “Invalid option” } } }}

Form 1

Page 34: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

34

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else{ if ( button pressed is 2 ) then { TransferFunds } else { if ( button pressed is 3 ) then

then { PayBills } else { if ( button pressed is 4 ) then { ExitPhoneBanking } else { say “Invalid option” } } }}

Form 1

One condition per course of action

Page 35: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

35

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else{ if ( button pressed is 2 ) then { TransferFunds } else { if ( button pressed is 3 ) then

{ PayBills } else { if ( button pressed is 4 ) then { ExitPhoneBanking } else { say “Invalid option” } } }}

Form 1

Page 36: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

36

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else{ if ( button pressed is 2 ) then { TransferFunds } else { if ( button pressed is 3 ) then

{ PayBills } else { if ( button pressed is 4 ) then { ExitPhoneBanking } else { say “Invalid option” } } }} Form 1

Page 37: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

37

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else{ if ( button pressed is 2 ) then { TransferFunds } else { if ( button pressed is 3 ) then

{ PayBills } else { if ( button pressed is 4 ) then { ExitPhoneBanking } else { say “Invalid option” } } }}

Form 1

Page 38: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

38

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else{ if ( button pressed is 2 ) then { TransferFunds } else { if ( button pressed is 3 ) then

{ PayBills } else { if ( button pressed is 4 ) then { ExitPhoneBanking } else { say “Invalid option” } } }} Form 1

“Default” sequence (may be optional)

Page 39: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

39

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else if ( button pressed is 2 )then{ TransferFunds}else if ( button pressed is 3 )then{ PayBills}

else if ( button pressed is 4 )then{ ExitPhoneBanking}else{ say “Invalid option”}

Form 2“Cascaded” selection.

Page 40: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

40

Selection – Several Courses of Action (cont)

if ( button pressed is 1 )then{ CheckAccountBalance}else if ( button pressed is 2 )then{ TransferFunds}else if ( button pressed is 3 )then{ PayBills}

else if ( button pressed is 4 )then{ ExitPhoneBanking}else{ say “Invalid option”}

Form 2

Optional default sequence.

Page 41: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

41

Components of an AlgorithmValues and VariablesInstruction (a.k.a. primitives)Sequence (of instructions)Procedure (involving instructions) Selection (between instructions)

• Repetition (of instructions)

• Documentation (beside instructions)

Page 42: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

42

Repetition

• Repeat an instruction...– ...while (or maybe until) some true or

false condition occurs– Test the condition each time before

repeating the instruction• Also known as iteration or loop• Example:

– Algorithm for getting a date

Page 43: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

43

Repetition -- Exampleprocedure AskOnDate ( name, time, location )

{

Phone(name)

Say("Hey", name, "it's your lucky day!")

Say("Wanna come to", location, "at", time, "?")

ListenToReply ( )start begging count at zerowhile (reply is "No" and begging count < 100){ Say("Oh please!")

add 1 to begging count

ListenToReply ( )}

}

Page 44: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

44

Repetition – Example (cont)procedure AskOnDate ( name, time, location ){

Phone(name)Say("Hey", name, "it's your lucky day!")Say("Wanna come to", location, "at", time, "?")ListenToReply ( )start begging count at zerowhile ( reply is "No" and begging count < 100 ){ Say("Oh please!") add 1 to begging count ListenToReply ( )}

}

Condition is tested before sequence

Page 45: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

45

Repetition – Example (cont)

procedure AskOnDate ( name, time, location ){

Phone(name)Say("Hey", name, "it's your lucky day!")Say("Wanna come to", location, "at", time, "?")ListenToReply ( )start begging count at zerowhile (reply is "No" and begging count < 100){ Say("Oh please!") add 1 to begging count ListenToReply ( )}

}

Sequence may not get executed at all

Page 46: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

46

Repetition – Example (cont)procedure AskOnDate ( name, time, location ){

Phone(name)Say("Hey", name, "it's your lucky day!")Say("Wanna come to", location, "at", time, "?")ListenToReply ( )start begging count at zerowhile (reply is "No" and begging count < 100){ Say("Oh please!") add 1 to begging count ListenToReply ( )}

}

Ensure initial values of variables used in the conditions are set correctly

Page 47: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

47

Repetition – Example (cont)

procedure AskOnDate ( name, time, location ){

Phone(name)Say("Hey", name, "it's your lucky day!")Say("Wanna come to", location, "at", time, "?")ListenToReply ( )start begging count at zerowhile (reply is "No" and begging count < 100){ Say("Oh please!") add 1 to begging count ListenToReply ( )}

}

Ensure the variables used in the conditions are updated in each iteration

Page 48: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

48

Repetition – Example (cont)

procedure AskOnDate ( name, time, location )

{

Phone(name)

Say("Hey", name, "it's your lucky day!")

Say("Wanna come to", location, "at", time, "?")

ListenToReply ( )start begging count at zerowhile (reply is "No" and begging count < 100){ Say("Oh please!")

}

}Infinite loop

• What if we don’t increment the begging count?

Page 49: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

49

Repetition – Variation

decide on Time and Location

initialise booking to “unsuccessful”

while ( not successfully booked )

{

get next Name in little black book

AskOnDate(Name, Time, Location)

DetermineBookingSuccess

}

SighWithRelief

Page 50: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

50

Repetition– Pre-tested Loop

decide on Time and Location

initialise booking to “unsuccessful”

while ( not successfully booked )

{

get next Name in little black book

AskOnDate(Name, Time, Location)

DetermineBookingSuccess

}

SighWithReliefpre-tested loop

Page 51: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

51

Repetition – Pre-tested Loop

decide on Time and Location

initialise booking to “unsuccessful”

until ( successfully booked )

{

get next Name in little black book

AskOnDate(Name, Time, Location)

DetermineBookingSuccess

}

SighWithRelief

pre-tested loop

Page 52: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

52

Repetition – Post-tested Loop

decide on Time and Location

initialise booking to “unsuccessful”

do

{

get next Name in little black book

AskOnDate(Name, Time, Location)

DetermineBookingSuccess

} while ( not successfully booked )

SighWithReliefpost-tested loop

Sequence is executed at least once

Page 53: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

53

Repetition – Post-tested Loop

decide on Time and Location

initialise booking to “unsuccessful”

repeat

{

get next Name in little black book

AskOnDate(Name, Time, Location)

DetermineBookingSuccess

} until ( successfully booked )

SighWithRelief

Page 54: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

54

Repetition -- Variations

decide on Time and Locationinitialise booking to “unsuccessful”loop { get next Name in little black book AskOnDate(Name, Time, Location)

DetermineBookingSuccessif ( successfully booked )then{ break loop}

}SighWithRelief

Page 55: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

55

Components of an AlgorithmValues and VariablesInstruction (a.k.a. primitives)Sequence (of instructions)Procedure (involving instructions) Selection (between instructions)Repetition (of instructions)

• Documentation (beside instructions)

Page 56: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

56

Documentation

• Records what the algorithm does

• Describes how it does it

• Explains the purpose of each component of the algorithm

• Notes restrictions or expectations

• Example:– Getting a date (again)

Page 57: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

57

Documentation -- ExampleThink of something romantic to dodecide on time and location

Work through address book to look for a personinitialise booking to “unsuccessful”until (successfully booked){ get next Name in little black book AskOnDate(Name, Time, Location) DetermineBookingSuccess}

Assumes that I will find someone in the book before it runs outSighWithRelief

Page 58: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

58

Components of an Algorithm

Values and VariablesInstruction (a.k.a. primitives)Sequence (of instructions)Procedure (involving instructions) Selection (between instructions)Repetition (of instructions)Documentation (beside instructions)

Page 59: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

59

The Software Development Process

• Define the problem clearly

• Analyse the problem thoroughly

• Design an algorithm carefully

• Code the algorithm efficiently

• Test the code thoroughly

• Document the system lucidly

Page 60: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

60

Top-down Algorithm Design

• Write down what you have to do• Break that into 3-7 smaller steps• Break each step into 3-7 smaller steps• Keeping subdividing until each individual

step is easy enough to do – i.e., until it is a single instruction

• Example:– Learning

Page 61: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

61

Top-down Design -- Example

Learn

Prepare

Study

Reinforce

ReadMake notesPrepare questions

Attend lectureListen and thinkComplete pracAttend tute

Record answers to questions

Revise notes

Read lecture notesRead textbook

Read exerciseDesign algorithmCode solutionTest and document

Record insights

Page 62: 1 CSE1301 Computer Programming Lecture 4: Components of an Algorithm

62

Reading

• Deitel & Deitel, C: How to program– Chapter 3, Sections 3.8 to 3.13