View File

advertisement
Selection Structures
(if & switch statements)
(CS1123)
Selection Structures
True
Do Step A
Condition
False
Do Step B
• In C++, there are three types of selection
statements:
• one-way
• two-way
• multi-way
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.
If statement (One Way)
- Syntax of if with single-statement body
If statement (One Way)
- Syntax of if with multiple-statements body
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.
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.
If statement (Two-Way)
- Syntax of if with single-statement body
Executed when
condition is true
Executed when
condition is false
If statement (Two-Way)
- Syntax of if with single-statement body
Executed when
condition is true
Executed when
condition is false
•
•
•
•
•
•
•
•
•
•
•
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;
}
•
•
•
•
•
•
•
•
•
•
•
•
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
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.
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.
•
•
•
•
•
•
•
•
•
•
if (weeklyHours <= 40)
{
earnings = hourlyRate * weeklyHours;
}
else
{
offHours = weeklyHours - 40;
regpay = 40 * hourlyRate;
earnings = regpay + offHours * hourlyRate * 2;
}
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
\01
else if statement
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
Nested “if...else” Statements
if (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”;
}
Matching the else
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
a==b ))
{
if( b==c )
if( b==c )
cout <<
<< “a,
“a,b,b,and
and
c are
same\n”;
cout
c are
thethe
same\n”;
}
else
else
else coutcout
<< and
“b and
c are
different\n”;
<< “a
b are
different\n”;
cout<< “a and b are different\n”;
return 0;
}
The else...if Construction
if (marks>80)
{
cout<<“\n You
cout<<“\n You
}
else if (marks>70)
cout<<“\n You
else if (marks>60)
cout<<“\n You
else if (marks>50)
cout<<“\n You
else
cout<<“\n You
got A grade”;
won scholarship too”;
got B grade”;
got C grade”;
got D grade”;
are fail”;
The Conditional Operator
• This operator consists of two symbols, which
operate on three operands.
• Is same as we write:
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.
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.
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;
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;
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
Switch - Syntax
switch (Variable)
{
case <value_1> :
statement1;
statement2;
statement3;
break;
case <value_2> :
statement1;
statement2;
break;
case <value_3> :
statement1;
break;
default:
}
statement1;
statement2;
Optional
switch statement (without break)
Suppose ch is 'a’
switch (ch) {
case 'a': cout <<“ ch contains a”;
case 'b': cout <<“ ch contains b”;
case 'c': cout <<“ ch contains c”;
}
switch statement (with break)
Suppose ch is ‘b’
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…”;
Switch – Example-1
char 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;
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…";
}
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.
Logical Operators
Example
Example
If input is ‘n’ then ??
If input is ‘Y’ then ??
If input is ‘N’ then ??
Operator Precedence
Operator Precedence
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”;
}
Class Exercise-2
 What will be the output of the following code?
int n = -29;
int temp = (n<0)?-n:n;
cout<<temp;
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!“;
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;
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  III
4  IV
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
Download