chapter 4 literals, variables and constants. #page2 4.1 literals any numeric literal starting with...

Post on 18-Jan-2016

231 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Chapter 4

Literals, Variables and

Constants

#Page 2

4.1 Literals

Any numeric literal starting with 0x specifies that the following is a hexadecimal value

Any numeric literal starting with 0 is an octal value

#Page 3

4.1 Literals

Character literals - single characters placed between apostrophes (‘)

String literals - one or more characters placed between quotes ( “ )

Usually, treat single character as a character literal

#Page 4

4.2 Escape Sequences

Escape sequence - exception to the rule that literals are interpreted exactly as they are written

Escape sequences start with a backslash (\) followed by a single character

Two types of escape sequences• Character• Numeric

#Page 5

4.2.1 Character Escape Sequences

Can be embedded in a string literal or be used as a character literal

Null character - a special character used, among other things, to give a character variable an initial value

EscapeSequence

Character Representation

\nCarriage return and line feed (new line)

\tTab (eight characters wide)

\" Double quote

\' Single quote

\\ Backslash

\0 Null character

#Page 6

4.2.1 Character Escape Sequences

cout << "This is on one line\n This is on another\n";cout << "\tHe said, \"Stop!\"";

// OutputThis is on one line This is on another He said, "Stop!"

cout << "This is an apostrophe: ";

cout << '\'';

// OutputThis is an apostrophe: '

#Page 7

4.3 Variable Declarations

Variable - a placeholder whose contents can change

Everything must be declared before it is used

#Page 8

4.3 Variable Declarations

A variable declaration has several purposes:• informs operating system how much internal memory

(RAM) the variable will need

• identifies the memory address to use for that variable

• identifies the type of data to be stored in that physical memory location

• indicates what operations (i.e., +, -, /, etc.) can be performed on the data contained within that variable

#Page 9

4.3 Variable Declarations

Basic declaration syntax<data type> identifier;

Data types discussed in the next section

Identifier - the variable name

int salary; // Notice the semicolon

#Page 10

4.3 Variable Declarations

Multiple variables can be declared in the same statement

int age, iq, shoe_size;

Variables can be declared anywhere as long as they are declared before used

#Page 11

4.3.1 Variable’s Initial Value

When declared, its initial value is unknown

Important to provide an initial value for all variables

Initialization - process of giving a variable a value during its declaration - resulting in the variable always being in a known state

int sum = 0;int Ralphs_age = RETIREMENT_AGE;int Randys_age = Ralphs_age - 26;

#Page 12

4.3.1 Variable’s Initial Value

Can initialize a variable to another variable’s value

<data type> identifier2 = identifier;

int base_salary = 30000;

int num_dependents, staff_salary = base_salary;

#Page 13

4.3.1 Variable’s Initial Value

Another form of initialization - uses parentheses instead of the assignment operator

int base_salary( 30000 );

int num_dependents, staff_salary( base_salary );

#Page 14

4.3.2 Initialization

Always know the state, or value, of all variables

Variables should always be initialized

Variables, even characters, are usually initialized to 0

#Page 15

4.3.3 Data Types

A data type:• Specifies how much memory a variable will

take up in memory

• Indicates operations that can be performed on the variable

Primitive data type - data type whose definition is built into the language

#Page 16

4.3.3 Data TypesC++

Data TypeDescription of Data

Memory Allocated

Range

char Character 1 byte -128 to 127

int Integer OS Dependent OS Dependent

float Floating point (decimal) 4 bytes3.4E +/- 38 with 7 digits of accuracy

doubleDouble precision floatingpoint

8 bytes1.7E +/- 308 with 15 digits of accuracy

bool Boolean data 1 byte true or false

short (or short int)

Smaller integer 2 bytes –32,768 to 32,767

long Larger integer 4 bytes–2,147,483,648 to2,147,483,647

long double Larger double 8 bytes1.7E +/- 308 with 15 digits of accuracy

#Page 17

4.3.3 Data Types

Boolean value - either true or false

Size of an integer (int) - dependent upon the operating system• On a 16-bit operation system such as Windows

3.x, an integer is 16 bits, or 2 bytes

• On a 32-bit operation system (Windows XP), an integer is 32 bits, or 4 bytes

#Page 18

4.3.3 Data Types

Size of an integer (int) - dependent upon the operating system (continued)

• On a 64-bit operation system - some versions of Windows Vista - an integer is 64 bits, or 8 bytes

#Page 19

4.3.3 Data Types

The amount of memory an integer requires determines the range of values

In a 32-bit operating system - since a bit can have one of two values - there will be 232 different possibilities

