cs1123 11 pointers

Post on 22-Dec-2014

31 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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…

top related