Records C++ Structs

Содержание

Слайд 2

What to do with records? Declaring records Accessing records Accessing the

What to do with records?

Declaring records
Accessing records
Accessing the field of a

record
What is a union?
Can records be in arrays?
Слайд 3

Records Recall that elements of arrays must all be of the

Records

Recall that elements of arrays must all be of the same

type
In some situations, we wish to group elements of different types

scores : 85 79 92 57 68 80 . . .

0 1 2 3 4 5 98 99

Слайд 4

Records RECORDS are used to group related components of different types

Records

RECORDS are used to group related components of different types
Components of

the record are called fields
In C++
record called a struct (structure)
fields called members
Слайд 5

Records C++ struct structured data type fixed number of components elements

Records

C++ struct
structured data type
fixed number of components
elements accessed by name, not

by index
components may be of different types

struct part_struct { char descrip [31], part_num [11]; float unit_price; int qty; };

Слайд 6

Declaring struct Variables Given Declare : struct part_struct { char descrip

Declaring struct Variables

Given
Declare :

struct part_struct { char descrip [31], part_num [11];

float unit_price; int qty; };

part_struct new_part, old_part;

Use struct name as a type.

Слайд 7

Accessing Components Use the name of the record the name of

Accessing Components

Use the name of the record the name of the

member separated by a dot .
The dot is called the member selector

old_part.qty = 5;
cout << new_part.descrip;

Слайд 8

Aggregate Operations with Structures Recall that arrays had none (except reference

Aggregate Operations with Structures

Recall that arrays had none (except reference parameter)
Structures

DO have aggregate operators
assignment statement =
parameter (value or reference)
return a structure as a function type
Слайд 9

Aggregate Operations with Structures Limitations on aggregate operations no I/O no

Aggregate Operations with Structures

Limitations on aggregate operations
no I/O
no arithmetic operations
no comparisons


cout << old_part; cin >> new_part;

old_part = new_part + old_part;

if (old_part < new_part) cout << ...;

Слайд 10

Aggregate Operations with Structures struct variables must be compared member-wise. To

Aggregate Operations with Structures

struct variables must be compared member-wise.
To

compare the values of student and newStudent, you must compare them member-wise, as follows:
if(student.firstName == newStudent.firstName &&
student.lastName == newStudent.lastName) ...
Слайд 11

Input/Output There are no aggregate input/output operations on struct. Data in

Input/Output

There are no aggregate input/output operations on struct.
Data in

a struct variable must be read one member at a time.
Contents of a struct must be written one member at a time.
Слайд 12

struct Variables and Functions A struct variable can be passed as

struct Variables and Functions

A struct variable can be passed as

a parameter either by value or by reference.
A function can return a value of the type struct
Note example program fragment
Слайд 13

Arrays of Records First declare a struct (such as part_struct) Then

Arrays of Records

First declare a struct (such as part_struct)
Then specify an

array of that type
Access elements of the array, elements of the struct

part_struct part_list [50];

for (x = 0; x <50; x++) cout << _______________________;

How do we print all the descrip fields?

part_list[x].descrip

Слайд 14

Records with Arrays Example const int arraySize = 1000; struct listType

Records with Arrays

Example
const int arraySize = 1000;
struct listType
{
int elements[arraySize]; //array

containing the list
int listLength; //length of the list
}

See sample program

Слайд 15

Hierarchical Records records where at least one of the components is,

Hierarchical Records

records where at least one of the components is, itself,

a record
Example:

struct inventory_struct { part_struct part; int qty_sold, re_order_qty; vendor_struct vendor; };

Слайд 16

Choosing Data Structures Strive to group logical elements of a structure

Choosing Data Structures

Strive to group logical elements of a structure together
calls

for hierarchical structures
Push details of entities down to lower levels of the structure
Data Abstraction <=> separation of logical peoperties of a data type from its implementation
Слайд 17

Testing and Debugging Hints Declaration of a struct type must end

Testing and Debugging Hints

Declaration of a struct type must end with

a semicolon ;
Be sure to specify the full member selector when referencing a component of a struct variable
don’t leave out the struct name
Слайд 18

Testing and Debugging When using an array in a struct, the

Testing and Debugging

When using an array in a struct, the index

goes at the end student_rec.scores[x]
When using an array of struct, the index goes after the struct name parts_list[x].qty
Слайд 19

Testing and Debugging Process struct members separately … the only aggregate

Testing and Debugging

Process struct members separately … the only aggregate operations

will be
Assignment =
Parameter passing void do_it (part_struct part);
Function return part_struct blanked_part ( );