0% found this document useful (0 votes)
48 views62 pages

Introduction to Algorithms: Key Concepts and Examples

Algorithms Introduction

Uploaded by

Ovidiu Barz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views62 pages

Introduction to Algorithms: Key Concepts and Examples

Algorithms Introduction

Uploaded by

Ovidiu Barz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

CSI 1301

ALGORITHMS – PART 1
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=SideSizeSideSize
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
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 41 \ 10 = 4
 General Concept
– How can we break apart a number?
• 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

Line Num1 Num2 Num3 Sum Avg


METHOD:
(1) Get Num1 1 24
(2) Get Num2 2 31
(3) Get Num3
3 35
(4) Let Sum = Num1 + Num2 + Num3 4 90
(5) Let Average = Sum /3
5 30
(6) Give Sum 6 output 90
(7) Give Average
7 output 30
Trace 1.2
 Trace Algorithm 1.5 with the numbers 40, 18, 26
METHOD: Ln A1 A2 A3 MM Ttl Mark
(1) Set MaxMark =140 1 140
(2) Get A1
(3) Get A2 2 40
(4) Get A3 3 18
4 26
(5) Let Total = A1 + A2 + A3
(6) Let Mark = Total/MaxMark * 100 5 84
6 60
(7) Give Mark 7 output 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: LN X Y
(1) Get X Temp
(2) Get Y 1 25
(3) Let Temp = X 2 88
(4) Let X = Y 3 25
(5) Let Y = Temp 4 88
(6) Give X 5 25
(7) Give Y 6 output 88
7 output 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
Start
NAME: SUM3 SUM3

GIVENS: N1, N2, N3


RESULTS: Total Get N1
Get N2

DEFINITION: Get N3

Total := SUM3(N1, N2, N3)

Let Total = N1 + N2 + N3

Give Total

Finish
SUM3
Algorithm 1.2
Start
NAME: Division DIVISION

GIVENS: X, Y
RESULTS: Quotient
Get X
DEFINITION: Get Y

Quotient := Division(X, Y)

Let Quotient = X/Y

Give
Quotient

Finish
DIVISION
Algorithm 1.3
Start
NAME: SumTimes SUMTIMES

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

Give Total
Give Product

Finish
SUMTIMES
Algorithm 1.4
NAME:AVG3 Start
AVG3

GIVENS:Num1, Num2, Num3


RESULTS:Sum , Average Get Num1

DEFINITION: Get Num2


Get Num3

Sum & Average :=


AVG3(Num1, Num2, 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
Set MaxMark =140
RESULTS: Mark
INTERMEDIATES:
Total, Get A1
Get A2
MaxMark (Constant) Get A3

DEFINITION:
Mark := CalcMark(A1, A2, A3)
Let Total = A1 + A2 + A3
Let Mark = Total/MaxMark

Give Mark

Finish
CALCMARK
Algorithm 1.6
Start
NAME: SumDig SUMDIG

GIVENS: N
RESULTS: Sum
Get N
INTERMEDIATES: Tens, Ones
DEFINITION:
Sum := SumDig(N) Let Tens = N div 10
Let Ones = N mod 10
Let Sum = Tens + Ones

Give Sum

Finish
SUMDIG
Algorithm 1.7
Start
NAME: Swap SWAP

GIVENS: X, Y
Change: X, Y Get X
Get Y
RESULTS: None
INTERMEDIATES: Temp
DEFINITION: Swap (X, Y) Let Temp = X
Let X = Y
Let Y = Temp

Give X
Give Y

Finish
SWAP
Algorithm 1.8
Start
NAME: AddXY ADDXY

GIVENS:X, Y
Change: X Get X
Get Y
RESULTS:None
INTERMEDIATES: None
DEFINITION: AddXY (X, 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
Get N1
NAME: SUM3 Get N2
GIVENS: N1, N2, N3 Get N3
RESULTS: Total Let Total = N1 + N2 + N3
DEFINITION: Give Total
Total := SUM3(N1, N2, N3)
Algorithm 1.2
NAME: Division Get X
GIVENS: X, Y Get Y
RESULTS: Quotient Let Quotient = X/Y
DEFINITION:
Give Quotient
Quotient := Division(X, Y)
Algorithm 1.3
Get Num1
NAME: SumTimes Get Num2
GIVENS:Num1, Num2 Let Total = Num1 + Num2
RESULTS: Total, Product Let Product = Num1 * Num2
DEFINITION: Give Total
Give Product
Total & Product :=
SumTimes(Num1, Num2)
Algorithm 1.4
Get Num1
NAME:AVG3 Get Num2
GIVENS:Num1, Num2, Num3 Get Num3
RESULTS:Sum , Average Let Sum = Num1 + Num2 + Num3
Let Average = Sum/3
DEFINITION: Give Sum
Sum & Average := Give Average
AVG3(Num1, Num2, Num3)
Algorithm 1.5
Set MaxMark = 140
NAME: CalcMark Get A1
GIVENS: A1, A2, A3 Get A2
Get A3
RESULTS: Mark Let Total = A1 + A2 + A3
INTERMEDIATES: Let Mark = Total/MaxMark * 100
Total, Give Mark

MaxMark (Constant)
DEFINITION:
Mark := CalcMark(A1, A2, A3)
Algorithm 1.6
NAME: SumDig Get N
Let Tens = N div 10
GIVENS: N
Let Ones = N mod 10
RESULTS: Sum
Let Sum = Tens + Ones
INTERMEDIATES: Tens, Ones Give Sum
DEFINITION:
Sum := SumDig(N)
Algorithm 1.7
NAME: Swap Get X
GIVENS: X, Y Get Y
Change: X, Y
RESULTS: None
Let Temp = X
INTERMEDIATES: Temp Let X = Y
DEFINITION: Swap (X, Y) Let Y = Temp
Give X
Give Y
Algorithm 1.8
NAME: AddXY Get X
GIVENS:X, Y
Change: X
Get Y
RESULTS:None Let X = X + Y
INTERMEDIATES: None Give X
DEFINITION: AddXY (X, Y)
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