1 / 24

Basics and Review

Basics and Review. CS212. First Look at ADTs & Implementations. For a programming task we must identify The collection of data items Basic operations to be performed on them Taken together (data items & operations) are called an A bstract D ata T ype (ADT) Implementation

Download Presentation

Basics and Review

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basics and Review CS212

  2. First Look at ADTs & Implementations • For a programming task we must identify • The collection of data items • Basic operations to be performed on them • Taken together (data items & operations) • are called an Abstract Data Type (ADT) • Implementation • Storage structures for the data items • Algorithms for the operations

  3. Simple Data TypesIntegers • Unsigned integers • unsigned short, unsigned, unsigned long • Sometimes called whole numbers • Represented in 2, 4, or 8 bytes • Signed integers • short, int, long • represented in two's complement

  4. Two's Complement Representation • For nonnegative n: • Use ordinary base-two representation with leading (sign) bit 0 • For n < 0 • Find w-bit base-2 representation of |n| • Complement each bit. • Add 1

  5. Two's Complement Representation • Example: –88 • 88 as a 16-bit base-two number0000000001011000 • Complement this bit string1111111110100111 • Add 11111111110101000 WHY?

  6. Two's Complement Representation • Works well for arithmetic computations • 5 + –6: • 0000000000000101 • +1111111111111010 1111111111111111 What gets done to the bits to give this answer?

  7. Problems with Integer Representation • Limited Capacity — a finite number of bits • An operation can produce a value that requires more bits than maximum number allowed.This is called overflow . • None of these is a perfect representation of (mathematical) integers • Can only store a finite (sub)range of them. • See Demonstrations Fig. 2.1, Fig. 2.2

  8. Simple Data TypesReal Data • Types float and double in C and C++ • Use single precision (IEEE Floating-Point) • Store: • sign of mantissa in leftmost bit (0 = +, 1 = – ) • represent exponent in next 8 bits (exponent + 127) • bits b2b3 . . .b24 mantissa in rightmost 23 bits. • Need not store b1 — (we know it's 1)

  9. Real Data • Example: 22.625 = 10110.1012 • Floating point form:1.01101012 * 24

  10. Problems with Real Representation • Exponent overflow and underflow • Round off error • Most reals do not have terminating binary representations. Example: 0.7 = (0.10110011001100110011001100. . .)2

  11. Problems with Real Representation • Round off error may be compounded in a sequence of operations. • Real-world example – Gulf War Patriot missile guidance affected by accumulated round off • Be careful in comparing reals • with == and !=. • Instead use comparison for closenessif (abs (x – 12.34) < 0.001) …

  12. Simple Data TypesCharacter Data • 1 byte for ASCII, EBCDIC • 2 bytes for Unicode (java)or C++ wide character type • Operations ==, <, >, etc. Using numeric code

  13. Simple Data TypesBoolean Data • Values { false, true } • Could be stored in bits, usually use a byte • Operations &&, || • In C++ • bool type • int (boolVal) evaluates to • 0 if false • 1 if true

  14. Programmer-Defined Data Types • Typedefs • Mechanism usable to create a new type • Give new name to existing type • Example: typedef double real; • Now eitherdoubleorrealcan be used.

  15. Programmer-Defined Data Types • Enumerations • Mechanism for creating types whose literals are identifiers • Each identifier associated with unique integer

  16. Programmer-Defined Data Types • Also possible to specify explicit values to give the enumeratorsenum NumberBase { BINARY = 2, OCTAL = 8, DECIMAL = 10, HEXADECIMAL = 16};

  17. 27 Pointers • When regular variables are declared • Memory allocated for value of specified type • Variable name associated with that memory location • Memory initialized with values provided (if any)

  18. Pointers • Pointer Variables • value stored is a memory address • Note sample program, Fig. 2.4 • Declares variables that can store int addresses and double variables • Displays the addresses

  19. Basic Pointer Operations • Dereferencing and indirection • Pointer variable stores address of a location • Accessing contents of that location requires dereferencing operator * • Note program exampleFig 2.5

  20. Basic Pointer Operations • Assignment • Pointer variables can be assigned the values of other pointer variables bound to same type

  21. Basic Pointer Operations • Consider *jPtr = 44; • Changes value that both pointers reference • Not good programming practice, hard to debug • Known as aliasing problem

  22. Basic Pointer Operations • Comparison • Relational operators used to compare two pointers • Must be bound to same type • Most common = = and != • The null address may be compared with any pointer variable

  23. Dynamic Memory Allocation • The new operation • Example int * intPtr; intPtr = new int; • An anonymous variable • Cannot be accessed directly

  24. Pointer Arguments • Pointers can be passed as arguments to functions • This is logically equivalent to reference parameters • In fact, this is how early C++ compilers accomplished reference parameters

More Related