making decisions in pascal
DESCRIPTION
Making Decisions In Pascal. In this section of notes you will learn how to have your Pascal programs to execute alternatives. Decision-Making In Pascal. Decisions are questions that are either true or false (Boolean) Decision making statements If-then If-then-else case of. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/1.jpg)
James Tam
Making Decisions In Pascal
In this section of notes you will learn how to have your Pascal programs to execute alternatives
![Page 2: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/2.jpg)
James Tam
Decision-Making In Pascal
Decisions are questions that are either true or false (Boolean)
Decision making statements• If-then• If-then-else• case of
![Page 3: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/3.jpg)
James Tam
If-Then
Decision-making with one condition
Format:
If (operand1 relational operation operand1) then
body;2
additional statements;
Example:
if (age >= 18) then
writeln('You are an adult');
writeln('Tell me more about yourself');1 Operands are referred to as expressions in Leestma and Nyhoff
2 Body of the if-then is referred to as a statement in Leestma and Nyhoff
Boolean expression
Indicates end of decision-making
![Page 4: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/4.jpg)
James Tam
If-Then (Flowchart)
Boolean expression Body
T
F
Additional statements
![Page 5: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/5.jpg)
James Tam
If-Then (Simple Body)
Body of if-then consists of a single statement
Format:
if (Boolean Expression) then
s1;
s2;
Example (for full example look under /home/231/examples/decisions/simpleIfThen.p):
if (x = 1) then
writeln('Body of if');
writeln ('After body');
Indicates end of decision-making
Body
![Page 6: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/6.jpg)
James Tam
If-Then (Compound Body)
Body of if-then consists of multiple statements
Format:
if (Boolean Expression) then
begin
s1;
s2;
:
sn;
end;
sn+1; Indicates end of decision-making
Body
![Page 7: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/7.jpg)
James Tam
If-Then (Compound Body(2))
Example (for full example look under /home/231/examples/decisions/compoundIfThen.p):
if (x = 1) then
begin
writeln('Body of if 1');
writeln('Body of if 2');
end;
writeln('after if');
![Page 8: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/8.jpg)
James Tam
If-Then-Else
Decision-making with two conditions
One (and only one) condition will be true
Format:
if (operand1 relational operation operand1) then
body of 'if'
else
body of 'else';
additional statements;
No semi-colon (indicates end of decision making!)
Boolean expression
![Page 9: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/9.jpg)
James Tam
If-Then-Else
Example:
if (age >= 18) then
writeln('You are an adult')
else
writeln('You are not an adult');
writeln('Tell me more about yourself');
![Page 10: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/10.jpg)
James Tam
If-Then-Else(Flowchart)
Boolean expression
Body of 'else'
T
F
Additional statements
Body of 'if'
![Page 11: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/11.jpg)
James Tam
If-Then-Else (Simple Body)
Body of if-then-else consists of a single statement
Format:
if (Boolean Expression) then
s1
else
s2;
s3;
No semi-colon (indicates end of decision-making!)
![Page 12: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/12.jpg)
James Tam
If-Then-Else (Simple Body(2))
Example (for full example look under /home/231/examples/decisions/simpleIfThenElse.p):
if (x = 1) then
writeln('body of if')
else
writeln('body of else');
writeln('after if-then-else');
![Page 13: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/13.jpg)
James Tam
If-Then-Else (Compound Body)
Body of if-then-else consists of multiple statements
Format:
if (Boolean Expression) then
begin
s1;
:
sn;
end
else
begin
sn+1;
:
sn + m;
end;
Sn + m + 1;
No semi-colon (marks end of decision-making!)
![Page 14: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/14.jpg)
James Tam
If-Then (Compound Body(2))
Example (for full example look under /home/231/examples/decisions/compoundIfThenElse.p):
if (x = 1) then
begin
writeln('Body of if 1');
writeln('Body of if 2');
end
else
begin
writeln('Body of else 1');
writeln('Body of else 2');
end;
writeln('after if-then-else');
![Page 15: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/15.jpg)
James Tam
Allowable Operands For Boolean Expressions
If (operand relational operation operand) then
Operands• integer• real• boolean• char• const
![Page 16: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/16.jpg)
James Tam
Allowable Operations For Boolean Expressions
If (operand relational operator operand) then
Pascal Mathematical
operator equivalent Meaning
< < Less than
> > Greater than
= = Equal to
<= ≤ Less than or equal to
>= ≥ Greater than or equal to
<> ≠ Not equal to
![Page 17: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/17.jpg)
James Tam
Decision-Making With Multiple Expressions
Typical format:
if (Boolean expression) Boolean operation (Boolean expression)
body
Boolean expressions
Formed from relational operations and their operands e.g., x > 5
![Page 18: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/18.jpg)
James Tam
Decision-Making With Multiple Expressions (2)
Built-in Boolean operations in Pascal
NOT
AND
OR
XOR
(NAND and NOR can be constructed via NOT, AND & OR)
![Page 19: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/19.jpg)
James Tam
Forming Compound Boolean Expressions With NOT
Format
if NOT (Boolean Expressions)
body;
Example
if NOT (x AND y)
if NOT (x OR y)
For a complete example program look in Unix under /home/231/examples/decisions/compoundNOT.p
![Page 20: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/20.jpg)
James Tam
Forming Compound Boolean Expressions With OR
Format
if (Boolean Expression) OR (Boolean Expression)
body;
Example
if (gpa > 3.7) OR (years_job_experience > 5)
writeln(‘You’re hired’);
For a complete example program look in Unix under /home/231/examples/decisions/compoundOR.p
![Page 21: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/21.jpg)
James Tam
Forming Compound Boolean Expressions With AND
Format
if (Boolean Expression) AND (Boolean Expression)
body;
Example
if (years_on_job <= 2) AND (is_goof_off = True)
writeln(‘You’re fired’);
For a complete example program look in Unix under /home/231/examples/decisions/compoundAND.p
![Page 22: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/22.jpg)
James Tam
Forming Compound Boolean Expressions With XOR
Format
if (Boolean Expression) XOR (Boolean Expression)
body;
Example
if (takes_first_job = True) XOR (takes_second_job = True)
is_employed := true;
![Page 23: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/23.jpg)
James Tam
Order Of Operation
Order Operator
1 NOT
2 * / DIV MOD AND
3 + - OR
4 < > = <= >= <>
![Page 24: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/24.jpg)
James Tam
Why Bracket Boolean Expressions
Compound Boolean Expressions
e.g., if x > 0 AND y > 0
![Page 25: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/25.jpg)
James Tam
Why Bracket Boolean Expressions
Compound Boolean Expressions
e.g., if x > 0 AND y > 0
AND has highest priority so the 0 and y becomes operands for this operation
![Page 26: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/26.jpg)
James Tam
Nested Decision Making
One decision is made inside another
Outer decisions must be true before inner decisions are considered
Format
if (Boolean expression) then
if (Boolean expression) then
inner body
Example (For complete example look in Unix under /home/231/examples/decisions/nesting.p)
if (num1 > 0) then
if (num2 > 0) then
writeln('Both numbers are positive');
Outer body
Inner body
![Page 27: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/27.jpg)
James Tam
Nested Decision Making: The Dangling Else
if (x > 0) then
if (y >0) then
writeln(‘x is greater than zero, y is greater than zero’)
else
writeln(‘x is greater than zero’);
![Page 28: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/28.jpg)
James Tam
The Dangling Else Reformatted
if (x > 0) then
if (y > 0) then
writeln('x and y greater than zero')
else
writeln('x greater than zero');
![Page 29: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/29.jpg)
James Tam
Decision-Making With Multiple Alternatives
if-then
Checks one condition
if-then-else
Checks for one of two mutually exclusive conditions
Approaches for multiple alternatives
Multiple if's
Multiple else-if's
![Page 30: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/30.jpg)
James Tam
Multiple If's: Non-Exclusive Conditions
Any, all or none of the conditions may be true
Format:
if (Boolean expression 1) then
body 1;
if (Boolean expression 2) then
body 2;
:
statements after the conditions;
![Page 31: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/31.jpg)
James Tam
Multiple If's:Flowchart
Expression 1
Expression 2
Body 1T
F
Expression n
:
Body 2T
F
Body nT
F
Statements after conditions
![Page 32: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/32.jpg)
James Tam
Multiple If's: Non-Exclusive Conditions (Example)
if (x > 0) then
writeln('X is positive);
if (y > 0) then
writeln('Y is positive');
If (z > 0) then
writeln('Z is postive');
![Page 33: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/33.jpg)
James Tam
Multiple If's: Exclusive Conditions
Only one of many conditions can be true
Can be implemented through multiple if's
Example (for full example look in Unix under /home/231/examples/decisions/inefficientDecisionMaking.p)
if (gpa = 4) then
letter := 'A';
if (gpa = 3) then
letter := 'B';
if (gpa = 2) then
letter := 'C';
if (gpa = 1) then
letter := 'D';
if (gpa = 0) then
letter := 'F';
Inefficient combination!
![Page 34: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/34.jpg)
James Tam
Multiple If, Else-If's: Mutally Exclusive Conditions
Format:
if (Boolean expression 1) then
body 1
else if (Boolean expression 2) then
body 2
:
else
body n;
statements after the conditions;
![Page 35: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/35.jpg)
James Tam
Multiple If, Else-If's: Flowchart
Expression 1
Expression 2
Body 1T
F
Expression n
:
Body 2T
F
Body nT
F
Statements after conditions
![Page 36: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/36.jpg)
James Tam
Multiple If, Else-If's: Mutually Exclusive Conditions (Example)
Example (for full example look in Unix under /home/231/examples/decisions/ifElseIf.p)
if (gpa = 4) then
letter := 'A'
else if (gpa = 3) then
letter := 'B'
else if (gpa = 2) then
letter := 'C'
else if (gpa = 1) then
letter := 'D'
else if (gpa = 0) then
letter := 'F';
Watch your semi-colons!
![Page 37: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/37.jpg)
James Tam
Case Statements
An alternative to the if, else-if (only one condition is true)
Format (integer): Case (expression) of
i1:
body;
i2:
body;
:
in:
body;
otherwise:
body;
Expression (variable, constant, arithmetic) must evaluate to an integer
![Page 38: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/38.jpg)
James Tam
Case Statements: Integer Example
Example (look for complete example in Unix under /home/231/examples/decisions/caseOf1.p):
case (gpa) of
4:
begin
writeln(‘You got an A’);
end; (* GPA of 4 *)
3:
begin
writeln(‘You got a ‘B’);
end; (* GPA of 3 *)
![Page 39: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/39.jpg)
James Tam
Case Statements: Integer Example (2)
2:
begin
writeln(‘You got a C’);
end; (* GPA of 2 *)
1:
begin
writeln(‘You got a D’);
end; (* GPA of 1 *)
0:
begin
writeln(‘You got an F’);
end; (* GPA of 0 *)
end; (* case *)
![Page 40: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/40.jpg)
James Tam
Case Statements: Characters
Format (char): Case (expression) of
‘c1’:
body;
‘c2’:
body;
:
‘cn’:
body;
otherwise
body;
Expression (variable, constant, arithmetic) must evaluate to a character
![Page 41: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/41.jpg)
James Tam
Case Statements: Character Example
Example (look for complete example in Unix under /home/231/examples/decisions/caseOf2.p):
case (letter) of
‘A’:
begin
writeln(‘GPA = 4’);
end; (* GPA of 4 *)
‘B’:
begin
writeln(‘GPA = 3’);
end; (* GPA of 3 *)
![Page 42: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/42.jpg)
James Tam
Case Statements: Character Example (2)
‘C’:
begin
writeln(‘GPA = 2’);
end; (* GPA of 2 *)
‘D’:
begin
writeln(‘GPA = 1’);
end; (* GPA of 1 *)
‘F’:
begin
writeln(‘GPA = 0’);
end; (* GPA of 0 *)
end; (* case *)
![Page 43: Making Decisions In Pascal](https://reader034.vdocument.in/reader034/viewer/2022051401/56814846550346895db55d6d/html5/thumbnails/43.jpg)
James Tam
Summary
How is decision making implemented via Pascal constructs:• If-then• If-then-else• Case-of
What are Boolean expressions and what are valid operators and operands?
How to handle simple vs. multiple statements in the body of a decision-making statement.
What are compound Boolean expressions?
How does nested decision making work?
Exclusive vs. non-exclusive alternatives when making decisions.