Download presentation
Presentation is loading. Please wait.
Published byMaximillian Rogers Modified over 9 years ago
1
1 Week 1304/07/2005Course ISM3230Dr. Simon Qiu Learn how to create and manipulate enumeration type Become aware of the typedef statement Learn about the namespace mechanism Explore the string data type learn how to use the various string functions Chapter 8: Chapter 8: User-Defined Simple Data Types, String Type, Namespaces
2
2 Enumeration Type Data type - a set of values together with a set of operations on those values To define a new simple data type, called enumeration type, we need three things: A name for the data type A set of values for the data type A set of operations on the values A new simple data type can be defined by specifying its name and the values, but not the operations The values must be identifiers Week 1304/07/2005Course ISM3230Dr. Simon Qiu
3
3 Enumeration Type (continued) The syntax for enumeration type is: enum typeName{value1, value2,...}; //value1, value2, … are identifiers called enumerators //value1 < value2 < value3 <... it is ordered set of values If a value has been used in one enumeration type It cannot be used by another in the same block The same rules apply to enumeration types declared outside of any blocks Week 1304/07/2005Course ISM3230Dr. Simon Qiu
4
4 Examples The following are illegal enumeration types because none of the values is an identifier: enum grades{'A', 'B', 'C', 'D', 'F'}; enum places{1st, 2nd, 3rd, 4th}; The following are legal enumeration types: enum grades {A, B, C, D, F}; enum places{first, second, third, fourth}; Week 1304/07/2005Course ISM3230Dr. Simon Qiu
5
5 Declaring Variables The syntax for declaring variables is: dataType identifier, identifier,...; Examples: -The following statement defines an enumeration type sports enum sports {basketball, football, hockey, baseball, soccer, volleyball}; baseball, soccer, volleyball}; - The following statement declares variables of the type sports. sports popularSport, mySport; Week 1304/07/2005Course ISM3230Dr. Simon Qiu
6
6 Assignment The statement: popularSport = football; //stores the word football into popularSport The statement: mySport = popularSport; //copies the contents of the variable //popularSport into mySport Week 1304/07/2005Course ISM3230Dr. Simon Qiu
7
7 Operations No arithmetic operation is allowed on enumeration types The following statements are illegal; mySport = popularSport + 2; //illegal popularSport = football + soccer; //illegal popularSport = popularSport * 2; // illegal\ popularSport++; //illegal popularSport--; //illegal The increment and decrement operations are not allowed on enumeration types
8
8 Operations and Input/Output Because an enumeration is an ordered set of values. We can use relational operators with them: football <= soccer is true basketball < football is false The cast operator can be used to increment, decrement, and compare values. Values can be used in loops: for (mysport=baseketball; mysport (sport+1)) Input and output are defined only for built-in data types such as int, char, double The enumeration type can be neither input nor output (directly) Week 1304/07/2005Course ISM3230Dr. Simon Qiu
9
9 Functions and Enumeration Types Enumeration type can be passed as parameters to functions either by value or by reference A function can return a value of the enumeration type //define the courses as enumeration type enum courses {algebra, computer, philsophy, analysis, chemistry, histry}; //function to read enum data input courses readCourses() { courses registered;..... reture registered; } //output the enum data Void printEnum (courses registered) { switch (registered) case algebra: cout << “algebra”; case algebra: cout << “algebra”; case computer: cout << “Computer”; case computer: cout << “Computer”; …… }
10
10 Anonymous Data Types Anonymous - a data type in which values are directly specified in the variable declaration with no type name example: enum {basketball, football, baseball} mysport; Creating an anonymous type has drawbacks We cannot pass an anonymous type as a parameter to a function A function cannot return a value of an anonymous type Values used in one can be used in another, but they are treated differently
11
11 typedef Statement You can create synonyms or aliases to a previously defined data type by using the typedef statement The syntax of the typedef statement is: typedef existingTypeName newTypeName; exams:typedef int myBoolean; const myBoolean True =1; const myBoolean True =1; const myBoolean False =0; const myBoolean False =0; //typedef does not create any new data types //typedef creates an alias to an existing data type Week 1304/07/2005Course ISM3230Dr. Simon Qiu
12
12 Namespaces When a header file, such as iostream, is included in a program Global identifiers in the header file also become global identifiers in the program If a global identifier in a program has the same name as one of the global identifiers in the header file The compiler will generate a syntax error (such as identifier redefined) The same problem can occur if a program uses third party libraries Week 1304/07/2005Course ISM3230Dr. Simon Qiu
13
13 Namespaces (continued) To overcome this problem, third party vendors begin their global identifiers with a special symbol Because compiler vendors begin their global identifier with _ (underscore) To avoid linking errors, do not begin identifiers in your program with _ ANSI/ISO standard C++ attempts to solve this problem of overlapping global identifier names with the namespace mechanism Week 1304/07/2005Course ISM3230Dr. Simon Qiu
14
14 Syntax: namespace The syntax of the statement namespace is: namespace namespace_name { members } //where a member is usually a variable declaration //where a member is usually a variable declaration //a named constant, a function, or another namespace namespace globalType { const int n = 10, double rate = 7.5, int count =0; void printResult ();} //you can define the function here: // void globalType::printResult() { …. } using namespace globalType; Week 1304/07/2005Course ISM3230Dr. Simon Qiu
15
15 Accessing a namespace Member The scope of a namespace member is local to the namespace Usually two ways a namespace member can be accessed outside the namespace One way is to use the syntax: namespace_name::identifier To access the member rate of the namespace globalType, the following statement is required: globalType::rate Week 1304/07/2005Course ISM3230Dr. Simon Qiu
16
16 Accessing a namespace Member (continued) To access the function printResult, the following statement is required: globalType::printResult(); To simplify the accessing of all namespace members: using namespace namespace_name; To simplify the accessing of a specific namespace member: using namespace_name::identifier; Week 1304/07/2005Course ISM3230Dr. Simon Qiu
17
17 The using Statement After the using statement Not necessary to precede the namespace_name and the scope resolution operator before the namespace member If a namespace member and a global identifier or a block identifier have the same name namespace_name and scope resolution operator must precede the namespace member Week 1304/07/2005Course ISM3230Dr. Simon Qiu
18
18 The string Type To use the data type string, the program must include the header file by using: #include #include The declaration statement: string name = "William Jacob"; //declares name to be a string variable and also //initializes name to "William Jacob" The first character, 'W', in name is in position 0, the second character, 'i', is in position 1, and so on Week 1304/07/2005Course ISM3230Dr. Simon Qiu
19
19 The string Type (continued) The variable name is capable of storing any size string Binary operator + (to allow the string concatenation operation), and the array subscript operator [], have been defined for the data type string Example: str2 = str1 + " Day"; // If str1 = "Sunny", the statement stores the string "Sunny Day" into str2 //whete str2 [0] = ‘S’ and str2 [6] = ‘D’ Week 1304/07/2005Course ISM3230Dr. Simon Qiu
20
20 length Function Length returns the number of characters currently in the string The syntax to call the length function is: strVar.length(); exam: firstName.length(); //where strVar is variable of the type string //length has no arguments //length returns an unsigned integer The value returned can be stored in an integer variable Week 1304/07/2005Course ISM3230Dr. Simon Qiu
21
21 size Function The function size is same as the function length Both functions return the same value The syntax to call the function size is: strVar.size() exam: firstName.size(); //where strVar is variable of the type string As in the case of the function length, the function size has no arguments Week 1304/07/2005Course ISM3230Dr. Simon Qiu
22
22 find Function find searches a string for the first occurrence of a particular substring Returns the position of an unsigned integer value of type string::size_type giving the result of the search The syntax to call the function find is: strVar.find(strExp) //where strVar is a string variable and //strExp is a string expression evaluating to a string //strExp, can also be a character exam: firstName.find (“Jone”);
23
23 substr Function substr returns a particular substring of a string The syntax to call the function substr is: strVar.substr(expr1,expr2) //where expr1 and expr2 are expressions //expr1 specifies a position within the string – starting position of the substring //expr2 specifies the length of the substring to be returned String sentence = “It is cloudy and worm”; String str2 = sentence.substring (2,10); //where str2 = “ is cloudy” Week 1304/07/2005Course ISM3230Dr. Simon Qiu
24
24 swap Function swap interchanges the contents of two string variables The syntax to use the function swap is strVar1.swap(strVar2); where strVar1 and strVar2 are string variables Suppose you have the following statements: string str1 = "Warm"; string str2 = "Cold"; After str1.swap(str2); executes, the value of str1 is "Cold" and the value of str2 is "Warm" Week 1304/07/2005Course ISM3230Dr. Simon Qiu
25
25 Programming Example: Pig Latin Strings Program prompts user to input a string Then outputs the string in the pig Latin form The rules for converting a string into pig Latin form are as follows: 1.If the string begins with a vowel, add the string "-way" at the end of the string − For example, the pig Latin form of the string "eye" is "eye-way“ 2.If the string does not begin with a vowel, first add "-" at the end of the string − Then move the first character of the string to the end of the string until the first character of the string becomes a vowel
26
26 Pig Latin Strings (continued) − Next, add the string "ay" at the end. For example, the pig Latin form of the string "There" is "ere-Thay“ For example, the pig Latin form of the string "There" is "ere-Thay“ 3.Strings such as "by" contain no vowels − In cases like this, the letter y can be considered a vowel − For this program the vowels are a, e, i, o, u, y, A, E, I, O, U, and Y the pig Latin form of "by" is "y-bay“ 4.Strings such as "1234" contain no vowels − The pig Latin form of a string that has no vowels in it is the string followed by the string "-way“ − For example, the pig Latin form of the string "1234" is "1234-way“
27
27 Problem Analysis If str denotes a string Check the first character, str[0], of strCheck the first character, str[0], of str If str[0] is a vowel, add "-way" at the end of strIf str[0] is a vowel, add "-way" at the end of str If the first character of str, str[0], is not a vowelIf the first character of str, str[0], is not a vowel –First add "-" at the end of the string –Remove the first character of str from str and put it at end of str –Now the second character of str becomes the first character of str This process is repeated until eitherThis process is repeated until either –The first character of str is a vowel –All characters of str are processed, in which case str does not contain any vowels
28
28 Algorithm Design The program contains the following functions: isVowel - to determine whether a character is a vowel rotate - to move first character of str to the end of str pigLatinString - to find the pig Latin form of str Steps in the Algorithm: Get str Use the function pigLatinString to find the str Output the pig Latin form of str Week 1304/07/2005Course ISM3230Dr. Simon Qiu
29
29 Function isVowel bool isVowel(char ch) {switch(ch) { case 'A': case 'E': case 'I': case 'O': case 'U': case 'Y': case 'a': case 'e': case 'i': case 'o': case 'u': case 'y': return true; default: return false;} }
30
30 Function rotate Takes a string as a parameter Removes the first character of the string Places it at end of the string by extracting the substring starting at position 1 until the end of the string, then adding the first character of the string string rotate(string pStr) { int len = pStr.length(); string rStr; rStr = pStr.substr(1,len - 1) + pStr[0]; return rStr; }
31
31 Function pigLatinString If pStr[0] is a vowel, add "-way" at end of pStr If pStr[0] is not a vowel Move the first character of pStr to the end of pStr The second character of pStr becomes the first character of pStr. Now pStr may or may not contain a vowel Use a Boolean variable, foundVowel, which is set to true if pStr contains a vowel and false otherwise initialize foundVowel to false
32
32 Function pigLatinString (continued) if pStr[0] is not a vowel, move str[0] to the end of pStr by calling the function rotate repeat third step until either the first character of pStr becomes a vowel or all characters of pStr have been checked Convert pStr into the pig Latin form Return pStr Week 1304/07/2005Course ISM3230Dr. Simon Qiu
33
33 Main Algorithm 1. Get the string 2. Call the function pigLatinString to find the pig Latin form of the string 3. Output the pig Latin form of the string Week 1304/07/2005Course ISM3230Dr. Simon Qiu
34
34 Program Code #include #include using namespace std; bool isVowel(char ch); string rotate(string pStr); string pigLatinString(string pStr); int main() { string str; cout << "Enter a string: "; cout << "Enter a string: "; cin >> str; cin >> str; cout << endl; cout << endl; cout << "The pig Latin form of " << str << " is: " cout << "The pig Latin form of " << str << " is: " << pigLatinString(str) << endl; << pigLatinString(str) << endl; return 0; } return 0; }
35
35 bool isVowel(char ch) { switch (ch) switch (ch) { case 'A': case 'E': case 'A': case 'E': case 'I': case 'O': case 'I': case 'O': case 'U': case 'Y': case 'U': case 'Y': case 'a': case 'e': case 'a': case 'e': case 'i': case 'o': case 'i': case 'o': case 'u': case 'y': return true; case 'u': case 'y': return true; default: return false; default: return false; }} Program Code string rotate(string pStr) { string::size_type len = string::size_type len =pStr.length(); string rStr = string rStr = pStr.substr(1, len - 1) + pStr[0]; return rStr; return rStr;} Week 1304/07/2005Course ISM3230Dr. Simon Qiu
36
36 string pigLatinString(string pStr) {...... if (isVowel(pStr[0])) //Step 1 if (isVowel(pStr[0])) //Step 1 pStr = pStr + "-way"; pStr = pStr + "-way"; else //Step 2 else //Step 2 { pStr = pStr + '-'; { pStr = pStr + '-'; pStr = rotate(pStr); //Step 3 pStr = rotate(pStr); //Step 3 len = pStr.length(); //Step 3.a len = pStr.length(); //Step 3.a foundVowel = false; //Step 3.b foundVowel = false; //Step 3.b for (counter = 1; counter < len - 1; counter++) //Step 3.d for (counter = 1; counter < len - 1; counter++) //Step 3.d if (isVowel(pStr[0])) if (isVowel(pStr[0])) { foundVowel = true; { foundVowel = true; break; } break; } else //Step 3.c else //Step 3.c pStr = rotate(pStr); pStr = rotate(pStr); if (!foundVowel) //Step 4 if (!foundVowel) //Step 4 pStr = pStr.substr(1, len) + "-way"; pStr = pStr.substr(1, len) + "-way"; else else pStr = pStr + "ay"; pStr = pStr + "ay"; } return pStr; } //Step 5 } return pStr; } //Step 5 Program Code
37
37 Summary An enumeration type is a 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 Week 1304/07/2005Course ISM3230Dr. Simon Qiu
38
38 Summary An anonymous type is one where a variable’s values are specified without any type name C++’s 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 Week 1304/07/2005Course ISM3230Dr. Simon Qiu
39
39 Summary The keyword namespace must appear in the using statement A string is a sequence of zero or more characters Strings in C++ are enclosed in double quotation marks In C++, [] is called the array subscript operator The function length returns the number of characters currently in the string Week 1304/07/2005Course ISM3230Dr. Simon Qiu
40
40 Summary The function size returns the number of characters currently in the string The function find searches a string to locate the first occurrence of a particular substring The function substr returns a particular substring of a string The function swap is used to swap the contents of two string variables Week 1304/07/2005Course ISM3230Dr. Simon Qiu
41
41 Assignment 10 1.Exercises 8.2 2.Exercises 8.4 3.Exercises 8.7 4.Exercises 8.9 5.Program 8.4 Week 1304/07/2005Course ISM3230Dr. Simon Qiu
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.