Lecture
Handout
Introduction
to programming
Lecture
No. 3
Reading Material
Deitel
& Deitel – C++ How to Program chapter
1
1.19,
1.20, 1.21, 1.22
The
best way to learn C is to start coding right away. So here is our very first
program in
C.
#
include <iostream.h>
main()
{
cout << "Welcome to Virtual
University of Pakistan";
}
We
will look at this code line by line and try
to understand them.
# include <iostream.h>
#include: This is a pre-processor directive. It is not part of our program; it
is an
instruction
to the compiler. It tells the C compiler to include the
contents of a file, in this
case
the system file iostream.h. The compiler knows that it is a
system file, and therefore
looks
for it in a special place. The features
of preprocessor will be discussed later. For
the
time being take this line on faith. You have to write this line. The sign # is
known as
HASH
and also called SHARP.
<iostream.h>
This
is the name of the library definition file for all Input Output Streams. Your
program
will
almost certainly want to send stuff to the screen and read things from the
keyboard.
iostream.h is
the name of the file in which has code to do that work for you
main()
The
name main is special, in that the main is
actually the one which is run when your
program
is used. A C program is made up of a large number of functions. Each of these
is
given
a name by the programmer and they refer to each other as the program runs. C
regards
the name "main" as a special case and will
run this function first. If you forget to
have
a main function, or mistype the name, the compiler will give you an error.
Notice
that there are parentheses (“( )”, normal brackets) with main. Here
the parentheses
contain
nothing. There may be something written inside the parentheses. It will be
discussed
in next lectures.
{ }
Next,
there is a curly bracket also called braces("{
}").
For every open brace there must be
a
matching close. Braces allows to group together pieces of a program. The body
of main
is
enclosed in braces. Braces are very important in C; they enclose the blocks of
the
program.
cout << “ Welcome to Virtual University of Pakistan”
cout:
This
is known as out put stream in C and C++. Stream is a complicated thing, you
will
learn
about it later. Think a stream as a door. The data is transferred through
stream, cout
takes
data from computer and sends it to the output. For the moment it is a screen of
the
monitor.
hence we use cout for output.
<<
The
sign << indicates the direction of data.
Here it is towards cout and the function of
cout is to show data on the screen.
“ Welcome to Virtual University of Pakistan”
The
thing between the double quotes (“ ”) is known as character string. In C
programming
character strings are written in double quotes. Whatever is written after
<<
and
within quotation marks will be direct it to cout,
cout will display it on the screen.
;
There
is a semicolon (;) at the end of the above
statement. This is very important. All C
statements
end with semicolon (;). Missing of a semicolon (;) at
the end of statement is a
syntax
error and compiler will report an error during compilation. If there is only a
semicolon
(;) on
a line than it will be called a null statement. i.e. it does nothing. The
extra
semicolons may be put at the end but are useless and aimless. Do not put
semicolon
(;) at
a wrong place, it may cause a problem during the execution of the program or
may
cause
a logical error.
In
this program we give a fixed character string to cout and
the program prints it to the
screen
as:
Variables
During
programming we need to store data. This data is stored in variables. Variables
are
locations
in memory for storing data. The memory is divided into blocks. It can be
viewed
as pigeon-holes. You can also think of it as PO Boxes. In post offices there
are
different
boxes and each has an address. Similarly in memory, there is a numerical
address
for each location of memory (block). It is difficult for us to handle these
numerical
addresses in our programs. So we give a name to these locations. These names
are
variables. We call them variables because they can contain different values at
different
times.
The
variable names in C may be started with a character or an underscore ( _ ). But
avoid
starting
a name with underscore ( _ ). C has many libraries which contain variables and
function
names normally starting with underscore ( _ ). So your variable name starting
with
underscore ( _ ) may conflict with these variables or function names.
In
a program every variable has
o Name
o Size
o Value
The
variables having a name, type and size (type and size will be discussed later)
are just
empty
boxes. They are useless until we put some value in them. To put some value in
these
boxes is known as assigning values to variables. In C language, we use
assignment
operator
for this purpose.
Assignment
Operator
In
C language equal-to-sign (=) is used as assignment operator. Do
not confuse the
algebraic
equal-to with the assignment operator. In Algebra X = 2 means the value of X
is
2, whereas in C language X = 2 (where X is a variable name) means take the
value 2
and
put it in the memory location labeled as X, afterwards you can assign some
other
value
to X, for example you can write X = 10, that means now the memory location X
contains
the value 10 and the previous value 2 is no more there.
Assignment
operator is a binary operator (a binary operator has two operands). It must
have
variable on left hand side and expression (that evaluates to a single value) on
right
hand
side. This operator takes the value on right hand side and stores it to the
location
labeled
as the variable on left hand side, e.g. X = 5,
X = 10 + 5, and X = X +1.
In
C language the statement X = X + 1 means that add 1 to the value of X and then
store
the
result in X variable. If the value of X is 10 then after the execution of this
statement
the
value of X becomes 11. This is a common practice for incrementing the value of
the
variable
by ‘one in C language. Similarly you can use the statement X = X - 1 for
decrementing
the value of the variable by one. The statement X = X + 1 in algebra is not
valid
except when X is infinity. So do not confuse assignment operator (=) with equal
sign
(=) in algebra. Remember that assignment operator must have a variable name on
left
hand side unlike algebra in which you can use expression on both sides of equal
sign
(=).
For example, in algebra, X +5 = Y + 7 is correct but incorrect in C language.
The
compiler
will not understand it and will give error.
Data
Types
A
variable must have a data type associated with it, for example it can have data
types
like
integer, decimal numbers, characters etc.
The variable of type Integer stores integer
values
and a character type variable stores character value. The primary difference
between
various data types is their size in memory. Different data types have different
size
in memory depending on the machine and compilers. These also affect the way
they
are
displayed. The ‘cout’ knows how to display a digit and
a character. There are few
data
types in C language. These data types are reserved words of C language. The
reserve
words
can not be used as a variable name.
Let’s
take a look into different data types that the C language provides us to deal
with
whole
numbers, real numbers and character data.
Whole Numbers
The
C language provides three data types to handle whole numbers.
o int
o short
o long
int Data Type
The
data type int is used to store whole numbers (integers). The integer type has a
space
of
4 bytes (32 bits for windows operating system) in memory. And it is mentioned
as
‘int’
which is a reserved word of C, so we can not use it as a variable name.
In
programming before using any variable name we have to declare that variable
with its
data
type. If we are using an integer variable named as ‘i’, we
have to declare it as
int i ;
The
above line is known as declaration statement. When we declare a variable in
this
way,
it reserves some space in memory depending on the size of data type and labels
it
with
the variable name. The declaration statement int i
;
reserves 4 bytes of memory and
labels
it as ‘i’. This happens at the execution
time.
Sample Program 1
Let’s
consider a simple example to explain int data type. In this example we take two
integers,
add them and display the answer on the screen.
The
code of the program is written below.
#include
<iostream.h>
main()
{
int
x;
int y;
int z;
x
= 5;
y
= 10;
z
= x + y;
cout
<< “x = “;
cout
<< x;
cout
<< “ y=“;
cout
<< y;
cout << “ z = x + y = “;
cout
<< z;
}
The
first three lines declare three variables x, y and z as following.
int x;
int y;
int z;
These
three declarations can also be written on one line. C provides us the comma
separator
(,). The above three lines can be written in a single line as below
int x, y, z;
As
we know that semicolon (;) indicates the end of the statement. So we can write
many
statements
on a single line. In this way we can also write the above declarations in the
following
form
int x; int y; int z;
For
good programming practice, write a single statement on a single line.
Now
we assign values to variables x and y by using assignment operator. The lines x
= 5;
and
y = 10 assign the values 5 and 10 to the variables x and y, respectively. These
statements
put the values 5 and 10 to the memory locations labeled as x and y.
The
next statement z = x + y; evaluates the expression on right hand side. It takes
values
stored
in variables x and y (which are 5 and 10 respectively), adds them and by using
the
assignment
operator (=), puts the value of the result, which is 15 in this case, to the
memory
location labeled as z.
Here
a thing to be noted is that the values of x and y remains the same after this
operation.
In arithmetic operations the values of variables used in expression on the
right
hand
side are not affected. They remain the same. But a statement like x = x + 1; is
an
exceptional
case. In this case the value of x is changed.
The
next line cout << “ x = “ ; is simple it just displays ‘ x = ‘ on the
screen.
Now
we want to display the value of x after ‘x =’. For this we write the
statement
cout
<< x ;
Here
comes the affect of data type on cout. The
previous statement cout << “x = “ ; has a
character
string after << sign and cout
simply displays the string. In the statement cout
<<
x; there is a variable name x. Now cout will not display ‘x’ but the value of
x. The
cout
interprets that x is a variable of integer type, it goes to the location x in
the memory
and
takes its value and displays it in integer form, on the screen. The next line
cout << ”y
=”;
displays ‘ y = ‘ on the screen. And line cout << y; displays the value of
y on the
screen.
Thus we see that when we write something in quotation marks it is displayed as
it
is
but when we use a variable name it displays the value of the variable not name
of the
variable.
The next two lines cout << “z = x + y = ”; and cout << z; are
written to display
‘z
= x + y = ’ and the value of z that is 15.
Now
when we execute the program after compiling, we get the following output.
x
= 5 y = 10 z = x + y = 15
short
Data type
We
noted that the integer occupies four bytes in memory. So if we have to store a
small
integer
like 5, 10 or 20 four bytes would be used. The C provides another data type for
storing
small whole numbers which is called short. The size of short is two bytes and
it
can
store numbers in range of -32768 to 32767. So if we are going to use a variable
for
which
we know that it will not increase from 32767, for example the age of different
people,
then we use the data type short for age. We can write the above sample program
by
using short instead of int.
/*This
program uses short data type to store values */
#include
<iostream.h>
main()
{
short
x;
short y;
short z;
x
= 5;
y
= 10;
z
= x + y;
cout
<< “x = “;
cout
<< x;
cout
<< “ y=“;
cout
<< y;
cout << “ z = x + y = “;
cout
<< z;
}
long Data Type
On
the other side if we have a very large whole number that can not be stored in
an int
then
we use the data type long provided by C. So when we are going to deal with very
big
whole
numbers in our program, we use long data type. We use it in program as:
long
x = 300500200;
Real Numbers
The
C language provides two data types to deal with real numbers (numbers with
decimal
points
e.g. 1.35, 735.251). The real numbers are also known as floating point numbers.
o float
o double
float Data Type
To
store real numbers, float data type is used. The float data type uses four
bytes to store
a
real number. Here is program that uses float data types.
/*This
program uses short data type to store values */
#include
<iostream.h>
main()
{
float
x;
float y;
float z;
x
= 12.35;
y
= 25.57;
z
= x + y;
cout
<< “ x = “;
cout
<< x;
cout
<< “ y = “;
cout
<< y;
cout
<< “ z = x + y = “;
cout
<< z;
}
double Data Type
If
we need to store a large real number which cannot be store in four bytes, then
we use
double data type. Normally the size of double is twice the size of float. In
program we
use
it as:
double
x = 345624.769123;
char Data Type
So
far we have been looking on data types to store numbers, In programming we do
need
to
store characters like a,b,c etc. For storing the character data C language
provides char
data
type. By using char data type we can store characters in variables. While
assigning a
character
value to a char type variable single quotes are used around the character as
‘a’.
/*
This program uses short data type to store values */
#include
<iostream.h>
main()
{
char
x;
x = ’a’;
cout
<< “The character value in x = “;
cout
<< x;
}
Arithmetic
Operators
In
C language we have the usual arithmetic operators for addition, subtraction,
multiplication
and division. C also provides a special arithmetic operator which is called
modulus.
All these operators are binary operators which means they operate on two
operands.
So we need two values for addition, subtraction, multiplication, division and
modulus.
ARITHMETIC ARITHMETIC
ALGEBRAIC C
OPERATION OPERATOR EXPRESSION EXPRESSION
Addition +
x + y x
+ y
Subtraction -
x – y x
- y
Multiplication *
Xy x
* y
Division /
x ÷ y, x / y x
/ y
Modulus %
x mod y x
% y
Addition,
subtraction and multiplication are same as we use in algebra.
There
is one thing to note in division that when we use integer division (i.e. both
operands
are integers) yields an integer result. This means that if, for example, you
are
dividing
5 by 2 (5 / 2) it will give integer result as 2 instead of actual result 2.5.
Thus in
integer
division the result is truncated to the whole number, the fractional part
(after
decimal)
is ignored. If we want to get the correct result, then we should use float data
type.
The
modulus operator returns the remainder after division. This operator can only
be used
with
integer operands. The expression x % y
returns the remainder after x is divided by
y.
For example, the result of 5 % 2 will be
1, 23 % 5 will be 3 and 107%10 will be 7.
Precedence
of Operators
The
arithmetic operators in an expression are evaluated according to their
precedence.
The
precedence means which operator will be evaluated first and which will be
evaluated
after
that and so on. In an expression, the parentheses ( ) are used to force the
evaluation
order.
The operators in the parentheses ( ) are evaluated first. If there are nested
parentheses
then the inner most is evaluated first.
The
expressions are always evaluated from left to right. The operators *, / and %
have the
highest
precedence after parentheses. These operators are evaluated before + and –
operators.
Thus + and – operators has the lowest precedence. It means that if there are *
and
+ operators in an expression then first the * will be evaluated and then its
result will
be
added to other operand. If there are *
and / operators in an expression (both have the
same
precedence) then the operator which occurs first from left will be evaluated
first and
then
the next, except you force any operator to evaluate by putting parentheses
around it.
The
following table explains the precedence of the arithmetic operators:
OPERATORS OPERATIONS
PRECEDENCE (ORDER OF
EVALUATION)
( ) Parentheses
Evaluated first
*,
/, or % Multiplication,
Evaluated
second. If there are
Division,
Modulus several,
they are evaluated from left
to right
+
or - Addition,
Subtraction Evaluated
last. If there are several,
they are evaluated from left to right
Lets
look some examples.
What
is the result of 10 + 10 * 5 ?
The
answer is 60 not 100. As * has higher precedence than + so 10 * 5 is evaluated
first
and
then the answer 50 is added to 10 and we get the result 60. The answer will be
100 if
we
force the addition operation to be done first by putting 10 + 10 in
parentheses. Thus
the
same expression rewritten as (10 + 10) * 5 will give the result 100. Note that
how the
parentheses
affect the evaluation of an expression.
Similarly
the expression 5 * 3 + 6 / 3 gives the answer 17, and not 7. The evaluation of
this
expression can be clarified by writing it with the use of parentheses as (5 *
3) + (6 /
3)
which gives 15 + 2 = 17. Thus you should be careful while writing arithmetic
expressions.
Post a Comment
Don't Forget To Join My FB Group VU Vicky
THANK YOU :)