Title: Algorithmic Problem Solving
1Chapter 6
- Algorithmic Problem Solving
2Algorithm
Algorithm a well defined computational procedure
consisting of a set of instructions, that takes
some value(s) as input, and produces some
value(s), as output.
Al-Khowarizmi ? Algorismus ? Algorithm
3Algorithm
4Algorithm
- Algorithm embeds logic of solution.
- Algorithm is converted to program.
- Algorithmic problem solving
- writing an algorithm -- tough
- translate algorithm to code -- easy
5Software and hardware
- Software algorithms, programs.
- Hardware computers (CPU, disk drive, keyboard,
etc.)
6Euclidean algorithm
- First documented algorithm by Euclid (300 B.C.)
to compute greatest common divisor (gcd).
Examples gcd(3,21) 3 gcd(15,40) 5.
1. Let A and B be integers with A gt B ? 0. 2. If
B 0, then the gcd is A and the algorithm
ends. 3. Otherwise, find q and r such that A
qB r where 0 ? r lt B Note that we have 0 ? r lt
B lt A and gcd(A,B) gcd(B,r). Replace A by B, B
by r. Go to step 2.
7Euclidean algorithm
- Walk through the algorithm with examples A 40,
B 15.
A 2B 10 ? A 15 B 10 A 1B 5 ?
A 10 B 5 A 2B 0 ? A 5 B 0
gcd is 5
1. Let A and B be integers with A gt B ? 0. 2. If
B 0, then the gcd is A and the algorithm
ends. 3. Otherwise, find q and r such that A
qB r where 0 ? r lt B Note that we have 0 ? r lt
B lt A and gcd(A,B) gcd(B,r). Replace A by B, B
by r. Go to step 2.
8Data types and structures
- Data types integer, real number, character,
Boolean, pointer, etc. Examples 32, 0.0264,
'a', true. - Data structures arrays, records, files, etc.
- Program Algorithm Data Structures
- Data are stored in variables in a program.
Variables take up memory space in the computer.
9A C program
- A sample C program
- / A simple C program to read a number compute
and display - its square by using the multiplication ()
operator. / - include ltstdio.hgt
- main () / a C program always has a main
function / -
- int n / this declares an integer
variable 'n' / - printf ("\nEnter the number to be squared ")
- scanf ("d", n)
- printf ("Using the operator, the square of
d is d.\n\n", - n, nn)
10Characteristics of an algorithm
- Each step must be exact.
- Must terminate.
- Must be effective.
- Must be general.
11Pseudo-code
- How to represent an algorithm?
- Pseudo-code
- Flowchart
- Pseudo-code a combination of English text,
mathematical notations, and keywords from the
programming language.
12Pseudo-code
- To find average, min and max among a list.
First, you initialise sum to zero, min to a very
big number, and max to a very small number. Then,
you enter the numbers, one by one. For each
number that you have entered, assign it to num
and add it to the sum. At the same time, you
compare num with min, if num is smaller than min,
let min be num instead. Similarly, you compare
num with max, if num is larger than max, let max
be num instead. After all the numbers have been
entered, you divide sum by the numbers of items
entered, and let ave be this result. End of
algorithm.
13Pseudo-code
- To find average, min and max among a list.
sum ? count ? 0 sum sum of numbers
count how many numbers are entered? min ?
? min to hold the smallest value eventually
max ? ? max to hold the largest value
eventually for each num entered, increment
count sum ? sum num if num lt min then min ?
num if num gt max then max ? num ave ? sum/count
14Flowchart
- Diagrammatic form
- terminator
- connector
- process box
- decision box
15Flowchart
- To find minimum and maximum among a list.
16Control structures
- Sequence
- implied one after another
- Branching (selection)
- select alternative path based on condition
(true/false) - example if x ? 0 then a b/x
- if tired then rest
- else work
17Control structures
- Loop (repetition)
- bounded loop
- for x 1 to 10 do statements
- unbounded loop
- while (condition) do statements
- repeat/iterate statements in loop body until
condition changes - must make sure loop terminates
18Homework
- Try exercises behind chapter 6.