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 work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
ALGORITHMS
CONDITIONAL BRANCH
CONTROL STRUCTURE
1
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
2
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
3
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
4
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)
5
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
6
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
7
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. The else is optionnal. Note that
the indentation is important. It determines the
beginning and the end of each block.
8
Algorithm 2.1
 Write an algorithm to compute the absolute value of a
number.
– Name: ABSOLUTE
– Givens: Number
• Change: None
– 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
9
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
10
Algorithm 2.1 (b)
 Write an algorithm to compute the absolute value of a
number using only one test
– Name: ABSOLUTE
– Givens: Number
• Change:None
– Results: Value
– Intermediates: None
– Definition: Value := ABSOLUTE (Number)
– ----------------------– Method
• Get Number
If (Number >= 0)
Let Value = Number
Else
Let Value = (-1) * Number
• Give Value
11
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”
12
Algorithm 2.2
 Write an algorithm which
finds the largest of three given
numbers
Name: BIG3
Givens: N1, N2, N3
Change:None
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
13
Trace 2.1
Trace Algorithm 2.2 with the values 8, 12, 7
(1) Get N1
(2) Get N2
(3) Get N3
(4) If (N1 > N2)
(5) Let Largest = N1
(6) Else
(7) Let Largest = N2
LN N1 N2 N3
1
8
2
12
3
7
4
7
8
10 Output 12
Largest
Test
(8>12)
12
(7>12)
(8) If (N3 > Largest)
(9) Let Largest = N3
(10) Give Largest
14
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? Algorithm 1.7)
• 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
15
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
• Change: X1,X2,X3
– Results: None
– 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
16
Trace 2.2
 Trace algorithm 2.3 with list X having values 3, 8 and 2
respectively
(1) Get X
(2) If (X1 > X2)
(3)
Let Temp = X1
(4)
Let X1 = X2
(5)
Let X2 = Temp
(6) If (X2 > X3)
(7)
Let Temp = X2
(8)
Let X2 = X3
(9)
Let X3 = Temp
(10) If (X1 > X2)
(11)
Let Temp = X1
(12)
Let X1 = X2
(13)
Let X2 = Temp
(14) Give X
LN
1
X
TEMP
TEST
(3,8,2)
2
(3 > 8)
6
(8 > 2)
7
8
8
(3,2,2)
9
(3,2,8)
10
(3 > 2)
11
3
12
(2,2,8)
13
(2,3,8)
14
Output (2,3,8)
17
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
18
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
Change: None
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
19
Trace 2.3
 Trace algorithm 2.4 with the given age 35
(1) Get Age
(2) If (Age < 16)
(3)
Let Price =
(4) Else If (Age >
(5)
Let Price =
(6) Else
(7)
Let Price =
(8) Give Price
LN
Age
1
35
Price
Test
$7
65)
$5
2
(35<16)
4
(35>65)
$10
7
$10
8 Output $10
20
Algorithm 2.5
 Given an employee’s eligible medical expenses for a
calendar year, write an algorithm which computes the
amount of reimbursement from group medical
insurance. The insurance does not cover the first $100
of medical expenses. It pays 90% of the remaining
amount in the first $2000 of expenses and 100% of any
additional expenses.
‫ يتكفل‬.‫ األولى من النفقات الطبية‬100 ‫ ال يغطي التأمين مبلغ‬.‫خوارزمية لحساب تعويض التأمين الصحي‬
.2000 ‫ للمبالغ األكبر من‬100% ‫ المدفوعة ويعوض‬2000 ‫ من المبلغ المتبقي لغاية‬90%
21
Algorithm 2.5
Name: MEDICAL
Givens: Expense
Change: None
Results: Refund
Intermediates:
LL (Constant 100)
UL (Constant 2000)
Definition:
Refund := MEDICAL(Expense)
Method
--------------------Set LL = 100
Set UL = 2,000
Get Expense
If (Expense < LL)
Let Refund = 0
Else If (Expense < UL)
Let Refund = 90% (Expense-LL)
Else
Let Refund = 90% (UL-LL) +
100% (Expense - UL)
Give Refund
22
Trace 2.4
Trace Algorithm 2.5 for $3,000 worth of expenses
( 1) Set LL = 100
( 2) Set UL = 2,000
( 3) Get Expense
LN
UL LL Exp Refund
Test
1,2 100 2K
3
3000
4
(3K<100)
6
(3K<2K)
9
2,710
10 Output 2,710
( 4) If (Expense < 100)
( 5) Let Refund = 0
( 6) Else If (Expense < 2,000)
( 7) Let Refund = 90% (Expense-100)
( 8) Else
( 9) Let Refund = 90% (1,900) +
100% (Expense - 2,000)
23
(10) Give Refund
Additional Material
24
Flow Charts
25
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
26
Start
ABSOLUTE
Algorithm 2.1(a)
Name: ABSOLUTE
Givens: Number
Change: None
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
27
Algorithm 2.1(b)
Start
ABSOLUTE
Get Number
Name: ABSOLUTE
Givens: Number
Change: None
Results: Value
Intermediates: None
Definition: Value :=
ABSOLUTE (Number)
If (Number >= 0)
N
Y
Let Value = Number
Let Value = (-1) * Number
Give Value
Finish
ABSOLUTE
28
Start
BIG3
Algorithm 2.2
Name: BIG3
Givens: N1, N2, N3
Change:None
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
29
Start
SORT3
Algorithm 2.3
Get X1
Get X2
Get X3
If (X1 > X2)
Name: SORT3
Givens: X1,X2,X3
Change: 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
30
Finish
SORT3
Algorithm 2.4
Name: FARE
Givens: Age
Change: None
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
31
Algorithm 2.5
Name: MEDICAL
Givens: Expense
Change: None
Results: Refund
Intermediates:
LL (Constant 100)
UL (Constant 2,000)
Definition:
Refund :=
MEDICAL(Expense)
Start
MEDICAL
Set LL = 100
Set UL = 2,000
Get Expense
N
If (Expense < LL )
Y
N
If (Expense < UL )
Y
Let Refund = 0
Let Refund =
90%(Expense – LL )
Let Refund = 90%(UL-LL)+
100%(Expense – UL )
Give
Refund
Finish
MEDICAL
32
Homework
33
For each of the following questions:
Develop an algorithm
Trace the algorithm with suitable data
•Write an algorithm to reverse the digits in a three digit
number and then add that number to 500. For example, 468
becomes 864. When added to 500, the result is 1364.
•Write an algorithm to get the names and ages of two people.
Return the name of the person who is older (in the format “x
is older than y”, where x and y are the names of the two
people), unless the two people are the same age, in which
case, return the message “x is the same age as y”.
34
An automotive sales representative’s commission is
calculated as a percentage of the sale:
– 8% of the first $5,000.00 of the sale price
– 10% on the remainder of the sale price, if the remainder
is less than or equal to $80,000.00 or
– 12.5% on the remainder, if the remainder is more than
$80,000.00
 Develop an algorithm that will accept the sale
price of the automobile and calculate and display
the sales representative’s commission.
35
Related documents