CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

41
CPS 125: Digital CPS 125: Digital Computation and Computation and Programming Programming Selection Structures: Selection Structures: if if and and switch switch Statements Statements

Transcript of CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Page 1: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

CPS 125: Digital Computation CPS 125: Digital Computation and Programmingand Programming

Selection Structures: Selection Structures: ifif and and switchswitch StatementsStatements

Page 2: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Outline Outline

Control StructuresControl Structures ConditionsConditions The The ifif Statement Statement Decision Steps in Algorithms: Case StudyDecision Steps in Algorithms: Case Study The The switchswitch Statement Statement Common Programming ErrorsCommon Programming Errors

Page 3: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Control StructuresControl Structures All programs can be written with three basic All programs can be written with three basic

structuresstructures SequenceSequence SelectionSelection Repetition (Looping, Iteration)Repetition (Looping, Iteration)

Compound statementCompound statement{{

Statement 1;Statement 1;…………Statement n;Statement n;

}}

Page 4: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Selection Selection

Process 1 Process 2

Condition

Page 5: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

ConditionCondition

An expression to perform comparisons, which An expression to perform comparisons, which is either false (represented by 0) or true is either false (represented by 0) or true (usually represented by 1, actually could be (usually represented by 1, actually could be anything other than 0)anything other than 0)

Relational expressionsRelational expressions Logical expressionsLogical expressions

Page 6: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Relational ExpressionsRelational Expressions

operand operand relational operatorrelational operator operand operand

OperatorOperator MeaningMeaning ExampleExample

<< less thanless than age < 30age < 30

>> greater thangreater than age > 30age > 30

<=<= less than or equal toless than or equal to taxable <= 20taxable <= 20

>=>= greater than or greater than or equal to equal to

temp >= 98.6temp >= 98.6

==== equal toequal to gradegrade == == 90 90

!=!= not equal tonot equal to number != 250number != 250

Page 7: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Character ExamplesCharacter Examples

‘‘1’ < ‘7’1’ < ‘7’ 11 TrueTrue

‘‘D’ <= ‘Z’D’ <= ‘Z’ 11 TrueTrue

‘‘c’ >= ‘v’c’ >= ‘v’ 00 FalseFalse

‘‘m’ <= ‘M’m’ <= ‘M’ System dependentSystem dependent

‘‘b’ == ‘B’b’ == ‘B’ 00 FalseFalse

Page 8: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

More ExamplesMore Examples

key = ‘m’; i = 5; j = 7; k = 12; x = 22.5;

(i + 2) = = (k – 1)(i + 2) = = (k – 1)

((3 * i) – j) < 22((3 * i) – j) < 22

(i + (2 * j)) > k(i + (2 * j)) > k

(‘a’ + 1) = = ‘b’(‘a’ + 1) = = ‘b’

(k + 3) <= ((-j) + (3 * i))(k + 3) <= ((-j) + (3 * i))

(key – 1) > ‘p’(key – 1) > ‘p’

(key + 1) == ‘n’(key + 1) == ‘n’

25 <= (x + 1.0)25 <= (x + 1.0)

Page 9: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Logical ExpressionsLogical Expressions

operand logical operator operand

OperatorOperator NameName UseUse TruthTruth

&&&& Logical Logical andand (a > 10) &&(a > 10) &&

(b < 20)(b < 20)

both operands both operands truetrue

|||| Logical Logical oror (a > 10) || (a > 10) ||

(b < 20)(b < 20)

either operand either operand truetrue

!! Logical Logical complementcomplement

!(a == b)!(a == b) complement complement operandoperand

Page 10: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

OperatorOperator PrecedencePrecedencefunction callsfunction calls

! + - & (unary operators)! + - & (unary operators)

* / %* / %

+ -+ -

< <= >= >< <= >= >

== !=== !=

&&&&

||||

==

Operator PrecedenceOperator Precedence

highest

lowest

Page 11: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

ExamplesExamples

x = 3.0; y = 4.0; z = 2.0; flag = 0;x = 3.0; y = 4.0; z = 2.0; flag = 0;

1. !flag1. !flag

2. x + y / z <= 3.52. x + y / z <= 3.5

3. !flag || (y + z >= x – z)3. !flag || (y + z >= x – z)

4. !(flag || (y + z >= x – z))4. !(flag || (y + z >= x – z))

Short-circuit evaluationShort-circuit evaluation

Page 12: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

English Condition in CEnglish Condition in C

English ConditionEnglish Condition Logical ExpressionLogical Expression

x and y are greater than zx and y are greater than z

x is equal to 1.0 or 3.0x is equal to 1.0 or 3.0

x is in the range z to y, x is in the range z to y, inclusiveinclusive

x is outside the range z to yx is outside the range z to y

Page 13: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Complementing a Condition Complementing a Condition

Complementing item == SENT:Complementing item == SENT:! (item == SENT) ! (item == SENT) or or item != SENTitem != SENT

DeMorgan’s TheoremDeMorgan’s Theorem The complement of The complement of exprexpr11 && expr && expr22 is written as is written as coco

mpmp11 || comp || comp22, where , where compcomp11 is the complement of is the complement of expexprr11 and and compcomp22 is complement of is complement of exprexpr22

The complement of The complement of exprexpr11 || expr || expr22 is written as is written as compcomp11 && comp&& comp22, where , where compcomp11 is the complement of is the complement of exprexpr11 and and compcomp22 is complement of is complement of exprexpr22

age <= 25 && (status == ‘S’ || status == ‘D’)age <= 25 && (status == ‘S’ || status == ‘D’)

Page 14: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Logical AssignmentLogical Assignment

int senior_citizen;int senior_citizen;senior_citizen = (age >= 65);senior_citizen = (age >= 65);Expression !senior_citizen && gender == ‘M’Expression !senior_citizen && gender == ‘M’

int in_range, is_letter;int in_range, is_letter;in_range = (n > -10 && n < 10);in_range = (n > -10 && n < 10);is_letter = (ch >= ‘A’ && ch <= ‘Z’) ||is_letter = (ch >= ‘A’ && ch <= ‘Z’) ||

(ch >= ‘a’ && ch <= ‘z’);(ch >= ‘a’ && ch <= ‘z’);

int even;int even;even = (n % 2 == 0);even = (n % 2 == 0);

Page 15: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

The The ifif Statement Statement

SyntaxSyntaxif (condition)if (condition)

statement1;statement1;

elseelse

statement2;statement2; If condition is true, statement1 will be executedIf condition is true, statement1 will be executed If condition is false, statement2 will be executedIf condition is false, statement2 will be executed The The elseelse part is optional part is optional

Page 16: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

ExamplesExamples

if (crsr_or_frgt == ‘C’)if (crsr_or_frgt == ‘C’)printf(“Cruiser\n”);printf(“Cruiser\n”);

elseelseprintf(“Frigate\n”);printf(“Frigate\n”);

if crsr_or_frgt == ‘C’if crsr_or_frgt == ‘C’printf(“Cruiser\n”);printf(“Cruiser\n”);

if (crsr_or_frgt == ‘C’);if (crsr_or_frgt == ‘C’);printf(“Cruiser\n”);printf(“Cruiser\n”);

Display “Cruiser”

Display “Frigate”

== ‘C’ ?

TF

Page 17: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Compound StatementsCompound Statements

SyntaxSyntaxif (if (conditioncondition) )

{ { statements;statements;

}}

elseelse

{ { statements;statements;

}}

if (ctri <= MAX_SAFE_CTRI) {

printf(“Car #%d: safe\n”, auto_id);

safe = safe + 1;

}

else { printf(“Car #%d: unsafe\n”, auto_id); unsafe = unsafe + 1;}

if (ctri <= MAX_SAFE_CTRI)

printf(“Car #%d: safe\n”, auto_id);

safe = safe + 1;

else ……

Page 18: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Example Example

if (x > y) {

temp = x; /* Store old x in temp */

x = y; /* Store old y in x */

y = temp; /* Store old x in y */

}

Tracing its execution with x = 12.5; y = 5.0;

Page 19: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Tracing an Tracing an ifif Statement Statement

StatementsStatements xx yy temptemp

12.512.5 5.05.0 ??

if (x > y) {if (x > y) {

temp = x;temp = x;

x = y;x = y;

y = temp;y = temp;

Page 20: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Nested Nested ifif Statements Statements

if (expression1)if (expression1)

statement1;statement1;

elseelse

if (expression2)if (expression2)

statement2;statement2;

elseelse

statement3;statement3;

Page 21: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

if (x > 0)if (x > 0)num_pos = num_pos + 1;num_pos = num_pos + 1;

elseelseif (x < 0)if (x < 0)

num_neg = num_neg + 1;num_neg = num_neg + 1;elseelse

num_zero = num_zero + 1;num_zero = num_zero + 1;

if (x > 0)if (x > 0)num_pos = num_pos + 1;num_pos = num_pos + 1;

if (x < 0)if (x < 0)num_neg = num_neg + 1;num_neg = num_neg + 1;

if (x == 0)if (x == 0)num_zero = num_zero + 1;num_zero = num_zero + 1;

Page 22: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Multiple Variables to TestMultiple Variables to Test

/* print a message if all criteria are met *//* print a message if all criteria are met */if (marital_status == ‘S’)if (marital_status == ‘S’) if (gender == ‘M’ )if (gender == ‘M’ ) if (age >= 18)if (age >= 18) if (age <= 26)if (age <= 26) printf(“ All criteria are met. \n”);printf(“ All criteria are met. \n”);

if (marital_status == ‘S’ && gender == ‘M’ && if (marital_status == ‘S’ && gender == ‘M’ && age >= 18 && age <= 26 )age >= 18 && age <= 26 )

printf(“ All criteria are met. \n”);printf(“ All criteria are met. \n”);

Page 23: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

if (road_status == ‘S’)if (road_status == ‘S’)if (temp > 0) {if (temp > 0) {

printf(“Wet roads ahead\n”);printf(“Wet roads ahead\n”);printf(“Stopping time doubled\n”);printf(“Stopping time doubled\n”);

} } else {else {

printf(“Icy roads ahead\n”);printf(“Icy roads ahead\n”);printf(“Stopping time quadrupled\n”);printf(“Stopping time quadrupled\n”);

}}elseelse

printf(“Drive carefully\n”);printf(“Drive carefully\n”);

Page 24: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Nested Nested ifif Statements Statements

May be nested to any depthMay be nested to any depth Each “statement” may be a compound

statement else matches closest unmatched if Braces may be used to change if-else matching

Page 25: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Example Example

What is the difference, if any?

if (expression1) if (expression2)

statement1;else

statement2;

if (expression1) if (expression2)

statement1; else

statement2;

Page 26: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

if (road_status == ‘D’)if (road_status == ‘D’)printf(“Drive carefully\n”);printf(“Drive carefully\n”);

elseelseif (temp > 0) {if (temp > 0) {

printf(“Wet roads ahead\n”);printf(“Wet roads ahead\n”);printf(“Stopping time doubled\n”);printf(“Stopping time doubled\n”);

} } else {else {

printf(“Icy roads ahead\n”);printf(“Icy roads ahead\n”);printf(“Stopping time quadrupled\n”);printf(“Stopping time quadrupled\n”);

}}

Page 27: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Multiple-Alternative DecisionMultiple-Alternative Decision

if (expression_1)if (expression_1)statement_1;statement_1;

else if (expression_2)else if (expression_2)statement_2;statement_2;

…………else if (expression_n)else if (expression_n)

statement_n;statement_n;elseelse

statement_e;statement_e;

Page 28: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

ExampleExample

if (marks >= 75)if (marks >= 75) printf (“Distinction\n”) ;printf (“Distinction\n”) ;else if (marks >= 60)else if (marks >= 60) printf (“Pass\n”) ;printf (“Pass\n”) ;else if (marks >= 50)else if (marks >= 50) printf (“Average\n”) ;printf (“Average\n”) ;elseelse printf (“Fail\n”) ;printf (“Fail\n”) ;

if (marks >= 50)if (marks >= 50) printf (“Average\n”) ;printf (“Average\n”) ;else if (marks >= 60)else if (marks >= 60) printf (“Pass\n”) ;printf (“Pass\n”) ; else if (marks >= 75)else if (marks >= 75) printf (“Distinction\n”) ;printf (“Distinction\n”) ;elseelse printf (“Fail\n”) ;printf (“Fail\n”) ;

Order of the conditions will affect the outcome as well as efficiency.

Page 29: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Decision TableDecision Table

Salary Range ($)Salary Range ($) Base Tax ($)Base Tax ($) Percentage of Percentage of ExcessExcess

0.00- 14,999.990.00- 14,999.99 0.000.00 1515

15,000.00- 29,999.9915,000.00- 29,999.99 2,250.002,250.00 1818

30,000.00- 49,999.9930,000.00- 49,999.99 5,400.005,400.00 2222

50,000.00- 79,999.9950,000.00- 79,999.99 11,000.0011,000.00 2727

80,000.00- 150,000.0080,000.00- 150,000.00 21,600.0021,600.00 3333

Page 30: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.
Page 31: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Case Study: Computing Compass Case Study: Computing Compass BearingsBearings

Problem: Write a program that automates the Problem: Write a program that automates the table you use to transform compass headings table you use to transform compass headings in degrees (0 to 360 degrees) to compass in degrees (0 to 360 degrees) to compass bearings. The program should require entry of bearings. The program should require entry of a compass heading, such as 110 degrees, and a compass heading, such as 110 degrees, and should display the corresponding bearing (e.g. should display the corresponding bearing (e.g. south 70 degrees east).south 70 degrees east).

Page 32: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

AnalysisAnalysis Input: double heading; /* in degree */Input: double heading; /* in degree */ Output: equivalent bearing message (direction you Output: equivalent bearing message (direction you

face, an angle between 0-90, direction to turn)face, an angle between 0-90, direction to turn)

Heading in DegreesHeading in Degrees Bearing ComputationBearing Computation

0 – 89.999……0 – 89.999…… north (heading) eastnorth (heading) east

90 – 179.999……90 – 179.999…… south (180.0 – heading) eastsouth (180.0 – heading) east

180 – 269.999……180 – 269.999…… south (heading – 180.0) westsouth (heading – 180.0) west

270 – 360270 – 360 north (360.0 – heading) westnorth (360.0 – heading) west

Page 33: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Case StudyCase Study

DesignDesign Initial Algorithm:Initial Algorithm: 1. Display instructions1. Display instructions 2. Get the compass heading2. Get the compass heading 3. Display the equivalent compass bearing3. Display the equivalent compass bearing Algorithm Refinement on Step 3Algorithm Refinement on Step 3 multiple alternative multiple alternative ifif statements statements

catch the value out of range (0, 360), show the catch the value out of range (0, 360), show the error messageerror message

Page 34: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

The The switchswitch Statement Statementswitch ( integer or char expression ){

case const1:statements 1break;

case const2:statements 2;break;

……default:

statements d;break;

}

Page 35: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

switchswitch

Selection is based on one variable or Selection is based on one variable or expressionexpression

MUST have MUST have INTEGER or CHARINTEGER or CHAR condition condition for branchingfor branching

Like a special instance of if else-if else ...Like a special instance of if else-if else ... Evaluates expression then compares it to Evaluates expression then compares it to

CONSTANT VALUES in each caseCONSTANT VALUES in each case

Page 36: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

switchswitch

There can be as many “case” values as neededThere can be as many “case” values as needed There can be as many “statements” as needed

following the ‘:’ (no brace needed) There can be as few “statements” as needed There can be as few “statements” as needed

following the ‘:’following the ‘:’ The default statement is optional

Page 37: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Flowchart of Flowchart of switchswitch Statement Statement

?

1 2 3 default

Page 38: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

switch (class) { case 'B': case 'b': printf("Battleship\n");

break; case 'C': case 'c': printf("Cruiser\n");

break; case 'F': case 'f': printf("Frigate\n");

break; default: printf("Unknown ship class %c\n", class); }

Page 39: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

/* determine average life expectancy of a standard light bulb */ switch (watts) { case 25: life = 2500;

break; case 40: case 60: life = 1000;

break; case 75: case 100: life = 750;

break; default: life =0; }

Page 40: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Common Programming ErrorsCommon Programming Errors

Cannot use a < x < b to represent a range comparison, Cannot use a < x < b to represent a range comparison, instead, we should use x > a && x < binstead, we should use x > a && x < be.g. if (0 <= x <= 4)e.g. if (0 <= x <= 4)

printf(“Condition is true\n”);printf(“Condition is true\n”);

When x = 5, what is the result?When x = 5, what is the result? Equality operator is == instead of =Equality operator is == instead of =

e.g. int age = 30;e.g. int age = 30;

if (age = 40)if (age = 40)

printf(“Happy Birthday”);printf(“Happy Birthday”);

Always prints Happy Birthday!!!!

Page 41: CPS 125: Digital Computation and Programming Selection Structures: if and switch Statements.

Common Programming ErrorsCommon Programming Errors

if if ((conditioncondition) {) {

…………

}} Use braces to change the if-else orderUse braces to change the if-else order Always try to use multiple alternative format Always try to use multiple alternative format

when writing a nested when writing a nested ifif statement statement elseelse match with closest unmatched match with closest unmatched ifif switchswitch statement format statement format