CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You1 Algorithm Discovery and Design Chapter 2 Topics: Representing Algorithms Algorithmic Problem.

Slides:



Advertisements
Similar presentations
CS107 Introduction to Computer Science Lecture 2.
Advertisements

CS107: Introduction to Computer Science Lecture 2 Jan 29th.
 Control structures  Algorithm & flowchart  If statements  While statements.
Designing Algorithms Csci 107 Lecture 4. Outline Last time Computing 1+2+…+n Adding 2 n-digit numbers Today: More algorithms Sequential search Variations.
Basic Control Structures Control order of execution of statements sequential selection iteration - Repeat some action while a certain condition is true.
Chapter 4 Repetitive Execution. 2 Types of Repetition There are two basic types of repetition: 1) Repetition controlled by a counter; The body of the.
CS107 Introduction to Computer Science Loops. Instructions Pseudocode Assign values to variables using basic arithmetic operations x = 3 y = x/10 z =
What is an algorithm? Informally: An Algorithm is a step by step method for solving a problem. It’s purpose is to break a larger task down so that each.
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
Chapter 6 - Repetition. Introduction u Many applications require certain operations to be carried out more than once. Such situations require repetition.
CS107 Introduction to Computer Science Lecture 2.
Designing Algorithms Csci 107 Lecture 3. Designing algorithms Last time –Pseudocode –Algorithm: computing the sum 1+2+…+n –Gauss formula for 1+2+…+n Today.
Chapter 2 The Algorithmic Foundations of Computer Science
Pseudocode and Algorithms
CHAPTER 2 CS
Introduction to Computers and Programming More Loops  2000 Prentice Hall, Inc. All rights reserved. Modified for use with this course.
Chapter 2: Design of Algorithms
Computer Science 1620 Programming & Problem Solving.
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
ALGORITHMS AND FLOW CHARTS 1 Adapted from the slides Prepared by Department of Preparatory year Prepared by: lec. Ghader Kurdi.
ALGORITHMS AND FLOWCHARTS
Adapted from slides by Marie desJardins
Chapter 2: Problem Solving
An ordered sequence of unambiguous and well-defined instructions that performs some task and halts in finite time Let's examine the four parts of this.
CPSC 171 Introduction to Computer Science 3 Levels of Understanding Algorithms More Algorithm Discovery and Design.
Algorithmic Problem Solving CMSC 201 Adapted from slides by Marie desJardins (Spring 2015 Prof Chang version)
Muhammad Adnan Talib Lec#4 27 th Sep,2012 Computer Science Department COMSATS Institute of Information Technology Sahiwal Introduction to Computer Programming.
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science, C++ Version, Third Edition.
Invitation to Computer Science 6th Edition
Invitation to Computer Science, Java Version, Second Edition.
Chapter 2 - Algorithms and Design
Lecturer: Dr. AJ Bieszczad Chapter 11 COMP 150: Introduction to Object-Oriented Programming 11-1 l Basics of Recursion l Programming with Recursion Recursion.
Introduction to Algorithms. What is Computer Science? Computer Science is the study of computers (??) This leaves aside the theoretical work in CS, which.
An Introduction to Programming with C++ Sixth Edition Chapter 7 The Repetition Structure.
Control Structures II Repetition (Loops). Why Is Repetition Needed? How can you solve the following problem: What is the sum of all the numbers from 1.
PROBLEM SOLVING WITH LOOPS Chapter 7. Concept of Repetition Structure Logic It is a computer task, that is used for Repeating a series of instructions.
Chapter 5: Control Structures II J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design,
CS101 Computer Programming I Chapter 4 Extra Examples.
Algorithm Design.
CSCI-100 Introduction to Computing
Introduction to Loops Iteration Repetition Counting Loops Also known as.
Chapter 11Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 11 l Basics of Recursion l Programming with Recursion Recursion.
REPETITION STATEMENTS - Part2 Structuring Input Loops Counter-Controlled Repetition Structure Sentinel-Controlled Repetition Structure eof()-Controlled.
Algorithm Discovery and Design Objectives: Interpret pseudocode Write pseudocode, using the three types of operations: * sequential (steps in order written)
Think Possibility 1 Iterative Constructs ITERATION / LOOPS C provides three loop structures: the for-loop, the while-loop, and the do-while-loop. Each.
8.1 8 Algorithms Foundations of Computer Science  Cengage Learning.
REPETITION STATEMENTS - Part1  Also called LOOP STATEMENTS OR LOOP STRUCTURES 1 C++ Statements that repeat one or more actions while some condition is.
Invitation to Computer Science 5 th Edition Chapter 2 The Algorithmic Foundations of Computer Science.
INVITATION TO Computer Science 1 11 Chapter 2 The Algorithmic Foundations of Computer Science.
COMP Loop Statements Yi Hong May 21, 2015.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
Algorithms JPC and JWD © 2002 McGraw-Hill, Inc. 2 Algorithms 2 An Algorithm is a finite set of precise instructions for performing a computation or for.
Why Repetition? Read 8 real numbers and compute their average REAL X1, X2, X3, X4, X5, X6, X7, X8 REAL SUM, AVG READ *, X1, X2, X3, X4, X5, X6, X7, X8.
Java Programming: From Problem Analysis to Program Design, 3e Chapter 5 Control Structures II: Repetition.
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science.
Loops ( while and for ) CSE 1310 – Introduction to Computers and Programming Alexandra Stefan 1.
REPETITION CONTROL STRUCTURE
ALGORITHMS AND FLOWCHARTS
Control Structure Senior Lecturer
Iteration with While You can say that again.
Algorithms & Pseudocode
Algorithm Discovery and Design
ALGORITHMS AND FLOWCHARTS
Algorithm Discovery and Design
Introduction to Algorithms and Programming
Chapter 5: Control Structure
Discovery and Design of Algorithms
Presentation transcript:

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You1 Algorithm Discovery and Design Chapter 2 Topics: Representing Algorithms Algorithmic Problem Solving

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You2 Why are Algorithms Important? If we can discover an algorithm to perform a task, we can instruct a computing agent to execute it and solve the problem for us.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You3 Representing Algorithms What language to use?What language to use? –Expressive. –Clear, presice, and unambiguous. For example, we could use:For example, we could use: –Natural language (e.g. English). –Formal programming languages (e.g. C++). –Something else?

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You Example: Adding 2 numbers __________ + 1 Assume we know how to add 2 single digit numbers, but want to write an algorithm to add any 2 numbers:Assume we know how to add 2 single digit numbers, but want to write an algorithm to add any 2 numbers:

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You5 Example using Natural Language Initially, set the value of the variable carry to 0. When these initializations have been completed, begin looping until the value of the variable i becomes greater than m-1. First add together the values of the two digits a i and b i and the current value of the carry digit to get the result called c i. Now check the value of c i to see whether it is greater than or equal to 10. If c i is greater than or equal to 10, then...

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You6 Natural Languages English or some other natural language.English or some other natural language. Are not particularly good:Are not particularly good: –too verbose –unstructured –too rich in interpretation (ambiguous) –imprecise

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You7 Example using Programming Language { int I, m, Carry; int I, m, Carry; int a[100], b[100], c[100]; int a[100], b[100], c[100]; cin >> m; cin >> m; for ( int j = 0 ; k <= m-1 ; j++ ) { for ( int j = 0 ; k <= m-1 ; j++ ) { cin >> a[j]; cin >> a[j]; cin >> b[j]; cin >> b[j]; } Carry = 0; Carry = 0; i = 0; i = 0; while ( i < m ) { … while ( i < m ) { …{ int I, m, Carry; int I, m, Carry; int a[100], b[100], c[100]; int a[100], b[100], c[100]; cin >> m; cin >> m; for ( int j = 0 ; k <= m-1 ; j++ ) { for ( int j = 0 ; k <= m-1 ; j++ ) { cin >> a[j]; cin >> a[j]; cin >> b[j]; cin >> b[j]; } Carry = 0; Carry = 0; i = 0; i = 0; while ( i < m ) { … while ( i < m ) { …

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You8 Programming Languages Are not particularly good either:Are not particularly good either: –Too many implementation details to worry about –Too rigid syntax Easy to lose sight of the real taskEasy to lose sight of the real task –We don't see the forest because of all the trees!

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You9 Pseudo-code We need a compromise between the two:We need a compromise between the two:  Pseudo-code  Pseudo-code Computer scientists use pseudo-code to express algorithms:Computer scientists use pseudo-code to express algorithms: –English like constructs (or other natural language), but –modeled to look like statements in typical programming languages.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You10 Pseudo-code for the Addition Algorithm StepOperation 1 Get the value of a m-1, …, a 0 2 Get the value of b m-1, …, b 0 3 Set the value of carry to 0 4 Set the value of i to 0 5 Repeat steps 6-8 until i greater than m-1 6 Set the value of c i to a i + b i + carry Set the value of c i to a i + b i + carry 7 If c i >= 10, then set c i to c i - 10 and carry to 1; otherwise set the value of carry to 0 If c i >= 10, then set c i to c i - 10 and carry to 1; otherwise set the value of carry to 0 8 Set value of i to i +1 (look at next digit) Set value of i to i +1 (look at next digit) 9 Set c m to carry 10 Print out the final answer c m, c m-1, … c 0 11Stop.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You11 What kind of operations do we need? Getting input and producing outputGetting input and producing output –Get the two numbers –Display the outcome Referring to values within our algorithmReferring to values within our algorithm –Add together the rightmost digits of the two numbers –Add together a 0 and b 0 Doing something if some condition is trueDoing something if some condition is true –If the outcome is greater or equal to 10 then... Doing something repeatedlyDoing something repeatedly –Do this for all the digits in the numbers...

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You12 Pseudo-code Primitives Three basic kind of operations: SequentialSequential –Computation ( Set … ) –Input/Output ( Get... / Print... ) ConditionalConditional –If … Else –If … Iterative / loopingIterative / looping –Repeat... –While...

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You13 Performs a computation and stores the result. Performs a computation and stores the result. Computation Example: Set the value of C to (A + B) Set the value of location to 0 Set the value of GPA to (sum / count) General format: General format: Set the value of to Set the value of to

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You14 Variables A variable is a named storage. - A value can be stored into it, overwriting the previous value - A value can be stored into it, overwriting the previous value - Its value can be copied - Its value can be copied Examples : Set the value of A to 3 Set the value of A to 3 The variable A holds the value 3 after its execution The variable A holds the value 3 after its execution Set the value of A to ( A +1) Set the value of A to ( A +1) Same as: add 1 to the value of A ( A is now 4) Same as: add 1 to the value of A ( A is now 4)

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You15 Not too Strict on Syntax Pseudo-code is kind of a programming language without a rigid syntax, for example we can write:Pseudo-code is kind of a programming language without a rigid syntax, for example we can write: – Set the value of A to (B+C) asas –Set A to (B+C) Or even:Or even: Set the value of sum to 0Set the value of sum to 0 Set the value of GPA to 0Set the value of GPA to 0 asas Set sum and GPA to 0Set sum and GPA to 0

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You16 The computing agent (computer) needs to communicate with the outside world:The computing agent (computer) needs to communicate with the outside world: –INPUT operations allow the computing agent to receive from the outside world data values to use in subsequent computations. –OUTPUT operations allow the computing agent to communicate results of computations to the outside world. Sequential Operations - Input/Output Outside world InputOutput

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You17 Input General format: The computing agent (computer) suspends executions and waits for an input value. Get a value for Get a value for

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You18 Input - Examples Examples:Examples: –Get value for grade –Get values for N, M Can write:Can write: –Get value for N 1 –... –Get value for N 100 asas –Get value for N 1,..., N 100

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You19 Output General format: The computing agent (computer) displays the value of the variable(s). Print the value of Print the value of Print the message, " " Print the message, " " Print the value of Print the value of Print the message, " " Print the message, " "

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You20 Output - Examples Examples:Examples: –Print the value of grade –Print the message, "Hello" Can write:Can write: –Print the value of N 1 –... –Print the value of N 100 asas –Print the values of N 1,..., N 100

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You21 Example Write an algorithm to calculate the average of three numbers.Write an algorithm to calculate the average of three numbers. Steps Operations 1 Get values for N1, N2, and N3 1 Get values for N1, N2, and N3 2 Set the value of Average to ( N1 + N2 + N3) /3 2 Set the value of Average to ( N1 + N2 + N3) /3 3 Print the value of Average 3 Print the value of Average 4 Stop 4 Stop Steps Operations 1 Get values for N1, N2, and N3 1 Get values for N1, N2, and N3 2 Set the value of Average to ( N1 + N2 + N3) /3 2 Set the value of Average to ( N1 + N2 + N3) /3 3 Print the value of Average 3 Print the value of Average 4 Stop 4 Stop

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You22 Conditional Operations If then If then operations for the then-part operations for the then-part Else Else operations for the else-part operations for the else-part If then If then operations for the then-part operations for the then-part Else Else operations for the else-part operations for the else-part 1. 1.Evaluate expression to see whether it is true or false If true, then execute operations in then-part 3. 3.Otherwise, execute operations in else-part.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You23 Conditions, or Boolean Expressions A condition is one whose value is true or false, for example:A condition is one whose value is true or false, for example: – 3 > 2is greater than (true) – 3 = 2 is equal to (false) – A > 2is true if A ’s value is greater than 2 (at the time this is executed), false otherwise.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You24 E1 or E2 true if at least one of them is true; false otherwise. E.g. 3 > 2 or 2 >3 is true E.g. 3 > 2 or 2 >3 is true E1 and E2 true if both are true; false otherwise true if both are true; false otherwise E.g. 3 > 2 and 2 >3 is false E.g. 3 > 2 and 2 >3 is false not E true if E is false, false if E is true Conditions may be compounded

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You25 1. Get a value for A 2. If A = 0 then 3. Print the message, “The input is zero” Else Else 4. Print the message, “The input is not zero” 1. Get a value for A 2. If A = 0 then 3. Print the message, “The input is zero” Else Else 4. Print the message, “The input is not zero” Example 1. Get a value for grade 2. If grade 9 then 3. Print the message, “Invalid grade” Else Else 4. Set the value of total to ( grade + total ) 1. Get a value for grade 2. If grade 9 then 3. Print the message, “Invalid grade” Else Else 4. Set the value of total to ( grade + total )

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You26 Iterative Operations - Repeat Repeat steps i to j until becomes true step i:operation step i:operation step i+1:operation step i+1:operation … step j:operation step j:operation 1.Execute steps i to j 2.Evaluate 2.Evaluate 3.If condition is false, go back to 1. 4.Otherwise, continue execution from step j+1.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You27 1 Get a value for count 2 Repeat steps 3 to 5 until ( count >10) 3 Set square to ( count * count ) 4 Print the values of count and square 5 Add 1 to count 1 Get a value for count 2 Repeat steps 3 to 5 until ( count >10) 3 Set square to ( count * count ) 4 Print the values of count and square 5 Add 1 to count Example

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You28 What happens when it gets executed? If initial value for count is 8, we get printout What happens when it gets executed? If initial value for count is 8, we get printout Repeat Loops

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You29 If initial value for count is 11, we get printout Why? Because the body is executed once before any test is done! If need to execute loop 0 or more times we should use While-loops. If initial value for count is 11, we get printout Why? Because the body is executed once before any test is done! If need to execute loop 0 or more times we should use While-loops. Repeat Loops

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You30 Iterative Operation - While While remains true do steps i to j step i:operation step i:operation step i+1:operation step i+1:operation … step j:operation step j:operation 1.Evaluate 1.Evaluate 2.If condition is true, execute steps i to j, then go back to 1. 3.Otherwise, if condition is false,continue execution from step j+1.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You31 1 Get a value for count 2 While count < 10 do 3 Set square to ( count * count ) 4 Print the values of count and square 5 Add 1 to count 6 Stop 1 Get a value for count 2 While count < 10 do 3 Set square to ( count * count ) 4 Print the values of count and square 5 Add 1 to count 6 Stop Example

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You32 What happens when it gets executed? If count starts with 7, we get printout What if count starts with 11? Nothing is printed, loop is executed 0 times. Nothing is printed, loop is executed 0 times. What happens when it gets executed? If count starts with 7, we get printout What if count starts with 11? Nothing is printed, loop is executed 0 times. Nothing is printed, loop is executed 0 times. While Loops

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You33 Steps Operations 1 Get values for N and M 1 Get values for N and M 2 Set the value of Result to 0 2 Set the value of Result to 0 3 While M > 0 do steps 4 and 5 3 While M > 0 do steps 4 and 5 4 Add N to the value of Result 4 Add N to the value of Result 5 Subtract 1 from M 5 Subtract 1 from M 6 Print the value of Result 6 Print the value of Result 7 Stop 7 Stop Steps Operations 1 Get values for N and M 1 Get values for N and M 2 Set the value of Result to 0 2 Set the value of Result to 0 3 While M > 0 do steps 4 and 5 3 While M > 0 do steps 4 and 5 4 Add N to the value of Result 4 Add N to the value of Result 5 Subtract 1 from M 5 Subtract 1 from M 6 Print the value of Result 6 Print the value of Result 7 Stop 7 Stop Example: Multiply (via addition)

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You34 Result: Result: N * M Example Suppose initially N = 3 and M = 4. During computation, the variable Result held the following values, in that order:

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You35 Danger : Danger : A loop can be infinite due to non-changing conditions1 Example 1: Example 2: Repeat until 2 > 3 While 3 > 2 do Repeat until 2 > 3 While 3 > 2 do loop body loop body loop body loop body 2 > 3 is false all the time. 3 >2 true all the time. Infinite Loops

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You36 1. Set the value of A to 1 2. While A is an odd number do 3. Add 2 to the value of A 4. Print the value of A 5. Stop Even though we change A ’s value, it does not change the fact that “ A is an odd number” 1. Set the value of i to 1 2. While i < 10 do step 3 3. Print value of i 4. Stop Opppsss, we forgot to increase i Why do these two algorithms not terminate?

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You37 Addition Algorithm Revisited StepOperation 1 Get the value of a m-1, …, a 0 2 Get the value of b m-1, …, b 0 3 Set the value of carry to 0 4 Set the value of i to 0 5 Repeat steps 6-8 until i greater than m-1 6 Set the value of c i to a i + b i + carry Set the value of c i to a i + b i + carry 7 If c i >= 10, then set c i to c i - 10 and carry to 1; otherwise set the value of carry to 0 If c i >= 10, then set c i to c i - 10 and carry to 1; otherwise set the value of carry to 0 8 Set value of i to i +1 (look at next digit) Set value of i to i +1 (look at next digit) 9 Set c m to carry 10 Print out the final answer c m, c m-1, … c 0 11Stop.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You38 Summary of Pseudocode Sequential Set the value of variable to expression Set the value of variable to expression Input and Output Input and Output Get a value ……; Print …... Get a value ……; Print …... Conditional If a condition is true then If a condition is true then the first set of operations the first set of operations else else the second set of operations the second set of operations

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You39 Summary of Pseudocode Iterative: Repeat until a condition becomes true the loop body Repeat until a condition becomes true the loop body While a condition remains true do the loop body

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You40Exercises Get values for x, y, z Get values for x, y, z If x < 1 or y < 1 or z < 1 then If x < 1 or y < 1 or z < 1 then Print message, “Bad data” Print message, “Bad data” Else Else Set Average to ( x + y + z ) / 3 Set Average to ( x + y + z ) / 3 Print the value of Average Print the value of Average Stop Stop Get values for x, y, z Get values for x, y, z If x < 1 or y < 1 or z < 1 then If x < 1 or y < 1 or z < 1 then Print message, “Bad data” Print message, “Bad data” Else Else Set Average to ( x + y + z ) / 3 Set Average to ( x + y + z ) / 3 Print the value of Average Print the value of Average Stop Stop I. Compute the average of 3 grades (1-9); if any one is 0 or negative, a message “Bad data” is printed

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You41 Get value for n, the number of integers Get value for n, the number of integers Get values for I 1, I 2, …, I n, a list of n integers Get values for I 1, I 2, …, I n, a list of n integers Set the value of Sum to 0 Set the value of Sum to 0 Set the value of k to 1 Set the value of k to 1 Repeat until k > n Repeat until k > n Add I k to Sum Add I k to Sum Add 1 to k Add 1 to k End of the loop End of the loop Print the value of Sum Print the value of Sum Stop Stop Get value for n, the number of integers Get value for n, the number of integers Get values for I 1, I 2, …, I n, a list of n integers Get values for I 1, I 2, …, I n, a list of n integers Set the value of Sum to 0 Set the value of Sum to 0 Set the value of k to 1 Set the value of k to 1 Repeat until k > n Repeat until k > n Add I k to Sum Add I k to Sum Add 1 to k Add 1 to k End of the loop End of the loop Print the value of Sum Print the value of Sum Stop Stop II. Compute the sum of n integers where n > 0 II. Compute the sum of n integers where n > 0Exercises

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You42 Repeat until A > 0 Print message, “Enter an integer” Print message, “Enter an integer” Get a value for A Get a value for A End of the loop Stop Repeat until A > 0 Print message, “Enter an integer” Print message, “Enter an integer” Get a value for A Get a value for A End of the loop Stop III. What does the following algorithm do? IV. Write an algorithm that does the same but using a while loop instead of a repeat loop. Exercises

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You43 RECALL: Algorithms & Computing Agents If we can discover an algorithm to perform a task, we can instruct a computing agent to execute it to solve the problem for us.

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You44 Algorithmic Problem Solving Algorithm discovery The process of finding a solution to a given problem Typical Steps: 1. Understand the problem 2. Divide it into sub-problems 3. Sketch and refine, probably repeatedly 4. Test the correctness

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You45 Find the phone number of a given Name in an (unsorted) list of names and their phone numbers Names Phone numbers N 1 T 1 N 2 T 2 … N 1000 T 1000 Sequential search: an Example

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You46 1. Get values for Name, N 1,…,N 1000, T 1,…,T Get values for Name, N 1,…,N 1000, T 1,…,T If Name = N 1 then print the value of T 1 2. If Name = N 1 then print the value of T 1 3. If Name = N 2 then print the value of T 2 3. If Name = N 2 then print the value of T 2 … If Name = N 999 then print the value of T If Name = N 1000 then print the value of T Stop Sequential search: 1st Attempt

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You47 Get values for Name, N 1,…, N 1000, T 1,…, T 1000 Set the value i to 1 and the value of Found to NO Repeat until Found = Yes or i > 1000 If Name = N i then If Name = N i then Print the value of T i Print the value of T i Set the value of Found to YES Set the value of Found to YES Else Else Add 1 to the value of i Add 1 to the value of i End of loop Stop Get values for Name, N 1,…, N 1000, T 1,…, T 1000 Set the value i to 1 and the value of Found to NO Repeat until Found = Yes or i > 1000 If Name = N i then If Name = N i then Print the value of T i Print the value of T i Set the value of Found to YES Set the value of Found to YES Else Else Add 1 to the value of i Add 1 to the value of i End of loop Stop Sequential search: Using A Loop

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You48 The largest is 8 at location 3 Idea (sketch): Go through the entire list, at each iteration find the largest-so-far and record its location Given a list of variables A 1, A 2, …, A n, find the largest value and its (first) location Selection: Find The Largest Number

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You49 To begin with, set largest-so-far to (the value of) A1 set location to 1 set i to 2 i

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You50 Compare A1 and A2 largest-so-far still holds the value of A1 set i to i +1 i

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You51 Compare A1 and A3 largest-so-far now holds the value of A3 location is 3 set i to i +1 i

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You52 i Continue the similar process until i = 8

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You53 Get a value for n, the size of the list Get values for A 1, A 2, …, A n, the list to be searched Set largest_so_far to A 1 and set location to 1 Set the value of i to 2 While i is less or equal to n do If A i > largest_so_far then If A i > largest_so_far then Set the value of largest_so_far to A i Set the value of largest_so_far to A i Set the value of location to i Set the value of location to i Add 1 to the value of i Add 1 to the value of i End of loop Print the values of largest_so_far and location Get a value for n, the size of the list Get values for A 1, A 2, …, A n, the list to be searched Set largest_so_far to A 1 and set location to 1 Set the value of i to 2 While i is less or equal to n do If A i > largest_so_far then If A i > largest_so_far then Set the value of largest_so_far to A i Set the value of largest_so_far to A i Set the value of location to i Set the value of location to i Add 1 to the value of i Add 1 to the value of i End of loop Print the values of largest_so_far and location Selection: Find The Largest Number

CMPUT101 Introduction to Computing(c) Yngvi Bjornsson & Jia You54 Two examples of algorithmic problem solving Two examples of algorithmic problem solving Sequential search Sequential search Q: On the average, how many comparisons (of names) does the algorithm make? Q: On the average, how many comparisons (of names) does the algorithm make? Selection Selection Q: Design a similar algorithm to find Q: Design a similar algorithm to find -the smallest value and its first location -the smallest value and its first location -the largest and all the locations holding it -the largest and all the locations holding it Algorithmic Problem Solving: Summary