Ш. И. Раззоќов, М. Д. Юнусова turbo pascal алгоритмик тилида дастурлаш касб-ћунар коллеж талабалари учун ўќув ќўлланма
Program Primer_numbers_deteсt; {Биринчи N бутунлардан ћамма оддий сонларни ажратиш} const
Download 1.74 Mb.
|
Turbo Pascal назария
- Bu sahifa navigatsiya:
- 9.4. Турларни ўзгартириш ва уларнинг биргаликда бўлиши
Program Primer_numbers_deteсt;
{Биринчи N бутунлардан ћамма оддий сонларни ажратиш} const N=255; {Бошланѓич тўпламдаги элементлар сони} type setOfNumber=set of 1 .. N; var n1, next, i: Word; {Ёрдамчи ўзгарувчилар} BeginSet; {Бошланѓич тўплам} PrimerSet:SetOfNumber {оддий сонлар тўплами} begin BeginSet:=[2 .. N]; {Бошланѓич тўплам яратиш} PrimerSet:=[1]; {Биринчи оддий сон} next :=2; {навбатдаги оддий сон} while BeginSet <> [] do {Асосий цикл боши} begin n1:= next; {n1-навбатдаги оддий (next) га бўлинадиган сон} {Бошланѓич тўпламдан оддиймас сонларни йўќотувчи цикл} while n1<= N do begin Exclude (BeginSet, n1); n1:=n1+next {навбатдаги бўлинувчи} end; {Йўќотиш циклининг охири} Include (PrimerSet, next); {Бошланѓич тўпламдан биринчи ўчирилмаган навбатдаги оддий сонни ћосил ќилиш} repeat inc (next) until (next in BeginSet) or (next>N) end; {асосий цикл охири} {натижаларни чиќариш} for i:=1 to N do if i in PrimerSet then write (i:8); writeln END. Тўпламни кўздан кечиришни тугатишдан олдин катта бўлмаган тажрибани ўтказиш фойдадан ћоли эмас. SETOFNUMBER тури баёнини ќуйидагича ўзгартирамиз: type SetOfNumber = set of 1 .. 1; дастурни яна бир марта ишга тушириб, экранга ќуйидагиларни чиќарамиз: 1 3 5 7 BeginSet ва PrimerSet тўпламлари энди битта элементдан иборат бўлади, дастур эса уларга еттитадан кам бўлмаган элементни жойлаштира олди. Бунинг сири оддий: тўпламнинг ички ќурилмаси шундайки, унинг ћар бир элементига битта иккиламчи разряд (бир бит) мос ќилиб ќўйилади; агар элемент тўпламга киритилган бўлса, тегишли хона (разряд) 1 ќийматига, акс ћолда 0 ќийматига эга бўлади. Хотиранинг минимал бирлиги 8 битга тенг бўлган бир байт. Компилятор тўпламларга биттадан байт ажратади, натижада уларнинг ћар бирининг ќуввати 8 элементга эга бўлди. Тўпламнинг максимал ќуввати – 256 элемент. Бундай тўпламлар учун компилятор 16 тадан аралаш байтлар ажратади. Яна бир тажриба: базали тур соћасини 1 .. 256 га ўзгартирамиз. Бу турнинг ќуввати 256 элемент бўлса ћам, дастурни компиляция ќилишга ўрнаш ваќтида компилятор ќуйидаги ахборотни чиќаради: Error 23 : Set Base type out of range {хато23: Тўпламнинг базали тури белгиланган чегаралардан ташќарига чиќаяпти} Компилятор базали тур сифатида минимал чегараси 0, максимали 255 бўлган бутун сонли турни ёки 256 дан кўп бўлмаган (санаб ўтувчи турнинг ќуввати 65536 элемент) ихтиёрий санаб ўтувчи турларни ишлатишга рухсат беради. 9.4. Турларни ўзгартириш ва уларнинг биргаликда бўлиши Бир неча марта айтганимиздек, Турбо Паскал бу турдошлаштирилган тил. У турлар концепцияларига ќатъий риоя ќилиш асосида тузилган, унга кўра тилда ќўлланиладиган амаллар фаќат биргаликда бўлган операндалар учун аниќланган. Ћаќиќий сонлар устида амаллар бажариш мућокама ќилинганда ћаќиќий ва бутун турларнинг биргаликда бўлиш муаммосига тўхталиб ўтилган эди (III боб, 3.2.). Худди шунга ўхшаган муаммолар ћар хил узунликдаги сатрлар, сатрлар ва белгилар ва ћ.к.лар устида амаллар бажарилганда ћам пайдо бўлади. Ќуйида турларнинг биргаликда бўлишининг энг тўла таърифи келтирилади. Ќуйидаги шартлар бажарилса, икки тур биргаликда деб ћисобланади: иккаласи ћам бир хил турда бўлса; иккаласи ћам бир хил ћаќиќий бўлса; иккаласи ћам бир хил бутун бўлса; бир тур иккинчи турнинг тур соћаси бўлса; иккала тур ћам битта базали турнинг тур соћалари бўлса; иккаласи ћам битта базали турнинг элементларидан тузилган тўпламлар бўлса; иккаласи ћам бир хил максимал узунликдаги жойлаштирилган сатрлар (олдига PACKED сўзи ёзиб аниќланган) бўлса; бир тур тур-сатр, бошќа тур-сатр, жойлаштирилган сатр ёки символ бўлса; бир тур ихтиёрий, иккинчиси турдошмас кўрсаткич бўлса, бир тур объектга, иккинчиси унга ќариндош бўлган объектга кўрсаткич бўлса; иккаласи ћам бир хил турдаги натижага, параметрлар сонига, ўзаро мос келувчи параметрлар турига эга процедурали турлар бўлса. Турларнинг биргаликда келиши ўзлаштириш операторларида алоћида маъно касб этади. Т1-ўзгарувчи, Т2-ифода тури бўлсин, яъни Т1:=Т2 ўзлаштириш бажарилади. Бу ўзлаштириш ќуйидаги ћолларда мумкин: Т1 ва Т2 бир хил тур ва бу тур-файлларга ёки файл массивларига ёки майдон-файлларига эга ёзувларга, ёки шундай ёзувлар массивларига тегишли бўлмайди; Т1 ва Т2 биргаликдаги тартибли турлар ва Т2 ќиймат Т1 нинг мумкин бўлган ќийматлар соћасида ётади; Т1 ва Т2 ћаќиќий турлар ва Т2 ќиймат Т1 нинг мумкин бўлган ќийматлар соћасида ётади; Т1 ћаќиќий ва Т2 бутун тур; Т1 сатр ва Т2 - жойлаштирилган сатр, Т1 ва Т2 – биргаликда жойлаштирилган сатрлар; Т1 ва Т2 биргаликдаги тўпламлар ва Т2 нинг ћамма аъзолари Т1 нинг мумкин бўлган ќийматлар тўпламига тегишли; Т1 ва Т2 биргаликдаги кўрсаткичлар; Т1 ва Т2 биргаликдаги кўрсаткичлар процедурали турлари; Т1 – объект ва Т2- унинг авлоди. Дастурда бир турдаги маълумотлар бошќа турдаги маълумотларга ўзгартирилиши мумкин. Бу ўзгартириш очиќ ва яширинча бўлиши мумкин. Турларни очиќ ўзгартиришда аргументи битта турга, ќиймати бошќа турга тегишли бўлган махсус ўзгартириш функцияларининг чаќирилиши ишлатилади. ORD, TRUNC, ROUND, CHR функциялар шундай функциялардир. Турбо Паскалда турларни ўзгартиришнинг яна ћам умумийроќ механизми ишлатилиши мумкин. Унга кўра, ўзгартиришга стандарт турли ёки тури фойдаланувчи томонидан аниќланган идентификаторни, тури ўзгартириладиган ифодага, ўзгартириш функциясининг идентификатори каби ќўлланилганда (турларни ўзгартиришнинг автоаниќлаши) эришилади. Масалан, функцияни ќуйидаги чаќиришларига йўл ќўйилади: Download 1.74 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling