180 likes | 356 Views
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
E N D
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 • 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 • How to make muffins • Unambiguous instructions • 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 • Check if a user entered number is prime • Ask the user for a number to check the primeness of. • Start with divisor equal to 2. • 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” read userNumber 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 • Translate your algorithm into code • Test and make adjustments to your code and algorithm as neede
Creating an Algorithm • What to keep in mind when creating your algorithm • Read in all needed input • 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. • 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
Algorithm: Roots of Quadratic Formula • How do we find the roots? • Quadratic equation • Does this formula always work?
Algorithm: Roots of Quadratic Formula • Input: the coefficients a,b,c • Output: the roots of ax2 + bx + c • What cases do we need to handle?
Algorithm: Roots of Quadratic 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)
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