Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 62

ALGORITHMS

INTRODUCTION

Definition
An algorithm is a finite sequence of step by step,

discrete, unambiguous instructions for solving a


particular problem

has input data, and is expected to produce output data


each instruction can be carried out in a finite amount of time in
a deterministic way

Definition
In simple terms, an algorithm is a series of

instructions to solve a problem (complete a task)

Problems can be in any form


Business

Get a part from Vancouver to Ottawa by morning


Allocate manpower to maximize profit

Life

I am hungry. How do I order pizza?


Explain how to tie shoelaces to a five year old child

Definition
We deal with data processing problems
translated to programs that can be run on a

computer
Since we can only input, store, process & output data
on a computer, the instructions in our algorithms
will be limited to these functions

Algorithmic Representation of Computer Functions

Input

Get information

Get (input command)

Storage

Store information

Given/Result
Intermediates/Set

Process

Arithmetic
Let (assignment command)
Repeat instructions
Loop
Branch conditionals
If

Output

Give information

Give (output command)

Algorithm Description
Understand the problem before solving it

Identify & name each Input/Givens


Identify & name each Output/Results
Assign a name to our algorithm (Name)
Combine the previous 3 pieces of information into a
formal statement (Definition)

Results := Name (Givens)

Method
Once we have prepared the Algorithm Description,

we need to solve the problem


We develop a series of instructions (limited to those

described previously) that, when executed, will


compute the desired Results from the Givens
(Method)

Assignment command
Syntax
X = 5Y + 16
On the left side of =, we put the name of a variable and on the right side
we put a value or an expression.
Each variable refers to a unique location in computer memory that
contains a value.
Interpretation
An assignement is executed in two steps :
1-evaluation of the expression found on the right side.
2-setting the returned value in the memory cell corresponding to variable.
Example
Let SideSize=15
Let Area=SideSizeSideSize

Assignment in computre science


and equality in mathematics

a) The following instructions are the same in mathematics.


A=B
B=A
not in computer science.
Let A=B is different from Let B=A

b) In mathematics we work with relations.


A relation B=A+1 means that it is true all the time
In computer science, we work with assignments. We can have:
A=5
B=A+1
A=2
The relation B=A+1 is true only after the second instruction
and before the third one.

Assignment in computer science


and equality in mathematics
c) The instruction A=A+3 is false in mathematics.
In computer science Let A=A+3 means: the new value of A is
equal to the old one plus three.
d) The instruction A+5=3 is allowed in mathematics (it is an
equation).
Let A+5=3 has no meaning in computer science (the left side
must be a variable).

Input command
Syntax
Get variable
The variable must be from Givens
Interpretation
Here the user must give a value. The given value is
assigned to the variable.
Example
Get Size_Side

Output command
Syntax
Give variable
The variable must be from Results
Interpretation
The value of the variable is displayed.
Example
Give Area

Algorithm 1.1
Write an algorithm to find the sum of three given

numbers

NAME: SUM3
GIVENS: N1, N2, N3
RESULTS: Total
DEFINITION: Total := SUM3(N1, N2, N3)
------------------------METHOD:
Get N1
Get N2
Get N3
Let Total = N1 + N2 + N3
Give Total

Algorithm 1.2
Write an algorithm to find the result of a division

operation for the given two numbers X and Y

NAME: Division
GIVENS: X, Y
RESULTS: Quotient
DEFINITION: Quotient := Division(X, Y)
------------------------METHOD:
Get X
Get Y
Let Quotient = X/Y
Give Quotient

Algorithm 1.3
Write an algorithm to find the sum and product of

the two given numbers

NAME: SumTimes
GIVENS:Num1, Num2
RESULTS: Total, Product
DEFINITION: Total & Product := SumTimes(Num1, Num2)
------------------------METHOD:
Get Num1
Get Num2
Let Total = Num1 + Num2
Let Product = Num1 * Num2
Give Total
Give Product

Algorithm 1.4
Find the sum and average of three given numbers

NAME:AVG3
GIVENS:Num1, Num2, Num3
RESULTS:Sum , Average
DEFINITION:Sum & Average := AVG3(Num1, Num2, Num3)
------------------------METHOD:
Get Num1
Get Num2
Get Num3

Let Sum = Num1 + Num2 + Num3


Let Average = Sum /3
Give Sum
Give Average

Variables
Observe that we have used names for the data

items in our Givens and Results

Num1, Num2, Num3, Sum, Average in Algorithm 1.4

Each name refers to a unique location in

computer memory (one or more adjacent bytes)


that contains a value
Since that value can change as the instructions
in our algorithm are executed, we call each data
item a variable

