Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
ALGORITHMS CONDITIONAL BRANCH CONTROL STRUCTURE 1 Conditional Branch So far, in the method part of our algorithms, the instructions have been executed sequentially However, sometimes we need to vary the order of execution of the instructions. The order will be determined by the value of a condition We will test to determine whether the condition is true or false – If the condition is true, we will execute certain instructions – If the condition is false, we will execute other instructions 2 Definition of a Block But first, let us define a block as group of related instructions – A block can contain one or as many instructions as we want BLOCK 1 -------------------Get X Get Y Let Z = X + Y Give Z BLOCK 2 ---------------------Let X = A + B * C /D 3 Block The key feature of a block is that it has only one entrance (one way to come in) – By executing the first instruction in the block and only one exit (one way out) – By executing the last instruction in the block You cannot execute any other instruction in the block without starting with the first and ending with the last instructions 4 Simple Sequence of Blocks Input Block -------------------Get X Get Y Process Block -----------------Let X = X + Y Let Y = 2 * Y Let Z = X + Y Output Block ----------------Give Z 5 Test Blocks By adding a test at the beginning of a block, we let the results of the test determine which block of instructions will be executed TEST True Block ---------------------Do these Instructions if Test is True False Block ----------------------Do these Instructions if the Test is False 6 What is a Test? The test used in a conditional branching control structure contains a variable or expression that evaluates to either True or False 7 Logical Operators in a Test Expression = Equal To < Less Than > Greater Than <= Less Than or Equal To >= Greater Than or Equal To <> Not Equal To (Greater Than or Less Than) 8 Examples of Tests TEST (3 + 2) = (7 – 2) 5 <> (8 – 3) ((7*2)-3) < 12 ((9/3)*2)<=6 (25-(3*5))>10 23>= (12*2) LOGICAL VALUE True False True True False False 9 Logical Tests In practice, tests contain variables and expressions, not numbers Suppose that X, Y and Z are 3, 5, 8 respectively Test Logical Value (X + Y) = (Z – 1) False X=3 True (X > Y) False 10 Test Block Indentation is used to show different blocks in an algorithm To write a test block, use an IF statement, and indent the instructions to be executed If (Test) Do this statement Do this statement as well Do this statement after the If statement 11 Test Block (syntax and interpretation) Syntax if (Test) Block1 if (Test) Block1 else Block2 Interpretation If Test is evaluated to true Block1 is executed, else Block2 is executed. Note that the indentation is important. It determines the beginning and the end of each block. 12 Algorithm 2.1(a) Write an algorithm to compute the absolute value of a number. – – – – – – – Name: ABSOLUTE Givens: Number Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number) ----------------------Method • Get Number • If (Number >= 0) Let Value = Number • If (Number < 0) Let Value = (-1) * Number • Give Value 13 C# code for algorithm2.1 static void Main(string[] args) { int number = int.Parse(Console.ReadLine()); int abs=0; if (number >= 0) { abs = number; Console.WriteLine(abs); } 14 C# code for algorithm2.1(a)(cont..) if (number < 0) { abs = -1 * number; Console.WriteLine(abs); } } 15 Else It is redundant to do the test twice as in IF (X > 0) Do this IF (X <= 0) Do that The test should be written as If (X > 0) Do this Else (or Otherwise) Do that 16 Algorithm 2.1 (b) Write an algorithm to compute the absolute value of a number using only one test – – – – – – – Name: ABSOLUTE Givens: Number Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number) ----------------------Method • Get Number If (Number >= 0) Let Value = Number Else Let Value = (-1) * Number • Give Value 17 C# code for algorithm2.1(b) static void Main(string[] args) { int number = int.Parse(Console.ReadLine()); int abs=0; if (number >= 0) { abs = number; Console.WriteLine(abs); } 18 C# code for algorithm2.1(b)(cont..) else { abs = -1 * number; Console.WriteLine(abs); } } 19 Algorithm 2.2 Write an algorithm which finds the largest of three given numbers General Concept – Keep track of “Biggest so Far” • • • • Look at the first two numbers Store the larger of the two numbers in “Biggest so Far” Compare “Biggest so Far” with the third number If the third number is larger, then store it in “Biggest so Far” 20 Algorithm 2.2 Write an algorithm which finds the largest of three given numbers Name: BIG3 Givens: N1, N2, N3 Results:Largest Intermediates: None Definition: Largest := BIG3(N1,N2,N3) Method -----------------Get N1 Get N2 Get N3 If (N1 > N2) Let Largest = N1 Else Let Largest = N2 If (N3 > Largest) Let Largest = N3 Give Largest 21 C# code for algorithm2.2 static void Main(string[] args) { int number1 = int.Parse(Console.ReadLine()); int number2 = int.Parse(Console.ReadLine()); int number3 = int.Parse(Console.ReadLine()); int largest; if (number1 > number2) largest = number1; 22 C# code for algorithm2.2(cont..) else largest = number2; if (number3 > largest) largest = number3; Console.WriteLine(largest); } 23 Algorithm 2.3 Write an algorithm which, when given an ordered list X1, X2, & X3, modifies the list so that the values are in ascending order General Concept • Look at the first two numbers, X1 and X2. If X1 is larger than X2, swap them (remember the swap algorithm) • Look at X2 and X3. If X2 is larger than X3, swap them – This will put the largest number in the X3 position – X2 may have changed, so we have to look at X1 again • Look again at X1 and X2. If X1 is larger than X2, swap them – Now the list is in non-decreasing order 24 Algorithm 2.3 Write an algorithm which, given an ordered list X1, X2 & X3, modifies it so that the values are in ascending – Method order – Name: SORT3 – Givens: X1,X2,X3 – Results : X1,X2,X3 Intermediates: Temp – Definition: SORT3(X1,X2,X3) – ---------------• Get X1, X2, X3 • If (X1 > X2) Let Temp = X1 Let X1 = X2 Let X2 = Temp • If (X2 > X3) Let Temp = X2 Let X2 = X3 Let X3 = Temp • If (X1 > X2) Let Temp = X1 Let X1 = X2 Let X2 = Temp • Give X1, X2, X3 25 C# code for algorithm2.3 static void Main(string[] args) { int number1 = int.Parse(Console.ReadLine()); int number2 = int.Parse(Console.ReadLine()); int number3 = int.Parse(Console.ReadLine()); int temp; if(number1 > number2) { temp = number1; number1=number2; number2 = temp; } 26 C# code for algorithm2.3 if(number2 > number3) { temp = number2; number2 = number3; number3 = temp; } if(number1 > number2) { temp = number1; number1 = number2; number2 = temp; } 27 C# code for algorithm2.3 Console.WriteLine(number1); Console.WriteLine(number2); Console.WriteLine(number3); } 28 Multiple Tests Sometimes we need to perform multiple related tests – For example, in assigning grades, a student can receive A+, A, A-….E, F We can add an ELSE IF clause for multiple test results IF (Test 1) Execute block for Test 1 Else IF (Test 2) Execute block for Test 2 Else Execute block for Else 29 Algorithm 2.4 Write an algorithm which calculates the amount of money to charge for a ticket. The amount varies with the age of the individual. The charge for a person less than 16 is $7. The charge for a person over age 65 is $5 The charge is $10 for everyone else Name: FARE Givens: Age Results: Price Intermediates: None Definition: Price := FARE(Age) Method --------------------Get Age If (Age < 16) Let Price = $7 Else If (Age > 65) Let Price = $5 Else Let Price = $10 Give Price 30 C# code for algorithm 2.4 static void Main(string[] args) { int age = int.Parse(Console.ReadLine()); int price; if (age < 16) { price = 7; Console.WriteLine("the price of your ticket is " + price); } 31 C# code for algorithm 2.4(cont.) else if (age > 65) { price = 5; Console.WriteLine("the price of your ticket is " + price); } else { price = 10; Console.WriteLine("the price of your ticket is " + price); } } 32 Additional Material 33 Flow Charts 34 Flow Charts Logic is implemented with a Diamond Symbol There are two exits, which should be labeled Y/N or T/F The two paths need to join before the end of the flowchart 35 Start ABSOLUTE Algorithm 2.1(a) Name: ABSOLUTE Givens: Number Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number) Get Number N If (Number >= 0) Y Let Value = Number N If (Number < 0) Y Let Value = (-1) * Number Give Value Finish ABSOLUTE 36 Algorithm 2.1(b) Start ABSOLUTE Get Number Name: ABSOLUTE Givens: Number Results: Value Intermediates: None Definition: Value := ABSOLUTE (Number) If (Number >= 0) N Y Let Value = Number Let Value = (-1) * Number Give Value Finish ABSOLUTE 37 Start BIG3 Algorithm 2.2 Name: BIG3 Givens: N1, N2, N3 Results:Largest Intermediates: None Definition: Largest := BIG3(N1,N2,N3) Get N1 Get N2 Get N3 N If (N1 > N2) Y Let Largest = N1 If (N3 > Largest) Let Largest = N2 N Y Let Largest = N3 Give Largest Finish BIG3 38 Start SORT3 Algorithm 2.3 Get X1 Get X2 Get X3 If (X1 > X2) Name: SORT3 Givens: X1,X2,X3 Results: None Intermediates: Temp Definition: SORT3(X1,X2,X3) N Y Let Temp = X1 Let X1 = X2 Let X2 = Temp If (X2 > X3) N Y Let Temp = X2 Let X2 = X3 Let X3 = Temp If (X1 > X2) N Y Let Temp = X1 Let X1 = X2 Let X2 = Temp Give X1 Give X2 Give X3 39 Finish SORT3 Algorithm 2.4 Name: FARE Givens: Age Results: Price Intermediates: None Definition: Price := FARE(Age) Start FARE Get Age N If (Age < 16) Y Let Price = $7 N If (Age > 65) Y Let Price = 5$ Let Price = $10 Give Price Finish FARE 40