Sunteți pe pagina 1din 89

ALGORITHMS AND FLOWCHARTS

A typical programming task can be divided into two


phases:
•Problem solving phase
– produce an ordered sequence of steps that describe solution
of problem
– this sequence of steps is called an algorithm
•Implementation phase
– implement the program in some programming language

1
Steps in Problem Solving
• First produce a general algorithm (one can use
pseudocode)
• Refine the algorithm successively to get step by
step detailed algorithm that is very close to a
computer language.
• Pseudocode is an artificial and informal language
that helps programmers develop algorithms.
Pseudocode is very similar to everyday English.

2
The Flowchart
Program flowcharts show the sequence of
instructions in a single program or subroutine.
Different symbols are used to draw each type of
flowchart.
A Flowchart
– shows logic of an algorithm
– emphasizes individual steps and their
interconnections
– e.g. control flow from one action to the next
3
START

What is a Flowchart? Display message


“How many
hours did you
work?”

• A flowchart is a Read Hours

diagram that depicts Display message


“How much do
the “flow” of a you get paid per
hour?”

program.
Read Pay Rate
• The figure shown here
is a flowchart for pay- Multiply Hours
by Pay Rate.
Store result in
calculating program. Gross Pay.

Display Gross
Pay

END

4
Basic Flowchart START
Rounded
Rectangle

Symbols Display message


“How many
hours did you
work?”

• Notice there are three Read Hours

types of symbols in this Display message


“How much do
Parallelogram
flowchart: you get paid per
hour?”

– rounded rectangles
Read Pay Rate
– parallelograms
– a rectangle Multiply Hours
by Pay Rate.
Rectangle
• Each symbol represents
Store result in
Gross Pay.

a different type of Display Gross


Rounded Pay
operation. Rectangle
END

5
Basic Flowchart START Terminal

Symbols Display message


“How many
hours did you
work?”

• Terminals Read Hours

– represented by rounded Display message


“How much do
rectangles you get paid per
hour?”
– indicate a starting or
ending point Read Pay Rate

Multiply Hours
by Pay Rate.
START Store result in
Gross Pay.

Display Gross
Pay

END Terminal
END

6
Basic Flowchart START

Symbols Display message


“How many
hours did you
work?”

• Input/Output Operations Read Hours

– represented by Display message


“How much do Input/Output
parallelograms you get paid per
Operation
hour?”
– indicate an input or output
operation Read Pay Rate

Multiply Hours
by Pay Rate.
Display message Store result in
Gross Pay.
“How many
Read Hours
hours did you Display Gross

work?” Pay

END

7
Basic Flowchart START

Symbols Display message


“How many
hours did you
work?”

• Processes Read Hours

– represented by rectangles Display message


“How much do
– indicates a process such as you get paid per
hour?”
a mathematical
computation or variable Read Pay Rate

assignment
Multiply Hours
by Pay Rate.
Process Store result in
Multiply Hours Gross Pay.
by Pay Rate.
Store result in Display Gross
Pay
Gross Pay.
END

8
Stepping Through START
Output
Display message Operation
the Flowchart “How many
hours did you
work?”

Read Hours
How many
hours did
you work?
Display message
“How much do
you get paid per
hour?”

Read Pay Rate

Multiply Hours
by Pay Rate.
Store result in
Variable Contents: Gross Pay.

Hours: ? Display Gross


Pay Rate: ? Pay

Gross Pay: ? END

9
Stepping Through START

Display message

the Flowchart “How many


hours did you
work?”

How many
Input Read Hours
hours did Operation
you work?
(User types Display message
40
40) “How much do
you get paid per
hour?”

Read Pay Rate

Multiply Hours
by Pay Rate.
Store result in
Variable Contents: Gross Pay.

Hours: 40
Display Gross
Pay Rate: ? Pay

Gross Pay: ? END

10
Stepping Through START

Display message

the Flowchart “How many


hours did you
work?”

Read Hours
How much
do you get
paid per
Display message
hour?
“How much do
Output you get paid per
Operation hour?”

Read Pay Rate

Multiply Hours
by Pay Rate.
Store result in
Variable Contents: Gross Pay.

Hours: 40
Display Gross
Pay Rate: ? Pay

Gross Pay: ? END

11
Stepping Through START

Display message

the Flowchart “How many


hours did you
work?”

Read Hours
How much
do you get
paid per
Display message
hour? 20
“How much do
you get paid per
hour?”

Input Read Pay Rate


Operation
(User types Multiply Hours
20) by Pay Rate.
Store result in
Variable Contents: Gross Pay.

Hours: 40
Display Gross
Pay Rate: 20 Pay

Gross Pay: ? END

12
Stepping Through START

Display message

the Flowchart “How many


hours did you
work?”

Read Hours
How much
do you get
paid per
Display message
hour?
“How much do
you get paid per
hour?”

Read Pay Rate

Multiply Hours
Process: The by Pay Rate.
Store result in
Variable Contents: product of 40
times 20 is
Gross Pay.

Hours: 40 stored in
Gross Pay Display Gross
Pay Rate: 20 Pay

Gross Pay: 800 END

13
Stepping Through START

Display message

the Flowchart “How many


hours did you
work?”

Read Hours
Your gross
pay is 800
Display message
“How much do
you get paid per
hour?”

Read Pay Rate

Multiply Hours
by Pay Rate.
Store result in
Variable Contents: Gross Pay.

Hours: 40
Output Display Gross
Pay Rate: 20 Operation Pay

Gross Pay: 800 END

14
Four Flowchart Structures
• Sequence
• Decision
• Repetition
• Case

15
Sequence Structure
• a series of actions are performed in sequence
• The pay-calculating example was a sequence
flowchart.

16
Decision Structure
• One of two possible actions is taken, depending on
a condition.

17
Decision Structure
• A new symbol, the diamond, indicates a yes/no question. If
the answer to the question is yes, the flow follows one
path. If the answer is no, the flow follows another path

NO YES

18
Decision Structure
• In the flowchart segment below, the question “is x < y?” is
asked. If the answer is no, then process A is performed. If
the answer is yes, then process B is performed.

NO YES
x < y?

Process A Process B

19
Decision Structure
• The flowchart segment below shows how a decision
structure is expressed in C++ as an if/else statement.

Flowchart C++ Code

NO YES if (x < y)
x < y? a = x * 2;
else
Calculate a Calculate a a = x + y;
as x plus y. as x times 2.

20
Decision Structure
• The flowchart segment below shows a decision structure
with only one action to perform. It is expressed as an if
statement in C++ code.
Flowchart C++ Code

NO YES if (x < y)
x < y? a = x * 2;

Calculate a
as x times 2.

21
Repetition Structure
• A repetition structure represents part of the program that
repeats. This type of structure is commonly known as a
loop.

22
Repetition Structure
• Notice the use of the diamond symbol. A loop tests a
condition, and if the condition exists, it performs an action.
Then it tests the condition again. If the condition still
exists, the action is repeated. This continues until the
condition no longer exists.

23
Repetition Structure
• In the flowchart segment, the question “is x < y?” is asked.
If the answer is yes, then Process A is performed. The
question “is x < y?” is asked again. Process A is repeated
as long as x is less than y. When x is no longer less than y,
the repetition stops and the structure is exited.

YES
x < y? Process A

24
Repetition Structure
• The flowchart segment below shows a repetition structure
expressed in C++ as a while loop.

Flowchart C++ Code

while (x < y)

YES x++;
x < y? Add 1 to x

25
Controlling a Repetition
Structure
• The action performed by a repetition structure must
eventually cause the loop to terminate. Otherwise, an
infinite loop is created.
• In this flowchart segment, x is never changed. Once the
loop starts, it will never end.
• QUESTION: How can this
YES
flowchart be modified so x < y? Display x
it is no longer an infinite
loop?

26
Controlling a Repetition
Structure
• ANSWER: By adding an action within the repetition that
changes the value of x.

YES
x < y? Display x Add 1 to x

27
A Pre-Test Repetition Structure
• This type of structure is known as a pre-test repetition
structure. The condition is tested BEFORE any actions are
performed.

YES
x < y? Display x Add 1 to x

28
A Pre-Test Repetition Structure
• In a pre-test repetition structure, if the condition does not
exist, the loop will never begin.

YES
x < y? Display x Add 1 to x

29
A Post-Test Repetition Structure
• This flowchart segment shows a post-test
repetition structure.
• The condition is tested AFTER the actions Display x
are performed.
• A post-test repetition structure always Add 1 to x
performs its actions at least once.

YES
x < y?

30
A Post-Test Repetition Structure
• The flowchart segment below shows a post-test repetition
structure expressed in C++ as a do-while loop.

C++ Code
Display x
do
{
Flowchart cout << x << endl;
Add 1 to x x++;
} while (x < y);

YES
x < y?

31
Post-Test vs Pre-Test
Repetition Structure

32
Case Structure
• One of several possible actions is taken, depending
on the contents of a variable.

33
Case Structure
• The structure below indicates actions to perform
depending on the value in years_employed.

CASE
years_employed

1 2 3 Other

bonus = 100 bonus = 200 bonus = 400 bonus = 800

34
Case Structure

