Programming in C++ - Module 01
Programming in C++ - Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Tanwi Mallick
Srijoni Majumdar
Himadri B G S Bhuyan
Build Process
References
Summary
Module Objectives
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
Module Outline
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Recap of C features
Data types
Variables
Literals
Operators
Expressions
Statements
Control Constructs Conditional Flow & Loops
Arrays
Structures & Unions
Pointers
Functions
Input / Output
Std Library
C Standard Library
Organization
Build Process
References
Build Process
Summary
Recap of C features
Data types
Variables
Literals
Operators
Expressions
Statements
Control Constructs Conditional Flow & Loops
Std Library
Organization
Build Process
References
Summary
First C program
Module 01
Partha Pratim
Das
Objectives &
Outline
#include <stdio.h>
Recap of C
int main() {
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
printf("Hello World");
printf("\n");
return 0;
}
stdio.h header included for input / output
main function is used to start execution
printf function is used to print the string Hello World
Std Library
Organization
Build Process
References
Summary
Data Types
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
Data Types
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
Variables
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
i,
c,
f,
d,
j, noOfData;
endOfSession;
velocity;
dist_in_light_years;
Std Library
Organization
Build Process
References
Summary
Variables
Module 01
Partha Pratim
Das
Initialization of Variables:
Initialization is setting an initial value to a variable at its
definition
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
int
char
float
double
Std Library
Organization
Build Process
References
Summary
Literals
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
212
0173
0b1010
0xF2
3.14
x
"Hello"
//
//
//
//
//
//
//
//
//
//
//
//
//
//
(const
(const
(const
(const
(const
(const
(const
Build Process
References
Summary
10
Operators
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
11
Operators
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
12
Expressions
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
Expression are:
2.5
//
i
//
-i
//
i - j
//
k = 5
//
f(i, j)
//
i + j == i * 3 //
(i == j)? 1: 2 //
Value
Value
Value
Value
Value
Value
Value
Value
= 2.5
10
-10
-10
5
30
true
2
References
Summary
13
Statement
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
int i = 2, j = 3, t;
Build Process
t = i;
i = j;
j = t;
References
Summary
Statements
i + j;
k = i + j;
funct(i,j);
k = funct(i,j);
}
NPTEL MOOCs Programming in C++
14
Control Constructs
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
Examples:
if (a < b) {
int t;
t = a;
a = b;
b = t;
if (x < 5)
x = x + 1;
else {
x = x + 2;
--y;
}
switch (i) {
case 1: x = 5;
break;
case 3: x = 10;
default: x = 15;
}
while (n) {
sum += n;
if (sum > 20)
break;
--n;
}
}
int sum
for(i =
int
sum
}
= 0;
0; i < 5; ++i) {
j = i * i;
+= j;
References
Summary
15
Recap of C features
Data types
Variables
Literals
Operators
Expressions
Statements
Control Constructs Conditional Flow & Loops
Std Library
Organization
Build Process
References
Summary
16
Recap of C features
Arrays
Structures
Unions
Pointers
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
17
Arrays
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
Initialize Arrays:
int primes[5] = {2, 3, 5, 7, 11}; // Size = 5
int primes[] = {2, 3, 5, 7, 11};
int sizeOfPrimes = sizeof(primes)/sizeof(int); // size is 5 by initialization
int primes[5] = {2, 3};
Multidimensional Arrays:
int mat[3][4];
for(i = 0; i < 3; ++i)
for(j = 0; j < 4; ++j)
mat[i][j] = i + j;
NPTEL MOOCs Programming in C++
18
Structures
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
// data member
// data member
// data member
alias for struct _Books type
Initialize Structures:
struct Complex x = {2.0, 3.5}; // Both members
struct Complex y = {4.2};
// Only the first member
Std Library
Organization
Build Process
References
Summary
Books book;
book.book_id = 6495407;
strcpy(book.title, "C Programming");
NPTEL MOOCs Programming in C++
19
Unions
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Initialize Union:
Packer p = {10}; // Initialize only with a value of the type of first member
printf("iData = %d\n", p.iData);
// Prints: iData = 10
// Prints: iData = 2
// Prints: dData = 2.200000
// Prints: cData = a
Organization
Build Process
References
Summary
p.iData = 97;
printf("iData = %d\n", p.iData);
printf("dData = %lf\n", p.dData);
printf("cData = %c\n", p.cData);
NPTEL MOOCs Programming in C++
// Prints: iData = 97
// Prints: dData = 2.199999
// Prints: cData = a
Partha Pratim Das
20
Pointers
Module 01
Partha Pratim
Das
Objectives &
Outline
int
double
float
char
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
*ip;
*dp;
*fp;
*ch
//
//
//
//
pointer
pointer
pointer
pointer
to
to
to
to
an integer
a double
a float
a character
Using a pointer:
int main() {
int i = 20;
int *ip;
ip = &i;
// variable declaration
// pointer declaration
// store address of i in pointer
Std Library
return 0;
Organization
Build Process
References
Summary
21
Pointers
Module 01
Pointer-Array Duality
Pointer to a structure
Partha Pratim
Das
Objectives &
Outline
p = a;
printf("a[0] = %d\n", *p);
// a[0] = 1
printf("a[1] = %d\n", *++p);
// a[1] = 2
printf("a[2] = %d\n", *(p+1)); // a[2] = 3
struct Complex {
double re;
double im;
} c = { 0.0, 0.0
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
p = &a[2];
*p = -10;
printf("a[2] = %d\n", a[2]);
// Complex Number
// Real component
// Imaginary component
};
// a[2] = -10
malloc-free
*p = 0x8F7E1A2B;
printf("%X\n", *p);
unsigned char *q = p;
printf("%X\n", *q++);
printf("%X\n", *q++);
printf("%X\n", *q++);
printf("%X\n", *q++);
//
//
//
//
free(p);
NPTEL MOOCs Programming in C++
22
Recap of C features
Arrays
Structures
Unions
Pointers
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
23
Recap of C features
Functions
Input / Output
C Standard Library
Source Organization for a C program
Build Process
Std Library
Organization
Build Process
References
Summary
24
Functions
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
Function definition:
// Function Implementation
int funct(int x, int y)
// Function Body
{
return (x + y);
}
References
Summary
25
Functions
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
int main() {
int a = 5, b = 10, z;
printf("a = %d, b = %d\n", a, b); // prints: a = 5, b = 10
z = funct(a, b); //
//
//
//
//
//
26
Functions
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
27
Function pointers
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
#include <stdio.h>
struct GeoObject {
enum { CIR = 0, REC, TRG }
union {
struct Cir { double x,
struct Rec { double x,
struct Trg { double x,
};
};
gCode;
y, r; } c;
y, w, h; } r;
y, b, h; } t;
go.gCode = REC;
go.r.x = 4.5; go.r.y = 1.9;
go.r.w = 4.2; go.r.h = 3.8;
DrawArr[go.gCode](go); // Call by ptr
go.gCode = TRG;
go.t.x = 3.1; go.t.y = 2.8;
go.t.b = 4.4; go.t.h = 2.7;
DrawArr[go.gCode](go); // Call by ptr
return 0;
}
Organization
Build Process
References
Summary
28
Input / Output
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Use %s, %d, %c, %lf, to print/scan string, int, char, double
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
#include <stdio.h>
int main() {
char str[100];
int i;
printf("Enter a value :");
return 0;
}
Build Process
References
Summary
29
Input / Output
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
fp = fopen("Input.dat", "r");
fscanf(fp, "%d", &i);
fclose(fp);
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
fp = fopen("Output.dat", "w");
fprintf("%d^2 = %d\n", i, i*i); // prints to Output.dat
fclose(fp);
return 0;
}
Std Library
Organization
Build Process
References
Summary
30
C Standard Library
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
stdlib.h
string.h
math.h
errno.h
31
Std Library
Header Files
A header file has extension .h and contains C function
declarations and macro definitions to be shared between several
source files
There are two types of header files:
Files that the programmer writes
Files from standard library
Header files are included using the #include pre-processing
directive
#include <file> for system header files
#include "file" for header files of your own program
Organization
Build Process
References
Summary
32
Example:
// Solver.h -- Header files
int quadraticEquationSolver(double, double, double, double*, double*);
// Solver.c -- Implementation files
#include "Solver.h"
int quadraticEquationSolver(double a, double b, doublec , double* r1, double* r2) {
// ...
// ...
// ...
return 0;
}
// main.c -- Application files
#include "Solver.h"
int main() {
double a, b, c;
double r1, r2;
Std Library
int status = quadraticEquationSolver(a, b, c, &r1, &r2);
Organization
Build Process
return 0;
}
References
Summary
33
Build Flow
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
34
Build Process
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
The linker links our program with the pre-compiled libraries for
using their functions
In the running example, function.c and main.c are first
compiled and then linked
Organization
Build Process
References
Summary
int main() {
int a = sum(1,2); // as files are linked, uses functions directly
return a;
}
NPTEL MOOCs Programming in C++
Partha Pratim Das
35
Tools
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
36
References
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
37
Module Summary
Module 01
Partha Pratim
Das
Objectives &
Outline
Recap of C
Data Types
Variables
Literals
Operators
Expressions
Statements
Control Flow
Arrays
Structures
Unions
Pointers
Functions
Input / Output
Std Library
Organization
Build Process
References
Summary
38
Name
Partha Pratim Das, Instructor
Tanwi Mallick, TA
Srijoni Majumdar, TA
Himadri B G S Bhuyan, TA
Mail
ppd@cse.iitkgp.ernet.in
tanwimallick@gmail.com
majumdarsrijoni@gmail.com
himadribhuyan@gmail.com
Mobile
9830030880
9674277774
9674474267
9438911655
Std Library
Organization
Build Process
References
Summary
39