0% found this document useful (0 votes)
58 views

Decisions and Loops: CS 200 - Introduction To Programming

This document discusses control flow structures in programming, including decisions and loops. It covers boolean expressions, if/else statements, while and do-while loops, and how to nest control structures for multi-way branching. Key topics include precedence rules for boolean operators, short-circuit evaluation, and using braces properly with nested statements.

Uploaded by

S.M.Abbas Zadi.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Decisions and Loops: CS 200 - Introduction To Programming

This document discusses control flow structures in programming, including decisions and loops. It covers boolean expressions, if/else statements, while and do-while loops, and how to nest control structures for multi-way branching. Key topics include precedence rules for boolean operators, short-circuit evaluation, and using braces properly with nested statements.

Uploaded by

S.M.Abbas Zadi.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 38

CS 200 - Introduction to Programming

DECISIONS AND LOOPS

1
• Please upload assignments at
- https://lms.lums.edu.pk
•Please subscribe to Google Groups if you have
not already done so
- cs200f10
• Class Website
- http://chand.lums.edu.pk/~cs200f10

2
Your Program is Like a Network
of Roads in a City

Session 2 Object-Oriented Programming 3


Boolean Expressions
• Boolean expressions are expressions that are
either true or false
• comparison operators such as '>' (greater than)
are used to compare variables and/or numbers
- (hours > 40) Including the parentheses, is the
boolean expression from the wages example
- A few of the comparison operators that use two
symbols (No spaces allowed between the symbols!)
• >= greater than or equal to
• != not equal or inequality
• = = equal or equivalent

4
Using Boolean Expressions
• A Boolean Expression is an expression that is
either true or false
- Boolean expressions are evaluated using
relational operations such as
• = = , < , and >= which produce a boolean
value
• &&,– | and
|, and ! which also
boolean produce asuch
operations boolean
as value
• Type bool allows declaration of variables that
carry the value true or false

5
Evaluating Boolean Expressions
•Boolean expressions are evaluated using
values
from the Truth Tables in
- For example, if y is 8, the expression
!( ( y < 3) | | ( y > 7) )
is evaluated in the following sequence
! ( false | | true )
! ( true )
false
6
Precedence Rules
• Items in expressions are grouped by
precedence rules for arithmetic and boolean
operators
- Operators with higher precedence are performed
first
- Binary operators with equal precedence are
performed left to right
- Unary operators of equal precedence are
performed right to left

7
8
Complex Boolean Expression

9
Precedence Rules

10
Precedence Rule Example
• The expression
(x+1) > 2 || (x + 1) < -3

is equivalent to
( (x + 1) > 2) || ( ( x + 1) < -3)

- Because > and < have higher precedence than | |


and is also equivalent to
x + 1 > 2 || x + 1 < - 3

11
Evaluating x + 1 > 2 | | x + 1 < - 3
• Using the precedence rules
- First apply the unary -
- Next apply the +'s
- Now apply the > and <
- Finally do the | |

12
Block
• What is a block?
• Properties of a block?

• Scoping of a block?

13
Blocks
• Each branch of a switch or if-else statement is
a separate sub-task
- If the action of a branch is too simple to warrant a
function call, use multiple statements between braces
- A block is a section of code enclosed by braces
- Variables declared within a block, are local to the
block or have the block as their scope.
• Variable names declared in the block can be reused outside
the block

14
Statement Blocks
• A statement block is a block that is not a function
body or the body of the main part of a program
• Statement blocks can be nested in other
statement blocks
- Nesting statement blocks can make code difficult to
read
- It is generally better to create function calls than to
nest statement blocks

15
Scope Rule for Nested Blocks
• If a single
identifier is declared as a variable in
each of two blocks, one within the other, then
these are two different variables with the same
name
- One of the variables exists only within the inner
block and cannot be accessed outside the inner
block
- The other variable exists only in the outer block and
cannot be accessed in the inner block

16
While Loop Operation
• First, the boolean expression is evaluated
- If false, the program skips to the line following the
while loop
- If true, the body of the loop is executed
• During execution, some item from the boolean expression
is changed
- After executing the loop body, the boolean
expression is checked again repeating the process
until the expression becomes false
• A while loop might not execute at all if the
boolean expression is false on the first check

17
18
do-while loop
• A variation of the while loop.
• A do-while loop is always executed at least once
- The body of the loop is first executed
- The boolean expression is checked after the body
has been executed
• Syntax:

• do
{
statements to repeat
}
while (boolean_expression);

19
20
Increment/Decrement
•Unary operators require only one operand
- + in front of a number such as +5
- - in front of a number such as -5
• ++ increment operator
- Adds 1 to the value of a variable
x ++;
is equivalent to x = x + 1;
• -- decrement operator

- Subtracts 1 from the value of a variable


x --;
is equivalent to x = x - 1;

21
Infinite Loops
• Loops that never stop are infinite loops
• The loop body should contain a line that will
eventually cause the boolean expression to
become false
• Example: Print the odd numbers less than 12
x = 1;
while (x != 12)
{
cout << x << endl;
x = x + 2;
}
• Better to use this comparison: while ( x < 12)

22
Short-Circuit Evaluation
• Some boolean expressions do not need to be
completely evaluated
- if x is negative, the value of the expression
(x >= 0) && ( y > 1)
can be determined by evaluating only (x >= 0)
• C++ uses short-circuit evaluation
- If the value of the leftmost sub-expression
determines the final value of the expression, the rest
of the expression is not evaluated

23
Using Short-Circuit Evaluation
• Short-circuit evaluation can be used to prevent
run time errors
- Consider this if-statement

if ((kids != 0) && (pieces / kids >= 2) )


cout << "Each child may have two pieces!";

- If the value of kids is zero, short-circuit evaluation


prevents evaluation of (pieces / 0 >= 2)
• Division by zero causes a run-time error

24
Multiway Branches
•A branching mechanism selects one out of a
number of alternative actions
- The if-else-statement is a branching mechanism
•Branching mechanisms can be a subpart of
another branching mechanism
- An if-else-statement can include another
if-else-statement as a subpart

25
Nested Statements
• A statement that is a subpart of another statement
is a nested statement
- When writing nested statements it is normal to
indent each level of nesting

- Example: if ( x < y)
cout << x << " is less than " << y;
indented
elsecout << y << " is less than " << x;

26
Nested if-else Statements
• Use care in nesting if-else-statements
• Example: To design an if-else statement to
warn a driver when fuel is low, but tells the
driver to bypass pit stops if the fuel is close
to full. Other wise there should be no output.

Pseudocode: if fuel gauge is below ¾ then:


if fuel gauge is below ¼ then:
issue a warning
otherwise (gauge > ¾) then:
output a statement saying don't stop

27
Braces and Nested Statements
•Braces in nested statements are like
parenthesis in arithmetic expressions
- Braces tell the compiler how to group things
• Use braces around substatements

28
Multi-way if-else-statements
• An if-else-statement is a two-way branch
• Three or four (or more) way branches can be

designed using nested if-else-statements


- Example: The number guessing game with
the number stored in variable
number, the guess in variable
guess. How do we give hints?

29
Nested if-else Syntax
• A Multiway if-else statement is written as
- if (Boolean_Expression_1)
Statement_1
else if ( Boolean_Expression_2)
Statement_2

else if (Boolean_Expression_n)
Statement _n
else
Statement_For_All_Other_Possibilities

30
Class Exercise
• Write a program for a state that computes tax
according to the rate schedule:
- No tax on first $15,000 of income
- 5% tax on each dollar from $15,001 to $25,000
- 10% tax on each dollar over $25,001 to $50,000
- 15% tax on each dollar over $50,001 to $75,000
- 20% tax on each dollar over $75,001 to $100,000
- 25% tax on each dollar over $100,001

31
The switch-statement
•The switch-statement is an alternative for
constructing multi-way branches

32
switch-statement Syntax
• switch (controlling expression)
{
case Constant_1: statement_Sequence_1
break;
case Constant_2:
Statement_Sequence_2
break;

case Constant_n:
Statement_Sequence_n
break;
default:
Default_Statement_Sequence
}

33
The Controlling Statement
• A switch statement's controlling statement
must return one of these types
- A bool value
- An enum constant
- An integer type
- A character
• The value returned is compared to the
constant values after each "case"
- When a match is found, the code for that case is used

34
The break Statement
• The break statement ends the switch-statement
- Omitting the break statement will cause the code
for the next case to be executed!
- Omitting a break statement allows the use of
multiple case labels for a section of code
• case 'A':
case 'a':
cout << "Excellent.";
break;

• Runs the same code for either 'A' or 'a'

35
The default Statement
•If no case label has a constant that matches
the controlling expression, the statements
following the default label are executed
- If there is no default label, nothing happens when
the switch statement is executed
- It is a good idea to include a default section

36
More About
C++ Loop Statements
• A loop is a program construction that repeats a
statement or sequence of statements a number
of times
- The body of the loop is the statement(s) repeated
- Each repetition of the loop is an iteration
• Loop design questions:
- What should the loop body be?
- How many times should the body be iterated?

37
Designing Loops

• Designing a loop involves designing

- The body of the loop

- The initializing statements

- The conditions for ending the loop

38

You might also like