Developing Algorithms
Algorithms can be written in different ways and still accomplish the same tasks. Algorithms that look similar often yield differnet outputs. To solve the same problem, many different algorithms can be used.
Therefore, algorithms are very important for programmers, and today we're going to explore how to determine the outcome of algorithms, how to deteremine the output of similar algorithms, how to edit existing algorithms, and how to develop our own algorithms.
Notes:
- An algorithm is like a series of very specific instructions that a computer can follow to execute a certain task
- many algorithms are math and computationally involved
- an algorithm can be modeled with pseudoode
- all algorithms involve some sort of problems, and there are usually many algorithms with accomplist the same tasks
- Debugging is used if the algorithm doesn't work as planned
Consider the following algorithm.
def mystery(num, num2):
if (num % num2 == 0):
print("True")
else:
print("False")
mystery(20, 4)
- What does the algorithm do? Please explain in words. The above algorithm shows a function which takes in 2 numbers. If the remainder of the first number divided by the second number is 0, or in other words, if the first number is divisible by the second, True is printed. If not, False is printed
- What if I put in 30 as num and 4 as num2. What would be the output? False, as 30 isn't divisible by 4
What is the output of this algorithm? it is too hot outside
temp = 95
if (temp >= 90):
print("it is too hot outside")
else:
if (temp >= 65):
print("I will go outside")
else:
print("it is too cold outside")
What is the output of this algorithm? it looks similar but the output is different!
- it is too hot outside
- i will go outside
temp = 95
if (temp >= 90):
print("it is too hot outside")
else:
if (temp >= 65):
print("i will go outside")
if (temp < 65):
print("it is too cold outside")
To develop algorithms, we first need to understand what the question is asking. Then, think about how you would approach it as a human and then try to find what pattern you went through to arrive at the answer. Apply this to code, and there you have it! An algorithm!
Let's say you wanted to sum up the first five integers. How would you do this in real life? Your thought process would probably be:
- The sum of the first integer is 1.
- Then, increase that integer by 1. I now add 2 to my existing sum (1). My new sum is 3.
- Repeat until I add 5 to my sum. The resulting sum is 15.
Now let's translate this into code.
sum = 0 # start with a sum of 0
for i in range (1, 6): # you will repeat the process five times for integers 1-5
sum = sum + i # add the number to your sum
print(sum) # print the result
Task: Write an algorithm in python that sums up the first 5 odd integers. You can use the following code as a starter.
sum = 0
counter = 1
for i in range (0, 5):
sum = sum + counter
counter = counter + 2
print(sum)
Homework
Create an algorithm that will start with any positive integer n and display the full sequence of numbers that result from the Collatz Conjecture. The COllatz Conjecture is as follows:
- start with any positive integer
- if the number is even, divide by 2
- if the number is odd, multiply by 3 and add 1
- repeat steps 2 and 3 until you reach 1
Example: if the starting number was 6, the output would be 6, 3, 10, 5, 16, 8, 4, 2, 1
def collatz(N):
print(N)
while N != 1:
if N//2 == N/2:
N //= 2
else:
N *= 3
N += 1
print(N)
collatz(6)