+ All Categories
Home > Documents > 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures...

1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures...

Date post: 05-Jan-2016
Category:
Upload: shavonne-mccarthy
View: 213 times
Download: 0 times
Share this document with a friend
26
1 Chapter 11 Structured Data
Transcript
Page 1: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

1

Chapter 11

Structured Data

Page 2: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

2

Topics

10.1 Abstract Data Types

10.2 Combining Data into Structures

10.3 Accessing Structure Members

10.4 Initializing a Structure

10.5 Arrays of Structures

10.6 Nested Structures

Page 3: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

3

Topics

10.7 Structures as Function Arguments

10.8 Returning a Structure from a Function

10.9 Pointers to Structures

10.10 When to Use ., When to Use ->, and When to Use *

10.11 Unions

Page 4: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

4

10.1 Abstract Data Types

A data type that specifies values that can be stored (range or domain) operations that can be done on the values

User of an abstract data type does not need to know the implementation of the data type, e.g., how the data is stored

ADTs are created by programmers

Page 5: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

5

Abstraction and Data Types

Abstraction: a definition that captures general characteristics without details Ex: An abstract triangle is a 3-sided polygon.

A specific triangle may be scalene, isosceles, or equilateral

Data Type defines the values that can be stored in a variable and the operations that can be performed on it

Page 6: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

6

10.2 Combining Data into Structures Structure: C++ construct that allows multiple

variables to be grouped together into a single item Format:

struct <struct name>

{

type1 field1;

type2 field2;

. . .

};

Page 7: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

7

Example struct Declaration

struct Student

{

int studentID;

string name;

short yearInSchool;

float gpa;

};

structure tag

structure members

Page 8: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

8

struct Declaration Notes

Must have ; after closing } struct names commonly begin with

uppercase letter Multiple fields of same type can be in comma-

separated list:string name,

address;

Page 9: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

9

Defining Variables

struct declaration does not allocate memory or create variables

To define variables, use structure tag as type name:

Student stu1;studentID

name

yearInSchool

gpa

stu1

Page 10: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

10

10.3 Accessing Structure Members Use the dot (.) operator to refer to members

of struct variables:cin >> stu1.studentID;

getline(cin, stu1.name);

stu1.gpa = 3.75; Member variables can be used in any manner

appropriate for their data type

Page 11: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

11

Displaying a struct Variable

To display the contents of a struct variable, must display each field separately, using the dot operator:

cout << stu1; // won’t workcout << stu1.studentID << endl;cout << stu1.name << endl;cout << stu1.yearInSchool;cout << " " << stu1.gpa;

Page 12: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

12

Comparing struct Variables

Cannot compare struct variables directly:if (stu1 == stu2) // won’t work

Instead, must compare on a field basis:if (stu1.studentID ==

stu2.studentID) ...

Examples: Progs 10-1, 10-2, 10-3

Page 13: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

13

10.4 Initializing a Structure

struct variable can be initialized when defined:Student stu2 = {11465, "Joan", 2, 3.75};

Can also be initialized member-by-member after definition:

stu2.name = "Joan";stu2.gpa = 3.75;

Page 14: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

14

More on Initializing a Structure

May initialize only some members:Student stu3 = {14579};

Cannot skip over members:Student stu4 = {1234, "John", ,

2.83}; // illegal

Cannot initialize in the structure declaration, since this does not allocate memory

Examples: Prog 10-4 Ex.

Page 15: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

15

10.5 Arrays of Structures

Structures can be defined in arrays Can be used in place of parallel arrays

Student stuList[20]; Individual structures accessible using

subscript notation Fields within structures accessible using dot

notation:cout << stuList[5].studentID;

Examples: Prog 10-5

Page 16: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

16

10.6 Nested Structures

A structure can contain another structure as a member:

struct PersonInfo{ string name,

address, city;

};struct Student{ int studentID;

PersonInfo pData;short yearInSchool;float gpa;

};

Page 17: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

17

Members of Nested Structures

Use the dot operator multiple times to refer to fields of nested structures:

Student stu5;stu5.pData.name = "Joanne";

stu5.pData.city = "Tulsa"; Examples: Prog 10-6 Ex.

Page 18: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

18

10.7 Structures as Function Arguments

May pass members of struct variables to functions:

computeGPA(stu1.gpa); May pass entire struct variables to functions:

showData(stu5); Can use reference parameter if function needs

to modify contents of structure variable

Page 19: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

19

Structures as Function Arguments - Notes Using value parameter for structure can slow

down a program, waste space Using a reference parameter will speed up

program, but function may change data in structure

Using a const reference parameter allows read-only access to reference parameter, does not waste space, speed

Prog 10-7

Page 20: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

20

10.8 Returning a Structure from a Function

Function can return a struct:Student getStuData(); // prototype

stu1 = getStuData(); // call Function must define a local structure

for internal use for use with return statement

Page 21: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

21

Returning a Structure from a Function - ExampleStudent getStuData(){ Student tmpStu; cin >> tmpStu.studentID; getline(cin, tmpStu.pData.name); getline(cin, tmpStu.pData.address);

getline(cin, tmpStu.pData.city); cin >> tmpStu.yearInSchool; cin >> tmpStu.gpa; return tmpStu;}

Examples: Prog 10-8 Ex.

Page 22: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

22

10.9 Pointers to Structures A structure variable has an address Pointers to structures are variables that can

hold the address of a structure:Student *stuPtr;

Can use & operator to assign address:stuPtr = & stu1;

Structure pointer can be a function parameter

Page 23: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

23

Accessing Structure Members via Pointer Variables Must use () to dereference pointer variable,

not field within structure:cout << (*stuPtr).studentID;

Can use structure pointer operator to eliminate () and use clearer notation:cout << stuPtr->studentID;

Page 24: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

24

10.10 When to Use ., When to Use ->, and When to Use *

Consider the following:struct Xmpl {

int *intPtr;};Xmpl xmpl1, *xmplPtr = &xmpl1;

*xmpl1.intPtr accesses the value pointed at by intPtr

*xmplPtr->intPtr does the same thing

Page 25: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

25

10.11 Unions

Similar to a struct, but all members share a single memory location,

and only 1 member of the union can be used at a

time Declared using union, otherwise the same

as struct Variables defined as for struct variables

Page 26: 1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.

26

Anonymous Union

A union without a union tag:union { ... };

Must use static if declared outside of a function

Allocates memory at declaration time Can refer to members directly without dot

operator Uses only 1 memory location, saves space


Recommended