Download ALGORITHMS 2

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Laws of Form wikipedia , lookup

Factorization of polynomials over finite fields wikipedia , lookup

Transcript
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