Kas ir programmēšanas valodu kopums?

click fraud protection

Īss uzskaitījums, enum mainīgais tips var atrast C (ANSI, nevis oriģinālajā K&R), C ++ un C #. Ideja ir tāda, ka tā vietā, lai izmantotu int Lai attēlotu vērtību kopu, tā vietā tiek izmantots tips ar ierobežotu vērtību kopu.

Piemēram, ja mēs izmantojam varavīksnes krāsas, kuras ir

  1. sarkans
  2. apelsīns
  3. Dzeltens
  4. Zaļš
  5. Zils
  6. Indigo
  7. violets

Ja enumu nebūtu, jūs varētu izmantot a #definēt (C) vai const C ++ / C #, lai norādītu šīs vērtības. Piem

Pārāk daudz intu, lai skaitītos!

Problēma ir tā, ka ir daudz vairāk ints nekā krāsas. Ja violets ir vērtība 7, un programma piešķir mainīgajam vērtību 15, tad tā nepārprotami ir kļūda, bet to var arī neatklāt, jo 15 ir derīga int vērtība.

Plāni glābšanai

Enum ir lietotāja definēts tips, kas sastāv no nosaukto konstantu kopas, ko sauc par skaitītājiem. Varavīksnes krāsas tiks kartētas šādi:

Tagad iekšēji kompilators izmantos int, lai tos noturētu, un, ja vērtības netiek norādītas, sarkanais būs 0, oranžais ir 1 utt.

Lieta tāda varavīksnes krāsas ir tips, un tam var piešķirt tikai citus tā paša veida mainīgos. C ir vieglāk iet (ti, mazāk stingri rakstīts), bet C ++ un C # neatļaus piešķiršanu, ja vien jūs to piespiedīsit, izmantojot cast.

instagram viewer

Jūs neesat iestrēdzis ar šiem sastādītājs ģenerētās vērtības, jūs varat tām piešķirt savu skaitli nemainīgu, kā parādīts šeit.

Tā kā zilajam un indigo ir tāda pati vērtība, tā nav kļūda, jo skaitītāji var ietvert tādus sinonīmus kā skarlatīns un sārtināt.

Valodu atšķirības

C, mainīgs deklarācijas priekšā ir vārds enum

Lai gan C ++ tas nav vajadzīgs kā varavīksnes krāsas ir atšķirīgs tips, kuram nav nepieciešams enum tipa prefikss.

C # vērtībās vērtībām piekļūst tipa nosaukums, kā norādīts

Kāda ir Enums jēga?

Enumu izmantošana palielina abstrakcijas līmeni un ļauj programmētājam padomāt par vērtību nozīmi, nevis jāuztraucas par to, kā tās tiek glabātas un tām piekļūst. Tas samazina kļūdu parādīšanos.

Šeit ir piemērs. Mums ir luksoforu komplekts ar trim spuldzēm- sarkans, dzeltenā krāsā un zaļš. Apvienotajā Karalistē luksoforu secība mainās šajās četrās fāzēs.

  1. sarkans - Satiksme pārtraukta.
  2. Gan sarkans un Dzeltens - Satiksme joprojām ir apstājusies, bet gaismiņas mainīsies uz zaļu.
  3. Zaļš - Satiksme var kustēties.
  4. Dzeltens - Brīdinājums par tūlītēju sarkanas krāsas maiņu.

Luksofora piemērs

Gaismas tiek kontrolētas, ierakstot vadības baita apakšējos trīs bitus. Tie ir izkārtoti kā bitu raksts zemāk binārā formā, kur RYG attēlo trīs bitus. Ja R ir 1, deg sarkanā gaisma utt.

Šajā gadījumā ir viegli redzēt, ka četri iepriekš minētie stāvokļi atbilst vērtībām 4 = sarkans ieslēgts, 6 = sarkans + Dzeltens abi ieslēgti, 1 = Zaļš ieslēgts un 2 = Dzeltens ieslēgts

Ar šo funkciju

Klases izmantošana Enums vietā

C ++ un C # mums būtu jāizveido klase, un tad pārslodze operators | atļaut VAI ARĪ veidu luksofori.

Izmantojot enumus, mēs novēršam problēmas ar citu bitu piešķiršanu sīpola vadības baitam. Varētu būt, ka daži citi biti kontrolē pašpārbaudi vai slēdzi “Zaļā josla”. Tādā gadījumā kļūda, kas ļauj šos bitus iestatīt normālā lietošanā, varētu izraisīt postījumus.

Lai būtu pārliecināts, mēs maskēsim bitus SetTrafficlights ()funkcija tāpēc neatkarīgi no tā, kāda vērtība tiek ievadīta, tiek mainīti tikai trīs apakšējie biti.

Secinājums

Enum ir šādas priekšrocības:

  • Tie ierobežo vērtības, kuras enum mainīgais var izmantot.
  • Viņi piespiež domāt par visām iespējamām vērtībām, kuras enum var izmantot.
  • Tie ir konstante, nevis skaitlis, kas palielina avota kods
instagram story viewer