#Page 20

4.3.3 Data Types

Most significant bit is used as a sign bit• Zero meaning the number is positive

• One means its negative

• Therefore, left with 31 bits, or 231 different values

#Page 21

4.3.3 Data TypesUnsigned prefix for integral data types - the

sign bit is used for data instead of the sign

Integral data type - only holds whole numbers• A char data type is an integral data type • Under the hood a char holds an ASCII number

representing a character

Use smallest data type that will work with the data

#Page 22

4.3.4 The sizeof Operator

sizeof operator - determines number of bytes required for a specific data type

// Part 1cout << sizeof( char ) << '\n';

// Part 2unsigned short age = 21; cout << sizeof( age ) << '\n';

// Output12

#Page 23

4.3.5 Numeric Literal Suffixes

Numeric literal suffix - special character used to specify the type of literal

Numeric literal with an F suffix specifies a float, while L specifies a long value

#Page 24

4.3.5 Numeric Literal Suffixes

Either case will work for suffixes – but use capitals to avoid confusion between lower case l and a numeric 1

float money = 123.45F;// Flt pt (4 bytes) numericfloat avg = 95.5f; // literals are treated as long flag = 0L; // doubles (8 bytes) // Last character is not a one but a lowercase llong salary = 50000l;

#Page 25

4.3.6 Naming Rules

Variable naming rules:• Only made up of letters, digits and underscores

• Can’t start with a digit (must begin with a letter or underscore)

• Can’t be a reserved word (if, else, while, etc.)

Variable names should be descriptive, aiding in code readability

#Page 26

4.4 ASCII Characters

ASCII chart - associates characters with a number

American Standard Code for Information Interchange (ASCII)

#Page 27

4.4 ASCII Characters

Allow for the storage of characters in memory

Some important ASCII values:• 65 = ‘A’• 97 = ‘a’• 32 = ‘ ’• 48 = ‘0’

#Page 28

4.4 ASCII Characters

To display characters given an ASCII value use numeric escape sequences

cout << "Hexadecimal ASCII character: " << "\x4E" << endl;cout << "Octal ASCII character: " << "\77" << endl;

cout << "Hexadecimal number: " << 0x4E << endl;cout << "Octal number: " << 077 << endl;

//OutputHexadecimal ASCII character: NOctal ASCII character: ?Hexadecimal number: 78Octal number: 63

#Page 29

4.5 Constants

Constants - identifiers that have a value that will never change• Aid in code readability and maintainability

• Should have a name that is descriptive of their purpose

const int SPEED_LIMIT = 65;const int RETIREMENT_AGE = 67;const double PI = 3.1416;

#Page 30

4.6 const versus #define

To declare constants use the #define preprocessor directive

#define SPEED_LIMIT 65 // Notice no = or semicolons#define RETIREMENT_AGE 67#define PI 3.14

Preprocessor searches through the code replacing the identifier with the value associated with it

#Page 31

4.6 const versus #define

#define statements can cause compilation errors while looking syntactically correct

#define PI = 3.14; // Notice the = and ;

int main(){ int circumference = 0, radius = 5; circumference = 2 * PI * radius; return 0;}

#Page 32

4.6 const versus #define

Although the statement looks correct, it causes a compilation error

circumference = 2 * PI * radius;

Error becomes clearer if we show what was created by the preprocessor

circumference = 2 * = 3.14; * radius;

#Page 33

4.6 const versus #define

Use const versus #define because:

• const uses a data type and participates in type checking

• const has scope

#Page 34

4.7 Bringing It All Together

Useful to picture how variables and constants might be placed in memory

Examine the declarations below:

short int age;char grade = 'A';float gpa(0.0);const float PI = 3.14;

#Page 35

4.7 Bringing It All Together

They may be placed in memory as shown below:

? ? A 0 0 0 0 3 . 1 4

agegrade

gpa PI

#Page 36

Remember, pseudocode is a language independent representation of an algorithm

Using data types has a tendency to make the solution to closely tied to C++ (or any other language)

4.8 Variable Declarations in Pseudocode

#Page 37

4.8 Variable Declarations in Pseudocode

Do not put variable declarations in pseudocode

#includes are not specified in pseudocode and are considered necessary overhead to the algorithm

4.10 C – The Differences• C doesn’t have a Boolean data type (and no true or false)

• Doesn’t allow for the use of parentheses to initialize variables or constants

• In older versions of C, variables must be declared as the first statement in a block of code (after an opening curly brace)

4.10 C – The Differences

Current C standard allows a programmer to use const to create constants

Legacy C programs written must use the #define to create constants

top related