Simple Data Types Built-In and User Defined Chapter 10.

31
Simple Data Types Simple Data Types Built-In and User Defined Chapter 10

Transcript of Simple Data Types Built-In and User Defined Chapter 10.

Page 1: Simple Data Types Built-In and User Defined Chapter 10.

Simple Data TypesSimple Data Types

Built-In

and

User DefinedChapter 10

Page 2: Simple Data Types Built-In and User Defined Chapter 10.

2

Built-In Simple TypesBuilt-In Simple Types

• Simple (or "atomic")

• Each value is indivisible, a single entity

• Examples– int, char, float

• NOT simple types– strings, arrays, structs

Page 3: Simple Data Types Built-In and User Defined Chapter 10.

3

Characteristics of Simple TypesCharacteristics of Simple Types

• An object of a given type uses a specific number of bytes– sizeof( ) function will give how many– int => 2 bytes– float => 4 bytes (on our Borland C++)

• An object of a simple type has a range of values– low to high– range is limited by size allocated to the type

Page 4: Simple Data Types Built-In and User Defined Chapter 10.

4

Integral TypesIntegral Types

• Include– char, short, int, long – can be signed or unsigned– signed integer stored in 2 bytes– range is -32768 … 32767

• Constants can be specified in– decimal, octal, hex– normally in decimal

Page 5: Simple Data Types Built-In and User Defined Chapter 10.

5

Floating Point TypesFloating Point Types

• Stored in scientific notation

• Include– float, double, long double

• Float stored in 8 bytes– 5 - 6 significant digits– range 3.4 E 38

Page 6: Simple Data Types Built-In and User Defined Chapter 10.

6Assignment Operators & Assignment Operators & ExpressionsExpressions

• Assignment operator =– Syntax : variable = expression;

• Statement has– a value of the expression– value stored in variable location

• Value previously stored in variable is now wiped out

Page 7: Simple Data Types Built-In and User Defined Chapter 10.

7

Combined Assignment OperatorsCombined Assignment Operators

• Considera += 5; // same as a = a + 5;

• Similar results with-= *= /= %=

• The symbol += is considered a binary operator– syntax requires a variable on the left– an expression on the right

Page 8: Simple Data Types Built-In and User Defined Chapter 10.

8Increment & Decrement Increment & Decrement OperatorsOperators

• a++; // a unary operator which increments a by 1same as a = a + 1; or a += 1;

• Similar results with --

• ++ and -- work only on variables … not constants

• Consider cout << a++; and cout << ++a;– post increment prints, then increments– pre-increment increments first, then prints

Page 9: Simple Data Types Built-In and User Defined Chapter 10.

9

Bitwise OperatorsBitwise Operators

• Operators <<, >> , & , and |

• Used for manipulating individual bits within memory

• << and >> for shifting bits

• Most of what we do will use && and || for logical AND and OR

Page 10: Simple Data Types Built-In and User Defined Chapter 10.

10

The Cast OperatorThe Cast Operator

• Wen mixing data types in expressions, implicit type casting occurs

• Example int x; float f;Consider x = f;Versus f = x;

• Text suggests explicit type castingx = (int)f; // use the type in ( ) f = float(x); // use the type as a function

Page 11: Simple Data Types Built-In and User Defined Chapter 10.

11

The sizeof OperatorThe sizeof Operator

• A unary operator– yields size (in bytes) of some variable or data

type– almost acts as a function

• cout << sizeof (part_struct);• Often used for arrays or structs where you

need to specify number of bytes to be read in or sent to a file

Page 12: Simple Data Types Built-In and User Defined Chapter 10.

12

The Selection Operator The Selection Operator ? :? :

• A trinary operator -- requires three operands

• Exampleamt = (x < 5) ? y : z;

• If x < 5 then amt gets value stored in yotherwise gets value stored in z

Page 13: Simple Data Types Built-In and User Defined Chapter 10.

13

Operator PrecedenceOperator Precedence

• Similar to algebraic precedence– Parentheses, unary, mult, div, addn, subt– Note page A1 Appendix B

• Note also that some are L-> R, others are R-> L:

Page 14: Simple Data Types Built-In and User Defined Chapter 10.

14

Character DataCharacter Data

• Char is actual considered a subset of int– uses 1 byte of memory

• Since it is subset of int, it can store numbers or characterschar c1, c2;c1 = 12;c2 = 'A' // Both are legal

Page 15: Simple Data Types Built-In and User Defined Chapter 10.

15

Character SetsCharacter Sets

• External representation => what you see printed on screen or printer

• Internal representation => bit form for storing the data in the computer memory

• Most machines we encounter will use ASCII character set

• Other machines use EBCDIC

• Appendix D, pg A9 has examples of both

Page 16: Simple Data Types Built-In and User Defined Chapter 10.

16

C++ char ConstantsC++ char Constants

• Single printable character enclosed by single quotes'A' '7' '$'– can be letters, numerals, or symbols

• Control characters (non printable characters) used to control output'\n' for newline (same as endl)'\f' for form feed'\t' for tab'\a' for beep

Page 17: Simple Data Types Built-In and User Defined Chapter 10.

17

Comparing CharactersComparing Characters

• Use comparison operators< == >= etc.

• Consider if (ch >= 'a' && ch <= 'z') ...This checks to see if ch is in the lower case characters

• Equivalent is if (islower (ch)) …– found in ctype.h

• Check out character-testing library functions in Appendix C, pgs A2-A4

Page 18: Simple Data Types Built-In and User Defined Chapter 10.

18Convert Digit Characters to Convert Digit Characters to IntegersIntegers

• Possible to do arithmetic with characters– they are basically, integers

• Examplechar ch;cin >> ch;num = ch - '0';

Page 19: Simple Data Types Built-In and User Defined Chapter 10.

19Converting Lowercase to Converting Lowercase to UppercaseUppercase

• From ctype.h header file, use functions providedch = toupper (ch);ch = tolower(ch):

• Change only made if ch "needs" to be changed– if it is already uppercase, toupper( ) does

nothing

Page 20: Simple Data Types Built-In and User Defined Chapter 10.

20Representing Floating Point Representing Floating Point NumbersNumbers

• Precision of 5 or 6 significant digits

• Represented internally in scientific notationFour bytes will store– sign bit for the number– 5 or 6 significant digits– sign bit for the power 38 range for the power

Page 21: Simple Data Types Built-In and User Defined Chapter 10.

21Arithmetic with Floating Point Arithmetic with Floating Point NumbersNumbers

• May lose accuracy due to round off error– especially when combining very large with

very small numbers

• Warnings– don't use floats to control loops– don't compare floats for equality, rather

compare for closenessif ( abs (a - b) < 0.0001) …

Page 22: Simple Data Types Built-In and User Defined Chapter 10.

22Implementation of Float on a Implementation of Float on a ComputerComputer

• Example: 1.2345E-4

Significant digits: from 1st nonzero digit on left to last non zero digit on right

Significant digits: from 1st nonzero digit on left to last non zero digit on right

Precision: max number of significant

digits

Precision: max number of significant

digits

Representational Error:

The arithmetic error when

precision of true results greater

than precision for machine

Representational Error:

The arithmetic error when

precision of true results greater

than precision for machine

1.200000000000345

Page 23: Simple Data Types Built-In and User Defined Chapter 10.

23Implementation of Float on a Implementation of Float on a ComputerComputer

• Underflow– results of calculation too small to be

represented1.3E10 + 4.5E-10

• Overflow– value of calculation too large to be stored

5.6E20 * 7.8E30– C++ does not define results when this occurs,

usually garbage values

Page 24: Simple Data Types Built-In and User Defined Chapter 10.

24

The Typedef StatementThe Typedef Statement

• Syntax:typedef existing_type_name new_type_name;

• Example:typedef int Boolean;

• Does not really create a new type– is a valuable tool for writing self-documenting

programs

Page 25: Simple Data Types Built-In and User Defined Chapter 10.

25

Enumerated TypesEnumerated Types

• Possible to create a new type by simply listing (enumerating) the constants which make up the type

• Example:enum daysOfWeek (SUN, MON, TUE, WED, THU, FRI, SAT);daysOfWeek today, tomorrow, work_day;work_day = MON;

• C++ represents these internally as numbers (0 .. 6 for our example)

Page 26: Simple Data Types Built-In and User Defined Chapter 10.

26

Enumerated TypesEnumerated Types

• Incrementing variables of an enumerated type

• Do NOT use workaday += 1; NOR today++;

• Instead, use explicit type conversiontoday = daysOfWeek (today + 1);

Page 27: Simple Data Types Built-In and User Defined Chapter 10.

27

Enumerated TypesEnumerated Types

• Comparison– normal, OK– in order of the enumeration definition

• I/O– generally not possible to do directly– can be sort of done, indirectly

• Used primarily for program control, branching, looping

• Possible to have functions return an enumerated type

Page 28: Simple Data Types Built-In and User Defined Chapter 10.

28Named and Anonymous Data Named and Anonymous Data TypesTypes

• Named Type– user defined type– declaration includes typedef

– As with daysOfWeek or Boolean• Anonymous Type

• does not have an associated typeenum (MILD, MEDIUM, HOT) salsa_sizzle;

• variable declared without typedef

Page 29: Simple Data Types Built-In and User Defined Chapter 10.

29

User-Written Header FilesUser-Written Header Files

• For your collection of handy identifiers– type such as our Boolean type definition

• use #include "bool.h"– note use of " " rather than < >

• Tells the computer to go looking at the logged directory for bool.h file and include/insert it into the source code.

Page 30: Simple Data Types Built-In and User Defined Chapter 10.

30

Type Coercion in ExpressionsType Coercion in Expressions

• If two operands are of different types– one is temporarily "promoted" or "widened" to

match the data type of the otherint x = 5;float f = 1.234, amt = + f;

• Another example:– char or short operands promoted to intint x = 5 + 'Q';

Expression result is of type int

Expression result is of type int

Page 31: Simple Data Types Built-In and User Defined Chapter 10.

31

Type Coercion in AssignmentsType Coercion in Assignments

• Can result in "demotion" or "narrowing"• Assigning a float to an integer variable

int x = 3.456;

– decimal portion of float is lost

• This loss of data can be considered a problem or a feature!

x | 3x | 3

Memory