Lecture03-Part I

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

Lecture 03

Part I: User-Defined Simple Data Types, Namespaces, and the string Type

C++ Programming: Program Design Including Data Structures, Eighth Edition

1
Objectives (1 of 2)

• In this chapter, you will:


• Learn how to create and manipulate your own simple data type—called the
enumeration type
• Explore how the assignment statement, and arithmetic and relational operators work
with enum types
• Learn how to use for loops with enum types
• Learn how to input data into an enum type
• Learn how to output data stored in an enum type

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 2
or otherwise on a password-protected website for classroom
Objectives (2 of 2)

• Explore how to write functions to process enum types


• Learn how to declare variables when defining the enumeration type
• Become familiar with anonymous types
• Become familiar with the typedef statement
• Learn about the namespace mechanism
• Explore the string data type, and learn how to use string functions to
manipulate strings

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 3
or otherwise on a password-protected website for classroom
Enumeration Type (1 of 5)

• A data type is a set of values with a set of operations on them


• Enumeration type is a simple data type created by the programmer
• To define an enumeration type, you need:
• A name for the data type
• A set of values for the data type
• A set of operations on the values

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 4
or otherwise on a password-protected website for classroom
Enumeration Type (2 of 5)

• You can specify the name and the values, but not the operations
• The syntax for enumeration type is:

• value1, value2, … are identifiers called enumerators


• List specifies the ordering:
value1 < value2 < value3 <...

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 5
or otherwise on a password-protected website for classroom
Enumeration Type (3 of 5)

• The enumeration type is an ordered set of values


• Default value starts at 0 on enumerators
• A value used in one enumeration type cannot be used by another in the same
block
• Same rules apply to enumeration types declared outside of any blocks

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 6
or otherwise on a password-protected website for classroom
Enumeration Type (4 of 5)

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 7
or otherwise on a password-protected website for classroom
Enumeration Type (5 of 5)

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 8
or otherwise on a password-protected website for classroom
Declaring Variables

• Syntax

• Example
enum sports {BASKETBALL, FOOTBALL, HOCKEY, BASEBALL, SOCCER,
VOLLEYBALL};
• Can declare variables such as:
sports popularSport, mySport;

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 9
or otherwise on a password-protected website for classroom
Assignment

• Values can be stored in enumeration data types:


popularSport = FOOTBALL;
• Stores FOOTBALL into popularSport

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 10
or otherwise on a password-protected website for classroom
Operations on Enumeration Types

• No arithmetic operations are allowed on enumeration types


mySport = popularSport + 2; //illegal
popularSport = FOOTBALL + SOCCER; //illegal
popularSport = popularSport * 2; //illegal
• ++ and -- are illegal,
popularSport++; //illegal
popularSport--; //illegal
• The solution is applying the cast operator
popularSport = FOOTBALL;
popularSport = static_cast<sports>(popularSport + 1);

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 11
or otherwise on a password-protected website for classroom
Relational Operators

enum sports {BASKETBALL, FOOTBALL, HOCKEY, BASEBALL, SOCCER,


VOLLEYBALL};

• An enumeration type is an ordered set of values:


FOOTBALL <= SOCCER is true
HOCKEY > BASKETBALL is true
BASEBALL < FOOTBALL is false
• An enumeration type is an integral data type and can be used in loops:
for (mySport = BASKETBALL; mySport <= SOCCER; mySport =
static_cast<sports>(mySport + 1))
.
.
.

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 12
or otherwise on a password-protected website for classroom
Input /Output of Enumeration Types

• An enumeration type cannot be input/output (directly)


• Can input and output indirectly – refer to code segments below:
enum courses {ALGEBRA, BASIC, PYTHON, CPP, PHILOSOPHY,
ANALYSIS, CHEMISTRY, HISTORY};
courses registered;

switch (ch1)
{
case 'a':
if (ch2 == 'l')
registered = ALGEBRA;
else
registered = ANALYSIS;
break;

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 13
or otherwise on a password-protected website for classroom
Functions and Enumeration Types

• Enumeration types pass as parameters by value or by reference


• A function can return a value of the enumeration type

enum color {red, green, blue};

void myFunc(color c);

int main ()
{
myFunc(blue);

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 14
or otherwise on a password-protected website for classroom
Functions and Enumeration Types

• Enumeration types pass as parameters by value or by reference


• A function can return a value of the enumeration type

enum info_code {Success, Fail};

info_code myFunc2(int, int&);

int main ()
{
int num1=1, num2;
info_code result;

result= myFunc2(num1, num2);

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 15
or otherwise on a password-protected website for classroom
Declaring Variables When Defining the Enumeration Type

• Can declare variables of an enumeration type when you define an enumeration


type:
enum grades {A, B, C, D, F} courseGrade;

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 16
or otherwise on a password-protected website for classroom
Anonymous Data Types (1 of 2)

• Anonymous type values are directly specified in the declaration, with no type
name
• Example:
enum {BASKETBALL, FOOTBALL, BASEBALL, HOCKEY} mySport;

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 17
or otherwise on a password-protected website for classroom
Anonymous Data Types (2 of 2)

• Drawbacks:
• Cannot pass/return an anonymous type to/from a function
• Values used in one type can be used in another, but are processed diversely:
enum {TURKISH, ENGLISH, FRENCH, SPANISH, GERMAN} languages;
enum {TURKISH, ENGLISH, FRENCH, SPANISH, GERMAN} foreignLanguages;

• This statement is illegal:


languages = foreignLanguages; //Illegal

• Best practices: to avoid confusion, define an enumeration type first, then


declare variables

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 18
or otherwise on a password-protected website for classroom
typedef Statement

• The typedef statement is used to create synonyms or aliases to a data type


• The syntax of the typedef statement is:

• typedef does not create any new data types


• Only creates an alias to an existing data type

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 19
or otherwise on a password-protected website for classroom
Namespaces (1 of 6)

• ANSI/ISO standard C++ was officially approved in July 1998


• Most compilers are compatible with ANSI/ISO standard C++
• For the most part, standard C++ and ANSI/ISO standard C++ are the same
• However, ANSI/ISO Standard C++ has some features not available in Standard C++

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 20
or otherwise on a password-protected website for classroom
Namespaces (2 of 6)

• Global identifiers in a header file used in a program become global in the


program
• A syntax error occurs if a program’s identifier has the same name as a global identifier
in the header file
• The same problem can occur with third-party libraries
• Common solution: third-party vendors begin their global identifiers with _
• Do not begin identifiers in your program with _

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 21
or otherwise on a password-protected website for classroom
Namespaces (3 of 6)

• ANSI/ISO Standard C++ attempts to solve with the namespace mechanism


• The general syntax of the statement namespace is:

members can be variable declarations, named constants, functions, or another


namespace

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 22
or otherwise on a password-protected website for classroom
Namespaces (4 of 6)

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 23
or otherwise on a password-protected website for classroom
Namespaces (5 of 6)

• A namespace member has scope local to the namespace


• A namespace member can be accessed outside the namespace
• The general syntax for accessing a namespace member is:

• ANSI/ISO Standard C++ provides the use of the statement using

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 24
or otherwise on a password-protected website for classroom
Namespaces (6 of 6)

• Examples with namespaces


using namespace globalType;
using globalType::RATE;
• After the using statement, it is not necessary to put the
namespace_name:: before the namespace member
• Unless a namespace member and a global identifier or a block identifier have the
same name

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 25
or otherwise on a password-protected website for classroom
string Type

• To use data type string, a program must include the header file string
• A string is a sequence of zero or more characters
• The first character is in position 0
• The second character is in position 1, etc.
• Binary operator + performs the string concatenation operation
• Array subscript operator [] allows access to an individual character in a string

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 26
or otherwise on a password-protected website for classroom
Example 7-18: swap Function

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 27
or otherwise on a password-protected website for classroom
Quick Review (1 of 3)

• Enumeration type: set of ordered values


• Reserved word enum creates an enumeration type
• No arithmetic operations are allowed on the enumeration type
• Relational operators can be used with enum values
• Enumeration type values cannot be input or output directly
• Enumeration types can be passed as parameters to functions by value or by
reference

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 28
or otherwise on a password-protected website for classroom
Quick Review (2 of 3)

• Anonymous type: a variable’s values are specified without any type name
• Reserved word typedef creates synonyms or aliases to previously defined
data types
• The namespace mechanism is a feature of ANSI/ISO Standard C++
• A namespace member is usually a named constant, variable, function, or
another namespace
• Scope of a namespace member is local to namespace

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 29
or otherwise on a password-protected website for classroom
Quick Review (3 of 3)

• using statement simplifies access to namespace members


• A string is a sequence of zero or more characters
• Strings in C++ are enclosed in ""
• The first character of a string is in position 0
• In C++, [] is the array subscript operator

© 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part, except for use as permitted in a license distributed with a certain product or service 30
or otherwise on a password-protected website for classroom

You might also like