C++ Programming

NOTES ON C++ PROGRAMMING
Module 1: Pointers and Memory Management

NOTES ON C++ PROGRAMMING
Module 1: Pointers and Memory Management

TABLE OF CONTENTS
TABLE OF CONTENTS 1
OVERVIEW 4
BASIC MEMORY MANAGEMENT 5
GROUP ASSIGNMENT 6
INITIALIZATION 8
CONSTANTS 9
INCREMENT AND DECREMENT OPERATORS 10
ELSE-IF 13
SWITCH 14
LOOPS 15
EXAMPLES OF LOOPS 16
BREAK, CONTINUE 18
RETURN 19
FUNCTION DEFINITION: 21
VOID FUNCTIONS 22
FUNCTIONS RETURNING A VALUE 23
OVERVIEW

Algorithms:

A step-by-step sequence of instructions that describes how to perform a computation.

Answers the question "What method will you use to solve this computational problem?"

Flowcharts:

Provides a pictorial representation of the algorithm using the symbols.

Structure Charts:

Provides a pictorial representation of the modules contained in the program.

Programming Style:

Standard form:

Function names starts in column 1 and is placed with the required parentheses on a line by itself.

The opening brace of the function body follows on the next line and is placed under the first letter of the function name.

The closing brace is placed by itself in column 1 as the last line of the function.

The final form of your programs should be consistent and should always serve as an aid to the reading and understanding of your programs.

Comments:

Explanatory remarks made within a program. Help clarify what the complete program is about, what a specific group of statements is meant to accomplish, or what one line is intended to do.

Top-Down Program Development:

1. Determine the desired output items that the program must produce.
2. Determine the input items
3. Design the program as follows:
a. Select an algorithm for transforming the input items into the desired outputs.
b. Check the chosen algorithm, by hand, using specific input values.
4. Code the algorithm into C.
5. Test the program using selected test data.
BASIC MEMORY MANAGEMENT

Space set aside for the variable:

Characters 1 byte (8 bits)
Pointers 4 bytes
Integers 2 bytes (16 bits) or 4 bytes (32 bits)
Short int or short 2 bytes
Unsigned int or unsigned 2 bytes
Long Integers 4 bytes
Floats 4 bytes(single precision, about 7 decimal places)
Doubles 8 bytes(double precision, about 15 decimal places)


Type Space

a) double *values; __________________ ________________________

b) long x[1000]; __________________ ________________________

c) char *s = "string"; __________________ ________________________

d) char s[] = "string"; __________________ ________________________

e) char *name [10]; __________________ ________________________

f) int y; __________________ ________________________

GROUP ASSIGNMENT

This assignment is to reinforce the idea of the big picture.
Assignment:
Your consulting firm has been hired to develop computer application(s) for a book store that will be opening in a local shopping center in 6 months. These applications will help the owner keep track of employee payroll, inventory, special orders, etc.
Your group should decide the following:
1. How many different applications do you need to write?
2. Can you use applications that have already been developed?
3. How are you going to divide up the project?

Turn in the following:
1. Structure charts for the applications you need to develop inhouse.
2. List of inputs and outputs for each applications.
3. List of variables and memory requirements for each application.

Be prepared to:
1. Describe your applications.
2. Why did you select these applications.
3. Defend your logic.
Scope

Scope of a variable is the part of the program where it can be used.

An "automatic" variable is declared at the beginning of a function or in the functionís argument list and its scope is limited to the function it is declared in. Two automatic variables of the same name but in different functions are unrelated.

An "external" variable is declared outside any function and its scope is from the point of declaration to the end of the file.



INITIALIZATION

External (and static) variables are initialized to zero by default.

Automatic variables
- contain undefined values unless they are initialized.
- lose their values when the call to the function they are declared in is over.

CONSTANTS

integer constant 1 345 -10
character constant \'a\' \'t\' (in single quotes)
real constant 2.3 3e10 .12E-5
string constant "abc" "a" (in double quotes)

Arithmetic Operators

* , /, %

+ , -

Relational Operators

<, <=, >, >=

== is equal to
!= is not equal to

Logical Operators

! NOT

&& AND

|| OR
INCREMENT AND DECREMENT OPERATORS

++, --

Assignment Operators

var op= expr

is equivalent to

var = var op expr

Conditional Expressions

expr1 ? expr2 : expr3

expr1 is first evaluated,

if expr1 is true, expr2 is evaluated

otherwise, expr3 is evaluated
TYPE CONVERSION

IMPLICIT TYPE CONVERSION

STEP 1
All \'char\' (and \'short\') variables are converted to \'int\'

STEP 2
1. If there are any operations with operands of different type

\'lower\' type is promoted to \'higher\' type

hierarchy: int < float < double

2. if its an assignment statement, the result is converted to the type of the assigned variable

Explicit Type Conversion

The type can be explicitly converted by \'type-casting\':

(type)expression

Control Flow
if-else

if (expression)
statementA;
else
statementB;


if (expression)

statementA1;
statementA2;
}
else

statementB;
}


if (expressionA)
statementA1;
if (expressionB)
statementB1;
else
statementA2;
ELSE-IF

if (expression1)
statement1;
else if (expression2)
statement2;
.
.
.
else if (expressionN)
statementN;

else
default_statement;


SWITCH

switch (integer expression)

case const1: statement11;
statement12;
break;
case const2: statement2;
break;
.
.
.
default: default_statement;
break;
}

LOOPS
for
while
do-while
____________________________________________________

for (i = 0; i < MAX; i++)
process(a[i]);
____________________________________________________

i = 0;
while (i < MAX)

process(a[i]);
i++;
}
____________________________________________________

i = 0;
do

process(a[i]);
.
.
.
i++;.
} while (i < MAX);
EXAMPLES OF LOOPS
for (;;)
; (does nothing forever)

for (c = getchar(); c != \'n\'; c = getchar() )
process(c);
___________________________________
for