type

advertisement
CSCE 110
PROGRAMMING FUNDAMENTALS
WITH
C++
Prof. Amr Goneid
AUC
Part 6. Simple and User
Defined Data Types
Prof. amr Goneid, AUC
1
More on Simple Data Types
Prof. amr Goneid, AUC
2
More on Simple Data Types
 #define Directive
 Promotion of Types
 Type Casting
 typedef Declaration
 Enumerated Data Types
Prof. amr Goneid, AUC
3
1. #define Directive
 Used to give meaningful names to constants
 Used in older C programs prior to introduction of
constants
#define <token> <replacement-text>
 Example
#define pi 3.14159
// The same as
const float pi = 3.14159;
Prof. amr Goneid, AUC
4
#define Directive (Example)
// File: try.cpp
// Uses #define Directive
#include <iostream>
using namespace std;
#define BEGIN {
#define END }
#define MOD %
#define EQ ==
Prof. amr Goneid, AUC
5
#define Directive (Example)
int main()
BEGIN
// Local data ...
int
n,d;
cout << "Enter n : "; cin >> n ;
for ( ; ; ) BEGIN
d = n MOD 2; cout << d; n /= 2;
if (n EQ 0) break;
END
cout << endl;
return 0;
END
Prof. amr Goneid, AUC
6
2. Promotion of Types
 Type promotion

promoting a lower type to a higher type, e.g.
3 + x /2
 if x is float, constants would be promoted to float
as well and actually be 2.0 and 3.0
 Type conversions
 int to float (number.0)
 float to int (truncation occurs)
Prof. amr Goneid, AUC
7
Mixing Types
 Example:
float x , z ;
int y;
x = 3.89 ;
y=x;
z=y;
// y would contain 3 and z would contain 3.0
Prof. amr Goneid, AUC
8
3. Type Casting
 Avoid mixing types but if you need to you can cast a
type
 Type casting allows you to change a type within the
program for a specific function
 Form:
type (variable) or (type) variable
 Example:
int n ; float sum , average ;
average = sum / float (n);
// or average = sum / (float) n ;
Prof. amr Goneid, AUC
9
Type Casting Example
 Example:
for (j = 0; j <= 25; j++) {
for (k = 0; k <= j; k++)
cout << char (int (‘A’) + k);
cout << endl;
}
Prof. amr Goneid, AUC
10
4. typedef Declaration
 Used to give other names to existing data
types. The new name can then be used as
a qualified data type. Original type
remains active.
 Syntax:
typedef <C++ type> <other name> ;
Prof. amr Goneid, AUC
11
typedef Declaration
 Examples:
typedef int itemtype ;
typedef float costType ;
typedef char gradeType ;
………
itemtype item ; …… item = 7 ;
costtype cost ; …… cost = 21.36 ;
gradetype grade ; …grade = ‘B’ ;
Prof. amr Goneid, AUC
12
5. Enumerated Data Types
Prof. amr Goneid, AUC
13
Enumerated Data Types
 Of course C++ will give errors for the
following declarations:
icecream scoop ; fruit summerfruit ;
color thiscolor ;
……………
scoop = vanilla; summerfruit = mango;
thiscolor = red ;
fruit2 = fruit (int(mango) + 1);
How can we make C++ accept these
types?
Prof. amr Goneid, AUC
14
Enumerated Types
 Enumerated Data Types:
Create new ordinal data types by enumerating
their elements in ascending rank ( 0 , 1 ,2 …).
 Example:
enum weekday {Sun , Mon , Tue , Wed , Thu , Fri ,
Sat};
…….
weekday day ;
day = Mon ;
Prof. amr Goneid, AUC
15
Using Enumerated Types
 All operations on ordinal types can be
performed on enumerated types.
enum classid {freshman, sophomore, junior,
senior};
classid
newClass;
if (newClass == freshman)
do something
else if (newClass == sophomore) …..
Prof. amr Goneid, AUC
16
Using Enumerated Types
 Examples:
enum color {red,green,blue,yellow};
color color1,color2, c ;
color1 = red; color2 = color (int(green) +1);
for(c = red; c <= yellow; c++) cout << int(c) << “ “ ;
cout << endl;
color1 = color (3);
if(color1 > blue) cout << “yellow”; 0 1 2 3
yellow
Prof. amr Goneid, AUC
17
Example: color.cpp
// DISPLAYS THE VALUE OF thisColor
void writeColor (color thisColor)
{
switch (thisColor)
{
case red:
cout << "red";
break;
case green:
cout << "green";
break;
Prof. amr Goneid, AUC
18
color.cpp
case blue:
cout << "blue";
break;
case yellow:
cout << "yellow";
break;
default:
status = 0;
cerr <<
"*** ERROR: Invalid color value." <<
endl;
}
}
Prof. amr Goneid, AUC
19
Explicit Enumeration
C++ allows to give explicit values to
enumerators. For Example:
enum NumberBase { Binary = 2, Octal = 8,
Decimal = 10, Hexa = 16};
We can also start from a number other than
zero. For example:
enum German { Ein = 1, Zwei, Drei, Vier};
Prof. amr Goneid, AUC
20
Download