If years_employed = 2, If years_employed = 3,
bonus is set to 200 bonus is set to 400
If years_employed = 1, If years_employed is
CASE
bonus is set to 100 years_employed any other value, bonus
is set to 800

1 2 3 Other

bonus = 100 bonus = 200 bonus = 400 bonus = 800

35
Connectors
• Sometimes a flowchart will not fit on one
page.
• A connector (represented by a small circle)
allows you to connect two flowchart
segments.

36
Connectors

•The “A” connector


A
indicates that the second START

flowchart segment begins


where the first segment
ends.

END
A

37
Modules
• A program module (such as a function in
C++) is represented by a special symbol.

38
Modules
START
•The position of the module
symbol indicates the point the Read Input.
module is executed.
•A separate flowchart can be Call calc_pay
function.
constructed for the module.

Display results.

END

39
Combining Structures
• Structures are commonly combined to create more
complex algorithms.
• The flowchart segment below combines a decision
structure with a sequence structure.

YES
x < y? Display x Add 1 to x

40
Combining Structures
• This flowchart segment
shows two decision NO YES
structures combined. x > min?

Display “x is NO YES
outside the limits.”
x < max?

Display “x is Display “x is
outside the limits.” within limits.”

41
Review
• What do each of the following symbols
represent?

(Answer on next slide) 42


Answer
• What do each of the following symbols
represent?
Decision
Terminal

Input/Output
Operation Connector

Process Module

43
Review
• Name the four flowchart structures.

(Answer on next slide)

44
Answer
• Sequence
• Decision
• Repetition
• Case

45
Review
• What type of structure is this?

(Answer on next slide) 46


Answer
• Repetition

47
Review
• What type of structure is this?

(Answer on next slide) 48


Answer
• Sequence

49
Review
• What type of structure is this?

50
(Answer on next slide)
Answer
• Case

51
Review
• What type of structure is this?

(Answer on next slide) 52


Answer
• Decision

53
Pseudocode & Algorithm
• Example 1: Write an algorithm to
determine a student’s final grade and
indicate whether it is passing or failing. The
final grade is calculated as the average of
four marks.

54
Pseudocode & Algorithm
• Detailed Algorithm
Step 1: Input M1,M2,M3,M4
Step 2: GRADE  (M1+M2+M3+M4)/4
Step 3: if (GRADE < 50) then
Print “FAIL”
else
Print “PASS”
endif

55
Example 1
START
Step 1: Input M1,M2,M3,M4
Input
Step 2: GRADE  (M1+M2+M3+M4)/4
M1,M2,M3,M4 Step 3: if (GRADE <50) then
Print “FAIL”
GRADE(M1+M2+M3+M4)/4 else
Print “PASS”
endif
N IS Y
GRADE<50

PRINT PRINT
“PASS” “FAIL”

STOP

56
Example 2
• Write an algorithm and draw a flowchart to
convert the length in feet to centimeter.

57
Example 2
Flowchart
Algorithm START

• Step 1: Input Lft Input

• Step 2: Lcm  Lft x 30 Lft

• Step 3: Print Lcm Lcm  Lft x 30

Print
Lcm

STOP

58
Example 3
Write an algorithm and draw a flowchart that
will read the two sides of a rectangle and
calculate its area.

59
Example 3
Algorithm START

• Step 1: Input W,L Input

• Step 2: A  L x W
W, L

• Step 3: Print A A LxW

Print
A

STOP

60
Example 4

• We want to create a flowchart that prints


out double the number of the inputted value.
• On the following slide, a number of
potential boxes you could use to correctly
implement the algorithm.

61
START

END
62
• Pick the appropriate three of the following boxes that
describe the algorithm as described.

Read A B = A*2 Print A

Read B B=A/2 Print B

Read C B=A+2 Print C

63
Example 5
• We want to create a flowchart that reads in
a number, and checks if it is odd or even.
• On the following slide, a number of
potential boxes you could use to correctly
implement the algorithm.

64
START

Read in A

Yes No

END
65
• Pick the appropriate three of the following boxes that
describe the algorithm as described.

Print “It’s
Read B Is A > B?
Even”

Print “It’s Does A/2


give a Print A /2
Odd” remainder?

Print “I
Read C Is A = = B?
dunno”
66
NESTED IFS
• One of the alternatives within an IF–
THEN–ELSE statement
– may involve further IF–THEN–ELSE statement

67
Example 6
• We want to create a flowchart that prints
out the biggest of three inputted numbers

