31
CMPE-013/L: “C” Programmin riel Hugh Elkaim – Spring 2013 CMPE-013/L Enumerations Gabriel Hugh Elkaim Spring 2013

CMPE-013/L Enumerations

  • Upload
    hagen

  • View
    56

  • Download
    0

Embed Size (px)

DESCRIPTION

CMPE-013/L Enumerations. Gabriel Hugh Elkaim Spring 2013. Enumerations. Definition. Enumerations: Are unique integer data types May only contain a specified list of values Values are specified as symbolic constants . - PowerPoint PPT Presentation

Citation preview

Page 1: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

CMPE-013/L

Enumerations

Gabriel Hugh ElkaimSpring 2013

Page 2: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Definition

Enumerations

• Enumerations:– Are unique integer data types– May only contain a specified list of values– Values are specified as symbolic constants

Enumerations are integer data types that you can create with a limited range of values. Each value is represented by a symbolic constant that may be used in conjunction with variables of the same enumerated type.

Page 3: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Example

Syntax

EnumerationsHow to Create an Enumeration Type

enum weekday {SUN, MON, TUE, WED, THR, FRI, SAT};

enum typeName {label0, label1,…,labeln}Where compiler sets label0 = 0, label1 = 1, labeln = n

• Creates an ordered list of constants• Each label’s value is one greater than the previous

label

SUN = 0, MON = 1, TUE = 2, WED = 3, THR = 4 , FRI = 5, SAT = 6Label Values:

Page 4: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Example

EnumerationsHow to Create an Enumeration Type

• Any label may be assigned a specific value• The following labels will increment from that

valueSyntax

enum typeName {label0 = const0,…,labeln}Where compiler sets label0 = const0, label1 = (const0 + 1), ...

enum people {Rob, Steve, Paul = 7, Bill, Gary};

Rob = 0, Steve = 1, Paul = 7, Bill = 8, Gary = 9Label Values:

Page 5: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Example

Syntax

Syntax

enum typeName {const-list} varname1,…;

EnumerationsHow to Declare an Enumeration Type Variable

enum weekday {SUN, MON, TUE, WED, THR, FRI, SAT} today;

enum weekday day; //day is a variable of type weekday

• Declared along with type:

enum typeName varName1,…,varNamen;

Declared independently:

Page 6: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Example

Syntax

enum {const-list} varName1,…,varNamen;

EnumerationsHow to Declare a ‘Tagless’ Enumeration Variable

enum {SUN, MON, TUE, WED, THR, FRI, SAT} today;

• No type name specified:

Only variables specified as part of the enum declaration may be of that typeNo type name is available to declare additional variables of the enum type later in code

Page 7: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Example

Syntax

typedef enum {const-list} typeName;

EnumerationsHow to Declare an Enumeration Type with typedef

typedef enum {SUN, MON, TUE, WED, THR, FRI, SAT} weekday;

weekday day; //Variable of type weekday

Variables may be declared as type typeName without needing the enum keyword

The enumeration may now be used as an ordinary data type (compatible with int)

Page 8: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Example

Syntax

varName = labeln;

EnumerationsHow to Use an Enumeration Type Variable

enum weekday {SUN, MON, TUE, WED, THR, FRI, SAT};enum weekday day;

day = WED;day = 6; //May only use values from 0 to 6if (day == WED){ …

If enumeration and variable have already been defined:

• The labels may be used as any other symbolic constant• Variables defined as enumeration types must be used in

conjunction with the type’s labels or equivalent integer

Page 9: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Lab Exercise 18

Enumerations

Page 10: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Exercise 18Enumerations

• Open the project’s workspace:

1 Open MPLAB® and select Open Workspace… from the File menu.Open the file listed above.If you already have a project open in MPLAB, close it by selecting Close Workspace from the File menu before opening a new one.

/Examples/Lab18.zip -> Load “Lab18.mcw”On the class website

Page 11: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Exercise 18Enumerations

• Compile and run the code:

2 Click on the Build All button.

Compile (Build All) Run2 3

3 If no errors are reported,click on the Run button.

Halt4

4 Click on the Halt button.

Page 12: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Exercise 18Enumerations

typedef enum {BANDSTOP, LOWPASS, HIGHPASS, BANDPASS} filterTypes;

filterTypes filter;

/*============================================================================ FUNCTION: main()============================================================================*/int main(void){ filter = BANDPASS; switch (filter) { case BANDSTOP: BandStopFilter(); break; case LOWPASS: LowPassFilter(); break; case HIGHPASS: HighPassFilter(); break; case BANDPASS: BandPassFilter(); break;

}

while(1); }

Enum Definition and Use

Page 13: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Exercise 18Conclusions

• Enumerations provide a means of associating a list of constants with one or more variables

• Make code easier to read and maintain• Variables declared as enum are essentially still int types

Page 14: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Questions?

Page 15: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 16: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 17: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 18: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 19: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 20: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 21: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 22: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 23: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 24: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 25: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 26: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 27: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 28: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 29: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 30: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013

Page 31: CMPE-013/L Enumerations

CMPE-013/L: “C” ProgrammingGabriel Hugh Elkaim – Spring 2013