410 likes | 435 Views
Types. Chapter 2. Objectives. Observe types provided by C++ Literals of these types Explain syntax rules for identifier names Study variables and constants What they are How they differ How to declare How to use Investigate internal representations
E N D
Types Chapter 2
Objectives • Observe types provided by C++ • Literals of these types • Explain syntax rules for identifier names • Study variables and constants • What they are • How they differ • How to declare • How to use • Investigate internal representations • First look at class attribute variables C++ An Introduction to Computing, 3rd ed.
Problem We are given the task of writing a program to help the payroll office. • They compute pay for university student workers • Students are all paid an hourly rate of $6.75 Consider what behavior we desire for the program. C++ An Introduction to Computing, 3rd ed.
Behavior For student payroll calculation:Enter student name (last, first, initial): Smart, Osgood J.Enter ID number: 123456Enter hours worked: 9.99Student: Osgood J. Smart ID: 123456 Pay = $99.99 C++ An Introduction to Computing, 3rd ed.
Objects C++ An Introduction to Computing, 3rd ed.
Operations • Display string (prompts, labels, name) • Read a string (lastName, firstName) • Read a char (middleInitial) • Read an integer (idNumber) • Read a real value (hoursWorked) • Compute pay = hoursWorked * HOURLY_WAGE • Display an integer (idNumber) • Display a real value (pay) C++ An Introduction to Computing, 3rd ed.
Algorithm 1. Declare the constant HOURLY_WAGE. 2. Display to cout a prompt for the student’s name (last, first, middle initial). 3. Read two strings and a character from cin into lastName, firstName, middleInitial. 4. Display to cout a prompt for the student’s id number. 5. Read an integer from cin into idNumber. 6. Display to cout a prompt for the student’s hours. 7. Read a real value from cin into hoursWorked. 8. Compute pay = hoursWorked * HOURLY_WAGE. 9. Display firstName, lastName, middleInitial, idNumber, and pay, with descriptive labels. C++ An Introduction to Computing, 3rd ed.
Coding, Execution, Testing • Create a program stub • Opening documentation • Compiler directives for library includes • An empty main function • Convert each step of algorithm into code • Add declaration for each object not already declared • Declaration includes object type and name. • Observe source code, Fig 2.1 C++ An Introduction to Computing, 3rd ed.
Types and Declarations Fundamental Types • Integers (whole numbers, negatives) • int • Integer variations • short, long, unsigned • Reals (fractional numbers) • float, double, long double • Characters (letters, digits, symbols, punctuation) • char • Booleans (logical values, true and false) • bool C++ An Introduction to Computing, 3rd ed.
Integer • Memory used for an int depends on word size used by the hardware • Usually 16, 32, or 64 bits used • 16 Bits (2 bytes) – shortint • Range -32768 … 32767 • 32bits (4 bytes) – longint (or long) • Range -2137483648 … 2137483647 One bit used for the sign C++ An Introduction to Computing, 3rd ed.
Integer • Integers can be specified as unsigned • Then the sign bit not needed • Gives larger positive range • unsigned short (16 bits) • Range 0 … 65535 • unsigned long (32 bits) • Range 0 … 4294967295 C++ An Introduction to Computing, 3rd ed.
Integer Literals • Decimal integers • Sequence of digits without a decimal point • Octal integers • Sequence of digits beginning with a 0 • Base 8 • Hexadecimal integers • Sequence of digits beginning with an X • Base 16 C++ An Introduction to Computing, 3rd ed.
Reals • float • Usually a 32-bit value (4 bytes) • double • A 64-bit value (8 bytes) • long double • A 96- or 128-bit value The programmer should choose which type based on degree of precision desired for the object C++ An Introduction to Computing, 3rd ed.
Reals • Values are stored internally in scientific notation • A sign for the number • Significant digits of the number • The power of 10 • Sign for the power C++ An Introduction to Computing, 3rd ed.
Reals • Literal values • A sequence of digits with leading sign, containing a decimal point • Scientific notation – any one of the following forms 0.12e11 1.2E10 12.0E9 12.e9 12E9 C++ An Introduction to Computing, 3rd ed.
Characters • char type • Represents individual characters • See ASCII character set in Appendix A • Characters represented in memory by numeric values • Character literals • Characters enclosed in single quotes'X' '7' '>' 'e' C++ An Introduction to Computing, 3rd ed.
Characters • Escape characters • A backslash \ combined with another character hold special meaning C++ An Introduction to Computing, 3rd ed.
Strings • Related to characters • A sequence of characters • Enclosed in double quotes"Hi Mom" • Can include escape characters"\nThe answer is " • Warning • "A" is a string literal • 'A' is a character literal C++ An Introduction to Computing, 3rd ed.
Identifiers • Names given to software objects • Rules: • Must not be C++ keywordsint, if, while, … • Must start with a letter (or the underscore _ ) • Followed by numerals, letters, underscore • Recommendation • Use meaningful identifiers • Go for longer names, rather than shorter C++ An Introduction to Computing, 3rd ed.
Identifiers • C++ is case sensitive • firstName is not the same as firstname • Typical usage • Constants are all caps PI • Variables • Start with lower case • Capitalize first letter of successive wordsmonthlyElectricCharge C++ An Introduction to Computing, 3rd ed.
Object Categories There are three kinds of objects: • Literals: • unnamed objects • having a value • (0, -3, 2.5, 2.998e8, ‘A’, “Hello\n”, ...) • Variables: • named objects • values can change during program execution • Constants: • named objects • values do not change during program execution C++ An Introduction to Computing, 3rd ed.
Literals • int literals are whole numbers: -27, 0, 4, +4 • double literals are real numbers, and can be: • fixed-point: -0.333, 0.5, 1.414, ... • floating-point: 2.998e8, 0.2998e9, ... • There are just twobool literals: false, true • char literals are single ASCII characters: ‘A’, ‘a’, ‘9’, ‘$’, ‘?’, ... • string literals are ASCII character sequences: “Hello”, “Goodbye”, “Goodbye\n”, ... C++ An Introduction to Computing, 3rd ed.
Constants • Declaration of software objects that remain constant const double HOURLY_WAGE = 6.75; • Rules • const is a keyword • Specify type • Specify the name (caps recommended) • Must be initialized with value at declaration C++ An Introduction to Computing, 3rd ed.
Constants • Reasons to use constants • Improve readability of the source code • Facilitate program modification • Good programming practice • Place all constant declarations at beginning of function where used C++ An Introduction to Computing, 3rd ed.
Variables • Give a name to a memory location • Compiler accesses specific memory location when program uses a given variable • Refer to objects in the program for which the value can change • Declarationtype variableName; // ortype variableName = initializer_expression; C++ An Introduction to Computing, 3rd ed.
Variables • Variables Declaration • Can be either initialized or uninitialized... • If variable is uninitialized Contents must be considered "garbage value" • Examples: intage = 18; double GPA = 3.25, credits; char letterGrade = ‘A’; bool ok, done = false; C++ An Introduction to Computing, 3rd ed.
int Representation • Integers are often represented in the twos-complement format, • High-order bit indicates the number’s sign: 210 = 00000000000000102 110 = 00000000000000012 010 = 00000000000000002 -110 = 11111111111111112 -210 = 11111111111111102 • We show 16 bits, but 32 or 64 are common. C++ An Introduction to Computing, 3rd ed.
Twos-Complement Algorithm to find twos-complement representation of a negative number: • Select your number (e.g., -12) • Represent its absolute value in binary: (0000000000001100) • Invert the bits (1111111111110011) • Add 1 (1111111111110100) C++ An Introduction to Computing, 3rd ed.
unsigned Objects • Some objects have values that are never negative, • C++ provides the unsigned type: 00000000000000002 = 010 00000000000000012 = 110 00000000000000102 = 210 ... 11111111111111102 = 6553410 11111111111111112 = 6553510 • No sign bit, numbers can be twice as big. C++ An Introduction to Computing, 3rd ed.
int vs. unsigned • Using 32 bits, int values range from • -231 (-2147483648) to 231-1 (2147483647), • unsigned values range from • 0 to 232-1 (4294967295). • An int value “loses” one of its bits to the sign, • Maximum int value is about half of the maximum unsigned value. C++ An Introduction to Computing, 3rd ed.
exponent (11 bits) sign (1 bit) mantissa (52 bits) double Objects • Real values are often represented in 64 bits • Use the IEEE floating point standard: C++ An Introduction to Computing, 3rd ed.
double Objects • Overflow • Exponent is too large • Not enough bits to represent • Underflow • Number is so small • Not enough bits to represent negative exponent C++ An Introduction to Computing, 3rd ed.
char and String Objects • Characters represented internally with binary codes • 8 bits – only 128 characters • Strings stored as a sequence of these binary codes C++ An Introduction to Computing, 3rd ed.
char and String Objects • Unicode uses 16 bit codes • Possible to represent more than 65,000 characters • Can includespecialcharacters C++ An Introduction to Computing, 3rd ed.
Booleans • Only two values • true and false • true stored as 1 • Anything non zero will be interpreted as true • false stored as 0 • Could be stored in a single bit • Usually stored in a word or byte C++ An Introduction to Computing, 3rd ed.
OBJECTive Thinking:Attribute Variables • Represent complicated objects in a program by using a class • Must first design and build the class • Then use that class as a type to declare the object(s) C++ An Introduction to Computing, 3rd ed.
Must be a valid identifier C++ Keywords Class Structure • Declaration: class className { public: // declare operations private: // declare attributes }; C++ An Introduction to Computing, 3rd ed.
This declaration stored in the file "sphere.h" All three sphere attributes now wrapped in a single package – the Sphere object. Attribute Variables • Attribute variables are usually specified as private classSphere { public: ... Sphere-operation declarations go here private: double myRadius, myDensity, myWeight; }; C++ An Introduction to Computing, 3rd ed.
Declaring Sphere Objects • Specify the include of the "Sphere.h" file • Declare as many sphere objects as needed. #include "Sphere.h" int main() { Sphere oneSphere, anotherSphere; . . . } C++ An Introduction to Computing, 3rd ed.
Declaring Sphere Objects • Each of the sphere objects will have space within them for the three sphere attributes C++ An Introduction to Computing, 3rd ed.
Declaring Sphere Objects • A class object itself can contain class objects as an attribute C++ An Introduction to Computing, 3rd ed.