§ 3.17. Тўплам тури.
Паскал тилида фақат элементлари бир хил турга тегишли чекли тўпламларгина қаралади. Тўплам элементининг тури бу тўпламли турнинг асосини ташкил этувчи тур дейилади.
Паскалда тўпламли турнинг қиймати тўплам бўлади. Тўпламли турнинг аниқ қиймати (ўзгарувчи ёки ўзгармас) квадрат қавсга олинган тўплам элементларининг рўйхатидан иборат бўлади:
<тўпламли тури> :: = <тўпламнинг тузилиши>
<тўпламнинг тузилиши> :: = [ ] ёки [< элемент>{,<элемент>}]
<элемент> :: = < ифода> ёки <ифода>. . <ифода>
Тўплам элементлари асос турдаги ўзгармас ёки шу турга тегишли ифодадан ташкил топган бўлиши мумкин. Тўплам умуман айтганда бўш бўлиши мумкин, у ҳолда тўплам [ ] кўринишда ёзилади.
Паскал тилида ёзилган тўпламга мисоллар:
[ ], [ 2,4,5,3 ], [ ‘s’,’g’, ‘a’ ], [ n,m,4 ],
[1,2. . 5], [n. . m], [ ‘a’. . ’f’,’t’,’x’. . ’z’]
Тўпламда элементларнинг жойлашиш тартибини аҳамияти йўқ ва ҳар бир элемент бир марта ҳисобга олинади.
Тўпламли турнинг берилиши қуйидаги кўринишда бўлади:
<тўпламли тури > :: = set of < асос тур>
<асос тур>::=<асос турнинг берилиши> ёки <асос турнинг номи>
Масалан, set of 1. . 3 кўринишдаги тўпламли тури қиймати 1..3 диапазонидаги барча бутун сонларни ўз ичига олади. Шунинг учун, бу тўпламли турнинг қиймати бўш тўплам ва 1,2,3 сонларидан иборат тўпламлар бўлади:[ ], [1], [2], [3], [1,2],[1,3], [2,3],[ 1,2,3]. Шу тўпламларгина юқоридаги тўпламли турнинг қиймати бўлади.
Тўплам турида амаллар. Тўпламли ифодалар.
Паскал программалаш тилида тўпламли турнинг қийматлари устида қуйидаги амаллар аниқланган:
қиймат бериш, яъни тўпламли турдаги ўзгарувчига тўпламли ифодани бериш, яъни ифоданинг қиймати тўплам бўлади(бунда ўнг ва чап томондаги қиймат бериш операторининг турлари бир бирига мос бўлиши керак):
бирлашма + ( маъноси худди математикадагидек)
кесишма * ( маъноси худди математикадагидек)
айирма - ( маъноси худди математикадагидек)
А=В муносабати А ва В тўпламни устма-уст тушиши, А<>В - А ва В тўпламни устма-уст тушмаслиги, А В - А тўпламни В тўпламда ётиши, АВ - А тўплам В тўпламни ўз ичига олади, x in А - x - элемент А тўпламга тегишли.
Шуни таъкидлаш керакки, юқорида санаб ўтилган биринчи учта амалнинг натижаси тўплам бўлади ва бу амаллар икки ўринли ҳисобланади. Уларнинг операндлари тўпламли ўзгармаслар, ўзгарувчилар ва тўпламли ифодалар.
Муносабат амали эса мантиқий турдаги қиймат беради ва у ҳам икки ўринли ҳисобланади.
x in А амалида биринчи операнд тўпламнинг асос турини элементи, иккинчи операнд эса тўпламли ифода, тўпламли ўзгармас ёки тўпламли ўзгарувчи бўлиши мумкин.
1-мисол.
Элементлари харфлардан ташкил топган Y1,Y2,Y3 тўпламлар асосида X=(Y1Y2)(Y1\Y2) тўплам ҳосил қилинсин ва YX эканлиги текширилсин.
Program T1;
Type T=set of char;
Var
Y1,Y2,Y3:T;
X:T;
C:char;
begin
Y1: =[‘a’, ‘b’, ‘a’, ‘r’, ‘m’];
Y2: =[‘r’, ‘a’, ‘b’, ‘a’];
Y3: =[‘a’, ‘r’];
X: =(Y1*Y2) +(Y1-Y2);
For c: =’a’ to ‘r’ do
If c in x then write (c);
If y3<=x then write(‘y3 in x’) else
write(‘y3 not in x’)
end.
2-мисол.
Нуқта билан тугайдиган берилган матнда а, е, с, h харфларининг неча марта учрашини аниқловчи программа тузилсин.
Program N1;
Var
c1: char;
k : integer;
begin read(c1);
k: =0;
while c <> ’.’ do begin
if c1 in [‘a’, ‘e’, ‘c’, ‘h’] then k: =k+1;
read(c1);
end;
writeln(k)
end.
Мустақил бажариш учун топшириқлар.
1) var p : set of 0..9;
i,j : integer;
Quyidagi o'zlashtirish operatorlari bajarilganda, i=3 va j=5 bo'lganida p o'zgaruvchisi qanday qiymat qabul qiladi:
a) p:= [i+3, j div2, j..sqr(i)-3];
b) p:= [2*i..j];
v) p:=[i,j,2*i, 2*j]
2) type satr = array [1..100] of char;
Berilgan s satrga kiruvchi ‘+’ , ’-‘ va ’*’ belgilarni va raqamlarning umumiy sonini hisoblovchi hisob(s) funktsiyasi tuzilsin.
Qo'shimcha o'zgaruvchi ishlatmasdan A va B to'plam turidagi o'zgaruvchilar qiymatlari o'zaro almashtirilsin.
Yo'naltirilgan G grafning N uchidan K uchiga yo'l bor yoki yo'qligini aniqlovchi mantiqiy Yol (G,N,K,D) funktsiyasi tuzilsin. Agar yo'llar mavjud bo'lsa, D parametrga bu yo'llarni eng qisqasining uzunligi berilsin (yoylar soni).
Do'stlaringiz bilan baham: |