7. Чизиқли жараёнларни дастурлаш


Download 478.36 Kb.
bet12/32
Sana28.12.2022
Hajmi478.36 Kb.
#1016431
1   ...   8   9   10   11   12   13   14   15   ...   32
Bog'liq
С да дастурлаш 1 кисм 1 семестр

Амаллар

Мазмуни

&

Мантиқий ВА (кўпайтириш)

|

Мантиқий ЁКИ (қўшиш)

^

Истисно қилувчи ЁКИ

~

Мантиқий ИНКОР (инверсия)

Разрядли мантиқий амалларнинг бажариш натижаларини жадвал кўринишида кўрсатиш мумкин.

A

B

A&B

A|B

A^B

~A

1

1

1

1

0

0

1

0

0

1

1

0

0

1

0

1

1

1

0

0

0

0

0

1

5.3. sizeof амали
Ҳар хил турдаги ўзгарувчилар компьютер хотирасида турли сондаги байтларни эгаллайди. Бунда, ҳаттоки бир турдаги ўзгарувчилар ҳам қайси компьютерда ёки қайси операцион системада амал қилинишига қараб турли ўлчамдаги хотирани банд қилиши мумкин.
C++ дастурлаш тилида ихтиёрий (таянч ва ҳосилавий) турдаги ўзгарувчиларнинг ўлчамини sizeof амали ёрдамида аниқланади. Бу амални ўзгармасга, турга ва ўзгарувчига қўлланиши мумкин. Қуйида келтирилган дастурнинг қисмида компьютенинг платформасига мос равишда таянч турларининг ўлчамлари чоп қилинади.
cout << “int turi ўlchami: ”<
cout << “float turi ўlchami: ”<
cout << “double turi ўlchami: ”<
cout << “char turi ўlchami: ”<
5.4. Разрядли операторлар
Разрядли мантиқий амалларни қиймат бериш оператори билан биргаликда бажарилишининг қуйидаги кўринишлари мавжуд:
&= – разрядли ВА қиймат бериш билан;
|= – разрядли ЁКИ қиймат бериш билан;
^= – разрядли истисно қилувчи ЁКИ қиймат бериш билан.
Байтдаги битлар қийматини чапга ёки ўнгга суриш учун, мос равишда “<<” ва “>>” амаллари қўлланилади. Амалдан кейинги сон битлар нечта ўрин чапга ёки ўнгга суриш кераклигини билдиради.
Масалан:
unsigned char a = 12; // a = 000011002 = 0x0C16
a = a<<2; // a = 001100002 = 0x3016 = 4810
a = a>>3; // a = 000001102 = 0x0616 = 610
Разрядларни n та чапга(ўнгга) суриш 2n сонига кўпайтириш (бўлиш) амали билан эквивалент бўлиб, кўпайтириш (бўлиш)га нисбатан тез бажарилади. Шуни эътиборга олиш керакки, операнд ишорали сон бўлса, у ҳолда суриш амалидан сўнг унинг ишораси сақланиб қолади. Агар операнд манфий сон бўлса, у ҳолда суриш амалидан сўнг унинг ишораси сақланмайди ва математик нуқтаи–назардан хато натижалар юзага келади:
char b = –120; // b = 100010002 = 0x8816
b = b << 2; // b = 001000002 = 0x2016 = 3210
b = –120; // b = 100010002 = 0x8816
b =b >>3; // b = 111100012 = 0xF116 = -1510
Шу сабабли, бу разрядли суриш амаллари ишорасиз (unsigned) турдаги қийматлар устида бажарилган маъқул.
5.5. Инкремент ва декремент
C++ дастурлаш тилида операнд қийматини бирга ошириш ва камайтиришнинг самарали воситалари мавжуд. Булар инкремент (++) ва декремент (––) унар амаллардир. Операндга нисбанат бу амалларнинг префикс ва постфиск кўринишлари бўлади. Префикс кўринишда амал тил кўрсатмаси бўйича иш бажарилишидан олдин операндга қўлланилади. Постфикс ҳолатда эса амал тил кўрсатмаси бўйича иш бажарилгандан кейин операндга қўлланилади. Префикс ёки постфикс амал тушунчаси фақат қиймат бериш билан боғлиқ ифодаларда ўринли:
x = y++; // постфикс
index = ––i; // префикс
count++; // унар амал, “++count;” билан экивалент
abc––; // унар амал, “––abc;” билан эквивалент
Бу ерда у ўзгарувчининг қийматини х ўзгарувчисига ўзлаштирилади ва кейин биттага оширилади, i ўзгарувчининг қиймати биттага камайтириб, index ўзгарувчисига ўзлаштирилади. Префиксли ва постфиксли амалларнинг ишлаш принципида фарқ бор. Префиксли амаллар аввал қийматни ошириб кейин қиймат берилади. Постфиксли амаллар аввал қиймат бериб, кейин қийматини оширади.
int a = 5;
cout << a;
cout << a++;
cout << ++a;
Дастурнинг қисми бажарилганидан сўнг экранда қуйидаги натижа ҳосил бўлади:
5
5
7

Download 478.36 Kb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   32




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling