§ 4. Аператар галінавання
Сайт: | Профильное обучение |
Курс: | Інфарматыка. 10 клас (Павышаны ўзровень) |
Книга: | § 4. Аператар галінавання |
Напечатано:: | Гость |
Дата: | Четверг, 2 Май 2024, 17:51 |
4.1. Запіс аператара галінавання
Для запісу аператара галінавання выкарыстоўваецца каманда if. Фармат каманды: if ( <умова> ) { Аператар галінавання можа быць у поўнай або скарочанай формах. У скарочанай форме адсутнічае блок else: if ( <умова> ) { Умова ў запісе аператара галінавання можа быць простай і састаўной. Фігурныя дужкі могуць быць прапушчаны, калі ўнутры іх знаходзіцца адна каманда. Выкарыстанне кіруючых канструкцый у праграме прадугледжвае яе запіс у структураваным выглядзе. Структураванасць праграм дасягаецца за кошт водступаў, якія рэгулююць змяшчэнне ўкладзеных алгарытмічных канструкцый. Прыклад 4.1. Зададзены лік x. Вызначыць, з’яўляецца ён дадатным ці не. Вывесці адпаведнае паведамленне. Этапы выканання задання I. Зыходныя даныя: x (уведзены лік). II. Вынік: адпаведнае паведамленне. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. |
Можна выконваць наступнае правіла: пры руху курсора ўніз ад «пачатку» структуры да яе «канца» на шляху курсора могуць сустрэцца толькі прабелы. Усё, што знаходзіцца «ўнутры» структуры, змяшчаецца правей. На практыцы часцей за ўсё карыстаюцца адным з двух правіл расстаноўкі фігурных дужак у кіруючых канструкцыях:
Прыклад 4.1. V. Праграмма:
VI. Тэсціраванне. Для x = 5: Для x = –1: VII. Аналіз вынікаў. Для поўнай праверкі праграмы патрабуецца яшчэ праверыць значэнне x = 0. |
4.2. Рашэнне задач з выкарыстаннем аператара галінаваннянием оператора ветвления
Прыклад 4.2. Таня і Каця жывуць у розных дамах. Ім стала цікава, хто з іх жыве бліжэй да школы. Яны змясцілі на карце прамавугольную сістэму каардынат так, каб школа мела каардынаты (0, 0). Вядома, што Танін дом мае каардынаты (x1; y1), а Кацін — (x2; y2). Дзяўчынкі ходзяць у школу па прамой і праходзяць розныя адлегласці. Напісаць праграму, якая вызначыць, чый дом знаходзіцца бліжэй да школы. Этапы выканання задання I. Зыходныя даныя: каардынаты дамоў дзяўчынак x1, y1, x2, y2. II. Вынік: паведамленне пра тое, чый дом бліжэй. III. Алгарытм рашэння задачы. 1. Увод каардынат дамоў. и
3. Параўнанне адлегласцей і вывад адказу. IV. Апісанне пераменных: x1, y1, x2, y2, r_T, r_K — тып double. Прыклад 4.3. Праверыць, ці з’яўляецца ўведзены лік трохзначным, і калі так, то вывесці цотныя лічбы гэтага ліку. Этапы выканання задання I. Зыходныя даныя: a (трохзначны лік). II. Вынік: пераменныя a1, a2, a3 (лічбы ліку) або паведамленні: «не трохзначны», «няма цотных лічбаў».. III. Алгарытм рашэння задачы. 1. Увод зыходнага ліку. 3.1. Для вылучэння першай лічбы a1 знаходзім цэлую частку ад дзялення ліку a на 100. 4. Вывад выніку. IV. Апісанне пераменных: a, a1, a2, a3 – int. Прыклад 4.4. Вылічыць значэнне функцыі для зададзенага x.
Этапы выканання задання I. Зыходныя даныя: пераменная х (значэнне пераменнай). II. Вынік: пераменная f (значэнне функцыі). III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 2.1. Спачатку праверым праўдзівасць умовы x < –2. Калія яна праўдзівая, то вылічым значэнне функцыі па формуле f = x – 2. Інакш (гэта значэнні, для якіх x ≥ –2) праверым наступную ўмову. 3. Вывад выніку. IV. Апісанне пераменных: x, f — double. Прыклад 4.5. Вызначыць, ці належыць пункт a(x, у) дадзенай вобласці.
Этапы выканання задання I.Зыходныя даныя: пераменныя x і y (каардынаты пункта). II. Вынік: слова «так» або «не» ў залежнасці ад прыналежнасці пункта зафарбаванай вобласці. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 3. Вывад выніку. IV. Апісанне пераменных: x, y – double. |
Прыклад 4.2. V. Праграма:
VI. Тэсціраванне. Танін дом — x1 = 2.3, y1 = 4.5, Кацін дом — x2 = −2.1, y2 = 4.9. Вынік: Танін дом — x1 = −6.1, y1 = 4.5, Кацін дом — x2 = −1.71, y2 = −3.2. Вынік: Прыклад 4.3. V. Праграма:
VI. Тэсціраванне. Вынік для значэння 345: Іншыя варыянты зыходных даных VII. Аналіз вынікаў. Для поўнай праверкі праграмы патрабуецца яшчэ праверыць значэнні, у якіх лічбаў менш за тры і якія змяшчаюць 1 цотную лічбу (на розных пазіцыях), дзве цотныя лічбы. Прыклад 4.4. V. Праграма:
V. Тэсціраванне: VI. Аналіз вынікаў. Лік 5 большы, чым 2, таму вылічэнне значэння функцыі адбываецца па формуле Для ліку −0.3 вылічэнні адбываюцца па формуле . Поўная праверка праграмы патрабуе ўвесці значэнні, якія належаць кожнаму з названых ва ўмове прамежкаў. Прыклад 4.5. V. Праграма:
VI. Тэсціраванне: VII. Аналіз вынікаў. Поўная праверка праграмы патрабуе ўвесці значэнні, якія належаць кожнай з абласцей, што ўтвараюцца пры перасячэнні прамых.
|
4.3. Аператар множнага выбару
Аператар if дазваляе выбіраць адзін з двух альтэрнатыўных варыянтаў. Калі патрабуецца выбар з трох і больш варыянтаў, то выкарыстанне некалькіх аператараў if можа пагаршаць чытальнасць кода праграмы. У С++ яшчэ маецца аператар множнага выбару switch, які дазваляе выбраць адзін варыянт з некалькіх у залежнасці ад значэння выразу і забяспечвае множнае разгалінаванне ў праграме. Часта выкарыстанне аператара switch больш эфектыўнае, чым выкарыстанне некалькіх аператараў if. Фармат каманды: switch ( <пераменная> ) { case канстанта: { каманда(ы)1 break; } case канстанта: { каманда(ы)2 break; } ... default: { каманда(ы)n break; } } Пераменная па чарзе параўноўваецца са значэннямі канстант, апісанымі пасля ключавога слова case. Пасля двукроп’я знаходзіцца код, які будзе выкананы ў выпадку, калі пераменная апынулася роўнай бягучаму значэнню. Каманда break неабходна для таго, каб перапыніць выкананне switch і не правяраць пераменную на супадзенне з астатнімі значэннямі. У блоку default прапісваюцца каманды, якія будуць выконвацца ў тым выпадку, калі ніводнага супадзення пераменнай з пералічанымі значэннямі не было выяўлена. Гэты блок можа быць прапушчаны. Фігурныя дужкі могуць быць прапушчаны, калі ў блоку выконваецца толькі адна каманда. Прыклад 4.6. Дадзена значэнне n (1 ≤ n ≤ 7), якое з’яўляецца нумарам дня тыдня. Напісаць праграму, якая вызначыць па значэнні n, выхадны гэты дзень ці рабочы. Этапы выканання задання I. Зыходныя даныя: n (нумар дня тыдня). II. Вынік: паведамленні — «рабочы», «выхадны» або «памылковы нумар». III. Алгарытм рашэння задачы. 1. Увод зыходнага ліку. 2.1. Калі значэнні n роўны 1, 2, 3, 4, 5 — выводзіцца паведамленне «рабочы». 3. Вывад выніку. VI. Апісанне пераменных: n – int. |
Трэба памятаць пра некаторыя асаблівасці аператара switch:
З тэхнічнага пункту гледжання аператары break з’яўляюцца неабавязковымі ў аператары switch. Яны выкарыстоўваюцца для заканчэння работы паслядоўнасці каманд, якія належаць да аднаго блока, дзе адбылося супадзенне значэння пераменнай са значэннем канстанты. Калі аператар break адсутнічае, то пасля таго, як было выяўлена супадзенне, будуць выкананы ўсе астатнія каманды для кожнага выбару, апісанага пасля супадзення. Параўнанні не адбываюцца, а каманды выконваюцца паслядоўна Прыклад 4.6. V. Праграма:
VI. Тэсціраванне: |
Пытанні к параграфу
1. Што такое аператар галінавання? 2. Чым адрозніваецца поўны запіс аператара галінавання ад скарочанага? 3. Ці можна выкарыстоўваць састаўныя ўмовы ў аператары галінавання? 4. Як запісваецца аператар множнага выбару? |
Практыкаванні
1. Ці можна змяніць лагічную ўмову ў аператары галінавання ў прыкладзе 4.1 так, каб паведамленні "pologitelnoe" і "ne pologitelnoe" прыйшлося памяняць месцамі? Калі так, то як гэта зрабіць?
2*. Якія змяненні трэба ўнесці ў праграму прыкладу 4.1, каб разглядаліся тры выпадкі: "pologitelnoe", "otricatelnoe", "ravno 0"?
3. Дабаўце ў праграму прыкладу 4.2 праверку карэктнасці зыходных даных: каардынаты дамоў павінны быць такімі, каб адлегласці да школы былі рознымі. Калі адлегласці аднолькавыя, то вывесці паведамленне 'Каардынаты ўведзены няправільна', а калі розныя, то вывесці адказ.
4. Якія змяненні спатрэбіцца ўнесці ў праграму прыкладу 4.2, калі дапусціць, што дзяўчынкі могуць праходзіць аднолькавыя адлегласці? Унясіце змяненні ў праграму і праверце правільнасць яе работы.
5. Як вядома, шмат якія задачы маюць не адзінае рашэнне. Так, Юля знайшла іншы спосаб вылічэння другой лічбы трохзначнага ліку для прыкладу 4.3. Якую з каманд выкарыстоўвала Юля? Растлумачце, што атрымаецца пры выкананні кожнай з прыведзеных каманд.
1. a2 = a % 2. 10 / 10; a2 = a / 100 % 10; 3. a2 = a % 100 / 10;
6. Пеця вырашыў удасканаліць праграму з прыкладу 4.3 і праверку лічбаў у ліку запісаў наступным чынам:
if ( a1 % 2 == 0)
cout << a1 << endl;
else
if (a2 % 2 == 0)
cout << a2 << endl;
else
if (a3 % 2 == 0)
cout << a3 << endl;
else
cout << "net takih" << endl;
Чаму Пецева адзнака была невысокай? Прывядзіце прыклады, для якіх праграма выдае няправільны адказ. Калі такое магчыма, то прывядзіце прыклады, калі праграма выдае правільны адказ.
7. Дадзены натуральны лік. Напішыце праграму, якая праверыць, ці з’яўляецца ён трохзначным і ці кратная 7 сума яго лічбаў.
8. Дадзены натуральны лік. Напішыце праграму, якая праверыць, ці з’яўляецца ён чатырохзначным і ці размешчаны яго лічбы ў парадку спадання.
9. Дадзены натуральны лік. Напішыце праграму, якая праверыць, ці з’яўляецца лік шасцізначным «шчаслівым» (г. зн. сума першых трох лічбаў ліку роўна суме апошніх трох).
10. Запішыце функцыю, значэнне якой вылічваецца з дапамогай прапанаванага фрагмента праграмы:
if (x < –3)
y = -x;
else
if (x < 0)
y = 0;
else
y = x * x;
11. Напішыце праграму для вылічэння значэння функцый.
1. 2.
3. 4.
12. Напішыце праграму, якая праверыць, ці належыць пункт А(x, у)вобласці.
1. |
2. |
3. |
|||
4. |
5. |
6. |
13. Напішыце праграму, якая вызначыць, ці маецца сярод лікаў a, b, c хоць бы адна пара роўных паміж сабой лікаў. Вызначыце, якія лікі роўныя.
14. Напішыце праграму, якая вызначыць, ці з’яўляецца трохвугольнік са старанамі a, b, c раўнабедраным. Калі так, то праграма павінна вызначыць, якая са старон з’яўляецца асновай, а якія — бакавымі старанамі.
15. Дадзены нумар года. Напішыце праграму, якая вызначыць, ці з’яўляецца ён высакосным (год з’яўляецца высакосным, калі яго нумар дзеліцца на 4, за выключэннем тых, якія дзеляцца на 100 і не дзеляцца на 400).
16. Напішыце праграму, якая знойдзе колькасць пунктаў перасячэння прамой y = kx + b і акружнасці x2 + y2 = r2. Значэнні k, b, r уводзяцца.
17*. Дадзены рэчаісныя лікі x1, y1, x2, y2, x3, y3, якія з’яўляюцца каардынатамі вяршынь трохвугольніка. Напішыце праграму, якая вызначыць, ці ляжыць пачатак каардынат унутры гэтага трохвугольніка.
18. Уводзіцца лік ад 1 да 4, які вызначае пару года. Напішыце праграму, якая выведзе назву гэтай пары года (1 — зіма, 2 — вясна, 3 — лета, 4 — восень). Выкарыстоўваць аператар switch.
19. Дадзены натуральны лік N (N < 20), які вызначае суму грошай у рублях. Напішыце праграму, якая выведзе для гэтага ліку назву: «рубель», «рубля», «рублёў».
20*. Уводзіцца лік ад 1 да 100. Напішыце праграму, якая выведзе назву гэтага ліку (1 — адзін, 2 — два, ..., 100 — сто).