+ All Categories
Home > Documents > CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

Date post: 16-Dec-2015
Category:
Upload: sybil-lane
View: 213 times
Download: 0 times
Share this document with a friend
39
CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)
Transcript
Page 1: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB - C++

Flow Control if, while, do-while

Juan Marquez

(03_flow_control.ppt)

Page 2: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 2

Overview 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

Page 3: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 3

Pseudocode

• Pseudocode is a mixture of C++ code and English like statements.

• Used when designing algorithms.• When designing, we don’t necessarily want to be

concerned about where semi-colons go. We want to concentrate on the design.

• I’ll use pseudocode throughout the course, so don’t feel compelled to correct my syntax.

• However, if at anytime you are not sure about a command, please be sure to ask for clarification.

Page 4: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 4

Flow Control

• The order in which statements are executed.

• There are four control structures. 1. Sequence Control Structure

2. Selection Control Structure• Also referred to as branching (if and if-else)

3. Repetition Control Structure (loops)

4. Case Control Structure (switch)

Page 5: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 5

Flowcharting

• 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.

Page 6: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 6

Flowchart Symbols

Begin or End Input or Output

Processing Decision

Branch or Direction of Flow

Page 7: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 7

1. Sequence Control Structure

• The order statements are placed (sequenced)

cin >> price >> qty;subtotal = price * qty;cout << subtotal;

• The only way to display the subtotal, statements must be in this order.

Page 8: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 8

Flowchart – Sequence Control

Begin

Input price, qty

subtotal = price * qty;

Output subtotal

End

Page 9: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 9

2. Selection Control ( if )

Simple if with single statement.

discountRate = 1.00;

if (qty > 25)

discountRate = .98;

subtotal = qty * (price * discountRate);

Page 10: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 10

Flowchart – if statement

discountRate = 1.00;

If qty > 25

Subtotal = qty * (price * discountRate);

discountRate = .98;True

False

Page 11: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 11

Selection Control (if-else)• Simple if-else with single statements.

DISCOUNT_RATE = .98;

if (qty > 25)subtotal = qty * (price * DISCOUNT_RATE);

else

subtotal = qty * price;

cout << subtotal;

Page 12: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 12

Flowchart – if-else statement

DISCOUNT_RATE = .98;

If qty > 25

Subtotal = qty * price;

Subtotal = qty * (price * DISCOUNT_RATE);

Output subtotal

True

False

Page 13: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 13

Boolean Expressions

• Boolean expressions evaluate to true or false.

• Must be enclosed in parenthesis

if (Boolean expression)

true statements (Yes)

else

false statements (No)

Page 14: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 14

Compound Statements • Use braces to create a block of statements.

if (hours > 40){

regularPay = 40 * payRate;overtimePay = (hours – 40) * (payRate * OVERTIME_RATE);

}else{

regularPay = hours * payRate;overtimePay = 0;

}

grossPay = regularPay + overtimePay;

Page 15: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 15

Incorrect if-elseif (hours > 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.

Page 16: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 16

Boolean Expressions

• Simple Expressions– Have one comparison– (hours > 40)

• Compound Expressions– Have more than one comparison– Created by using And and Or operators– And - (qty > 0 && qty < 51)– Or - (qty < 0 || qty > 51)

Page 17: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 17

And Operator - &&• Both conditions must be true.

if (qty > 0 && qty < 51){

subtotal = qty * price;}

else

cout << “Quantity must be 1 – 50.”;

• What happens if qty = 0, qty = 25, or qty = 60?• A block with a single statement is valid.

Page 18: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 18

Or Operator - | |• Either condition must be true.

if (qty < 1 || qty > 50){

cout << “Quantity must be 1 -50.”;}

else

subtotal = qty * price;

• What happens if qty = 0, qty = 25, or qty = 60?

Page 19: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 19

Pipe 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 - &&.

Page 20: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 20

Notes 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 =0;

if (y > 0 | | x > 0) // T or F

• Not operator (!):( y != 0) //This statement is OK, but the not( !(y= =0)) //outside the parentheses can be confusing.

Page 21: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 21

Booleans 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

Page 22: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 22

Nested if Statements - Indented

if (qty > 0)

if (qty < 51)

subtotal = qty * price;

else

cout << “Quantity must be < 51”;

else

cout << “Quantity must be > 0”;

Page 23: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 23

Matching else to if

How are else statements matched with an if?Compiler works it’s 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.

Page 24: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 24

Multiway BranchingIndenting not always practical

if (qty < 26)discount = 0

elseif (qty < 51)

discount = .01else

if (qty < 76)discount = .02

elseif (qty < 101)

discount = .03 … more

Page 25: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 25

Multiway Branching

if (qty < 26)discount = 0

else if (qty < 51)discount = .01

else if (qty < 76)discount = .02

else if (qty < 101)discount = .03

elsediscount = .04;

Page 26: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 26

Conditional Operator Expression

if (qty > 25)discountRate = 0.98;

elsediscountRate = 1.00;

discountRate = (qty > 25) ? .98 : 1.00;

Page 27: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 27

Assignment (=) 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.

Page 28: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 28

3. 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)

Page 29: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 29

While Loop Examplecount = 3; //initialize controlling variable

while (count > 0){cout << count;count--;

}

Output:

3 2 1 

Page 30: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 30

While 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.

Page 31: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 31

Flowchart – While Loopcount = 3

while count > 0

Output count

count--

Next statement

False

True

Skip or Exit LoopRepresents Loop

Initialization important for While Loop

Page 32: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 32

Do-while Loop Examplecount = 3;do{cout << count;count--;

}while (count > 0);

Output:

3 2 1

Page 33: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 33

Do-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.

Page 34: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 34

Flowchart – Do-while Loopcount = 3

while count > 0

Output count

count--

Next statement

False - Exit Loop

True

Loop will be executed at least one time, because the condition is at the bottom.

Represents Loop

Page 35: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 35

Loop 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.

Page 36: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 36

Nested Loopscount = 3;while (count > 0){

cout << endl << count;count--;count2 = 1;do{

cout << count2;count2++;

}while (count2 < 4);}

3 1 2 32 1 2 31 1 2 3

Page 37: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 37

While Loop Error

• Semi-colon after expression creates an infinite loop with a single statement that does nothing.

• DO NOT DO THIS.

while (count > 0);{cout << count;count--;

}

Page 38: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 38

4. Case Control Structure

• Switch statement covered later.

Page 39: CIS162AB - C++ Flow Control if, while, do-while Juan Marquez (03_flow_control.ppt)

CIS162AB 39

Summary

• Control Structures

• Flowcharts

• Single and Compound Boolean Expressions

• Single and Compound Statements

• If, if-else, and nested ifs

• While, do-while, and nested loops


Recommended