Chapter 6 Algorithmic Problem Solving Chapter 6: Algorithmic Problem 1

advertisement
Chapter 6
Algorithmic Problem Solving
Chapter 6: Algorithmic Problem
Solving
1
Algorithm
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
Chapter 6
Algorithm
2
Algorithm
Input
Chapter 6
Algorithm
Algorithm
Output
3
Algorithm
Algorithm embeds logic of
solution.
Algorithm is converted to program.
Understanding
the problem
Writing an
algorithm
Algorithmic problem solving:
writing an algorithm -- tough
Verifying the
algorithm
translate algorithm to code -- easy
Converting to
code
Chapter 6
Algorithm
4
Software and hardware
Software: algorithms,
programs.
Hardware: computers
(CPU, disk drive,
keyboard, etc.)
ingredients
recipe
(software)
:
Cooking
utensils
(hardware)
bah kut teh
Chapter 6
Software and hardware
5
Euclidean 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 > 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 < B
Note that we have 0  r < B < A and gcd(A,B) = gcd(B,r).
Replace A by B, B by r. Go to step 2.
Chapter 6
Euclidean algorithm
6
Euclidean algorithm
Walk through the algorithm with examples:
A = 40, B =15. A = 2B + 10  A = 15 ; B = 10
A = 1B + 5
A = 2B + 0
gcd is 5
 A = 10 ; B = 5
 A=5;B=0
1. Let A and B be integers with A > 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 < B
Note that we have 0  r < B < A and gcd(A,B) = gcd(B,r).
Replace A by B, B by r. Go to step 2.
Chapter 6
Euclidean algorithm
7
Data 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.
Chapter 6
Data types and structures
8
A 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 <stdio.h>
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, n*n);
}
Chapter 6
A C program
9
Characteristics of an algorithm
Each step must be exact.
Must terminate.
Must be effective.
Must be general.
Chapter 6
Characteristics of an algorithm
10
Pseudo-code
How to represent an algorithm?
Pseudo-code
Flowchart
Pseudo-code: a combination of English text,
mathematical notations, and keywords from
the programming language.
Chapter 6
Pseudo-code
11
Pseudo-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.
Chapter 6
Pseudo-code
12
Pseudo-code
To find average, min and max among a list.
sum  count  0
{ sum = sum of numbers;
count = how many numbers are entered? }
{ min to hold the smallest value
min  ?
eventually }
max  ?
{ max to hold the largest value eventually }
for each num entered,
increment count
sum  sum + num
if num < min then min  num
if num > max then max  num
ave  sum/count
Chapter 6
Pseudo-code
13
Flowchart
Diagrammatic form:
terminator
connector
process box
decision box
Chapter 6
Pseudo-code
14
Flowchart
To find
minimum and
maximum
among a list.
A
Yes
No
increment count
sum  sum + num
start
sum  count  0
min  ?
max  ?
end of
input?
ave 
num/count
num<min?
Yes
min  num
No
A
Chapter 6
end
Pseudo-code
num>max? Yes
No
max  num
15
Control 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;
Chapter 6
Control structures
16
Control 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
Chapter 6
Control structures
17
Homework
Try exercises behind chapter 6.
Chapter 6
Homework
18
Download