You are on page 1of 44

Programming in C++

(Week 1)

Origin of C++

Developed by Bjarne Stroustrup at Bell Labs in

1980s, as an extension of the C programming
language by adding features from the language
Simula 67.

Initially called C with Classes.

The name C++ was coined from the C increment

operator ++.

The major reason behind the success of C++ is that it

uses object oriented technology.

Basic Elements of C++

First Program:
// first C++ program
preprocessor directive
#include <iostream>
which namespace
using namespace std;
to use
beginning of the function main
int main()
beginning of the body of main
cout << Welcome to C++!\n";
action (output)
return 0;
return 0 to operating system
7 }


end of the body of main

Line 1 is a comment. A comment begins with a double

slash // (single line comment).
Comments are ignored by the compiler, but they
immensely help in understanding the program.
Line 2, #include <iostream>, is a preprocessor
directive which instructs the C++ system to include into
the program the contents of the file name iostream.
A line beginning with a pound sign (#) is a
preprocessor directive. It is not considered to be a C++
statement and hence not terminated by a semicolon.

A file whose name appears in #include directive

is called a header file.

Header files contain certain constants, variables,

data types, or function declarations needed by a

The input /output stream header file <iostream>

contains declarations of input/output functions.
(Similarly, we can have preprocessor directive like:
#include <string>
The file string contains declarations for the string
data type.)

Line 3, using namespace std; , is to make

the identifier cout accessible to our program.
The header file <iostream> ( and in fact all
standard header files) declares all of its identifiers
to be in a namespace block called std.
Line 4, int main(), is a part of every C++
program. The parentheses after main indicate that
it is a function. Exactly one function in a C++
program must be main.
In any C++ program, the program execution starts
at main. The function main is, in a sense, the
master function of any program.

The word int in main indicates that main is a

value returning function that should return an integer
value. In this program it returns 0.
Line 5, {, indicates the start of the body of the
function main. Every function body must start with
the left brace, {.
Line 6, cout << Welcome to C++!\n,
instructs the computer to perform an action in this
case, output the string contained between the double
quotation marks.
The characters \n in line 6 is an escape sequence,
denoting here the newline command.

The backslash character (\) is called an escape

character and it indicates that a special character
is to be output.
Line 7, return 0, indicates that the function
main returns value 0 to the operating system. It
indicates here that the program has terminated
Line 8, }, indicates the end of the body of the
function main. Every function body must end
with a right brace, }.

Some Special Characters





Double Slash

Begins a comment

Pound Sign

Begins preprocessor directive


Open, Close Brackets

Encloses filename used in

#include directive


Open, Close Parentheses

Used when naming function


Open, Close Braces

Encloses a group of statements


Open, Close Quote Marks

Encloses string of characters


Ends a programming

Tokens, Identifiers and Keywords

A C++ program is a sequence of elements called
A token is either an identifier, a punctuation symbol
such as {, or an operator such as <<.
An identifier is a name associated with a function or a
data object and used to refer to that function or data
An identifier must begin with a letter or an underscore.
Normally it should not have length greater than 31.
C++ is case sensitive uppercase and lowercase letters
are different. So, a1 and A1 are different identifiers.

There are some identifiers which are reserved for

specific uses in C++. Such identifiers are called
keywords. For example int, float, if are keywords.
A keyword cannot be used as a programmer defined

Valid and invalid identifiers


Valid ?

Reason if invalid





Cannot contain



Cannot begin with a




Cannot contain ($)



Cannot use ()

Student, num


Cannot use dash (-)

Cannot use comma

Student name


Cannot use space

A variable is a symbol that represents a memory
location in computers memory.
Different values may be stored at different times at
this location.
The content of a variable (memory location) is called
the value of the variable.
Declaring a variable means specifying a variable and
its data type. A variable declaration has the following

data type

variable name


For example: int sum = 100;

int count;
char mychar;
float average;
More than one variables of same type can be declared in
the same line as follows:
int count, firstnumber, secondnumber;
char mychar, char1, char2, initial;
float height, weight, average;

A variable can be declared anywhere in the program but

it must appear before it is used.

Since variables correspond to memory locations,

therefore when an input command such as
cin >> number 1;
is executed, the characters typed by the user are
converted into the data type of number1 that is placed into
memory location assigned to number1.
When a new value is assigned to number1, it overwrites
the previous value stored at that place

A constant is a location in the memory, referenced by
an identifier, that cannot be changed .
const float PI = 3.14159;
const int N = 100;
const char BEEP = \b;
A constant must be initialized when it is declared.

Input/Output Streams
Output Stream object cout:
In C++, the output on the standard stream is performed
using the cout output stream object.
Requires iostream file for performing output.
The information is sent to cout object using the output
operator << (also known as put operator or stream
insertion operator).
<< inserts the value of the variable on its right into the
output stream that is named on its left. For example:
cout << area;

More than one item can be displayed using a single

cout object. Such outputs are called cascaded output
operations. For example:
cout << Number = << number

<< endl;

The cout object displays all the items from left to

right, hence the name stream.

Input Stream object cin:

Standard input object.
Like cout, requires iostream file.
The input information is sent to cin using the input
operator >> (also known as get operator or
extraction operator).
>> takes the value from the object named on its left
and places it in the variable on its right.
More than one item can be displayed using a single
cin object. For example:
cin >> number1 >> number 2;

Multiple values from keyboard must be separated by

spaces or [Enter].
Multiples values may have different data types.
User input goes from keyboard to the input buffer,
where it is stored as characters.
The cin object converts the data to the type that
matches the variable
int number;
cout << The number is ";

>> number;

Blank spaces are ignored by the compiler except
where needed to separate the identifiers, as in
int main
However, a blank space is given output if it is part of
some string . For example
cout << First number ;

Data Types
In C++, each piece of data must be of a specific data
The data type determines how the data is represented in
the computer and the kind of processing the computer
can perform on it.
C++ supports following classes of data types:
Primary (fundamental) data types,
Derived data types,
User defined data types.

C++ has following primary data types:

char a single character
int an integer
float a single precision floating point number.
double a double precision floating point number.

Character Data Type char:

Describes data consisting of one alpha -numeric
character a letter, a digit, or a special symbol:
A, a, 5, +, $, *,
A char type is actually an integral type whose
variables represent characters.
char c = A;
cout << c = << c << endl;
cout << int (c) = << int(c);
c = A
int(c) = 65

Integral Data Types:

Represents an integer value a whole number without
fractional part.
C++ has following integral data types:
char, short, int, long, bool
By default an integral data type is a signed integer,
unless it is explicitly declared as unsigned, such as
unsigned int x;
A unsigned integer value is non-negative.
All integral data types can be declared as unsigned,
except bool.
The data types char, short, int, and long
are designed to represent different sizes of integers.

The following table shows memory sizes and the ranges of

different integral data types. These values may be different for
different machines.

Size in

Minimum Value Maximum Value




unsigned char 1






65, 535


- 231

231- 1

unsigned int

232- 1


- 263

263- 1

264- 1

unsigned long 8

Boolean Type:
A bool data type is an integral type consisting of just
two values, the constants true and false. These
values are stored as 1 and 0 respectively.

flag = false;
<< flag = << flag << endl;
= true;
<< flag = << flag << endl;

flag = 0
flag = 1

Enumeration Data Type:

An enumeration data type is a user defined data type. It
is an integral type that has the syntax
enum typename{enumeration-list};
where enum is a keyword, typename is the
identifier, and enumeration-list stands for a list of
names for integer constants.
For example :
enum color{red, blue, green};
We can then declare variables of this type:
color = c1, c2;
and we can use them as simple data types:
if(c1==c2)cout<< same colors<< endl;

C++ compiler treats enumeration types as consecutive

integers. In the above example, the identifiers red,
blue, and green are treated as 0, 1, and 2,
respectively. For example, the statements will produce
output c = 1.
color c = blue;
cout << c = <<c;
Constants values can explicitly be specified for the
identifiers, such as
enum color{red=10, blue, green=20};
The enumerator blue will be assigned value 11.

Floating Point Data Types:

Used to represent floating point numbers .
In C++, there are three types of floating point data types:
float, double (double precision), and
long double (extended double precision).
Memory sizes and ranges of floating point data types:

Size in Bytes

Positive value

Positive Values


3.4 E - 38

3.4 E +38


1.7 E -308

1.7 +308



3.4 E - 4932

1.1 E +4932

A string in C++ is just a sequence of consecutive
characters in memory, the last one being the null
The null character has ASCII code 0 and is called the
end of string marker.
For example, the statement
Hello dear;
will be stored in the computer memory as given below:
H e l
Start of the string

e a r \0
Start of the string

A string must be typed entirely on one line. Splitting a

string in more that one line is a syntax error. For
example, the string
C++ is an object
oriented language
is not valid because it is split across two lines.
The quotes are not parts of a string, they only indicate
that the content between them is a string.
A string containing no characters is called a null string
or an empty string. It is written as .
To work with strings, there is also a data type in C++
named string . string is not a standard C++ data
type but supplied by C++ standard library.

Arithmetic Operators and Expressions

Expressions are made up of constants, variables, and
C++ has following arithmetic operators:
Unary plus +, such as +x;
Unary minus -, such as x;
Addition +, such as x + y;
Subtraction -, such as x y;
Multiplication *, such as x*y;
Division /, such as x/y; (floating point division, integer
Modulus % (remainder from integer division).

The first two operators are unary. The remaining

operators are all binary operators.
Division, such as 5/0, and modulus, such as 5%0, both
produce errors.
In floating point division, an expression such as
5.0/0.0 produces a special infinity value inf.
The modulus operation can be performed only with the
integers. Modulus operation on non integer operands is
a compilation error.
Arithmetic expressions in C++ must be entered into the
computer in a straight line form.
Parentheses in C++ expressions are used in the same
manner as in algebraic expressions, e. g., a*(b + c).

Rules of Operator Precedence:

Expressions within parentheses are evaluated first. In
case of nested parentheses, the innermost pair of
parentheses is applied first.
Multiplication, division, and modulus operations are
applied next. In case of several such operations,
operators are applied from left to right.
Additions and subtractions are applied last. In case of
several additions or subtractions, operators are applied
from left to right.

Type Coercion /Conversion

Integer values and floating point values are stored
differently in computers memory- only the
corresponding type of data can be stored for a defined
If an integer value is assigned to a variable declared as a
float variable the computer implicitly converts the
integer value into value into a floating point number, or
vice-versa. This is known as type coercion. For example:
int number = 4.5;
cout << number;
will produce the output 4.

Generally, mathematical expressions, consisting of mixed

data types lead to type coercion:
int number1, number2;
float average;
average = (number1+number2)/2.0;

To make a program clear and error-free, we can use

explicit type casting (or type conversion). A C++ cast
operation consists of a data type and then, within
parentheses the expression to be converted:
average = float(number1 + number2)/float(2);
num1 = int(average);

Relational Operators
A relational operator is used to make comparison
between two expressions. These operations are binary.
In C++, we have following relational operators:




Less than
Greater than

x < y
x > y


Less than or
equal to

x <= y


Greater than or
equal to

x >= y


Equal to

x == y


Not equal to

x != y

Reversing the pair of symbols in a relational operator is

normally a syntax error.
Confusing the equal to operator == with the assignment
operator = results in a logical error.
Sample C++ statements:
if (number1 < number 2)
cout << number1 << < << number2;
if (number1 == number 2)
cout << number1 << == << number2;

Assignment Operators
The assignment operator = evaluates the expression on
the right and assigns the resulting value to the variable
on its left.
Other than the assignment operator = , C++ provides
several compound assignment operators for
abbreviating assignment operations.
For example, the statement
c = c+3;
can be abbreviated with the addition assignment
operator += as
c += 3;

In general, any statement of the form

variable = variable operator expression;

in which the same variable appears on both sides of the

assignment operator and operator is one of the binary
operator +, -, *, /, or, %, can be written in the form
variable operator= expression;
c += 5; for c = c + 5;
d -= 4; for d = d -4;
e *= 3; for e = e * 3;
f /= 4; for f = f / 4;
g %= 7; for g = g % 7;

Increment and Decrement Operators

C++ also provide two unary operations for adding 1 or
subtracting 1 from the value of a numeric variable.
These are the unary increment operator , ++, and the
unary decrement operator, --.
Each of these two operators can be used as prefix or
postfix, and their meaning changes accordingly.
When used as a prefix, the value of the variable is
incremented/decremented before being used in the
expression in which it resides.
But when used as postfix, its value is first used in the
expression and then the value is incremented/

These operators are summarized below:

Operato Called



Preincreme ++a




Predecreme --a

Decrement a by 1, then use the new

value of a in the expression in which a


Postdecrem a-ent

Use current value of a in the expression

in which a resides, then decrement a by


Increment a by 1, then use the new

value of a in the expression in which a
Use current value of a in the expression
in which a resides, then increment a by

When a variable is incremented or decremented in a

statement by itself, then the preincrement (predcrement)
and postincrement (postdecrement) have the same effect.
For example
++m; and m++; will produce the same result.
However, the statements
a = ++b; and
a = b++;
will produce different results. In the first case, b is
incremented first and then its new value is assigned to a. In
the second case, the current value of b is assigned to a and
then the value of b is incremented.