Модел ва алгоритм тушунчаси
Download 0.77 Mb.
|
7 Алгоритмлар мавзуси
Иҳтиёрий сонлар, ўзгарувчилар ва ифодаларни солиштириш ҳам мантиқий қийматни беради, масалан, 12>5 натижаси true, 5<=3 false натижани беради. Арифметик ва мантиқий ифодалар бутун ва ҳақиқий қийматлар билан иш кўради. Арифметик ифодаларнинг энг содда кўринишлари қуйидагича: белгисиз бутун ва ҳақиқий константалар; бутун ва ҳақиқий ўзгарувчилар; бутун ва ҳақиқий тоифадаги массив элементлари; бутун ва ҳақиқий қийматларни қабул қиладиган функциялар. Массив элементи ва ўзгарувчисининг қиймати арифметик ифодада пайдо бўлгунга қадар аниқланган бўлиши керак. TP тилининг арифметик амаллари 9-жадвалда келтирилган. 9-жадвал
(+) Қўшиш, Айириш (-), Кўпайтириш (*) ва Бўлиш (/) амаллари оддий арифметик ифодадаги каби бажарилади. Бутун сонли бўлиш (div) оддий бўлишдан каср қисмини олиб ташлаш билан фарқ қилади. Амал бажарилишидан олдин иккала оператор ҳам бутун қийматларгача чегараланиб олинади. Бутун сонли бўлишда, бўлинувчининг қиймати бўлувчининг қийматидан кичик бўлса, натижа ҳар дoим 0 га тенг бўлади. Яъни 2 div 3 = 0. Модул бўйича бўлиш (mod)- бутун сонли бўлишда олинган қолдиқни тиклайди. Ифода Натижа 11 mod 5 1 14 mod 5 4 Маълумки, мантиқий кўпайтиришни and амали қуйидагича эди: 1 and 1 = 1 1 and 0 = 0 0 and 1 = 0 0 and 0 = 0 Операндалар ўнли каср кўринишида ёзилади, лекин бажарилиш вақтида иккилик саноқ тизимига айлантирилади. Натижа ўнли каср кўринишида ёзилади. Мисол 1. а and b ифоданинг қийматини ҳисобланг, бунда а = 12 ва b = 22. Операндалар ўнли каср кўринишида ёзилади, лекин бажарилиш вақтида иккилик саноқ тизимига айлантирилади. Натижа ўнли каср кўринишида ёзилади. Мантиқий кўпайтириш қоидаси 1 – жадвалдаги каби амалга оширилади. а ва b лар хотирада 2 байт жойни эгаллайди ва иккилик саноқ тизимида қуйидаги 000000000001100 ва 000000000010110 кўринишга эга бўлади. 0000000000001100 and 0000000010110 амали бажарилганда натижа 0000000000000100, чунки биринчи соннинг охирги рақами 0 иккинчи соннинг охирги рақами ҳам 0 га тенг. Юқоридаги 1-жадвалдан 0 and 0 = 0 бўлганлиги учун натижанинг охирги рақами ҳам 0 га тенг. Худди шунингдек, биринчи соннинг охиридан аввалги рақами 0, иккинчисиники 1 бўлганлиги учун 0 and 1 яна 0 га тенг бўлади. Натижанинг охирги рақамидан аввалгисига яна 0 сонини ёзамиз. Натижанинг кейинги рақами 1 га тенг, чунки 1 and 1 жадвалга кўра 1 га тенг бўлади ва ҳ.к. Шундай қилиб биз 0000000000000100 га эга бўламиз. Ушбу иккилик саноқ системасидаги сонни ўнли саноқ системасига ўтказсак у 4 га тенг. Демак, 12 and 22 = 4. Мисол 2. 12 оr 22 ни ҳисобланг. Ушбу масала ҳам юқоридаги масала каби ечилади. Яъни 12 ва 22 лар хотирада 2 байтни эгаллайди ва иккилик саноқ системасида улар мос равишда 0000000000001100 ва 0000000000010110 ларга тенг бўлади. Ушбу сон рақамларига 1 – жадвалдан фойдаланган ҳолда or амалини юқоридаги мисолдаги каби тадбиқ этамиз. Натижада йиғиндининг иккилик саноқ системасидаги 0000000000011110 қийматни оламиз, ўни сига ўтказсак 30 га тенг. Демак, 12 оr 22 = 30. Мисол 3. 12 хоr 22 ни ҳисобланг. 12 ва 22 лар хотирада 2 байт жойни эгаллайди, ва иккилик тизимда 0000 0000 0000 1100 ва 0000 0000 0001 0110 кўринишларга эга. Юқорида кўриб ўтилган мисоллардаги каби мантиқий истисно амалини қўллаган ҳолда 0000 0000 001 1010 қийматга эга бўламиз. У ўнли саноқ системасида 26 га тенг бўлади. Демак, 12 хоr 22 = 26. Юқорида кўрсатилган амаллардан фарқли not амалининг қўлланиши бироз фарқ қилади. Бутун сонли берилганларда nоt амалининг қўлланилиши иккиланган коднинг битлар бўйича инверсиясини ҳосил қилади. Масалан not(0) = -1; not(-1)=0; not(1)=-2; not(-2)=1; not(2)=-3; . . . ларга тенг бўлади. Чапга ёки ўнгга суришда ҳам берилган сонлар иккилик саноқ системасига ўтказилади ва берилган k сонининг қийматлари мос равишда n бирлик чапга ёки ўнга сурилади. Мисол 4. 3 shl 7 ифоданинг бажарилиш натижасини кўрсатинг. 3 сони хотирада 2 байт жойни эгаллайди ва иккилик тизимда 0000 0000 0000 0011 кўринишга эга. Ҳар бир битни 7 та позиция чапга сурамиз ва 0000 0001 1000 0000 га эга бўламиз, бу ўнли саноқ системасида 384 сонига тўғри келади. Демак, 3 shl 7 = 384. Ўнгга суриш (shr) худди юқоридаги каби бажарилади, фақат сурилиш ўнгга бўлади. Мисол 5. 512 shr 7 ифодани бажариш натижасини кўрсатинг. 512 shr 7 = 4 (0000 0010 0000 0000 ни 7 хона чапга и суриш натижасида 0000 0000 0000 0100 га эга бўламиз у ўнли саноқ системасида 4 га тенг бўлади). Шунингдек,156 shr 7 = 1 (0000 0000 1001 1100 ни 7 хона ўнгга суриш натижасида 0000 0000 0000 0001 га эга бўламиз). (+) белгисини сақлаш унар амали жорий сон белгисини ўзгаришсиз қолдиради. Ифода Натижа +(-777) -777 +(422) 422 (-) белгисини сақлаш унар амал бир-бирига қарши белгили операндалар қийматни тиклайди. Ифода Натижа -(-256) 256 -(+39) -39 Бутун сонли берилганларда nоt амалиниг қўлланилиши иккиланган коднинг битлар бўйича инверсиясини чақиради. Ифода Натижа Download 0.77 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling