If (k 5) { // агар k=5
Download 148.65 Kb.
|
3-ҳафта
Ҳисоблаш жараёни тармоқланувчи дейилади, агарда қандайдир шартнинг бажарилишига боғлиқ ҳолда бажарилиш қадами ўз йўналишини ўзгартирса. Яъни, шарт асосида бир нечта йўналишлар ташкил этилган бўлса, шарт ифодасининг рост ёки ёлғон қийматига мос ушбу йўналишларнинг бири танлаб олинади. Эслатма, тармоқланиш бу структурали дастурлашнинг таянч алгоритмик конструкцияларидан бири ҳисобланади. Тармоқланувчи алгоритмларни C/C++ дастурлаш тилларида татбиқ қилиш учун шартли if (агар) оператори қўлланилади: if (шарт) { ... ; ... ; } else { ... ; ... ; } Шарт мантиқий ёки бутун сонли ифодалар ёрдамида ва албатта қавс ичида берилади. Агар шарт натижаси 0 га тенг бўлмаса (true – рост натижа берса), у ҳолда биринчи блок амаллари бажарилади. Акс ҳолда else (акс ҳолда) калит сўзидан кейин ёзилган иккинчи блок амаллари бажарилади. Агар биринчи ёки иккинчи блоклар бор-йўғи битта оператордан ташкил топган бўлса, у ҳолда блоклар учун фигурали қавс ёзилиши шарт эмас. Ҳамма вақт ҳам else блоки қўлланилмаслиги мумкин, агарда у қўлланилмаган бўлса, if операторида ёзилган шарт 0 қиймат (false – ёлғон) берган ҳолатларда бошқарув кейинги операторга узатилади. 1-мисол. Агар k ўзгарувчи қиймати 5 га тенг бўлса, у ҳолда 𝑎 = 10, 𝑏 = 20 қийматлар таъминлансин, акс ҳолда тескариси бажарилсин: if (k == 5) { // агар k=5 a = 10; b = 20; } else { // акс ҳолда a = 20; b = 10; } Эътибор беринг! Тенгликка таққослаш учун «==» оператори қўлланилган. Бу муҳим! 2-мисол. Юқоридаги мисолни бошқа усулда ёзиш: if (k != 5) { // агар k нинг қиймати 5га тенг бўлмаса a = 20; b = 10; } else { // акс ҳолда, яъни тенг бўлса a = 10; b = 20; } 3-мисол. Шартли ифодада ВА (&&), ЁКИ (||) ва бошқа мантиқий боғловчилардан фойдаланиш мумкин: if ( (x <= 5) && (x > -2) ) a++; // инкремент, яъни a = a + 1 else a--; // декремент, яъни a = a – 1 4-мисол. Қуйидаги мисолда else тармоғи мавжуд эмас: if ( x > 5 ) a = 10; 5-мисол. Ичма-ич if оператори: if ( x < -1 ) a = 10; else if (x >= 5) a = 20; else a = 30; 6-misol. Иккита сондан каттасини топиш дастури (1-вариант): #include #include int main() { double a, b, max; printf("a = "); scanf("%lg", &a); printf("b = "); scanf("%lg", &b); if (a > b) max = a; else max = b; printf("max = %lg\n", max); return 0; } 7-мисол. Иккита сондан каттасини топиш дастури (2-вариант) #include using namespace std; int main() { double a, b, max; cout << "a = "; cin >> a; cout << "b = "; cin >> b; if (a > b) max = a; else max = b; cout << "max = " << max << endl; return 0; } switch оператори. Кўп вариантлардан бирини танлаш учун switch оператори қўлланилади: switch ( ифода ) { case ўзгармас ифода1: [операторлар рўйхати] case ўзгармас ифода2: [операторлар рўйхати2] case ўзгармас ифодаN: [операторлар рўйхатиN] [ default: операторлар рўйхати ] } Квадрат қавсда дастур фрагментлари келтирилади. Bunda har бир ўзгармас ифодаN лардан keyin operatorlar ro'yxatini ko'rsatmaslik (ёзмаслик)ka ruxsat beriladi, Ya'ni ma'lum operatorlar ro'yxati ўзгармас ifoda qiymatining bir nechta variantlariga mos kelishi mumkin. Шунингдек ҳамма вақт default blokи ham ёзилиши шарт эмас. 8-мисол. Клавиатурадан i нинг қийматини киритинг, агар 1 киритилган бўлса, 𝑥 = 5; агар 2 бўлса 𝑥 = 10; қолган барча ҳолатлар учун эса 𝑥 = 0 бўлсин: inti, x; cin >> i; switch (i) { case 1: x = 5; break; case 2: x = 10; break; default: x = 0; } Танловнинг ҳар бир вариантидан кейин break қўйишни унутманг. 9-мисол. Агар клавиатурадан ’+’ белгиси киритилса, «йиғинди» сўзи; агар ’-’, белгиси киритилса «айирма» сўзи экранга чиқарилсин; қолган барча ҳолатларда эса ҳеч қандай ҳодиса бўлмасин. char c; cin >> c; switch (c) { case ’+’: cout << "йиғинди"; break; case ’-’: cout << "айирма"; } 9-мисолдаги алгоритм схемаси Агар break оператори қолдириб кетилса, у ҳолда иккала сўзни кетма-кет пробелсиз чиқаради. Шартли амал. C/C++ дастурлаш тилида тернар (учта операнд қатнашувчи) шартли амал мавжуд: шарт ? ифода1 : ифода2 Агар шарт сифатида берилган ифода қиймати нолга тенг бўлмаса (яъни қиймати true бўлса), у ҳолда кўрсатилган тернар амалнинг натижасида ифода1 бажарилади, акс ҳолда ифода2 бажарилади. Масалан, иккита сондан каттасини топиш: double max = (a > b)? a : b; 10-мисол. Текисликдаги соҳалар. Tekislikdagi nuqtaning koordinatalariga ko'ra, nuqta соҳаlarning qaysi biriga tegishli ekanligini aniqlash kerak (6-rasm). Buning uchun avvalo соҳалар chegaralari uchun tenglamalarni yozish kerak. Текисликдаги тўғри чизиқ тенгламаси: 𝑦 = 𝑎𝑥 + 𝑏, бу ерда 𝑎 тўғри чизиқнинг эгилиш бурчаги тангенсига тенг (горизонтал тўғри чизиқ учун 𝑎 = 0), 𝑏 эса, тўғри чизиқнинг 𝑦 ўқини кесиб ўтиш нуқтасидаги ординатага тенг бўлади. Вертикал тўғри чизиқ тенгламаси: 𝑥 = 𝑥0, бу ерда 𝑥0 – тўғри чизиқнинг 𝑥 ўқи билан кесишиш нуқтасидаги абсциссага тенг. Агар тўғри чизининг иккита нуқтаси координаталари 𝑥1, 𝑦1 ва 𝑥2, 𝑦2 лар маълум бўлса, у ҳолда 𝑎 ва 𝑏 параметрларни аниқлаш иккита чизиқли тенгламалар ситемасининг ечими сифатида аниқлаш мумкин. Иккинчи тенгламадан 𝑏 ни аниқлаб биринчи тенгламага қўйсак: Тўғри чизиқдан пастда жойлашган барча нуқталар учун 𝑦 < 𝑎𝑥 + 𝑏; Юқорида жойлашган барча нуқталар учун 𝑦 > 𝑎𝑥 + 𝑏 тенгсизликлар ўринли бўлади. Радиуси 𝑟, маркази (𝑥0, 𝑦0) нуқтада бўлган доира тенгламаси қуйидагича аниқланади: Доира ичида ётувчи нуқталар тўплами учун Доира ташқарисида ётувчи нуқталар учун Тенгсизликлар ўринли бўлади. Download 148.65 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling