cs1123 11 pointers
DESCRIPTION
TRANSCRIPT
Introduction to C++(CS1123)
By
Dr. Muhammad Aleem,
Department of Computer Science, Mohammad Ali Jinnah University, Islamabad
Fall 2013
History
• C evolved from two languages (BCPL and B)
• 1980: “C with Classes”
• 1985: C++ 1.0
• 1995: Draft standard
• Developed by Bjarne Stroustrup at Bell Labs
• Based on C, added Object-Oriented Programming concepts (OOP) in C
• Similar program performance (compared to C)
C vs C++• Advantages:
– 1. Faster development time (code reuse)
– 2. Creating / using new data types is easier
– 3. Easier memory management
– 4. Stricter syntax & type checking => less bugs
– 5. Easier to implement Data hiding
– 6. Object Oriented concepts
C++ Program Structure//My first program in C++ First.cpp
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!";
return 0;
}
Preprocessor Directive (no ;)
IDE and Compilation Steps
C++ Preprocessor
First.cpp
C++ Compiler Linker First.exe
C++ Header Files
Object code for library function
Integrated Development Environments (IDEs)
• An IDE is a software application which provides a comprehensive facility to programmers to Write /Edit
/Debug /Compile the code
• Main components:– Source code editor–Debugger–Complier–…
IDEs on Windows platform
• Turbo C++
• Microsoft Visual C++
• Dev C++
Input / Output Example#include <iostream>
#include <string>
using namespace std;
int main ( )
{
string name; //Name of student
cout<< “Enter you name";
cin>>name;
/* Now print hello , and students name */
cout<< “Hello “ << name;
return 0;
}
Comments
• Two types of comments1. Single line comment //….2. Multi-line (paragraph) comment /* */
• When compiler sees // it ignores all text after this on same line
• When it sees /*, it scans for the text */ and ignores any text between /* and */
Preprocessor Directives
• #include<iostream>
• # is a preprocessor directive.
• The preprocessor runs before the actual compiler and prepares your program for compilation.
• Lines starting with # are directives to preprocessor to perform certain tasks, e.g., “include” command instructs the preprocessor to add the iostream library in this program
Header files (functionality declarations)(Turbo C++) (Visual C++)
• #include<iostream.h> or #include <iostream>• #include<stdlib.h> or #include<stdlib>• …
std:: Prefix • std::cout<“Hello World”;• std::cout<<Marks;• std::cout<<“Hello ”<<name;• Scope Resolution Operator ::
• std is a namespace, Namespaces ?
using namespace std;cout<<“Hello World”;cout<<Marks;cout<<“Hello ”<<name;
Namespaces
• Namespace pollution
–Occurs when building large systems from pieces
– Identical globally-visible names clash
– How many programs have a “print” function?
– Very difficult to fix
Namespacesnamespace Mine {
const float pi = 3.1415925635; }
void main(){ float x = 6 + Mine::pi; cout<<x;}
Multiple Namespaces
• Example…
Omitting std:: prefix
- using directive brings namespaces or its sub-items into current scope
#include<iostream>using namespace std;
int main(){
cout<<“Hello World!”<<endl;cout<<“Bye!”;
return 0;}
main( ) function• Every C++ program start executing from main ( )
• A function is a construct that contains/encapsulates statements in a block.
• Block starts from “{“ and ends with “}” brace
• Every statement in the block must end with a semicolon ( ; )
• Examples…
cout and endl
• cout (console output) and the operator • << referred to as the stream insertion operator• << “Inserts values of data-items or string to screen.”• >> referred as stream extraction operator, extracts
value from stream and puts into “Variables”
• A string must be enclosed in quotation marks.
• endl stands for end line, sending ‘endl’ to the console outputs a new line
Input and type– cin>>name; reads characters until a
whitespace character is seen
–Whitespace characters: • space, • tab, • newline {enter key}
Variables - Variables are identifiers which represent
some unknown, or variable-value.
- A variable is named storage (some memory address’s contents)
x = a + b;Speed_Limit = 90;
Variable declaration
TYPE <Variable Name> ;
Examples: int marks;double Pi;int suM;char grade;
- NOTE: Variable names are case sensitive in C++ ??
Variable declaration• C++ is case sensitive–Example:
areaAreaAREAArEa
are all seen as different variables
NamesValid Names• Start with a letter • Contains letters• Contains digits• Contains underscores
• Do not start names with underscores: _age
• Don’t use C++ Reserve Words
C++ Reserve Words
• auto break• case char• const continue• default do• double else• enum extern• float for• goto if
int longregister returnshort signedsizeof staticstruct switchtypedef unionunsigned voidvolatile while
Names• Choose meaningful names– Don’t use abbreviations and acronyms: mtbf, TLA,
myw, nbv
• Don't use overly long names• Ok:
partial_sumelement_countstaple_partition
• Too long (valid but not good practice):remaining_free_slots_in_the_symbol_table
Which are Legal Identifiers? AREA 2D
Last Chance
x_yt3 Num-2
Grade***
area_under_the_curve _Marks #values areaoFCirCLe %done return Ifstatement
String input (Variables)// Read first and second name
#include<iostream>
#include<string>
int main() {
string first;
string second;
cout << “Enter your first and second names:";
cin >> first >> second;
cout << "Hello “ << first << “ “ << second;
return 0;
}
Declaring Variables
• Before using you must declare the variables
Declaring Variables…• When we declare a variable, what happens ?–Memory allocation• How much memory (data type)
–Memory associated with a name (variable name)– The allocated space has a unique address
Marks
FE07
%$^%$%$*^%int Marks;
Using Variables: Initialization• Variables may be given initial values, or
initialized, when declared. Examples:
int length = 7 ;
float diameter = 5.9 ;
char initial = ‘A’ ;
7
5.9
‘A’
length
diameter
initial
• Are the two occurrences of “a” in this expression the same?
a = a + 1;One on the left of the assignment refers to the location
of the variable (whose name is a, or address);One on the right of the assignment refers to the value of
the variable (whose name is a);
• Two attributes of variables lvalue and rvalue • The lvalue of a variable is its address• The rvalue of a variable is its value
rvalue and lvalue
• Rule: On the left side of an assignment there must be a lvalue or a variable (address of memory location)
int i, j;i = 7; 7 = i; j * 4 = 7;
rvalue and lvalue
Data TypesThree basic PRE-DEFINED data types:
1. To store whole numbers
– int, long int, short int, unsigned int
2. To store real numbers
– float, double
3. Characters
– char
Types and literals• Built-in types– Boolean type• bool
– Character types• char
– Integer types• int–and short and
long– Floating-point types• double–and float
• Standard-library types– string
Literals• Boolean: true, false
• Character literals– 'a', 'x', '4', '\n', '$'
• Integer literals– 0, 1, 123, -6,
• Floating point literals– 1.2, 13.345, 0.3, -0.54,
• String literals– "asdf”, “Helllo”, Pakistan”
Types • C++ provides a set of types– E.g. bool, char, int, double called “built-in types”
• C++ programmers can define new types– Called “user-defined types”
• The C++ standard library provides a set of types– E.g. string, vector, .. – (for vector type #include<vector> )
Declaration and initializationint a = 7;
int b = 9;
char c = 'a';
double x = 1.2;
string s1 = "Hello, world";
string s2 = "1.2";
7
9
a
1.2
Hello, world
1.2
char type• Reserves 8 bits or 1 byte of memory • A char variable may represent:– ASCII character 'A‘, 'a‘, '1‘, '4‘, '*‘– signed integers 127 to -128 (Default)– unsigned integer in range 255 to 0
Examples:– char grade;–unsigned char WeekNumber= 200;– char cGradeA = 65; – char cGradeAA = ‘A';
char type • Example program…
Special characters• Text string special characters (Escape Sequences)– \n = newline – \r = carriage return – \t = tab– \" = double quote – \? = question– \\ = backslash – \' = single quote
• Examples:cout << "Hello\t" << "I\’m Bob\n";cout << "123\nabc “;
Escape Sequence• Example Program:
int type • 16 bits (2 bytes) on Windows 16-bits– int -32,768 to 32,767 – unsigned int 0 to 65,535– Also on Turbo C++, 2 bytes for int
• 32 bits (4 bytes) on Win32 (Visual C++)– int -2,147,483,648 to 2,147,483,647– unsigned int 0 to 4,294,967,295
int type • Examples:
int earth_diameter;int seconds_in_week= 604800;unsigned int Height = 100;unsigned int Width = 50000;
int type (long and short)• long int– reserves 32 bits (4 bytes) of memory – signed long -2,147,483,648 to 2,147,483,647–unsigned long int 0 to 4,294,967,295
• short int– reserves 16 bits (2 bytes) of memory – signed short int -32,768 to 32,767 –unsigned short int 0 to 65,535
int (long and short)• Examples:
long int light_speed=186000;unsigned long int seconds= 604800;short int Height = 30432;unsigned short int Width = 50000;
Home Work-1 • Use Visual C++ on Windows and get information
for following data types:– int– short– long int– short int– char
• Use ( cout << sizeof( intVar ); ) operator to get this information, Example:…
Real Values• float– Reserves 32 bits (4 bytes) of memory
– + 1.180000x10+38
, 7-digit precision– Example: float radius= 33.4221;
• double– Reserves 64 bits (8 bytes) of memory
– + 1.79000000000000x10+308
, 15-digit precision– Example: double Distance = 257.5434342;
• long double– Reserves 80 bits (10 bytes) of memory , 18-digit precision– Example: long double EarthMass = 25343427.53434233;
Home Work-2• Use Visual C++ on Windows and get information
for following data types:– float– double– long double
• Use ( cout << sizeof(floatVar); ) operator to get this information, Example:…
bool Type• Only 1 bit of memory required– Generally, 1 byte because is reserved
• Literal values: – true– false
• Can be used in logical conditions:– Examples:
bool RainToday=false; bool passed; passed = GetResult(80);
string type• Special data type supports working with “strings”
#include <string>
string <variable_name> = “string literal”;
• string type variables in programs: string firstName, lastName;
• Using with assignment operator:firstName = “Mohammad";lastName = “Ali";
• Display using coutcout << firstName << " " << lastName;
Getting input in string with Spaces
string s1;cin>> s1; //Spaces will not be input in s1
//Following statements read spaces in “string”string s1;getline(cin, s1); //Spaces will be input in s1
string type • Find Errors in the example program…