Transcript L04.ppt

Algorithms, Part 1 of 3
The First step in the programming process
Topics
• Definition of an Algorithm
• Example: The Euclidean Algorithm
• Syntax versus Semantics
Reading
• Sections 1.4 – 1.5
CMSC 104, L04
1
Problem Solving
• Problem solving is the process of
transforming the description of a problem
into the solution of that problem.
• We use our knowledge of the problem
domain.
• We rely on our ability to select and use
appropriate problem-solving strategies,
techniques, and tools.
CMSC 104, L04
2
Algorithms
• An algorithm is a step by step solution to a
problem.
• Why bother writing an algorithm ?
o
o
For your own use in the future. You won’t have
to rethink the problem.
So others can use it, even if they know very
little about the principles behind how the
solution was derived.
CMSC 104, L04
3
Examples of Algorithms
• Washing machine instructions
• Instructions for a ready-to-assemble piece
of furniture
• A classic: finding the greatest common
divisor (GCD)
o
The Euclidean Algorithm
CMSC 104, L04
4
Washing Machine Instructions
• Separate clothes into white clothes and colored
clothes.
• For white clothes:
o Set water temperature knob to HOT.
o Place white laundry in tub.
• For colored clothes:
o Set water temperature knob to COLD.
o Place colored laundry in tub.
• Add 1 cup of powdered laundry detergent to tub.
• Close lid and press the start button.
CMSC 104, L04
5
Flow Chart for Algorithm
Start
Separate Clothes into Light / Dark
and Select Which one to wash
NO
YES
Set Temp. to HOT
If / else Structure
Page 180 in
book.
Are Cloths Light
Set Temp. to Cold
?
Place Cloths in Tub
Add 1 cup detergent to Tub
Close Lid and Press Start Button
CMSC 104, L04
Stop
6
Observations About the Washing Machine
Instructions
• There are a finite number of steps.
• We are capable of doing each of the
instructions.
• When we have followed all of the steps,
the washing machine will wash the
clothes and then will stop.
CMSC 104, L04
7
Refinement of the Definition
• Our old definition:
o
An algorithm is a step by step solution to a
problem.
• Adding our observations:
o
An algorithm is a finite set of executable
instructions that directs a terminating activity.
CMSC 104, L04
8
Instructions for a Ready-to-Assemble Piece of
Furniture
• "Align the marks on side A with the
grooves on Part F.“
• How could these instructions be hard to
follow?
o
o
CMSC 104, L04
Which side is A? A & B look alike -- both
line up with Part F. This instruction is
ambiguous.
The steps are not sequential, do not follow
any particular order.
9
Poor Example of an Algorithm
CMSC 104, L04
10
Poor Example of Algorithm
CMSC 104, L04
11
Carburetor
Rebuilding
Diagram.
Poor example
of an algorithm.
No Start,
No Stop,
No Steps
CMSC 104, L04
12
Final Version of the Definition
• Our old definition:
o
An algorithm is a finite set of executable
instructions that directs a terminating activity.
• Final version:
o
An algorithm is a finite set of unambiguous,
executable instructions that directs a
terminating activity.
CMSC 104, L04
13
History of Algorithms
• The study of algorithms began as a subject
in mathematics.
• The search for algorithms was a significant
activity of early mathematicians.
• Goal: To find a single set of instructions that
can be used to solve any problem of a
particular type (a general solution).
CMSC 104, L04
14
The Euclidean Algorithm
Problem: Find the largest positive integer that divides
evenly into two given positive integers (i.e., the
greatest common divisor).
Algorithm:
 Assign M and N the values of the larger and smaller of
the two positive integers, respectively.
 Divide M by N and call the remainder R.
 If R is not 0, then assign M the value of N, assign N the
value of R, and return to Step 2. Otherwise, the
greatest common divisor is the value currently assigned
to N.
CMSC 104, L04
15
Finding the GCD of 24 and 9
M
24
9
6
N
9
6
3
R
6
3
0
So, 3 is the GCD of 24 and 9.
CMSC 104, L04
16
Euclidean Algorithm (con’t)
• Do we need to know the theory that Euclid
used to come up with this algorithm in order
to use it ?
• What intelligence is required to find the
GCD using this algorithm ?
CMSC 104, L04
17
Greatest Com. Divisor Flow Chart
Start
Assign M = Larger
N = Smaller
While loop Structure
Page 112 in book.
Get Remainder R of M / N
Get Remainder R of M / N
Assign
valueof
of N
N
AssignMMthevalue
Assign
N
the
value
of
R
Assign R value of N
N
Does R = 0
?
Yes
N is GCD
Stop
CMSC 104, L04
18
The Idea Behind Algorithms
• Once an algorithm behind a task has been
discovered
o
We don't need to understand the principles.
o
The task is reduced to following the
instructions.
o
The intelligence is "encoded into the algorithm."
CMSC 104, L04
19
Algorithm Representation
• Syntax and Semantics
o
Syntax refers to the representation itself.
o
Semantics refers to the concept represented.
(i.e., the logic).
CMSC 104, L04
20
Contrasting Syntax and Semantics
• In the English language, we have both
syntax and semantics.
• Syntax is the grammar of the language.
• Semantics is the meaning.
• Given the following sentence,
I walked to the corner grocery store.
o
o
Is this sentence syntactically correct?
Is it semantically correct?
CMSC 104, L04
21
Contrasting Syntax and Semantics (con’t)
• Given the following sentence,
I talked to the circular grocery store.
o
o
Is this sentence syntactically correct?
Is it semantically correct?
• How about
I grocery store walked corner the to.
CMSC 104, L04
22
Contrasting Syntax and Semantics (con’t)
• Conclusion: An English sentence may be
syntactically correct, yet semantically
(logically) incorrect.
• This is also true of algorithms.
• And it is also true of computer code.
CMSC 104, L04
23
Flowcharting
• Flowcharting is another technique used in
designing and representing algorithms.
• A flowchart is a graph consisting of geometric
shapes that are connected by flow lines.
• From the flowchart one can write the program
code.
CMSC 104, L04
24
Symbols (I)
or
Terminal symbol
Process symbol
Input-Output symbol
Decision symbol
CMSC 104, L04
25
Symbols (II)
Flow Lines indicating the
logical sequence of statements
One must follow the flow of the
arrows direction, one cannot go
in the opposite direction of the
arrows flow.
CMSC 104, L04
26