Title: CIS162AB - C
1CIS162AB - C
- Flow Control if, while, do-while
- Juan Marquez(03_flow_control.ppt)
2Overview of Topics
- Pseudocode
- Control Structures
- Flowcharts
- Single and Compound Boolean Expressions
- Single and Compound Statements
- If, if-else, nested ifs
- While, do-while, nested loops
3Pseudocode
- Pseudocode is a mixture of C code and English
like statements. - Used when designing algorithms.
- When designing, we dont necessarily want to be
concerned about where semi-colons go. We want to
concentrate on the design. - Ill use pseudocode throughout the course, so
dont feel compelled to correct my syntax. - However, if at anytime you are not sure about a
command, please be sure to ask for clarification.
?
4Flow Control
- The order in which statements are executed.
- There are four control structures.
- Sequence Control Structure
- Selection Control Structure
- Also referred to as branching (if and if-else)
- Repetition Control Structure (loops)
- Case Control Structure (switch)
5Flowcharting
- A flowchart is a pictorial representation of an
algorithm or logical steps. - Each step is represented by a symbol and the
arrows indicate the flow and order of the steps. - The shape of the symbol indicates the type of
operation that is to occur. - Flowcharts may help the move visual students
learn and understand logic.
6Flowchart Symbols
Input or Output
Begin or End
Decision
Processing
Branch or Direction of Flow
71. Sequence Control Structure
- The order statements are placed (sequenced)
- cin gtgt price gtgt qty
- subtotal price qty
- cout ltlt subtotal
- The only way to display the subtotal, statements
must be in this order.
8Flowchart Sequence Control
Begin
Input price, qty
subtotal price qty
Output subtotal
End
92. Selection Control ( if )
- Simple if with single statement.
- discountRate 1.00
- if (qty gt 25)
- discountRate .98
- subtotal qty (price discountRate)
10Flowchart if statement
discountRate 1.00
If qty gt 25
True
discountRate .98
False
Subtotal qty (price discountRate)
11Selection Control (if-else)
- Simple if-else with single statements.
- DISCOUNT_RATE .98
- if (qty gt 25)
- subtotal qty (price DISCOUNT_RATE)
- else
- subtotal qty price
- cout ltlt subtotal
12Flowchart if-else statement
DISCOUNT_RATE .98
If qty gt 25
Subtotal qty (price DISCOUNT_RATE)
True
False
Subtotal qty price
Output subtotal
13Boolean Expressions
- Boolean expressions evaluate to true or false.
- Must be enclosed in parenthesis
- if (Boolean expression)
- true statements (Yes)
- else
- false statements (No)
14Compound Statements
- Use braces to create a block of statements.
- if (hours gt 40)
-
- regularPay 40 payRate
- overtimePay (hours 40)
(payRate OVERTIME_RATE) -
- else
-
- regularPay hours payRate
- overtimePay 0
-
- grossPay regularPay overtimePay
15Incorrect if-else
- if (hours gt 40)
-
- regularPay 40 payRate
- overtimePay (hours 40)
(payRate OVERTIME_RATE) -
- else
- regularPay hours payRate
- overtimePay 0
- grossPay regularPay overtimePay
- overtimePay would always be set to zero.
16Boolean Expressions
- Simple Expressions
- Have one comparison
- (hours gt 40)
- Compound Expressions
- Have more than one comparison
- Created by using And and Or operators
- And - (qty gt 0 qty lt 51)
- Or - (qty lt 0 qty gt 51)
17And Operator -
- Both conditions must be true.
- if (qty gt 0 qty lt 51)
-
- subtotal qty price
-
- else
- cout ltlt Quantity must be 1 50.
- What happens if qty 0, qty 25, or qty 60?
- A block with a single statement is valid.
18Or Operator -
- Either condition must be true.
- if (qty lt 1 qty gt 50)
-
- cout ltlt Quantity must be 1 -50.
-
- else
- subtotal qty price
- What happens if qty 0, qty 25, or qty 60?
19Pipe Character -
- Where is the pipe character on the keyboard?
- On most keyboards
- It is right above the Enter key
- Shares the key with the back slash - \
- Must hold the shift key go get it
- Instead of a solid line, it is shown as a broken
line - For the Or operator, 2 pipe characters must be
entered - . - For the And operator, 2 ampersands characters
must be entered - .
20Notes on Boolean Expressions
- Short-circuit evaluation if the evaluation of
the entire expression can be determined by the
result of the first expression, the second
expression is not evaluated.int y 1, x 0if
(y gt 0 x gt 0) // T or F - Not operator (!)( y ! 0) //This statement
is OK, but the not( !(y 0)) //outside the
parentheses can be confusing.
21Booleans Only True or False
- C does the math to get to a True or False.
- true 1, false 0
- Non-zeros converted to true, which is a one.
- if ( (5 7) (!6) )
- T T (!T)
- T F
- 1 0 1 T
22Nested if Statements - Indented
- if (qty gt 0)
- if (qty lt 51)
- subtotal qty price
- else
- cout ltlt Quantity must be lt 51
- else
- cout ltlt Quantity must be gt 0
23Matching else to if
- How are else statements matched with an if?
- Compiler works its way back. When an else is
encounter, it looks back to find an if that has
not been matched to an else. - Why do we indent each level?
- We indent to make programs easier to read.
Indenting has no effect on how compiler matches
an else to an if.
24Multiway BranchingIndenting not always practical
- if (qty lt 26)
- discount 0
- else
- if (qty lt 51)
- discount .01
- else
- if (qty lt 76)
- discount .02
- else
- if (qty lt 101)
- discount .03 more
25Multiway Branching
- if (qty lt 26)
- discount 0
- else if (qty lt 51)
- discount .01
- else if (qty lt 76)
- discount .02
- else if (qty lt 101)
- discount .03
- else
- discount .04
26Conditional Operator Expression
- if (qty gt 25)
- discountRate 0.98
- else
- discountRate 1.00
- discountRate (qty gt 25) ? .98 1.00
27Assignment () vs Comparison ()
- if (x 12) // always true
- if (x 12) // comparison
- To prevent accidental assignment, state constant
first. - if (12 x)
- Compiler will report this as a syntax error.
283. Repetition Control (loops)
- loop a group of statements that are repeated
until a certain conditions occurs to stop it. - while loop
- do-while loop
- for-loop (covered later)
29While Loop Example
- count 3 //initialize controlling variable
- while (count gt 0)
-
- cout ltlt count
- count--
-
- Output
- 3 2 1
30While Loop
- Controlling Boolean expression evaluated before
executing loop body. - Controlling variable must be initialized.
- Boolean expression must be true to enter loop
body. - No semicolon after Boolean expression.
- It is possible that body is not executed at all.
- Boolean expression must be false to get out of
loop. - Controlling variable must be modified inside
loop. - Execution continues with next statement after
loop.
31Flowchart While Loop
Initialization important for While Loop
count 3
while count gt 0
False
True
Output count
Skip or Exit Loop
Represents Loop
count--
Next statement
32Do-while Loop Example
- count 3
- do
-
- cout ltlt count
- count--
- while (count gt 0)
- Output
- 3 2 1
33Do-while Loop
- Controlling Boolean expression evaluated after
executing body. - So, body is always executed at least one time.
- Initialization of controlling variable not
necessarily required if it will be initialized
inside the loop. - Boolean expression must be false to get out of
loop. - Controlling variable must be modified inside
loop. - Semicolon required after Boolean expression.
- Execution continues with next statement after
loop.
34Flowchart Do-while Loop
count 3
Output count
Loop will be executed at least one time, because
the condition is at the bottom.
count--
Represents Loop
while count gt 0
True
False - Exit Loop
Next statement
35Loop Summary
- Incrementor count
- Decrementor count--
- Infinite loop expression that always evaluates
to true - Avoid using as the operator.
- Controlling variable must be altered within the
loop. - Use Control-C to terminate an infinite loop.
- When to use a while or do-while will become
evident as we continue to use and learn each
loop.
36Nested Loops
- count 3
- while (count gt 0)
-
- cout ltlt endl ltlt count
- count--
- count2 1
- do
-
- cout ltlt count2
- count2
- while (count2 lt 4)
3
1 2 3
2
1 2 3
1
1 2 3
37While Loop Error
- Semi-colon after expression creates an infinite
loop with a single statement that does nothing. - DO NOT DO THIS.
- while (count gt 0)
-
- cout ltlt count
- count--
384. Case Control Structure
- Switch statement covered later.
39Summary
- Control Structures
- Flowcharts
- Single and Compound Boolean Expressions
- Single and Compound Statements
- If, if-else, and nested ifs
- While, do-while, and nested loops