### Algorithms - Computing Science

```CMPT 120
Introduction to Computer Science and
Programming I
Chris Schmidt
Algorithms

What is an algorithm?


An algorithm is a set of instructions on how to
accomplish something
The basic idea can be applied to many typical
activities

Recipes, assembly instructions, directions on how
to get somewhere could all be viewed as types of
algorithms
Algorithms

1.
2.
3.
4.
5.
Recipe Example from Study Guide
Combine the room-temperature butter and the sugar. Mix until
light and fluffy.
Add the eggs to the creamed butter and mix to combine.
In another bowl, combine the liquid ingredients and mix to
combine.
Sift together the flour and other dry ingredients.
Alternately add the dry and liquid ingredients to the butter-egg
mixture. Mix just enough to combine.
Algorithms

Aspects of a proper algorithm

Solves a problem


Unambiguous instructions


How to make muffins
Step 5 isn’t entirely clear
Completes in a finite amount of time given
proper input

This clearly does
Algorithms

What sort of problems are algorithms
created for?

Sorting and searching




We’ll be looking at some well known algorithms for
this later in the semester
Encryption and Decryption
Mathematical: factoring, finding prime
numbers
Idea can be applied to any problem you want
to write code to solve
Algorithms

1.
2.
3.
4.
5.
Check if a user entered number is prime
Ask the user for a number to check the primeness of.
If the user’s number is divided evenly by the divisor, it is not
prime. You are done.
If the divisor squared is less than the user’s number, increase it by
one and go to step 3.
If you’ve reached this step, the user’s number is prime.
Algorithms

Aspects of a proper algorithm

Solves a problem



Tests if a user entered number is prime
Unambiguous instructions
Completes in a finite amount of time given
proper input

What if step 4 didn’t compare the divisor with the
square root of the user’s number?
Pseudocode



So far we’ve used natural language to
describe algorithms
It is helpful to describe algorithms in
pseudocode (almost code)
An algorithm written in pseudocode is
then easily coded in any give
programming language
Pseudocode

Digital Clock Example from Study Guide
set hour to 0
set minute to 0
set second to 0
repeat forever:
set second to second + 1
if second is more than 59, then
set second to 0
set minute to minute + 1
if minute is more than 59, then
set minute to 0
set hour to hour + 1
if hour is more than 23, then
set hour to 0
write “hour :minute:second”
wait for 1 second
Pseudocode

Pseudocode for prime number example
set divisor to 2
write “Enter an integer greater than 2”
repeat while divisor2 < userNumber
if userNumber % divisor is equal to 0
write “The number is not prime, it is divisible by :”
write divisor
exit program
set divisor to divisor +1
write “The number is prime.”
Writing a Program




Define the problem
Create a plan (algorithm) to solve the
problem
and algorithm as neede
Creating an Algorithm

What to keep in mind when creating your
algorithm


Proper output
What are the normal cases (possibilities) based on
the input?
 Are there any special cases?

Algorithm Example

Problem: Find the roots (real) of a


Quadratic Equation: ax2 + bx + c
The roots are where this formula is equal to
0, ax2 + bx + c = 0

Ex. a=1,b=0,c=-1 x2 – 1 = (x-1) * (x+1) = 0
roots at x=1,x=-1
Formula

How do we find the roots?


Does this formula always work?
Formula

Input: the coefficients a,b,c
Output: the roots of ax2 + bx + c

What cases do we need to handle?

Formula

What cases do we need to handle?

Normal



Two distinct roots
One root
But what special cases do we need to be careful of?




No roots 4ac > b2
a=0 (straight line bx+c=0 root at –c/b)
a=0,b=0 (horizontal line, no roots unless c =0)
a=0,b=0,c=0 (infinite roots)
Formula Pseudocode
write “Enter the coefficients of the formula:”
if a,b,and c equal 0
write “infinite roots”
exit
if a and b equal 0
write “no roots”
exit
if a equals 0
root = -c/b
write “One root at x=“, root
exit
.
.
.
Testing

Remember once you’ve translated your
pseudocode into actual code that you
need to test every possible case
```