Concepts and use of enum

Enum પૂર્ણાંક અચળોના નિશ્ચિત સમૂહને વાંચી શકાય એવાં નામ આપે છે, જેથી code રહસ્યમય આંકડા 1 ને બદલે MEAL કહે.

8 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

શ્રેણી 1 એટલે શું?

Till લખ્યાના છ મહિના પછી, તમે તમારો જ code વાંચો છો:

if (item.category == 1) { applyMealDiscount(); }

1 એટલે ભોજન? પીણું? જાણવા માટે તમે વીસ મિનિટ સુધી ફેંદો છો. એ દરમિયાન સાથી category = 7 સંઘરે છે, એવી શ્રેણી જે અસ્તિત્વમાં જ નથી, અને compiler ખુશીથી હા પાડે છે.

જાદુઈ આંકડા programs ને સડાવે છે. C++ પાસે બરાબર આના માટે બનેલું નાનું ઓજાર છે: આંકડાઓને નામ આપો, અને સમૂહને પ્રકાર આપો.

Theory

Menu ના પાટિયાના નિશ્ચિત વિભાગ

Canteen ના menu ના પાટિયા પર બરાબર ત્રણ વિભાગ છે: નાસ્તો, ભોજન, પીણાં. કોઈ વાનગી ક્યારેય વિભાગની બહાર ટાંગાતી નથી, અને કોઈ મરજી પડે ત્યારે ચોથો વિભાગ શોધી કાઢતું નથી.

Enum એ તમારા program ની અંદરનું એ પાટિયું છે: નામ આપેલા વિકલ્પોની બંધ યાદી. કોઈ પણ item એમાંના એકમાં જ બેસવી જોઈએ, અને દરેક જણ વિભાગનાં નામ વાંચે છે, વિભાગના આંકડા નહીં.

Theory

Enumeration, ઔપચારિક રીતે

enum (enumeration) એ user-defined પ્રકાર છે જેનાં મૂલ્યો નામ આપેલા પૂર્ણાંક અચળો છે:

enum Category { SNACK, MEAL, DRINK };

મૂળભૂત રીતે નામો 0 થી ગણાય છે: SNACK એ 0, MEAL એ 1, DRINK એ 2.

એ પ્રકારનું variable declare કરો અને વાપરો:

Category c = MEAL;

હવે c અર્થપૂર્ણ રીતે ફક્ત યાદીના સભ્યો જ રાખી શકે, અને if (c == MEAL) અંગ્રેજી જેવું વંચાય છે.

Practical

Till ની શ્રેણીઓ, આખરે નામ સાથે

#include <iostream>
using namespace std;

enum Category { SNACK, MEAL, DRINK };        // 0, 1, 2
enum Tier { REGULAR = 1, MEMBER = 5, STAFF = 10 };  // custom values

int main() {
    Category c = MEAL;

    if (c == MEAL)
        cout << "Thali section" << endl;

    cout << c << endl;        // prints 1, the underlying integer
    cout << STAFF << endl;    // prints 10

    switch (c) {              // enums shine in switch
        case SNACK: cout << "snack"; break;
        case MEAL:  cout << "meal";  break;
        case DRINK: cout << "drink"; break;
    }
    return 0;
}

Theory

પોતાનાં મૂલ્યો અને ચાલુ રાખવાનો નિયમ

તમે જાતે મૂલ્યો સોંપી શકો છો: enum Tier { REGULAR = 1, MEMBER = 5, STAFF = 10 };

જો તમે કેટલાંક સોંપો અને બીજાં છોડી દો, તો સોંપ્યા વગરનું નામ આગલું મૂલ્ય વત્તા 1 લે છે:

enum Code { A = 100, B, C = 200, D };

એ B = 101 અને D = 201 આપે છે.

પોતાનાં મૂલ્યોની ઝંઝટ શા માટે? બહારની હકીકતો સાથે મેળ બેસાડવા: ભૂલના codes, discount ની ટકાવારી, keyboard ના codes, જ્યાં પણ આંકડો પોતે અર્થ વહન કરતો હોય.

Think first

Output ધારો

enum Category { SNACK, MEAL, DRINK }; સાથે till ચલાવે છે:

Category c = DRINK;

cout << c;

Tap કરતાં પહેલાં: પડદા પર બરાબર શું દેખાય છે?

Show the answer

2, DRINK શબ્દ નહીં. Enum નું નામ એ પૂર્ણાંક પરનો પોશાક છે: cout પોશાક ઉતારીને આંકડો છાપે છે (SNACK 0, MEAL 1, DRINK 2). પડદા પર શબ્દ જોઈતો હોય તો તમારે જાતે અનુવાદ કરવો પડે, સામાન્ય રીતે switch થી કે strings ના array થી. નામ છપાશે એવી અપેક્ષા એ enum નું સૌથી સામાન્ય આશ્ચર્ય છે.

Quiz

enum Code { A = 100, B, C = 200, D }; આપેલું હોય, તો B અને D નાં મૂલ્યો શું છે?

  1. B = 101, D = 201
  2. B = 0, D = 1
  3. B = 100, D = 200
  4. B = 200, D = 300
Show the answer

B = 101, D = 201

ચાલુ રાખવાનો નિયમ: સોંપ્યા વગરનું નામ આગલું વત્તા 1 હોય છે. B એ A(100) પછી આવે છે એટલે B એ 101 છે; D એ C(200) પછી આવે છે એટલે D એ 201 છે. વિકલ્પ B શૂન્યથી શરૂ થતો મૂળભૂત નિયમ લગાડે છે, પણ એ ફક્ત ત્યારે જ લાગુ પડે જ્યારે કોઈ મૂલ્ય સોંપાયું ન હોય. વિકલ્પ C અને D નકલ કરવાના અને કૂદકા મારવાના એવા નિયમો ઉપજાવે છે જે enums માં છે જ નહીં.

Watch out

જાણવા જેવી ઢીલાશ

જૂનાં enums ચૂપચાપ int માં ફેરવાઈ જાય છે, એટલે MEAL + DRINK જેવી બકવાસ પણ compile થાય છે (એ તો ફક્ત 1 + 2 છે). પ્રકાર વાંચનનું રક્ષણ કરે છે, ગણિતનું નહીં.

આધુનિક C++ (C++11) એ enum class ઉમેર્યું: enum class Category { SNACK, MEAL }; ને Category::MEAL જોઈએ છે અને એ ચૂપચાપ થતા રૂપાંતરની ના પાડે છે. જો પરીક્ષા પૂછે કે enums ને type-safe કેવી રીતે બનાવવાં, તો જવાબ એ છે. આ અભ્યાસક્રમ માટે, પહેલાં જૂનું enum પાકું કરો.

Theory

તમારી class ની રચનાઓમાં એ ક્યાં બંધબેસે છે

Enums એ class અને struct ની સાથે user-defined કુટુંબના ત્રીજા સભ્ય છે. આગલા પાઠના Item class માં, member variable તરીકે Category category; એ int કરતાં વધુ સ્વચ્છ છે અને પોતે જ પોતાનું વર્ણન કરે છે. આ જ વિચાર તમને બધે મળશે: HTTP ના status નાં જૂથ, અઠવાડિયાના દિવસો, રમતની અવસ્થાઓ, semester ના આંકડા.

Summary

Key takeaways

  • enum Name { A, B, C }; એ નામ આપેલા પૂર્ણાંક અચળોનો user-defined પ્રકાર બનાવે છે.
  • મૂળભૂત ગણતરી 0 થી શરૂ થાય છે; પોતાનાં મૂલ્યો ચાલે છે; સોંપ્યા વગરનાં નામ આગલું વત્તા 1 લે છે.
  • cout અંદરનો પૂર્ણાંક છાપે છે, ક્યારેય નામ નહીં.
  • જૂનાં enums ચૂપચાપ int માં ફેરવાય છે; enum class (C++11) એ કડક આવૃત્તિ છે.
  • બંધ સમૂહો માટે enums વાપરો: શ્રેણીઓ, સ્તર, અવસ્થાઓ; એ switch માં સરસ વંચાય છે.
  • Memory hook: menu ના પાટિયાના નિશ્ચિત વિભાગ.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Data Encapsulation and inheritance

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Concepts and use of enum · Object Oriented Programming and Data Structures (OOPs & D.S.) · Gri-Learn