enum ime_nabrajanja { lista-konstanti } |
enum Planete
{
Merkur,
Venera,
Zemlja,
Mars,
Jupiter,
Saturn,
Uran,
Neptun,
Pluton
}
Као што можемо видети, набрајањем Planete дефинише се девет константи, при чему свака константа представља позицију планете у односу на Сунце. Прва константа, Merkur, има подразумевану (default) вредност 0.
Остале константе имају за 1 већу вредност у односу на предходну вредност, тако да је константа Venera постављена на 2, константа Zemlja на 3, и тако даље, до константе Pluton, која је постављена на 8.
Подразумевани тип за константе у набрајању је int.
enum Planete
{
Merkur = 1,
Venera = 2,
Zemlja = 3,
Mars = 4,
Jupiter = 5,
Saturn = 6,
Uran = 7,
Neptun = 8,
Pluton = 9
}
Први упис поставља константу Merkur на вредност 1. Као и раније, друге константе се постављају на вредност за 1 већу у односу на предходну вредност, тако да је константа Venera постављена на 2, константа Zemlja на 3, и тако даље све до константе Pluton, која је постављена на 9.
System.Console.WriteLine( "Pozicija Zemlje = " + (int)Planete.Zemlja);
Обратимо пажњу на употребу оператора за конверзију, да би се добила вредност на коју је Земља постављена у набрајању. Овом наредбом приказан је следећи израз:
enum PeriodicnostPlaneta
{
Merkur = 88,
Venera = 225,
Zemlja = 365,
Mars = 687,
}
На следећи начин можемо приказати орбитални период Марса: |
System.Console.WriteLine( " Orbitalni period za Mars je : " +
(int)PeriodicnostPlaneta.Mars+ " dana " );
enum PeriodicnostPlaneta: long
{
Merkur = 88,
Venera = 225,
Zemlja = 365,
Mars = 687,
}
Напомена: Иста константа се не може користити у декларацијама различитих набројивих типова података. На пример, дефиниције типова : enum radnidani { pon, uto, sre, cet, pet }; enum vikend { pet, sub, ned }; су НЕКОРЕКТНЕ, јер се константа pet појављује у дефиницији оба типа . |
(( PeriodicnostPlaneta)88).ToString();
Ова линија кода би за повратну вредност имала стринг који би био : "Merkur" , уколико бисмо користили претходну енумерацију.
На следећем примеру видећемо како можемо користити набројиви тип.
Пример 1. Направити програм који за задати редни број дана у недељи исписује његово име .
|
Решење:
Направићемо, користећи набројиви тип, енумерацију Dani која ће садржати елементе : ponedeljak, utorak, sreda, cetvrtak, petak , subota, nedelja
који ће редом имати вредности 1, 2, 3, 4, 5, 6, 7 . Пре тога направимо форму:
Правимо форму облика: |
Преименујемо label-e и button1 |
||
Слика 4.61. Почетни изглед форме |
Слика 4.62. Изглед форме након преименовања компоненти |
//Kreiramo promenljivu k tipa int
int k ;
//Kreiramo enumeraciju Dani i svakom elementu dodajemo vrednost
enum Dani
{
Ponedeljak = 1,
Utorak = 2,
Sreda = 3,
Cetvrtak = 4,
Petak = 5,
Subota = 6,
Nedelja = 7
}
private void button1_Click(object sender, EventArgs e)
{
//Uzimamo vrednost za promenljivu k koju je korisnik uneo u textBox1
k = int.Parse(textBox1.Text) ;
//U lebeli2 ispisujemo resenje ispisivanjem naziva vrednosti naseg nabrojivog tipa Dani
label2.Text =k + ". dan u nedelji je : " + ((Dani)k).ToString();
}
Покренемо програм и проверимо (за конкретне вредности бројева) :Пример 2. Направити програм који за задати редни број месеца у години исписује његово име у лабели .
|
Решење:
Направићемо, користећи набројиви тип, енумерацију Mesec која ће садржати елементе : Januar, Februar, Mart, April, Maj, Jun, Jul, Avgust, Septembar, Oktobar, Novembar, Decembar
који ће редом имати вредности 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 . Пре тога направимо форму:
Правимо форму облика: |
Преименујемо label-e и button1 |
||
Слика 4.64. Почетни изглед форме |
Слика 4.65. Изглед форме након преименовања компоненти |
//Kreiramo promenljivu k tipa int
int k ;
//Kreiramo enumeraciju Mesec i svakom elementu dodajemo vrednost
enum Mesec
{
Januar = 1,
Februar = 2,
Mart = 3,
April = 4,
Maj = 5,
Jun = 6,
Jul = 7,
Avgust = 8,
Septembar = 9,
Oktobar = 10,
Novembar = 11,
Decembar = 12
}
private void button1_Click(object sender, EventArgs e)
{
//Uzimamo vrednost za promenljivu k koju je korisnik unese preko textBox1
k = int.Parse(textBox1.Text) ;
//U lebeli2 ispisujemo resenje ispisivanjem naziva vrednosti naseg nabrojivog tipa Mesec
label2.Text =k + ". mesec u godini je : " + ((Mesec)k).ToString();
}
Покренемо програм и проверимо (за конкретне вредности бројева) :Пример 3. Направити програм који за унету оцену из информатике исписује успех ученика (одличан, врло добар, добар, довољан, недовољан) .
Решење :
//Deklarisemo pomocnu promenljivu
int a;
//Kreiramo enumeraciju Ocene, ciji su elementi ocene iz informatike
enum Ocene
{
nedovoljan = 1,
dovoljan = 2,
dobar = 3,
vrlo_dobar = 4,
odlican = 5
}
private void button1_Click(object sender, EventArgs e)
{
//Prihvatamo unetu ocenu iz textBox-a
a = int.Parse(textBox1.Text);
//Ispisujemo uspeh u labeli
label2.Text = "Vas uspeh iz informatike je " + ((Ocene)a).ToString()+ "." ;
}