46
Selection Structures (if & switch statements) (CS1123)

Selection Structures (if & switch statements) (CS1123)

Embed Size (px)

Citation preview

Page 1: Selection Structures (if & switch statements) (CS1123)

Selection Structures (if & switch statements)

(CS1123)

Page 2: Selection Structures (if & switch statements) (CS1123)

Selection Structures

Condition

Do Step A Do Step B

True False

Page 3: Selection Structures (if & switch statements) (CS1123)

• In C++, there are three types of selection statements:

• one-way • two-way • multi-way

Page 4: Selection Structures (if & switch statements) (CS1123)

One-Way Decisions

• One-way decisions either do some particular thing or do nothing at all. The decision is based on a logical expression which either evaluates to true or false, a value of 1 or a value of 0, respectively.

• Recall that a logical expression always evaluate to a value of true or false; in C++, a nonzero value is always true, and a value of zero is always false.

• If the logical expression is evaluated to true, then the corresponding statement is executed; if the logical expression evaluates to false, control goes to the next executable statement.

Page 5: Selection Structures (if & switch statements) (CS1123)

If statement (One Way)

- Syntax of if with single-statement body

Page 6: Selection Structures (if & switch statements) (CS1123)

If statement (One Way)- Syntax of if with multiple-statements body

Page 7: Selection Structures (if & switch statements) (CS1123)

Examples…. (if, one-way)• Examples….

• Write a program to calculate tax collection according to the following formula:

– 5% Tax, if salary is above 50000

– 3% Tax , if salary is between 30000 and 50000

– 2% Tax, is salary is between less than 30000

In the end the program should print the calculated tax.

Page 8: Selection Structures (if & switch statements) (CS1123)

Two way decisions

• Two-way decisions either do one particular thing or do another. Similar to one-way decisions, the decision is based on a logical expression.

Page 9: Selection Structures (if & switch statements) (CS1123)

If statement (Two-Way)

- Syntax of if with single-statement body

Executed when condition is true

Executed when condition is false

Page 10: Selection Structures (if & switch statements) (CS1123)

If statement (Two-Way)- Syntax of if with single-statement body

Executed when condition is true

Executed when condition is false

Page 11: Selection Structures (if & switch statements) (CS1123)

• Example 1:• int c = 10;• • if (c >= 0)• {• cout << "c is a positive or neutral integer" << endl;• }• else• {• cout << "c is a negative integer" << endl;• }

Page 12: Selection Structures (if & switch statements) (CS1123)

• Example 2:• int num = 100;• • if (num % 2 == 0)• {• cout << "num is an even integer" << endl;• }• else• {• cout << "num is an odd integer" << endl;• }• Practical

Page 13: Selection Structures (if & switch statements) (CS1123)

Examples…. (if, Two-way)

Write a program that squares a number (entered by user), if it is between 10 and 100. For all other numbers, an Error message is shown and program terminates.

Page 14: Selection Structures (if & switch statements) (CS1123)

Examples…. (if, Two-way)2. Write a payroll program using following rules: – Hourly rate: 100 (rupees)

– If an employee works 40 hours or fewer, he is paid regular pay (hourly rate * number of hours worked).

– If employees work more than 40 hours, then he WILL receive two times his hourly rate for those hours over 40, in addition to his regular pay for the first 40.

Page 15: Selection Structures (if & switch statements) (CS1123)

• if (weeklyHours <= 40)• {• earnings = hourlyRate * weeklyHours;• }• else• {• offHours = weeklyHours - 40;• regpay = 40 * hourlyRate;• earnings = regpay + offHours * hourlyRate * 2;• }

Page 16: Selection Structures (if & switch statements) (CS1123)

Multi-Way Decisions

• Multi-way decisions are used to evaluate a logical expression that could have several possible values.• “if / else if” statements are often used to choose between ranges of values

• if ( logical expression )• {• stmtT1;• }• else if ( logical expression )• {• stmtT2;• }• else if ( logical expression )• {• stmtT3;• }• else if ( logical expression )• {• stmtTN;• }• else

Page 17: Selection Structures (if & switch statements) (CS1123)

\01 else if statement

Page 18: Selection Structures (if & switch statements) (CS1123)

The form of a multi-way decision using “nested if” :

• Purpose: To test more than one factors before we write our executable code

• By nesting if structures, we write ONE COMPLETE if structure inside a SINGLE BRANCH of a parent if structure

Page 19: Selection Structures (if & switch statements) (CS1123)

Nested “if...else” Statementsif (marks>90){

cout<<“\nYou got A grade”; if(nAvailable_scholorships>0) {

cout<<“\nYou got scholorship too”; tution_fee_due = 0;

}}else{

if (marks>=50) cout<<“\nYou passed the course”;

else cout<<“\nYou failed the course”;

}

Page 20: Selection Structures (if & switch statements) (CS1123)
Page 21: Selection Structures (if & switch statements) (CS1123)

Matching the else

Page 22: Selection Structures (if & switch statements) (CS1123)

Matching the “else”#include <iostream>using namespace std;int main(){

int a, b, c;cout<<“Enter three numbers, a, b, and c:\n”;cin >> a >> b >> c;if( a==b )

if( b==c ) cout << “a, b, and c are the same\

n”;else

cout << “a and b are different\n”;

return 0;}

else cout << “b and c are different\n”;

if( a==b ){

if( b==c ) cout << “a, b, and c are the same\n”;

}else

cout<< “a and b are different\n”;

Page 23: Selection Structures (if & switch statements) (CS1123)

The else...if Construction if (marks>80) {

cout<<“\n You got A grade”;cout<<“\n You won scholarship too”;

} else if (marks>70) cout<<“\n You got B grade”; else if (marks>60)

cout<<“\n You got C grade”; else if (marks>50)

cout<<“\n You got D grade”; else

cout<<“\n You are fail”;

Page 24: Selection Structures (if & switch statements) (CS1123)

The Conditional Operator

• This operator consists of two symbols, which operate on three operands.

• Is same as we write:

Page 25: Selection Structures (if & switch statements) (CS1123)

The Conditional Operator

• The part of this statement to the right of the equal sign is called the conditional expression:

• The question mark and the colon make up the conditional operator. The expression before the question mark

is the test expression.

Page 26: Selection Structures (if & switch statements) (CS1123)

The Conditional Operator

• If the test expression is true, the entire conditional expression takes on the value of the operand following the question mark: alpha in this example.

• If the test expression is false, the conditional expression takes on the value of the operand following the colon: beta.

Page 27: Selection Structures (if & switch statements) (CS1123)

Conditional Operator (Ternary operator)if (x > 0) y = 1;else y = -1;

is equivalent to

y = (x > 0) ? 1 : -1;

Syntax: result = (condition) ? Expression1 : Expression2;

Page 28: Selection Structures (if & switch statements) (CS1123)

Conditional Operator, examples

cout << ((num % 2 == 0) ? "num is even" : "num is odd");

int min_value = (num1<num2) ? num1 : num2;

unsigned int absvalue = (n< 0) ? -n : n;

Page 29: Selection Structures (if & switch statements) (CS1123)

switch statement• Provides a series of alternatives (selections) based

on the value of a SINGLE variable

• Replaces a series of chained if-else statements

• Makes code easier to read

Page 30: Selection Structures (if & switch statements) (CS1123)

Switch - Syntaxswitch (Variable) {

case <value_1> : statement1; statement2; statement3; break;

case <value_2> : statement1; statement2; break;

case <value_3> : statement1; break;

default: statement1; statement2;}

Optional

Page 31: Selection Structures (if & switch statements) (CS1123)

switch statement (without break)

switch (ch) { case 'a': cout <<“ ch contains a”; case 'b': cout <<“ ch contains b”; case 'c': cout <<“ ch contains c”;}

Suppose ch is 'a’

Page 32: Selection Structures (if & switch statements) (CS1123)

switch statement (with break)

switch (ch) { case 'a': cout <<“ ch contains a”; break; case 'b': cout <<“ ch contains b”; break; case 'c': cout <<“ ch contains c”; break;} cout<<“\n End of program…”;

Suppose ch is ‘b’

Page 33: Selection Structures (if & switch statements) (CS1123)

Switch – Example-1char grade;cin>>grade;

switch (grade) {

case ‘A’: tution_fees *= 0.20; break;

case ‘B’: tution_fees *= 0.40; break;

case ‘C’: tution_fees *= 0.60; break;

default: tution_fees *= 1;}

Page 34: Selection Structures (if & switch statements) (CS1123)

Switch – Example-3 int a, b; char key;

cout<<“\nEnter numbers: “; cin>>a>>b;cout<<“Enter an arithmetic operator”; cin>> key; switch (key) {

case ‘+’ : cout<<(a+b); break; case ‘-’ : cout<<(a-b); break; case ‘*’ : cout<<(a*b); break; case ‘/’ : cout<<(a/b); break; default: cout<<“Error: Invalid key…";

}

Page 35: Selection Structures (if & switch statements) (CS1123)

Logical Operators

• These operators allow you to logically combine Boolean variables (that is, variables of type bool, with true or false values).

• For example, If today is Sunday and its not raining then I will play cricket.

• The logical connection here is the word and, which provides a true or false value to the combination of the two phrases.

• Only if they are both true then I will play cricket.

Page 36: Selection Structures (if & switch statements) (CS1123)

Logical Operators

Page 37: Selection Structures (if & switch statements) (CS1123)

Example

Page 38: Selection Structures (if & switch statements) (CS1123)

If input is ‘n’ then ??If input is ‘Y’ then ??If input is ‘N’ then ??

Example

Page 39: Selection Structures (if & switch statements) (CS1123)

Operator Precedence

Page 40: Selection Structures (if & switch statements) (CS1123)

Operator Precedence

Page 41: Selection Structures (if & switch statements) (CS1123)

Class Exercise-1

What will be the output of the following code?

int marks = 60;

switch(marks){ case 50 : cout<<”Passed”; case 60 : cout<<”Got C”; case 70 : cout<<”Got B”; case 80 : cout<<”Got A”;}

Page 42: Selection Structures (if & switch statements) (CS1123)

Class Exercise-2

What will be the output of the following code?

int n = -29;int temp = (n<0)?-n:n;cout<<temp;

Page 43: Selection Structures (if & switch statements) (CS1123)

Class Exercise-3

What will be the output of the following code?

int x=21, y=31, z=44;

if( ( x>16) && (y>x) || (z%2==0) ) cout<<“Hello“;else cout<<“World!“;

Page 44: Selection Structures (if & switch statements) (CS1123)

Class Exercise-4

What will be the output of the following code?

int x = 5, y = 30;

if(y/x > 2) if(y % x !=2) x = x + 2; cout<<x<<”\n“<<y;

Page 45: Selection Structures (if & switch statements) (CS1123)

homework

Write a program that ask the user to enter a number in the range of 1—10.

Use a switch statement and display corresponding Roman Number against each entered decimal value. E.g.,

1 I 2 II 3 III4 IV

Page 46: Selection Structures (if & switch statements) (CS1123)

homework Write a program that ask to input value in seconds. Then the program converts the number of seconds into days, hours, minutes, and seconds value. In the end, the program shows the output in the following format:

Days:2 Hours:13 Minuts:32 Seconds:11