CS 201 Lecture No 5

Lecture Handout
Introduction to programming
Lecture No. 5
Deitel & Deitel – C++ How to Program    chapter 2
2.4, 2.5, 2.6, 2.19,
2.20
Summary
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