# CMPT 120 Introduction to Computer Science and Programming I Chris Schmidt.

## Presentation on theme: "CMPT 120 Introduction to Computer Science and Programming I Chris Schmidt."— Presentation transcript:

CMPT 120 Introduction to Computer Science and Programming I Chris Schmidt

Algorithms What is an algorithm? What is an algorithm? An algorithm is a set of instructions on how to accomplish something An algorithm is a set of instructions on how to accomplish something The basic idea can be applied to many typical activities 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 Recipes, assembly instructions, directions on how to get somewhere could all be viewed as types of algorithms

Algorithms Recipe Example from Study Guide Recipe Example from Study Guide 1. 1. Combine the room-temperature butter and the sugar. Mix until light and fluffy. 2. 2. Add the eggs to the creamed butter and mix to combine. 3. 3. In another bowl, combine the liquid ingredients and mix to combine. 4. 4. Sift together the flour and other dry ingredients. 5. 5. Alternately add the dry and liquid ingredients to the butter-egg mixture. Mix just enough to combine.

Algorithms Aspects of a proper algorithm Aspects of a proper algorithm Solves a problem Solves a problem How to make muffins How to make muffins Unambiguous instructions Unambiguous instructions Step 5 isn’t entirely clear Step 5 isn’t entirely clear Completes in a finite amount of time given proper input Completes in a finite amount of time given proper input This clearly does This clearly does

Algorithms What sort of problems are algorithms created for? What sort of problems are algorithms created for? Sorting and searching Sorting and searching We’ll be looking at some well known algorithms for this later in the semester We’ll be looking at some well known algorithms for this later in the semester Encryption and Decryption Encryption and Decryption Mathematical: factoring, finding prime numbers Mathematical: factoring, finding prime numbers Idea can be applied to any problem you want to write code to solve Idea can be applied to any problem you want to write code to solve

Algorithms Check if a user entered number is prime Check if a user entered number is prime 1. Ask the user for a number to check the primeness of. 2. Start with divisor equal to 2. 3. If the user’s number is divided evenly by the divisor, it is not prime. You are done. 4. If the divisor squared is less than the user’s number, increase it by one and go to step 3. 5. If you’ve reached this step, the user’s number is prime.

Algorithms Aspects of a proper algorithm Aspects of a proper algorithm Solves a problem Solves a problem Tests if a user entered number is prime Tests if a user entered number is prime Unambiguous instructions Unambiguous instructions Completes in a finite amount of time given proper input 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? 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 So far we’ve used natural language to describe algorithms It is helpful to describe algorithms in pseudocode (almost code) It is helpful to describe algorithms in pseudocode (almost code) An algorithm written in pseudocode is then easily coded in any give programming language An algorithm written in pseudocode is then easily coded in any give programming language

Pseudocode Digital Clock Example from Study Guide 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 Pseudocode for prime number example set divisor to 2 write “Enter an integer greater than 2” read userNumber repeat while divisor 2 < 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 Define the problem Create a plan (algorithm) to solve the problem Create a plan (algorithm) to solve the problem Translate your algorithm into code Translate your algorithm into code Test and make adjustments to your code and algorithm as neede Test and make adjustments to your code and algorithm as neede

Creating an Algorithm What to keep in mind when creating your algorithm What to keep in mind when creating your algorithm Read in all needed input Read in all needed input Proper output Proper output What are the normal cases (possibilities) based on the input? What are the normal cases (possibilities) based on the input? Are there any special cases? Are there any special cases?

Algorithm Example Problem: Find the roots (real) of a quadratic equation. Problem: Find the roots (real) of a quadratic equation. Quadratic Equation: ax 2 + bx + c Quadratic Equation: ax 2 + bx + c The roots are where this formula is equal to 0, ax 2 + bx + c = 0 The roots are where this formula is equal to 0, ax 2 + bx + c = 0 Ex. a=1,b=0,c=-1 x 2 – 1 = (x-1) * (x+1) = 0 roots at x=1,x=-1 Ex. a=1,b=0,c=-1 x 2 – 1 = (x-1) * (x+1) = 0 roots at x=1,x=-1

Algorithm: Roots of Quadratic Formula How do we find the roots? How do we find the roots? Quadratic equation Quadratic equation Does this formula always work? Does this formula always work?

Algorithm: Roots of Quadratic Formula Input: the coefficients a,b,c Input: the coefficients a,b,c Output: the roots of ax 2 + bx + c Output: the roots of ax 2 + bx + c What cases do we need to handle? What cases do we need to handle?

Algorithm: Roots of Quadratic Formula What cases do we need to handle? What cases do we need to handle? Normal Normal Two distinct roots Two distinct roots One root One root But what special cases do we need to be careful of? But what special cases do we need to be careful of? No roots 4ac > b 2 No roots 4ac > b 2 a=0 (straight line bx+c=0 root at –c/b) 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 (horizontal line, no roots unless c =0) a=0,b=0,c=0 (infinite roots) a=0,b=0,c=0 (infinite roots)

Algorithm: Roots of Quadratic Formula Pseudocode write “Enter the coefficients of the formula:” read a,b,c 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 Remember once you’ve translated your pseudocode into actual code that you need to test every possible case

Download ppt "CMPT 120 Introduction to Computer Science and Programming I Chris Schmidt."

Similar presentations