68
Example 6
Step 1: Input A, B, C
Step 2: if (A>B) then
if (A>C) then
MAX  A [A>B, A>C]
else
MAX  C [C>A>B]
endif
else
if (B>C) then
MAX  B [B>A, B>C]
else
MAX  C [C>B>A]
endif
endif
Step 3: Print “The largest number is”, MAX
69
Example 6
• Flowchart: Draw the flowchart of the
above Algorithm.
• On the following slide, a number of
potential boxes you could use to correctly
implement the algorithm.

70
START

Read A, B, C

Yes Yes A>B? No Yes

No No

END 71
• Pick the appropriate three of the following boxes that
describe the algorithm as described.

Print A
B<C? B>C?

Print B
A<C? A>C?

A<B? A>B? Print C

72
Example 7
• We want to create a flowchart that prints
out the word “Honour” if the number input
is greater than 70, if the number is less than
40 print out the word “Fail”, otherwise print
out the word “Pass”.
• On the following slide, a number of
potential boxes you could use to correctly
implement the algorithm.
73
START

Read A

Yes No

No Yes

END 74
• Pick the appropriate three of the following boxes that
describe the algorithm as described

Print
A < 70? A > 70?
“Honour”

A < 40? A > 40? Print “Fail”

A > Pass? A > Honour? Print “Pass”


75
Example 8
• We want to create a flowchart that prints
out the average value of five numbers input
in.
• On the following slide, a number of
potential boxes you could use to correctly
implement the algorithm.

76
START

Total = 0

A=1
A=A+1

No

Yes

END 77
• Pick the appropriate three of the following boxes that
describe the algorithm as described.

Is A==6? Is A==5? Is A==0?

Print Total Print Total / 5 Print Total++

Total = X Total = Total Total = Total + X

Read A Read Total Read X


78
Example 9
• Write an algorithm and draw a flowchart that will
calculate the roots of a quadratic equation
ax 2  bx  c  0
• Hint: d = sqrt (b2  4ac),
• and the roots are:
x1 = (–b + d)/2a and x2 = (–b – d)/2a

79
START

Example 9
Input
a, b, c
• Algorithm:
• Step 1: Input a, b, c
• Step 2: d  sqrt ( b  b  4  a  c ) d  sqrt(b x b – 4 x a x c)
• Step 3: x1  (–b + d) / (2 x a)
• Step 4: x2  (–b – d) / (2 x a) x1 (–b + d) / (2 x a)
• Step 5: Print x1, x2
X2  (–b – d) / (2 x a)

Print
x1 ,x2

STOP
80
Example 10
• Write an algorithm that reads two values,
determines the largest value and prints the largest
value with an identifying message.

81
Example 10
START
ALGORITHM
Step 1: Input VALUE1, VALUE2
Input
Step 2: if (VALUE1 > VALUE2) VALUE1,VALUE2
then
MAX  VALUE1
else Y is
N
MAX  VALUE2 VALUE1>VALUE2

endif
Step 3: Print “The largest value
is”, MAX MAX  VALUE1 MAX  VALUE2

Print
“The largest value is”, MAX

STOP 82
Example 11
Write and algorithm and draw a flowchart to
a) read an employee name (NAME), overtime
hours worked (OVERTIME), hours absent
(ABSENT) and
b) determine the bonus payment (PAYMENT).

83
Example 11
Bonus Schedule
OVERTIME – (2/3)*ABSENT Bonus Paid

>40 hours $50


>30 but  40 hours $40
>20 but  30 hours $30
>10 but  20 hours $20
 10 hours $10

84
Step 1: Input NAME,OVERTIME,ABSENT
Step 2: if (OVERTIME–(2/3)*ABSENT > 40) then
PAYMENT  50
else if (OVERTIME–(2/3)*ABSENT > 30) then
PAYMENT  40
else if (OVERTIME–(2/3)*ABSENT > 20) then
PAYMENT  30
else if (OVERTIME–(2/3)*ABSENT > 10) then
PAYMENT 20
else
PAYMENT  10
endif
Step 3: Print “Bonus for”, NAME “is $”, PAYMENT

85
Example 11
• Flowchart: Draw the flowchart of the
above algorithm?

86
Example 12
Express an algorithm to get two numbers from the user
(dividend and divisor), testing to make sure that the divisor
number is not zero, and displaying their quotient using a
flowchart.

87
Example 12 Answer
– Step 1 – Declare variables – dividend, divisor, quotient
– Step 2 – Prompt user to get dividend
– Step 3 – Store values in dividend variable
– Step 4 – Prompt user to get divisor
– Step 5 – Store value in divisor variable
– Step 6 – Display dividend and divisor
– Step 7 - Loop
Selection: If divisor is equal to zero
Display error message, “divisor must be non-zero” and

• go back to step 4
• Step 8 - Calculate quotient as dividend/divisor
• Step 9 - Display quotient

88
89

S-ar putea să vă placă și