Википедија:Вики гимназијалац/Nabrojivi tip

Из Википедије, слободне енциклопедије

Nabrojivi tip[уреди]


Nabrojivi tip je jedan od nestandardnih tipova podataka u Pascal-u.Ako podaci koje zelimo da obrađujemo nisu celobrojnog,realnog,logickog ili znakovnog tipa,preostaju nam dve alternative.Prvo,da element podataka reprezentuju neke poznate vrednosti.Na primer,ako treba da napisemo pogram u kome se izvršavaju određene akcije koje se odnose na svaki dan u nedelji,dane nedelje mozemo predstaviti celim brojevim a od 0 do 6 i pisati naredbe oblika:

    if (dan=0) or (dan=6)
    then VremeUstajanja:=10
    else VremeUstajanja:=7

Da bi se razumeo smisao ove naredbe,moralo bi biti poznato koji su dani predstavljeni celim brojevima 0 i 6.Drugo rešenje bi se zasnivalo na definisanju novog tipa podataka,koji se sastoji iz naziva dana nedelje radi njihovog slikovitijeg predstavljanja.To bi nam omogućilo pisanje naredbe oblika:

    if (dan=nedelja) or (dan=subota)
    then VremeUstajanja:=10
    else VremeUstajanja:=7

U ovom slucaju,za razumevanje smisla naredbe nije potrebno razmisljati koji dan u nedelji odgovara celom broju.Nabrojivi tip se definiše kao uređen skup nabrojanih imena, koja predstavljaju konstante tipa. U drugom resenju prethodnog primera podrazumevalo se da je definisan tip:

    type dani=(nedelja,ponedeljak,utorak,sreda,cetvrtak,petak,subota);

i sa:

    var
        dan:dani;

opisana promenljiva dan ,čija vrednost može biti bilo koja od sedam nabrojanih konstanti koje obrazuju tip dani. Ista konstanta se ne može pojaviti u dve ili više type definicija.Na primer,definicije:

    type
        radnidani=(ponedeljak,utorak,sreda,cetvrtak,petak,subota);
        vikend=(petak,subota,nedelja);

su nekorektne jer se konstanta petak pojavljuje u oba tipa.Dozvoljeno je da se tipovi definišu i u odeljku za opis promenljivih,tako da je:

     type
       samoglasnik=(A,E,I,O,U);
       dani=(nedelja,ponedeljak,utorak,sreda,cetvrtak,petak,subota);
     var
        slovo:samoglasnik;
        rodjendan,dan:dani;

ekvivalentno sa:

     var
      slovo:(A,E,I,O,U);
      rodjendan,
      dan:(nedelja,ponedeljak,utorak,sreda,cetvrtak,petak,subota);

Promenljivoj moze biti dodata bilo koja vrednost specificirana u definiciji tipa kome pripada.Na primer,sledeće dodele su korektne:

      slovo:=U,
      rodjendan:=sreda;
      dan:=petak;

dok sledeće naredbe dodele nisu korektne:

      slovo:='E';     (*'E' je konstanta tipa char)
      slovo:=nedelja;    (*promenljiva i konstanta nisu istog tipa)
      dan:=pon;         (*nekoraktna konstanta)

Uređen skup vrednosti koje čine nabrojivi tip numeriše se automatski počev od nule,a među konstantama se uspostavlja odnos:

     nedelja<ponedeljak<utorak<sreda<cetvrtak<petak<subota

Prema tome,nad promenljivim i konstantama istog tipa mogu se primeniti operacije poređenja:=,<>,<,>,<=,>=; i standardne funkcije succ,pred,ord:

     utorak=petak    (*dobija vrednost false)
     sreda<subota     (*dobija vrednost true)
     succ(petak)=subota
     pred(sreda)=utorak
     ord(ponedeljak)=1

Vrednosti funkcije pred za prvi i funkcije succ za poslednji član nabrojivog tipa nisu definisane. Tip boolean je implicitno definisan kao boolean=(false,true),a za njegove konstante važi false<true.

Pošto je nabrojivi tip uređen,može se koristiti za formiranje logičkog izraza u if naredbi.Na primer:
        if (nedelja<dan) and (dan<subota)
        then writeln ('To je radni dan')
        else writeln ('to je dan za odmor')

Promenljive nabrojivog tipa koje je definisao korisnik,ne mogu biti parametri procedura ulaza read i readln (tj. posredstvom ovih procedura ne može im se dodeliti vrednost),kao ni procedura izlaza write i writeln.Promenljive boolean tipa se mogu se koristiti u proceduri izlaza. Promenljiva nabrojivog tipa se može koristiti u naredbi ciklusa for.Na primer:

         for dan:=nedelja to subota do

označava da će se ciklus ponoviti sedam puta pri čemu promenljiva tipa dan uzima redom svaku od sedam vrednosti definisanih u odeljku type.


Videti još[уреди]


Spoljašnje veze[уреди]


Izvor[уреди]

"Računarstvo i informatika za III razred gimnazije",Milan Čabarkapa