1 of 19

CPP loop

By Santosh Tawde

2 of 19

Introduction to C++

  • Readings: 1.1-1.3, 1.9-1.13, 1.16-1.18, 1.21-1.22
  • C++
    • Bjarne Stroustrup (Bell Labs, 1979)
    • started as extension to C (macros and variables)
    • added new useful, features
    • nowadays a language of its own
    • C++ (the next thing after C, though wouldn’t ++C be more appropriate?)

3 of 19

C++

By Santosh Tawde

4 of 19

Outline

Intro to C++

Object-Oriented Programming

Changes in C++

comments

variable declaration location

initialization

pointer changes

tagged structure type

enum types

bool type

5 of 19

Object-Oriented Programming

  • First-class objects - atomic types in C
    • int, float, char
    • have:
      • values
      • sets of operations that can be applied to them
    • how represented irrelevant to how they are manipulated
  • Other objects - structures in C
    • cannot be printed
    • do not have operations associated with them (at least, not directly)

6 of 19

Object-Oriented Idea

  • Make all objects, whether C-defined or user-defined, first-class objects
  • For C++ structures (called classes) allow:
    • functions to be associated with the class
    • only allow certain functions to access the internals of the class
    • allow the user to re-define existing functions (for example, input and output) to work on class

7 of 19

Classes of Objects in C++

  • Classes
    • similar to structures in C (in fact, you can can still use the struct definition)
    • have fields corresponding to fields of a structure in C (similar to variables)
    • have fields corresponding to functions in C (functions that can be applied to that structure)
    • some fields are accessible by everyone, some not (data hiding)
    • some fields shared by the entire class

8 of 19

Instances of Classes in C++

  • A class in C++ is like a type in C
  • Variables created of a particular class are instances of that class
  • Variables have values for fields of the class
  • Class example: Student
    • has name, id, gpa, etc. fields that store values
    • has functions, changeGPA, addCredits, that can be applied to instances of that class
  • Instance examples: John Doe, Jane Doe
    • each with their own values for the fields of the class

9 of 19

Comments in C++

  • Can use C form of comments /* A Comment */
  • Can also use // form:
    • when // encountered, remainder of line ignored
    • works only on that line
  • Examples:

void main() {

int I; // Variable used in loops

char C; // No comment comment

10 of 19

Variable Declarations

  • In C++, variable declarations are not restricted to the beginnings of blocks (before any code)
    • you may interleave declarations/statements as needed
    • it is still good style to have declarations first
  • Example

void main() {

int I = 5;

printf(“Please enter J: “);

int J; // Not declared at the start

scanf(“%d”,&J);

11 of 19

Counter Variables in a For Loop

  • You can declare the variable(s) used in a for loop in the initialization section of the for loop
    • good when counter used in for loop only exists in for loop (variable is throw-away)
  • Example

for (int I = 0; I < 5; I++)

printf(“%d\n”,I);

  • Variable exists only during for loop (goes away when loop ends)

12 of 19

Initializing Global Variables

  • Not restricted to using constant literal values in initializing global variables, can use any evaluable expression
  • Example:

int rows = 5;

int cols = 6;

int size = rows * cols;

void main() {

...

13 of 19

Initializing Array Elements

  • When giving a list of initial array values in C++, you can use expressions that have to be evaluated
  • Values calculated at run-time before initialization done
  • Example:

void main() {

int n1, n2, n3;

int *nptr[] = { &n1, &n2, &n3 };

14 of 19

void*

  • In C it is legal to cast other pointers to and from a void *
  • In C++ this is an error, to cast you should use an explicit casting command
  • Example:

int N;

int *P = &N;

void *Q = P; // illegal in C++

void *R = (void *) P; // ok

15 of 19

NULL in C++

  • C++ does not use the value NULL, instead NULL is always 0 in C++, so we simply use 0
  • Example:

int *P = 0; // equivalent to

// setting P to NULL

  • Can check for a 0 pointer as if true/false:

if (!P) // P is 0 (NULL)

...

else // P is not 0 (non-NULL)

...

16 of 19

Tags and struct

  • When using struct command in C++ (and for other tagged types), can create type using tag format and not use tag in variable declaration:

struct MyType {

int A;

float B;

};

MyType V;

17 of 19

enum in C++

  • Enumerated types not directly represented as integers in C++
    • certain operations that are legal in C do not work in C++
  • Example:

void main() {

enum Color { red, blue, green };

Color c = red;

c = blue;

c = 1; // Error in C++

++c; // Error in C++

18 of 19

bool

  • C has no explicit type for true/false values
  • C++ introduces type bool (later versions of C++)
    • also adds two new bool literal constants true (1) and false (0)
  • Other integral types (int, char, etc.) are implicitly converted to bool when appropriate
    • non-zero values are converted to true
    • zero values are converted to false

19 of 19

bool operations

  • Operators requiring bool value(s) and producing a bool value:

&& (And), || (Or), ! (Not)

  • Relational operators (==, !=, <, >, <=, >=) produce bool values
  • Some statements expect expressions that produce bool values:

if (boolean_expression)

while (boolean_expression)

do … while (boolean_expression)

for ( ; boolean_expression; )