algorithms and flowcharts - uj.edu.sa 1.1 flowchart.pdf · algorithms and flowcharts a typical...
TRANSCRIPT
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
What is a Flowchart?
• A flowchart is a
diagram that depicts
the “flow” of a
program.
• The figure shown here
is a flowchart for pay-
calculating program.
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
4
Basic Flowchart
Symbols
• Notice there are three
types of symbols in this
flowchart:
– rounded rectangles
– parallelograms
– a rectangle
• Each symbol represents
a different type of
operation.
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Rounded
Rectangle
Parallelogram
Rectangle
Rounded
Rectangle
5
Basic Flowchart
Symbols
• Terminals
– represented by rounded
rectangles
– indicate a starting or
ending point
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Terminal
START
END Terminal
6
Basic Flowchart
Symbols
• Input/Output Operations
– represented by
parallelograms
– indicate an input or output
operation
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Display message
“How many
hours did you
work?”
Read Hours
Input/Output
Operation
7
Basic Flowchart
Symbols
• Processes
– represented by rectangles
– indicates a process such as
a mathematical
computation or variable
assignment
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Process
8
Stepping Through
the Flowchart
How many
hours did
you work?
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Variable Contents:
Hours: ?
Pay Rate: ?
Gross Pay: ?
Output
Operation
Stepping Through
the Flowchart
9
Stepping Through
the Flowchart
How many
hours did
you work?
40
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Variable Contents:
Hours: 40
Pay Rate: ?
Gross Pay: ?
Input
Operation
(User types
40)
Stepping Through
the Flowchart
10
Stepping Through
the Flowchart
How much
do you get
paid per
hour?
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Variable Contents:
Hours: 40
Pay Rate: ?
Gross Pay: ?
Output
Operation
Stepping Through
the Flowchart
11
Stepping Through
the Flowchart
How much
do you get
paid per
hour? 20
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Variable Contents:
Hours: 40
Pay Rate: 20
Gross Pay: ?
Input
Operation
(User types
20)
Stepping Through
the Flowchart
12
How much
do you get
paid per
hour?
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Variable Contents:
Hours: 40
Pay Rate: 20
Gross Pay: 800
Process: The
product of 40
times 20 is
stored in
Gross Pay
Stepping Through
the Flowchart
13
Stepping Through
the Flowchart
Your gross
pay is 800
START
Display message
“How many
hours did you
work?”
Read Hours
Display message
“How much do
you get paid per
hour?”
Read Pay Rate
Multiply Hours
by Pay Rate.
Store result in
Gross Pay.
Display Gross
Pay
END
Variable Contents:
Hours: 40
Pay Rate: 20
Gross Pay: 800
Output
Operation
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
YESNO
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.
YESNO
x < y?
Process BProcess A
19
Decision Structure
• The flowchart segment below shows how a decision
structure is expressed in C++ as an if/else statement.
YESNO
x < y?
Calculate a
as x times 2.Calculate a
as x plus y.
if (x < y)
a = x * 2;
else
a = x + y;
Flowchart C++ Code
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.
if (x < y)
a = x * 2;
Flowchart C++ Code
YESNO
x < y?
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.
x < y? Process A
YES
24
Repetition Structure
• The flowchart segment below shows a repetition structure
expressed in C++ as a while loop.
while (x < y)
x++;
Flowchart C++ Code
x < y? Add 1 to x
YES
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
flowchart be modified so
it is no longer an infinite
loop?
x < y? Display x
YES
26
Controlling a Repetition
Structure• ANSWER: By adding an action within the repetition that
changes the value of x.
x < y? Display x Add 1 to x
YES
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.
x < y? Display x Add 1 to x
YES
28
A Pre-Test Repetition Structure
• In a pre-test repetition structure, if the condition does not
exist, the loop will never begin.
x < y? Display x Add 1 to x
YES
29
A Post-Test Repetition Structure
• This flowchart segment shows a post-test
repetition structure.
• The condition is tested AFTER the actions
are performed.
• A post-test repetition structure always
performs its actions at least once.
Display x
Add 1 to x
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.
do
{
cout << x << endl;
x++;
} while (x < y);
Flowchart
C++ CodeDisplay x
Add 1 to x
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
CASE
years_employed
1 2 3 Other
bonus = 100 bonus = 200 bonus = 400 bonus = 800
If years_employed = 1,
bonus is set to 100
If years_employed = 2,
bonus is set to 200If years_employed = 3,
bonus is set to 400
If years_employed is
any other value, bonus
is set to 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.
A
36
Connectors
A
ASTART
END
•The “A” connector
indicates that the second
flowchart segment begins
where the first segment
ends.
37
Modules
• A program module (such as a function in
C++) is represented by a special symbol.
38
Modules
•The position of the module
symbol indicates the point the
module is executed.
•A separate flowchart can be
constructed for the module.
START
END
Read Input.
Call calc_pay
function.
Display results.
39
Combining Structures
• Structures are commonly combined to create more
complex algorithms.
• The flowchart segment below combines a decision
structure with a sequence structure.
x < y? Display x Add 1 to x
YES
40
• This flowchart segment
shows two decision
structures combined.
Combining Structures
Display “x is
within limits.”
Display “x is
outside the limits.”
YESNO
x > min?
x < max?
YESNO
Display “x is
outside the 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?
Terminal
Input/Output
Operation
Process
Decision
Connector
Module
43
Review
• Name the four flowchart structures.
(Answer on next slide)
44
Answer
• Sequence
• Decision
• Repetition
• Case
45
• What type of structure is this?
Review
(Answer on next slide)46
Answer
• Repetition
47
• What type of structure is this?
Review
(Answer on next slide)48
Answer
• Sequence
49
• What type of structure is this?
Review
(Answer on next slide)50
Answer
• Case
51
• What type of structure is this?
Review
(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
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
START
Input
M1,M2,M3,M4
GRADE(M1+M2+M3+M4)/4
IS
GRADE<50
STOP
YN
56
“FAIL”
“PASS”
Example 2
• Write an algorithm and draw a flowchart to convert the length in feet to centimeter.
57
Example 2
Algorithm
• Step 1: Input Lft
• Step 2: Lcm Lft x 30
• Step 3: Print Lcm
START
Input
Lft
Lcm Lft x 30
STOP
Flowchart
58
Lcm
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
• Step 1: Input W,L
• Step 2: A L x W
• Step 3: Print A
START
Input
W, L
A L x W
STOP
60
A
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
END62
Read A
Read B
B = A*2
B = A / 2 Print B
Print A
Read C B = A + 2 Print C
• Pick the appropriate three of the following boxes that
describe the algorithm as described.
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
END
No
Read in A
Yes
65
Is A > B?Read BPrint “It’s
Even”
Does A/2
give a
remainder?
Print “It’s
Odd”Print A /2
Is A = = B?Read CPrint “I
dunno”
• Pick the appropriate three of the following boxes that
describe the algorithm as described.
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
END
A>B?
No
Read A, B, C
YesYes Yes
No
No
71
A>C?
B>C?Print A
Print C
Print B
A>B?
A<C?
B<C?
A<B?
• Pick the appropriate three of the following boxes that
describe the algorithm as described.
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
END
No
Read A
Yes No
Yes
74
A < 70?
A < 40?
“Honour”
Print “Fail”
Print “Pass”A > Pass?
A > 70?
A > 40?
A > Honour?
• Pick the appropriate three of the following boxes that
describe the algorithm as described
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
END
No
A = 1
Yes
Total = 0
A = A + 1
77
Is A==6?
Total = Total + X
Print Total / 5
Is A==5? Is A==0?
Print Total Print Total++
Total = X Total = Total
Read XRead TotalRead A
• Pick the appropriate three of the following boxes that
describe the algorithm as described.
78
Example 9
• Write an algorithm and draw a flowchart that will
calculate the roots of a quadratic equation
• Hint: d = sqrt ( ),
• and the roots are:
x1 = (–b + d)/2a and x2 = (–b – d)/2a
2 0ax bx c
2 4b ac
79
Example 9
• Algorithm: • Step 1: Input a, b, c
• Step 2: d sqrt ( )
• Step 3: x1 (–b + d) / (2 x a)
• Step 4: x2 (–b – d) / (2 x a)
• Step 5: Print x1, x2
START
Input
a, b, c
d sqrt(b x b – 4 x a x c)
STOP
x1(–b + d) / (2 x a)
X2 (–b – d) / (2 x a)
4b b a c
80
x1 ,x2
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
MAX VALUE1
STOP
Y N
START
Input
VALUE1,VALUE2
MAX VALUE2
is
VALUE1>VALUE2
82
“The largest value is”, MAX
ALGORITHMStep 1: Input VALUE1, VALUE2Step 2: if (VALUE1 > VALUE2)
then MAX VALUE1elseMAX VALUE2endif
Step 3: Print “The largest value is”, MAX
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
>30 but 40 hours
>20 but 30 hours
>10 but 20 hours
10 hours
$50
$40
$30
$20
$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