You are on page 1of 7

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-1

C++ Programming From Problem


Analysis to Program Design 6th Edition
Malik
Full download at link:

Test bank: https://testbankpack.com/p/test-bank-for-c-programming-from-


problem-analysis-to-program-design-6th-edition-by-malik-isbn-
1133626386-9781133626381/

Solution Manual: https://testbankpack.com/p/solution-manual-for-c-


programming-from-problem-analysis-to-program-design-6th-edition-by-
malik-isbn-1133626386-9781133626381/

Chapter 9
Records (structs)

At a Glance

Instructor’s Manual Table of Contents


• Overview

• Objectives

• Teaching Tips

• Quick Quizzes

• Class Discussion Topics

• Additional Projects

• Additional Resources

• Key Terms
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-2

Lecture Notes

Overview
In Chapter 9, students will be introduced to a data type that can be heterogeneous. They
will learn how to group together related values that are of differing types using records,
which are also known as structs in C++. First, they will explore how to create
structs, perform operations on structs, and manipulate data using a struct.
Next, they will examine the relationship between structs and functions and learn
how to use structs as arguments to functions. Finally, students will explore ways to
create and use an array of structs in an application.

Objectives
In this chapter, the student will:
• Learn about records (structs)
• Examine various operations on a struct
• Explore ways to manipulate data using a struct
• Learn about the relationship between a struct and functions
• Discover how arrays are used in a struct
• Learn how to create an array of struct items

Teaching Tips
Records (structs)

1. Define the C++ struct data type and describe why it is useful in programming.

Discuss how previous programming examples and projects that used parallel
Teaching arrays or vectors might be simplified by using a struct to hold related
Tip
information.

2. Examine the syntax of a C++ struct.

3. Using the examples in this section, explain how to define a struct type and then
declare variables of that type.

Accessing struct Members

1. Explain how to access the members of a struct using the C++ member access
operator.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-3

2. Use the code snippets in this section to illustrate how to assign values to struct
members.

Mention that the struct and class data types both use the member access
operator. Spend a few minutes discussing the history of the struct data type
and how it relates to C++ classes and object-oriented programming. Note that the
struct is a precursor to the class data type. Explain that the struct was
introduced in C to provide the ability to group heterogeneous data members
together and, for the purposes of this chapter, is used in that manner as well.
Teaching However, in C++, a struct has the same ability as a class to group data and
Tip
operations into one data type. In fact, a struct in C++ is interchangeable with
a class, with a couple of exceptions. By default, access to a struct from
outside the struct is public, whereas access to a class from outside the
class is private by default. The importance of this will be discussed later in the
text. Memory management is also handled differently for structs and
classes.

Quick Quiz 1
1. True or False: A struct is typically a homogenous data structure.
Answer: False
2. The components of a struct are called the of the struct.
Answer: members

3. A struct statement ends with a(n) .


Answer: semicolon

4. True or False: A struct is typically defined before the definitions of all the functions
in a program.
Answer: True

Assignment

1. Explain that the values of one struct variable are copied into another struct
variable of the same type using one assignment statement. Note that this is equivalent to
assigning each member variable individually.

Note how memory is handled in assignment operations involving struct


Teaching
Tip variables of the same type; namely, that the values of the members of one
struct are copied into the member variables of the other struct.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-4

Comparison (Relational Operators)

1. Emphasize that no relational aggregate operations are allowed on structs. Instead,


comparisons must be made member-wise, similar to an array.

Ask your students why they think assignment operations are permitted on
Teaching
struct types, but not relational operations. Discuss the issue of determining
Tip
how to compare a data type that consists of other varying data types.

Input/Output

1. Note that unlike an array, aggregate input and output operations are not allowed on
structs.

Mention that the stream and the relational operators can be overloaded to provide
Teaching the proper functionality for a struct type and, in fact, that this is a standard
Tip
technique used by C++ programmers.

struct Variables and Functions

1. Emphasize that a C++ struct may be passed as a parameter by value or by reference,


and it can also be returned from a function.

2. Illustrate parameter passing with structs using the code snippets in this section.

Arrays versus structs

1. Using Table 9-1, discuss the similarities and differences between structs and arrays.

Spend a few minutes comparing the aggregate operations that are allowed on
Teaching structs and arrays. What might account for the differences? Use your previous
Tip exposition on the history of structs and memory management to facilitate this
discussion.

Arrays in structs

1. Explain how to include an array as a member of a struct.

2. Using Figure 9-5, discuss situations in which creating a struct type with an array as a
member might be useful. In particular, discuss its usefulness in applications such as the
sequential search algorithm.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-5

Ask your students to think of other applications in which using an array as a


member of a struct might be useful. For example, are there applications in
Teaching
which parameter passing might be reduced by using struct members in
Tip
conjunction with arrays? Also, are there other data members that would be useful
to include in the listType struct presented in this section?

3. Discuss situations in which a struct should be passed by reference rather than by


value. Use the sequential search function presented in this section as an example.

structs in Arrays

1. Discuss how structs can be used as array elements to organize and process data
efficiently.

2. Examine the employee record in this section as an example of using an array of


structs. Discuss the code for the struct as well as the array processing code. Use
Figure 9-7 to clarify the code.

Emphasize that using a structured data type, such as a struct or class, as the
Teaching element type of an array is a common technique. Using the vector class as an
Tip example, reiterate that object-oriented languages typically have containers such
as list or array types that in turn store objects of any type.

structs within a struct

1. Discuss how structs can be nested within other structs as a means of organizing
related data.

2. Using the employee record in Figure 9-8, illustrate how to reorganize a large amount of
related information with nested structs.

3. Encourage your students to step through the “Sales Data Analysis” Programming
Example at the end of the chapter to consolidate the concepts discussed in this chapter.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-6

Quick Quiz 2
1. What types of aggregate operations are allowed on structs?
Answer: assignment

2. Can struct variables be passed as parameters to functions? If so, how?


Answer: struct variables can be passed as parameters either by value or by reference.

3. True or False: A variable of type struct may not contain another struct.
Answer: False

4. True or False: A variable of type struct may contain an array.


Answer: True

Class Discussion Topics


1. With the advent of object-oriented programming, is it ever necessary to use C-type
structs rather than classes? If so, when? What are the advantages or disadvantages of
each approach?

2. Discuss how the object-oriented concept of reusability relates to structs, structs


within arrays, arrays within structs, and structs within structs. Ask students to
think of some applications in which defining these data types for later use would be
beneficial.

Additional Projects
1. In Chapter 8, you were asked to write a program that keeps track of important birthdays.
Modify this program to store one person’s birthday information in a struct data type.
The struct should consist of two other structs: one struct to hold the person’s
first name and last name, and another to hold the date (day, month, and year). Consider
including other information as well, such as a vector of strings with a list of possible
gift ideas.

2. In Chapter 8, you were asked to write a program that listed all the capitals for countries
in a specific region of the world. Modify this program to use an array of structs to
store this information. The struct should include the capital, the country, and the
continent. You might include additional information as well, such as the languages
spoken in each capital.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-7

Additional Resources
1. Data Structures:
www.cplusplus.com/doc/tutorial/structures.html

2. struct (C++):
http://msdn2.microsoft.com/en-us/library/64973255.aspx

3. Classes, Structures, and Unions:


http://msdn2.microsoft.com/en-us/library/4a1hcx0y.aspx

Key Terms
Member access operator: the dot (.) placed between the struct and the name of one
of its members; used to access members of a struct
struct: a collection of heterogeneous components in which the components are
accessed by the variable name of the struct, the member access operator, and the
variable name of the component

You might also like