Lecture
Handout
Introduction
to programming
Lecture
No. 5
Reading Material
Deitel
& Deitel – C++ How to Program chapter
2
2.4,
2.5, 2.6, 2.19,
2.20
o Conditional Statements
o if/else
structure
o Logical Operators
Sample Program 2
o Tips
Conditional
Statements (Decision Making)
In
every day life, we are often making decisions. We perform different tasks while
taking
decisions.
For example, the statement ‘if the milk shop is open, bring one liter of milk
while
returning home from college’, involves this phenomenon.
In
this statement, there is an element of decision making. We bring one litre of
milk if the
shop
is open. And if the shop is closed, we come back to home without milk.
Thus
we are making a decision on the condition that the shop is open. The decision-
making
process is everywhere in our daily life. We see that the college gives
admission to
a
student if he has the required percentage in his previous examination and/or in
the entry
test.
Similarly administration of a basketball team of the college decides that the
students
having
height more than six feet can be members of the team.
In
the previous lectures, we have written simple elementary programs. For writing
interesting
and useful programs, we have to introduce the decision making power in
them.
Now we will see what kind of decisions are there in programming and how these
can
be used.
Every
programming language provides a structure for decision making.
'C'
also provides this structure. The statement used for decisions in 'C' language
is known
as
the 'if statement'. The if
statement
has a simple structure. That is
if ( condition )
Statement (or group of
statements)
The
above statements mean, If condition is true, then execute the statement or a
group of
statements.
Here the condition is a statement which explains the condition on which a
decision
will be made. We can understand it from the example that Ali can become the
member
of the basket ball team if he has a height more than six feet .In this case,
the
condition
will be
if (Ali’s height is greater than six feet)
Ali can be a member of team
We
have written the condition in English language. Now let's see how we can
implement
this
in terms of variables, operators and C statements. In the program, we will
write the
condition
in parentheses, followed by a statement or group of statements to be
executed.
Now
here is the concept of block of statements. We use braces { } to make a group
(block)
of a number of statements. We put ‘{’ before first statement and ‘}’ after the
last
statement.
Thus if we have to do many things after the if statement.
The structure of if
statement
becomes as under
if (condition)
{
statement;
statement;
.
.
statement;
}
Note
the indentation of the lines and semi-colon after each statement. Semi-colons
are
necessary
after every C statement. The indentation is only a matter of style. It makes
the
code
easy to read and understand from where a block starts, ends and what kind of
block
it
is. It does not affect the logic of the program. But the braces can affect the
logic. We
can
also write a comment line to state the purpose of code block.
Let's
consider a simple example to explain the if statement.
Suppose, we have ages of two
students
(say for the time being we have got these ages in variables). These variables
are-
age1
and age2. Now we say that if the age1 is greater than age2, then display the
statement
‘Student 1 is older than student 2’.
The
coding for this program will be as below
#include
<iostream.h>
main()
{
int
age1, age2;
age1 = 12;
age2 = 10;
if (age1 > age2)
cout << “Student 1 is older than
student 2”;
}
Here,
in our code we see a new operator i.e. ‘ > ‘ (greater than) in the if
statement.
We
need
such operators (like greater than, less than, equal to etc) while making
decisions.
These
operators are called 'relational operators'. These are almost the same
relational
operators
we use in algebra. Following table summarizes the relational operators.
Algebraic In
C Example Meaning
language
Greater than >
> x
> y x is greater than y
Equal to =
== x
== y x is equal to y
Less than <
< x
< y x is less than y
Greater
than or > >=
x
>= y x
is greater than or
equal to equal
to y
Less
than or < <=
x
<= y x
is less than or equal
equal to to
y
Not
equal to ≠ !=
x
!= y x
is not equal to y
Note
that there is no space between ==, >=, <= and !=.
These
are considered as single operators.
The
operator == (equal to) is different from the operator =. We know that operator
= is
the
assignment operator which is used in assignment statement to assign a value to
a
variable.
Don't
confuse the assignment operator (=) with equal to operator (==). If we write
single
=
in condition of if statement. For example, if we write
if
( x =
2 ), the compiler will not
give
error. This means that it is not a syntax error. The conditional expression in if
statement
returns a value. In this case, x = 2 will also have some value but it will not
in
the
form of true or false. So it will create a logical error. So be careful while
using equal
to
condition in if statement.
Flow Charting
There
are different techniques that are used to analyze and design a program. We will
use
the
flow chart technique. A flow chart is a pictorial representation of a program.
There
are
labeled geometrical symbols, together with the arrows connecting one symbol
with
other.
A
flow chart helps in correctly designing the program by visually showing the
sequence
of
instructions to be executed. A programmer can trace and rectify the logical
errors by
first
drawing a flow chart and then simulating it.
Sample Program 1
Now
let’s see the usage of relational operators by an example. There are two
students
Amer
and Amara. We take their ages from the user, compare them and tell who is
older?
As
there are two students to be compared in terms of age, we need to declare two
variables
to store their ages. We declare two variables AmerAge and AmaraAge of type
int.
The variable names are one continuous word as we can’t use spaces in a variable
name.
Here
is an important point about variables declaration. We should assign an initial
value
(preferably
0 for integers) to variables when we declare them. This is called
initialization
of
variables.
We
can do this in one line while declaring a variable like int
x = 0; This statement will
declare
a variable of name x with data type int and will assign a value 0 to this
variable.
Initializing
a variable in this way is just a matter of style. You can initialize a variable
on
a
separate line after declaring it. It is a good programming practice to
initialize a variable.
Now
we prompt the user to enter Amer’s age and store it into variable AmerAge. Then
similarly
we get Amara’s age from the user in the variable AmaraAge.
While
comparing the ages, we will use the if statement
to see whether Amer’s age is
greater
than Amara’s. We will use > (greater than) operator to compare the ages.
This can
be
written as if ( AmerAge > AmaraAge) .
With
this if statement, we write the statement
cout << "Amer is greater than Amara" ;
It’s
a simple one line test i.e. ‘if Amer’s age is greater than Amara's’, then
display the
message
‘Amer is older than Amara’.
The
flow chart for the above problem is as under.
The
complete code of the program is given below.
/*
This program test that if the age of Amer is greater
than
Amara’s age and displays the result. */
#
include <iostream.h>
main
( )
{
int
AmerAge, AmaraAge;
//prompt
the user to enter Amer’s age
cout
<< “Please enter Amer’s age “ ;
cin
>> AmerAge;
//prompt
the user to enter Amara’s age
cout
<< “Please enter Amara’s age “
;
cin
>> AmaraAge;
//perform
the test
if (AmerAge > AmaraAge )
cout
<< “ Amer is older than Amara”;
}
In
our program, we write a single statement with the if
condition.
This statement executes
if
the condition is true. If we want to execute more than one statements, then we
have to
enclose
all these statements in curly brackets { }. This comprises a block of
statements
which
will execute depending upon the condition. This block may contain a single
statement
just like in our problem. So we can write the if statement
as follow.
if (AmerAge > AmaraAge )
{
cout
<< " Amer is older than Amara";
}
A
sample execution of the program provides the following output.
Please
enter Amer’s age 16
Please
enter Amara’s age 14
Amer is older than Amara
Now
think what happens if the condition in the if statement
is not true i.e. Amer’s age is
not
greater than Amara’s. In this case, if the user enters Amer’s age less than
Amara’s,
then
our program does nothing. So to check this condition, another if
statement
after the
first
if
statement
is required. Then our program will be as:
/*
This program checks the age of Amer and
Amara’s and
displays
the appropriate the message. The program
is using
two
if statements.*/
#
include <iostream.h>
main
( )
{
int
AmerAge, AmaraAge;
//prompt
the user to enter Amer’s age
cout
<< “Please enter Amer’s age “ ;
cin
>> AmerAge;
//prompt
the user to enter Amara’s age
cout
<< “Please enter Amara’s age “
;
cin
>> AmaraAge;
//perform
the test
if
(AmerAge > AmaraAge )
{
cout
<< “ Amer is older than Amara”;
}
if
(AmerAge < AmaraAge )
{
cout
<< “ Amer is younger than Amara”;
}
}
Now
our program decides properly about the ages entered by the user.
After
getting ages from the user, the if statements
are tested and if statement will be
executed
if the condition evaluates to true.
If/else Structure
We
have seen that the if
structure executes its block of statement(s)
only when the
condition
is true, otherwise the statements are skipped. The if/else structure allows the
programmer
to specify that a different block of statement(s) is to be executed when the
condition
is false. The structure of if/else selection is as follows.
if ( condition)
{
statement(s);
}
else
{
statement(s);
}
Thus
using this structure we can write the construct of our program as
if (AmerAge > AmaraAge )
{
cout
<< " Amer is older than Amara";
}
else
{
cout
<< " Amer is younger than Amara";
}
In
this construct, the program checks the condition in if
statement
.If the condition is true,
then
the line "Amer is greater than Amara" is printed. Otherwise (if
condition is not true),
the
statement related to else is executed and the message
"Amer is younger than Amara"
is
printed. Here in if/else structure an important thing is that the else part is
executed for
all
the cases (conditions) other than the case which is stated in the if
condition.
And
in the comparison, we know that there are three conditions i.e. first value is
greater
than
the second value, first value is less than the second value and first value is
equal to
the
second value. Here in the above program construct the else part competes the
greater
than
conditions and covers both less than and equal to conditions.
Thus
in the above program construct, the message "Amer is younger than
Amara" is
displayed
even if Amer’s age is the same as Amara’s age. This is logically incorrect and
so
to make this correct, we should display the message "Amer is younger than
or is of the
same
age as Amara". Now this statement describes both the cases other than the
one
‘Amer
is greater than Amara'.
The
use of else saves us from writing different if statements
to compare different
conditions,
in this way it cover the range of checks to complete the comparison.
If
we want to state the condition "Amer is greater than or is of the same age
as Amara’s"
then
we use the greater than or equal to operator (i.e. >=) in the if
statement
and less than
operator
( < ) in the else statement to complete the comparison.
It
is very important to check all the conditions while making decisions for good,
complete
and
logical results. Make sure that all cases are covered and there is no such case
in
which
the program does not respond.
Logical Operators
There
are many occasions when we face complex conditions to make a decision. This
means
that a decision depends upon more than one condition in different ways. Here we
combine
the conditions with AND or OR. For example, a boy can be selected in basket
ball
team only if he is more than 18 years old and has a height of 6 feet. In this
statement
a
boy who wants to be selected in the basket ball team must have both the
conditions
fulfilled.
This means that AND forces both the conditions to be true. Similarly we say
that
a person can be admitted to the university if he has a BCS degree OR BSC
degree. In
this
statement, it is clear that a person will be admitted to the university if he
has any one
of
the two degrees.
In
programming we use logical operators ( && and || ) for AND and OR
respectively
with
relational operators. These are binary operators and take two operands. These
operators
use logical expressions as operands, which return TRUE or FALSE.
The
following table (called truth table) can be used to get the result of the
&& operator
and
|| operator with possible values of their operands. It is used to explain the
result
obtained
by the && and || operators.
Expression 1 Expression
2 Expression 1 && Expression
1 ||
Expression 2 Expression 2
True False
false True
True True
true True
False False
false False
False True
false True
The
&& operator has a higher precedence than the || operator. Both
operators associate
from
left to right. An expressions containing && or || is evaluated only
until truth or
falsehood
is known. Thus evaluation of the expression (age
> 18) && (height > 6)
will
stop
immediately if age > 18 is
false (i.e. the entire expression is false) and continue if
age > 18 is true (i.e. the entire expression could still be true if the
condition height > 6 is
true
).
There
is another logical operator that is called logical negation. The sign ! is used
for this
operator.
This operand enables a programmer to ‘reverse’ the meaning of a condition.
This
is a unary operator that has only a single condition as an operand. The
operator ! is
placed
before a condition. If the original condition (without the ! operator) is false then
the
! operator before it converts it to true and
the statements attached to this are executed.
Look
at the following expression
if
( ! (age > 18 ))
cout << “ The age is less than 18”;
Here
the cout statement will be executed if the
original condition (age > 18) is false
because
the ! operator before it reverses this false to true.
The
truth table for the logical negation operator ( ! ) is given below.
Expression ! Expression
True
False
False True
Sample Program 2
Problem statement
A
shopkeeper announces a package for customers that he will give 10 % discount on
all
bills
and if a bill amount is greater than 5000 then a discount of 15 %. Write a C
program
which
takes amount of the bill from user and calculates the payable amount by
applying
the
above discount criteria and display it on the screen.
Solution
In
this problem we are going to make decision on the basis of the bill amount, so
we will
be
using if
statement. We declare three variables amount, discount and netPayable and
initialize
them. Next we prompt the user to enter the amount of the bill. After this we
implement
the if
statement to test the amount entered by the user. As we see in the
problem
statement that if the amount is greater than 5000 then the discount rate is 15
%
otherwise
(i.e. the amount is less than or equal to 5000) the discount rate is 10 %. So
we
check
the amount in if statement. If
it is greater than 5000 then the condition is true then
the
if block is executed otherwise if amount is not greater than 5000 then the else
block is
executed.
The
analysis and the flow of the program is shown by the following flow chart.
The
complete program code is given below :
/*
This program calculates the discount amount for a customer. As different
discount
percentage
applies on different amount so program is using if statement for deciding
which
discount is applicable and display the result. */
#
include <iostream.h>
main
( )
{
double
amount, discount, netPayable ;
amount
= 0 ;
netPayable
= 0 ;
discount
= 0 ;
//
prompt the user to enter the bill amount
cout
<< "Please enter the amount of the bill " ;
cin
>> amount ;
//test
the conditions and calculate net payable
if
( amount > 5000 )
{
//calculate amount at 15 % discount
discount = amount * (15.0 / 100);
netPayable = amount - discount;
cout << "The discount at the
rate 15 % is Rupees " <<
discount << endl;
cout << "The payable amount
is Rupees " << netPayable
;
}
else
{
// calculate amount at 10 % discount
discount = amount * (10.0 /
100);
netPayable = amount -
discount;
cout << "The
discount at the rate 10 % is Rupees
" << discount << endl ;
cout << "The payable amount is
Rupees " << netPayable
;
}
}
In
the program we declared the variables as double. We
do this to get the correct results
(results
may be in decimal points) of the calculations. Look at the statement which
calculates
the discount. The statement is
discount
= amount * (15.0 / 100) ;
Here
in the above statement we write 15.0 instead
of 15. If we write here 15
then the
division
15
/ 100 will be evaluated as integer division and the result of division
(0.15)
will
be truncated and we get 0 and this will result the whole calculation to zero.
So it is
necessary
to write at least one operand in decimal form to get the correct result by
division
and we should also declare the variables as float or double. We
do the same in
the
line discount = amount * (10.0 / 100);
A
sample execution of the program is given below
Please
enter the amount of the bill 6500
The
discount at the rate 15 % is Rupees
975
The payable amount is Rupees
5525
Tips
• Always put the braces in an if/else
structure
• Type the beginning and ending braces before
typing inside them
• Indent both body statements of an if and else
structure
• Be careful while combining the conditions with
logical operators
• Use if/else
structure instead of a number of single selection if statements
Post a Comment
Don't Forget To Join My FB Group VU Vicky
THANK YOU :)