Variables
In our algorithm, when we use a variable name, we

are referring to the value stored in memory for that


data item
Later in this lecture we will learn more about how to
define variables

Intermediates
Occasionally, in an algorithm, we need to have a

variable (in addition to those representing Givens or


Results) to store a value temporarily
These are intermediate variables and we identify
them in the Algorithm Description as
Intermediates

Algorithm 1.5
Given 3 assignment marks (out of 50, 20, 70), find

the average (calculated as a mark out of 100)

General Concept

How does one figure out the percentage of several marks?

Add them all up


Divide by the maximum possible mark (50+20+70)
Multiply by 100

Algorithm 1.5
Given 3 assignment marks (out of 50, 20, 70), find the

average, calculated as a mark out of 100

NAME: CalcMark
GIVENS: A1, A2, A3
RESULTS: Mark
INTERMEDIATES: Total, MaxMark (Constant)
DEFINITION: Mark := CalcMark(A1, A2, A3)
------------------------METHOD:
Set MaxMark = 140 (Constant)

Get A1
Get A2
Get A3
Let Total = A1 + A2 + A3
Let Mark = Total/MaxMark * 100
Give Mark

Algorithm 1.6
Given a two digit number, find

the sum of its digits


General Concept

How can we break apart a number?

41 \ 10 = 4

41 = 4 Tens and 1 Ones


so for the number 41, we want 4 + 1 = 5

Use integer division

DIV returns the integer part of a


division
MOD returns the remainder of a
division

41 MOD 10 = 1

Algorithm 1.6
Given a two digit number, find the sum of its digits

NAME: SumDig
GIVENS: N
RESULTS: Sum
INTERMEDIATES: Tens, Ones
DEFINITION: Sum := SumDig(N)
------------------------METHOD:
Get N
Let Tens = N div10
Let Ones = N mod 10
Let Sum = Tens + Ones
Give Sum

Algorithm 1.7
Write an algorithm which swaps the values of two

numbers

Example 1

Two car family. The wrong car is at the end of the driveway
Move first car out on to the street
Move second car out on to the street
Move first car back in
Move second car back in

Example 2

You are looking after a 3 year old. He wants milk and juice. You put the milk
in the blue glass and the juice in the red glass. The child is screaming that
you did it wrong.
Get a third glass (white)
Pour the milk from the blue glass to the white glass
Pour the juice from the red glass to the blue glass
Pour the milk from the white glass to the red glass

Algorithm 1.7
Write an algorithm which swaps the values of two

numbers

NAME: Swap
GIVENS: X, Y
RESULTS: X, Y
INTERMEDIATES: Temp
DEFINITION: Swap (X, Y)
------------------------METHOD:
Get X
Get Y
Let Temp = X
Let X = Y
Let Y = Temp
Give X
Give Y

Algorithm 1.8
Write an algorithm which adds the given two

numbers (X and Y) and returns the sum in the


given variable X

NAME: AddXY
GIVENS:X, Y
RESULTS: X
INTERMEDIATES: None
DEFINITION: AddXY (X, Y)
------------------------METHOD:
Get X
Get Y
Let X = X+ Y
Give X

Recap
Name

The formal name of the algorithm

Givens

Names of the given values for a problem

Results

Names of the resulting values of the problem

Intermediates

Names of the intermediate variables used in the


algorithm

Definition

The formal definition of the algorithm, using Name,


Givens, and Results

Method

The step by step sequence of statements to solve the


problem

Tracing an Algorithm
The purpose of tracing an algorithm is to ensure

that it works
This is a paper test. As we will see later, it
should be completed before writing the
computer code
Tracing involves

Executing the sequence of instructions with a sample set


of values
Computing the value of each variable after each
instruction is executed
Checking for the correct result

Tracing an Algorithm
Step 1 - Number every instruction in the algorithm
Step 2 Make a table

The first column of the table indicates which instruction has


been executed
Subsequent columns list all the variables of the algorithm
(Givens, Results, Intermediates)

Tracing an Algorithm
Step 3 Complete the table

Each column of the table represents a variable


Start at the first line of your algorithm. Identify what will
happen to each variable as that instruction is executed

Change any values which the instruction changes and leave all
other columns blank

Trace 1.1
Trace Algorithm 1.4 using the numbers 24, 31, and 35
METHOD:
(1) Get Num1
(2) Get Num2
(3) Get Num3

Line
1

Num1

Num2

Num3

Sum

Avg

24

2
3

31

(4) Let Sum = Num1 + Num2 + Num3 4


(5) Let Average = Sum /3
5
(6) Give Sum
6 output 90
(7) Give Average
7 output 30

35
90
30

Trace 1.2
Trace Algorithm 1.5 with the numbers 40, 18, 26
METHOD:
(1) Set MaxMark =140
(2) Get A1
(3) Get A2
(4) Get A3

Ln A1 A2 A3
1
2 40
3
18
4
26
(5) Let Total = A1 + A2 + A3
5
(6) Let Mark = Total/MaxMark * 100 6
7 output 60
(7) Give Mark

MM Ttl
140

Mark

84
60

NB THE ANSWER IS NOT 69 (40/50 + 18/20 + 26/70)/3

Trace 1.3
Trace Algorithm 1.7 when X and Y have the values

25 and 88, respectively


METHOD:
(1) Get X
(2) Get Y
(3) Let Temp = X
(4) Let X = Y
(5) Let Y = Temp
(6) Give X
(7) Give Y

LN
X
Y
Temp
1
25
2
88
3
4
88
5
25
6 output 88
7 output 25

25

Data Types
We know that use of a variable name in an algorithm

refers to the value stored at a unique location in


computer memory
Eventually, we will translate the instructions in our
algorithm to computer instructions
Computers need to know they type of each variable

Data Types
The data type indicates the

Kind of data that can be stored in the variable

numbers, dates, text, etc.

Range of possible values that can be stored in the


variable
Size of memory required to store the variable
Operations that can be performed on the variable

Additional Material
VISUAL BASIC DATA TYPES

Data Types
BOOLEAN (2 bytes)
Either True or False
INTEGER (2 bytes)
Whole numbers (no decimals)

-32,768 32,767

LONG (4 bytes)
Whole numbers (integers)

-2 trillion 2 trillion

Whole numbers require less memory and run faster

than decimal numbers (or variant type)

Data Types
SINGLE (4 bytes)
Real numbers

10^30 with 7 significant digits of accuracy

DOUBLE (8 bytes)
Real numbers

10^300 with 15 significant digits of accuracy

CURRENCY (8 bytes)
Real numbers

4 digits to the right of the decimal point


15 digits to the left of the decimal point

Data Types
DATE (8 bytes)
Storage of specific dates

Jan 01, 100 to Dec 31, 9999

STRING (1 byte per character)


Up to 2 billion characters per string

Use the * symbol to denote size


Some numbers should be defined as strings

Student number, SIN, telephone number


We do not perform arithmetic calculations on them

VARIANT (sized by Visual Basic as required)


Default type, if type not defined
Can be any type and type can vary as code is executing
Not to be used

Flow Charts

Flow Charts
Can be created in MS Visio
Begin and End with an Oval
Get/Give use a parallelogram
Lets use a rectangle
Flow is shown with arrows

Algorithm 1.1
NAME: SUM3
GIVENS: N1, N2, N3
RESULTS: Total
DEFINITION:
Total := SUM3(N1, N2, N3)

Start
SUM3

Get N1
Get N2
Get N3

Let Total = N1 + N2 + N3

Give Total

Finish
SUM3

Algorithm 1.2
NAME: Division
GIVENS: X, Y
RESULTS: Quotient
DEFINITION:
Quotient := Division(X, Y)

Start
DIVISION

Get X
Get Y

Let Quotient = X/Y

Give
Quotient

Finish
DIVISION

Algorithm 1.3
NAME: SumTimes
GIVENS:Num1, Num2
RESULTS: Total, Product
DEFINITION:
Total & Product :=
SumTimes(Num1, Num2)

Start
SUMTIMES

Get Num1
Get Num2

Let Total = Num1 + Num2


Let Product = Num1 * Num2

Give Total
Give Product

Finish
SUMTIMES

Algorithm 1.4
NAME:AVG3
GIVENS:Num1, Num2, Num3
RESULTS:Sum , Average
DEFINITION:
Sum & Average :=
AVG3(Num1, Num2, Num3)

Start
AVG3

Get Num1
Get Num2
Get Num3

Let Sum = Num1 + Num2 + Num3


Let Average = Sum/3

Give Suml
Give Average

Finish
AVG3

Algorithm 1.5
Start
CALCMARK

NAME: CalcMark
GIVENS: A1, A2, A3
RESULTS: Mark
INTERMEDIATES:
Total,
MaxMark (Constant)
DEFINITION:
Mark := CalcMark(A1, A2, A3)

Set MaxMark =140

Get A1
Get A2
Get A3

Let Total = A1 + A2 + A3
Let Mark = Total/MaxMark

Give Mark

Finish
CALCMARK

Algorithm 1.6
NAME: SumDig
GIVENS: N
RESULTS: Sum
INTERMEDIATES: Tens, Ones
DEFINITION:
Sum := SumDig(N)

Start
SUMDIG

Get N

Let Tens = N div 10


Let Ones = N mod 10
Let Sum = Tens + Ones

Give Sum

Finish
SUMDIG

Algorithm 1.7
NAME: Swap
GIVENS: X, Y
Change: X, Y
RESULTS: None
INTERMEDIATES: Temp
DEFINITION: Swap (X, Y)

Start
SWAP

Get X
Get Y

Let Temp = X
Let X = Y
Let Y = Temp

Give X
Give Y

Finish
SWAP

Algorithm 1.8
NAME: AddXY
GIVENS:X, Y
Change: X
RESULTS:None
INTERMEDIATES: None
DEFINITION: AddXY (X, Y)

Start
ADDXY

Get X
Get Y

Let X = X + Y

Give X

Finish
ADDXY

Nassi-Schneiderman Diagrams
NSD

NSD
Can be created in MS Excel
Each Command is given its own row
Put a border around each section
Flow is top down
Nesting of commands will be shown (Alg2 Alg3)

Algorithm 1.1
NAME: SUM3
GIVENS: N1, N2, N3
RESULTS: Total
DEFINITION:
Total := SUM3(N1, N2, N3)

Get N1
Get N2
Get N3
Let Total = N1 + N2 + N3
Give Total

Algorithm 1.2
NAME: Division
GIVENS: X, Y
RESULTS: Quotient
DEFINITION:
Quotient := Division(X, Y)

Get X
Get Y
Let Quotient = X/Y
Give Quotient

Algorithm 1.3
NAME: SumTimes
GIVENS:Num1, Num2
RESULTS: Total, Product
DEFINITION:
Total & Product :=
SumTimes(Num1, Num2)

Get Num1
Get Num2
Let Total = Num1 + Num2
Let Product = Num1 * Num2
Give Total
Give Product

Algorithm 1.4
NAME:AVG3
GIVENS:Num1, Num2, Num3
RESULTS:Sum , Average
DEFINITION:
Sum & Average :=
AVG3(Num1, Num2, Num3)

Get Num1
Get Num2
Get Num3
Let Sum = Num1 + Num2 + Num3
Let Average = Sum/3
Give Sum
Give Average

Algorithm 1.5
NAME: CalcMark
GIVENS: A1, A2, A3
RESULTS: Mark
INTERMEDIATES:
Total,
MaxMark (Constant)
DEFINITION:
Mark := CalcMark(A1, A2, A3)

Set MaxMark = 140


Get A1
Get A2
Get A3
Let Total = A1 + A2 + A3
Let Mark = Total/MaxMark * 100
Give Mark

Algorithm 1.6
NAME: SumDig
GIVENS: N
RESULTS: Sum
INTERMEDIATES: Tens, Ones
DEFINITION:
Sum := SumDig(N)

Get N
Let Tens = N div 10
Let Ones = N mod 10
Let Sum = Tens + Ones
Give Sum

Algorithm 1.7
NAME: Swap
GIVENS: X, Y
Change: X, Y
RESULTS: None
INTERMEDIATES: Temp
DEFINITION: Swap (X, Y)

Get X
Get Y
Let Temp = X
Let X = Y
Let Y = Temp
Give X
Give Y

Algorithm 1.8
NAME: AddXY
GIVENS:X, Y
Change: X
RESULTS:None
INTERMEDIATES: None
DEFINITION: AddXY (X, Y)

Get X
Get Y
Let X = X + Y
Give X

Homework

1. Write an algorithm to sum 5 numbers.


Trace the algorithm using the numbers 1, 3, 5, 7 and 9.
2. Write an algorithm to compute the average of 5 numbers.
Trace the algorithm using the numbers 1, 3, 5, 7 and 9.
3. Write an algorithm to multiply 3 numbers.
Trace the algorithm using the numbers 2, 9 and 6.
4. Write an algorithm to multiply 2 numbers and divide the

product by a third number.

Trace the algorithm using the numbers 2, 9 and 6.

1. Write an algorithm to calculate the average mark out of 100,

given three assignment marks, each of which is marked out of


20.

Trace the algorithm using 15, 20 and 10 as the three assignment


marks.

2. Write an algorithm to calculate the sum of the digits of a three

digit number.

Trace the algorithm using the number 659.

3. Write an algorithm to swap two numbers.

Trace the algorithm using x as 8 and y as 9.

4. Write an algorithm to sum four numbers and return the sum in

the variable x.

Trace the algorithm using w as 2, x as 3, y as 4 and z as 5.

You might also like