7
GLAVA 12 Skupovni tiP Skupovni tip je sredstvo PASCAL-a koje t" 1?.. koristi tako desto' mada njegovo korisienje u nekim sludajevima znadajno podiZe kompaktnost i ditljivost ott?;;* je u pASCAL-u nesto uZi od tradicionalnog malem.a-tiltgq pojma. Skupovni tip ttlp t"il je skup svih podskupova baznog tip?' "ttji-""J:^it ] ;;;:;;" sk rp. Ako uarni iip, nu ko-e se gradi skupovni tip' ima n elemenata' to ';e froj podstupova, koji ulaze u skup,jednak 2' ' Baznitip,nakomesegradikonkretanskupovnitip,moZebitibilokojiprost tip sasledeiim ogranidenjima: - ne smesekoristiti realni tiP; - celobrojni (integer) tip semora zadavati intervalom' Skupovni tip je dat sledeiim sintaksnim dijagramom' Dakle,skupovnitipsezadajekoriSienjemdverezervisaneredi-setiof-i baznog tiPa. NaPrimer, za: tvPe " 'Cifre=set of 1 .'3 ; var S:Cifre; promenljivaS-moZeuzimativre{nosti,kojedinesledeiiskupovicelihbrojeva: <PrazanskuP> 1 2 J 1,2 1,3 2,3 1,2,3

Zadaci i pripreme · Zadaci i pripreme

  • Upload
    others

  • View
    369

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Zadaci i pripreme · Zadaci i pripreme

GLAVA 12

Skupovni tiP

Skupovni tip je sredstvo PASCAL-a koje t" 1?.. koristi tako desto' mada

njegovo korisienje u nekim sludajevima znadajno podiZe kompaktnost i ditljivost

ott?;;* je u pASCAL-u nesto uZi od tradicionalnog malem.a-tiltgq

pojma. Skupovni tip ttlp t"il je skup svih podskupova baznog tip?' "ttji-""J:^it ]

;;;:;;" sk rp. Ako uarni iip, nu ko-e se gradi skupovni tip' ima n elemenata' to ';e

froj podstupova, koji ulaze u skup,jednak 2' '

Baznit ip,nakomesegradikonkretanskupovnit ip,moZebit ib i lokoj iprosttip sa sledeiim ogranidenjima:

- ne sme se koristiti realni tiP;- celobrojni (integer) tip se mora zadavati intervalom'

Skupovni tip je dat sledeiim sintaksnim dijagramom'

Dak le ,skupovn i t ipsezada jekor iS ien jemdverezerv isanered i -se t io f - ibaznog tiPa. NaPrimer, za:

tvPe" 'Cifre=set of 1 .'3 ;

varS:Cifre;

promenljivaS-moZeuzimativre{nosti,kojedinesledeiiskupovicelihbrojeva:<PrazanskuP>12J

1 , 21 , 32 , 31 , 2 , 3

Page 2: Zadaci i pripreme · Zadaci i pripreme

24 Osnovi prosramirania u PASCAL-u

Treba imati u vidu da bazni tip skupa ne moZe imati vi5e od 256 razliditihvrednosti i da u sludaju celih brojeva te vrednosti moraju biti iz intervala od 0 do255.

Neka su date sledeie definicije i opisi:

typeB oj a:(crv ena,zuta,zelena,plav a) ;MesanaBoj a=set of Boja;

varSkupBoja,SkupBojal,SkupBoja2 :MesanaBoja;JednaBoja:Boja;B:boolean;

Ovde je skupovni tip MesanaBoja definisan na baznom tipu Boja.Promenljive SkupBoja, SkupBojal., SkupBoja2 pripadaju skupovnom tipuMesanaBoja.

Za razllku od tradicionalne matematiike notacij e, za ozna(avanje skupova sekoriste kvadratne zagrade,unutar kojih se nabrajaju elementi baznog tipa razdvojenizapetom. U naredbama dodele, promenljive skupovnog tipa se mogu nalaziti i levo idesno od znaka dodele ako su im identidni tipovi.

U sledeiim naredbama dodele koriste se opisane promenljive:

SkupB oj a 1 : : lcrv ena,zuta,zelena] ;SkupBoja2::[];SkupBoj a I ::[crvena,zuta,zelena,plava] ;SkupBoja2::{plaval;

Ne sme se napisati

SkupBojal ::fcrna];SkupBoja::[bela];

jer crna i bela boja ne pripadaju baznom tipu skupa.Nad promenljivim i konstantama skupovnog tipa mogu se primeniti operacije

za obr azov anje novih skupova :- unija (+),

- presek (*) i- razlika ().

Ako su Sl i 52 skupovi istog tipa, tada:1. Unija skupova: S1+S2 sadrii elemente koji pripadaju ili Sl, ili 52, ili i

jednom i drugom, na primer

SkupBoja I ::[crvena,zelena] ;SkupBoja2 ::[zelena,plava] ;SkupB oj a::SkupBoj a I +SkupB oja2;

Vrednost promenljive SkupBoja je skup [crvena,zelena,plava]. Isti se rezultatdobijaposle dodele

SkupBoja::Icrvena,zelena]+[zelena,plava] ;

Page 3: Zadaci i pripreme · Zadaci i pripreme

2. Presek skupova: sl*s2 sadrzi elemente koji pripadaju i skupu s1, i skupu

52, na primer

SkupB oj a 1 : : lctv ena,zuta,Plava] ;SkupBoja2::[Plava];SkupBoj a ::SkuPBoj a I * SkuPB ojaZ ;

Vrednost promenljive SkupBoja je skup: [plava] ' Ako je

SkupBojal:=[crvena];SkupBoj a::SkuPBoj a I * [zelena] ;

ro je vrednost promenljive SkupBoja prazan skup '

3. Razlika skupova: s1-s2 sadrZi elemente iz 51, koji ne pripadaju s2, na

:rimer

SkupB oj a I :: fcrv ena,zuta'zelena,plava] ; .Smpe oi a::SicupBoj a 1 - [crvena'zelena,plava] ;

Vrednost prornenljive SkupBoja je skup fzuta] '

U skupovnim izrizimaop"tu.ilu-pteseka ima viSi prioritet od operacija unije i

:azlike.NadpromenljivimikonstantamaSkupovnogtipamoguSeprrmenrtloperac{e

:oredenja:-jednakost (=),- nejednakost (+),- PodskuP (<=),- nadskuP (>=)'1. Jednakost i nejednakost skupova:

:lemente. Ako se dva skupa razlikujuoznalava se S 1<>S2) ' Na Primer'

[zuta]:l'l daje vrednost false;

[crvena,zelena]<>[zuta,plava] daje vrednost true;

z. eodrtup (nadskup): si<=sz (S1>=S2) daje vrednost_true, ako su svi

elementi S 1 tako<te. elementi od 52, i vrednost false u suprotnom' Na primer:

[crvena]<:[crvena,zuta,plava] daje vrednost true;

fcrvena,zuta]>=[plava] daje vrednost false'

bsim ovih operacija, za rad sa skupovima se koristi operaciia pripadnosti in"

X in 51 daje vrednost tiue, ako X pripada skupu S1, i vrednost false u suprofixom'

iip pto-"ntiive X mora biti isti kao i bazni tip skupa S 1 ' Na primer'

Skup B oj a I : = lcr v ena,zuta,zelenaf ;JednaBoja::zelena;B ::JednaBoj a in SkupBoja I ;

i o g i d k a p r o m e n l j i v a B d o b i j a v r e d n o s t t r u e , j e r j e z e l e n a e l e m e n t S k u p aSkupBojal. Ako su date naredbe

SkupBoj a2 :=[crvena, Plava] ;

S1=S2 ako i samo ako 51 i 52 sadrZe iste

u bar jednom elementu, oni nisu jednaki

Page 4: Zadaci i pripreme · Zadaci i pripreme

JednaBoja:=zelena;B ::JednaBoj a in SkupBoja2;

vrednost B je false'skupovi se desto koriste za uprosiavanje sloZenih if-ova, na primer

if (e0) or(t=32) or(t=156) or(t=202) then '..

se moZe uprostiti saiftin [0,32, I 56,202] then ...

u PASCAL-u nije dozvoljeno koristiti celobrojni tip u svojstvu baznog tipa'

Medutim, dozvoljeno ie korisienje njegovog intervala u granicama od 0 do 255. Na

primer,type SkuPl=set of 1..10:

Ako je skup elemenata, koji obrazuju vrednost promenljive skupovnog tipa,

ureden u st l"dulu zadatim baznim tipom, ne moraju se nabrajati svi elementi, vei

samo granidni razdvojeni sa dve taEke:

SkupBoj a:=[cwena'.Plava] ;SkupCifara::[ I 9..98] ;

Primer 1. Napisati proceduru za formiranje simetridne razlike dva skupa A i B

kori5ienjem sledeieg tiPa;

tyPe Alfabeeset of 'a'..'z':

Ovaj problem resava sledeca procedura dodeljujuii simetridnu razliku SkupC:

nrocedure Simetricna(var SkupA.SkupB,SkupC :Alfabet) ;' - I ;it.*..uva simetrictru raztitu za StupA i SkupB * )begin

SkupC ::(SkupA- SkupBHSkupB- SkupA)end.

primer 2. Napisati progam kojim se odreduje i ispisuje broj razliditih cifara i

ruzl1(itecifre celog pozitivnog broja N?

u ovom primeru za izJvajanje svake cifre broja N, odredujemo ostatke pn

deljenju N sa jo. Na primer, nlu 3g N=172; t72:10-17 (ostatak je: 2),1,7:10=l

ioriu,uf. j", 7), 1:10{ iostatak je: 1). Ostaci: 2,7 ,l - obrazujubroj 172'

program BrojCifara;var

Cifra:0. '9;N,I,BrojRazlCifara:integer;SkuPCifara: set of 0'.9 ;

beginwrite('Unesi Prirodan broj :') ;readln(N);SkuPCifara::[];BrojRazlCifara:=0;rePeat

Cifra::Nmod l0;

Page 5: Zadaci i pripreme · Zadaci i pripreme

Skuoovni tip

l -

thenbegin

BrojRazlCifara::BrojRazlCifara+ I ;SkupCifara : :SkuPC ifara+ [Cifra]

27

end;N:=Ndiv 10

untilN:0;writeln('Broj razlicitih cifaraje :',BrojRazlCifara) ;writeln('To su cifre:');forl::0 to 9 do

if I in SkupCifarathen write(I:5);writeln

end.u ovom primeru, operacijom unije (+), promenljiva skupcifara postepeno

prikuplja razne cifre,koje-obrazuju dati broj. operacijom in se proverava pripadnost

skupu tekuie cifre.Primer 3. Napisati program kojim se odreduje i ispisuje skup delitelja brojeva od I

do 100. Rezultat smestiti u niz skupova.Ovde treba iskoristiti dinjenicu da se delitelji broja pojavljuju u parovima

rakvim da je jedan broj manji iti jednak, a drugi veii ili jednak celom delu korena

:roja. Na primer, broj 12 se moZe iztazitikaol2=lx, 12=2*6=3*4

ra se ne moraju traZiti delitelji veii od 3, vei samo u skup delitelja uvrstiti i

lolidnik deljenja broja sa deliteljem manjim ili jednakim 3 '

program Delitelji;- typ. SkuPDel:setof l. '100;var

Broj :anaY[ 1.. I 00] of SkuPDel;BrojDel, I :1. .100;

begin{* Formiranje niza sa deliteljima* }for I:=1 to 100 do

beginBrojll l::[];for Broj Del :: I to trunc(sqrt(I)) do

if I modBrojDel=0then Broj[I] ;:Broj [I']+ [Broj Del]+ [I div BrojDel]

end;writeln('Broj evi delitelj i su:') ;for l : :1to l00do

beginwritc(I:4,' ':6);

forBrojDel:=l toldoif BroiDel in Broj [I] thenwrite(BrojDel,' l);

writelnend

end.

Page 6: Zadaci i pripreme · Zadaci i pripreme

28 Osnovi programirania u PASCAL-u

Pri koriSienju promenljivih skupovnog tipa treba imati u vidu da je izvr5avanjeoperacija + i * ekvivalentno izvr5avanju operacija disjunkcije i konjunkcije nadbinarnim redima, jer se svakoj vrednosti skupovnog tipa moZe pridruZiti binamared. Naprimer:

I crven a, zuta, zelena,plav a]Icrvena,zuta,zelena][crvena,zuta]fcrvena,zelena]fcrvena][plava]

Prema tome, unija:

je ekvivalentnoje ekvivalentnojeekvivalentnojeekvivalentnoje ekvivalentnoje ekvivalentno

111 r1 l l 0l 1 0 01 0 1 0l 0 0 00 0 0 1

[crvena, zuta] * [crv ena, ze le naf:lcrv ena,zuta,z elenafjeekvivalentna: I 1 00 + 1 0 I 0=1 I 1 0.

A presek:

[ ] * [crv'ena,zelena,plava]:[ ]je ekvivalentan; 0000 * I 0 I 0=00 00.

Ova analogija nije sludajna, jer je u pojedinim implementacijama maksimalnadimenzija skupa desto ogranidena duZinom registra konkretnog radunara, a svaki el-ement skupa se predstavlja jednim bitom registra. Ako element pripada skupu, to sekodira sa 1. u protivnom 0. Ovakvo kompaktno predstavljanje skupa je moguie zato5to se i skupovi, kao i nizovi mogu upakovati. Ako postoji potreba da se operi5e saskupovima koji sadrZe veii broj elemenata nego Sto je bitova u registru, mogu sekoristiti nizovi logiEkog tipa koji ie imati ista svojstva kao i skupovi:

varV:array[ I .. I 000] of boolean;

Zadacizavelbu

1. Da li su korektne sledeie definicije i opisi:

a)type

SkupCifara:set of 0.. 9 ;var

B:SkupCifara;

typeSkupZnakova:set of ' 0'.. ' 9' ;

varTabela: arrayf- I 0..+10] of SkupZnakova;

typeSkupNizova:set o{array[- I 0.. I 0] ofchar;

varTabela:SkupNizova;

b)

c)

Page 7: Zadaci i pripreme · Zadaci i pripreme

Skupovni tip 29

2. Ako su date naredbe dodele

r,Crediti skupove koji formiraju sledeii izrazi:

a) SkupA+SkupB; e) SkuPA-SkuPB;b) SkupA*SkupB; f) (SkupA-SkupB)*(SkupC-SkupB);c) SkupA+SkupC; g) SkupA*SkupB*SkupC;d) SkupB*SkupC; h) SkuPC-SkuPC;

3. Odrediti istinitosnu vrednost sledeiih iztaza:

a) 1r,2,3):13,1,2);b) 112,1 4,1 6l<:172,1 4,1 6);c) [3,6,7]=[3, 6,7f* f|,3,6,11;d) i l . .201>:U..301;e) 'B' in [ 'C' . . 'T ' ] ;

4. Ako je dato SkupA:[10], SkupB=[1,3,10], SkupC:[0'1,2,3,4],

: SkupD:[3.4,5,6], odredi rezultat sledeiih izraza:

a) SkupA*SkupB+SkuPC - SkuPD;b) (SkupA- SkupB) - (SkuPC*SkuPA);c) (SkupA+SkupB)<=SkuPC ;d) 3 in SkupB*SkuPC*SkuPD;

5. Napisati program koji dita dva stringa i ispisuje sve znake koji se pojavljuju

u jednom stringu, ali ne i u drugom.6. Neka su ulazne velidine elementi niza dvocifrenih prirodnih brojeva, dija je

duZina nepoznata, a obeleZje kraja niza nula. Napisati program koji ie Stampati

:lemente niza u neopadajuiem poretku.