NABROJIVI TIP PODATAKA (ENUM)

Kako bismo u programu predstavili podatak koji može imati samo jednu od nekoliko unapred poznatih vrednosti? Kao na primer za:  dan u nedelji, godišnje doba, boja semafora, ...

Već znamo da se za tekstualne vrednosti može koristiti string, a za celobrojne vrednosti int.

Na primer, možemo da postavimo:

string dan = "Ponedeljak";

Međutim, ovde postoji mogućnost da korisnik unese i "Ponedeljak", "ponedeljak", "PON" ili neku potpuno pogrešnu vrednost.

Zato uvodimo novi tip podataka – enum.

Teorija:

Nabrojivi tip podataka (enum) predstavlja korisnički definisan tip podataka čije su moguće vrednosti unapred nabrojane.

Koristi se kada promenljiva može imati jednu od ograničenog broja poznatih vrednosti.

Na primer, ako definišemo dane u nedelji, promenljiva tog tipa može predstavljati ponedeljak, utorak, sredu i ostale dane.

Osnovni oblik definisanja:

enum NazivTipa
{
    Vrednost1,
    Vrednost2,
    Vrednost3
}

Vrednosti nabrojivog tipa podrazumevano su povezane sa celobrojnim vrednostima. Prva vrednost ima broj 0, druga 1, treća 2 itd.

Primer 1 – Dani u nedelji

Kreirati konzolnu aplikaciju u kojoj se koristi enumeracija za dane u nedelji. U glavnom programu kreirati promenljivu dan - neka bude ponedeljak. Ispisati je na ekranu. Nakon toga ispisati i njenu numeričku vrednost takođe.

Rešenje

using System;

enum DanUNedelji
{
    Ponedeljak,
    Utorak,
    Sreda,
    Cetvrtak,
    Petak,
    Subota,
    Nedelja
}

class Program
{
    static void Main()
    {
        DanUNedelji dan;

        dan = DanUNedelji.Ponedeljak;

        Console.WriteLine(dan);
        Console.WriteLine((int)dan);

        Console.ReadKey();
    }
}

Očekivani rezultat:

Ponedeljak
0

Objašnjenje:

  • DanUNedelji je novi tip podataka.

  • dan je promenljiva tog tipa.

  • DanUNedelji.Ponedeljak predstavlja jednu od dozvoljenih vrednosti.

  • (int)dan pretvara nabrojivu vrednost u celobrojnu vrednost.

Teorija:

Vrednostima nabrojivog tipa pristupa se pomoću naziva tipa, tačke i naziva vrednosti.

Na primer:

DanUNedelji dan = DanUNedelji.Petak;

Za pretvaranje enum vrednosti u ceo broj koristi se eksplicitna konverzija:

int broj = (int)dan;

Obrnuta konverzija može se izvršiti:

DanUNedelji dan = (DanUNedelji)2;

U ovom primeru promenljiva dobija vrednost Sreda.

Primer 2 – Korišćenje enum u switch naredbi: U konzolnoj aplikaciji napraviti enumeraciju za svetla na semaforu. Postaviti jednu promenljivu u glavnom programu. Korišćenjem switch naredbe ispisati poruku, u zavisnosti od vrednosti koja je dodeljena.

using System;

enum BojaSemafora
{
    Crvena,
    Zuta,
    Zelena
}

class Program
{
    static void Main()
    {
        BojaSemafora boja = BojaSemafora.Crvena;

        switch (boja)
        {
            case BojaSemafora.Crvena:
                Console.WriteLine("Stani!");
                break;

            case BojaSemafora.Zuta:
                Console.WriteLine("Pripremi se!");
                break;

            case BojaSemafora.Zelena:
                Console.WriteLine("Kreni!");
                break;
        }

        Console.ReadKey();
    }
}
 

Dodatni zadaci za vežbu

Zadatak 1 – Godišnja doba – Definisati nabrojivi tip GodisnjeDoba koji sadrži četiri godišnja doba.  Kreirati promenljivu i dodeliti joj vrednost Leto.

Ispisati: naziv godišnjeg doba i njegovu numeričku vrednost.

enum GodisnjeDoba
{
    Prolece,
    Leto,
    Jesen,
    Zima
}

class Program
{
    static void Main()
    {
        GodisnjeDoba doba = GodisnjeDoba.Leto;

        Console.WriteLine(doba);
        Console.WriteLine((int)doba);

        Console.ReadKey();
    }
}

Zadatak 2 – Vrsta proizvoda (za vežbu kod kuće) – Definisati nabrojivi tip VrstaProizvoda sa vrednostima: Hrana, Pice, Odeca, Elektronika

Kreirati promenljivu, dodeliti joj vrednost Elektronika i pomoću switch naredbe ispisati odgovarajuću poruku.

Zadatak 3 – Ocena učenika (za vežbu kod kuće) – Definisati enum Ocena sa vrednostima: Nedovoljan, Dovoljan, Dobar, VrloDobar, Odlican.

Dodeliti promenljivoj vrednost Odlican i ispisati tekstualnu i numeričku vrednost.

...

Last modified: Friday, 2 October 2026, 6:43 PM