Else If RadioButton2.Checked Тема: Складання програм з розгалуженнями Мета:Набути практичних навичок створення програм з розгалуженнями; засвоїти поняття логічного виразу; ознайомитись з командами повного та неповного розгалуження; навчитись використовувати перемикачі, прапорці та списки для реалізації розгалужень. Теоретичні відомості 1. Поняття логічного виразу. Обчислення значень логічних виразів Крім арифметичних виразів, у Delphi існує ще один тип виразів – логічний. Логічним виразом називається такий вираз, внаслідок обчислення якого одержується логічне значення типу true( істина) або false (хиба). Тобто відповідний логічний вираз завжди набуває одного з двох можливих значень “істинність” або “хибність”. Всі логічні вирази поділяються на прості та складені. Простим логічним виразом називається вираз, який записується за допомогою знаків відношень <, >, <=, >=, <>. Приклади простих логічних виразів: a+b>c+d; n<>m; x=y. Складеним логічним виразом називається вираз, в якому використовуються логічні операції and (і), or (або), not (не). Приклад. Твердження x ∈ [a,b] можна записати у вигляді логічного виразу: (x>=a) and (x<=b); твердження x ∉ [a,b]: (x<a) or (x>b). Під час запису складених логічних виразів прості логічні вирази беруться обов’язково в дужки. Для визначення правил, за якими обчислюється значення складених логічних виразів, створені таблиці істинності (таблиця 1), в яких цифра 0означає false,а 1–true, А і В – прості логічні вирази. Логічна операція and дає результат true (істина) тоді і тільки тоді, коли обидва операнди мають значення true. Логічна операція or дає результат true (істина) тоді , коли хоча б один операнд має значення true. Логічна операція not завждидає результат протилежний значенню її операнда. Таблиця 1 Логічні вирази можуть використовуватися в операторі присвоєння, а також для визначення оцінки деякої ситуації, що склалася, і прийняття рішення про те, що робити далі. 2. Розгалуження в Delphi Команда повного розгалуження (рис. 1) в Delphi має такий загальний вигляд: If <логічний вираз> Then begin <послідовність команд1 > End Else begin <послідовність команд2 > end; (англ. if – якщо,then – тоді,else – інакше). Є вDelphiй команданеповного розгалуження (рис. 2): If <логічний вираз> Then begin <послідовність команд> end; Виконання команди повного розгалуження відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконується послідовність команд 1 і після цього виконується команда, наступна за командою розгалуження; якщо це значення false, то виконується послідовність команд 2 і після цього виконується команда, наступна за командою розгалуження. Виконання команди неповного розгалуження відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконується послідовність команд і після цього виконується команда, наступна за командою розгалуження; якщо це значення false, одразу виконується команда, наступна за командою розгалуження. Звертаємо вашу увагу: P якщо після ключових слів Thenі Elseслідують тільки по одній команді, то операторні дужки begin і end можна не ставити; P перед Elseставити крапку з комою не можна. Логічний вираз у команді розгалуження може бути простим або складеним. Складені логічні вирази утворюються з простих шляхом використання розглянутих у попередньому пункті операцій кон’юнкції (and), диз’юнкції (or), заперечення (not). Порядок виконання цих операцій в Delphiтакий самий, як і в математичній логіці. Приклад задачі з використанням складених логічних виразів. Обчислити значення заданої функції  Фрагмент програми для розв’язування цієї задачі виглядатиме так: x:=StrToFloat(Edit1.Text); If (x>–3) and (x<5) Then y:=2*x–12 Else y:=7–8*x; Label1.Caption:=FloatToStr(y); Команда розгалуження в Delphi може містити в собі іншу команду розгалуження. Ось як виглядатиме команда розгалуження для алгоритму, наведеного на рисунку 3: If x=у Then Label1.Caption:='Числа рівні' Else If x>у Then Label1.Caption:='Перше число більше' Else Label1.Caption:='Друге число більше'; 3. Перемикачі, прапорці та списки Для реалізації розгалуження в проекті можна використати такі елементи керування як перемикачі, прапорці та списки. Працюючи з текстовими і графічними редакторами, редактором презентацій, іншими програмами, ви неодноразово бачили, що за вибору перемикача всередині з’являється позначка , а за вибору прапорця – позначка , в списку з’являється напис, наприклад . Нагадаємо, що зі списку та групи перемикачів вибирається тільки один елемент, а в групі прапорців позначка може бути встановлена або на одному з них, або на кількох, або на жодному. Перемикачі та списки призначені для того, щоб у ході виконання проекту вибрати один з можливих варіантів. Прапорці призначені для того, щоб у ході виконання проекту вибрати або один з можливих варіантів, або кілька. Для розміщення на формі перемикача вибирають елемент RadioButton ( ), прапорця – CheckBox ( ), списка – ComboBox ( ). Всі три елементи знаходяться на вкладці Standard панелі компонентів. Перемикач і прапорець мають більшість властивостей, які ми розглядали для форми, поля, кнопки і напису, та ще деякі, серед яких розглянемо властивість Checked (англ. checked – вибраний), яка може набувати одне з двох значень True або False і яка визначає, встановлена позначка в даному об’єкті чи ні (вибраний цей об’єкт чи ні). Тому значення цієї властивості можна використовувати в команді розгалуження замість логічного виразу. Використання перемикачів Нехай, наприклад, потрібно в ході виконання проекту змінювати значення тільки однієї з таких властивостей форми: або заголовок, або колір, або розміри. Для цього розмістимо на формі кнопку і три перемикачі (рис. 2.43). При розміщенні перемикачів на формі для кожного з них за замовчуванням встановлюється значення властивості Checked – False. До запуску проекту змінимо у першого перемикача значення цієї властивості на True. Після цього на формі він виглядатиме вибраним (рис. 4). Таким він буде і після запуску проекту на виконання. Створимо процедуру для опрацювання події OnClick кнопки, і до її тексту помістимо таку команду: If RadioButton1.Checked Then Form1.Caption:='Заголовок змінений' Else If RadioButton2.Checked Then Form1.Color:=clRed Else begin Form1.Width:=600; Form1.Height:=300; end; Розпочинатися виконання цієї команди буде з визначення значення властивості RadioButton1.Checked. Якщо при настанні події OnClick кнопки вибраним буде перший перемикач, то RadioButton1.Checked = true. Тому виконається команда змінення заголовка форми, а інші частини всієї цієї команди виконуватися не будуть. Якщо при настанні події OnClick кнопки вибраним буде другий перемикач, то RadioButton1.Checked = false. Тому будуть виконуватися команди після першого ключового слова Else, тобто внутрішня команда розгалуження. Під час її виконання визначається значення властивості RadioButton2.Checked. Оскільки вибрано другий перемикач, то це значення дорівнює true. Тому виконається команда змінення кольору форми, а інші частини команди виконуватися не будуть. Якщо ж при настанні події OnClick кнопки вибраним буде третій перемикач, то RadioButton1.Checked = false. Тому будуть виконуватися команди після першого ключового слова Else, тобто внутрішня команда розгалуження. При її виконанні визначається значення властивості RadioButton2.Checked. Оскільки другий перемикач не вибрано, то її значення false. Тоді будуть виконуватися команди після другого ключового слова Else, тобто дві команди змінення розмірів форми. Використання списків Нехай, наприклад, потрібно в ході виконання проекту вибрати значення тільки однієї з таких властивостей форми: або заголовок, або колір, або розміри. Для цього розмістимо на формі кнопку і список, який містить три елементи (рис. 5). Для створення списку потрібно два рази клацнути лівою клавішею миші по значенню властивості Items компонента ComboBox і у вікні, що з’явиться, ввести елементи списку (рис. 6). Створимо процедуру для опрацювання події OnClick кнопки, і до її тексту помістимо таку команду: If ComboBox1.Text='Заголовок' Then Form1.Caption:='Заголовок змінений' Else If ComboBox1.Text='Колір' Then Form1.Color:=clRed Else begin Form1.Width:=600; Form1.Height:=300; end; Використання прапорців Нехай, наприклад, нам потрібно в ході виконання проекту змінювати значення або тільки однієї з властивостей форми (або заголовок, або колір, або розміри), або кількох із них, або не змінювати значення жодної з них. Для цього розмістимо на формі кнопку і три прапорці (рис. 7). При розміщенні прапорців на формі для кожного з них за замовчуванням автоматично встановлюється значення властивості Checked –False. Оскільки при виконанні проекту позначка жодного прапорця може бути не встановлена, то доцільно залишити такі початкові значення властивості Checkedусіх прапорців. Створимо процедуру для опрацювання події OnClickкнопки і до її тексту помістимо такі три послідовні (не вкладені одна в одну) команди розгалуження: If CheckBox1.Checked Then Form1.Caption:='Заголовок змінений'; If CheckBox2.Checked Then Form1.Color:=clRed; If CheckBox3.Checked Then begin Form1.Width: = 500; Form1.Height: = 200; end; Кожна з цих команд незалежно одна від одної буде визначати, чи вибраний відповідний прапорець, і залежно від цього кожна з них буде чи не буде виконувати відповідні команди зміни значень властивостей форми. З розглянутих вище прикладів можна зробити такі висновки: Ø перемикачі і списки використовуються тоді, коли потрібно вибрати один і тільки один варіант дій з кількох можливих; Ø для опрацювання стану перемикачів і списків у процедуру включають команди розгалуження, які вкладені одна в одну; Ø прапорці використовуються тоді, коли може бути вибраний або один, або кілька, або не вибраний жоден варіант дій з кількох можливих; Ø для опрацювання стану прапорців у процедуру включають послідовні команди розгалуження, які незалежні одна від одної. Хід роботи 1. Вивчити теоретичні відомості. 2. Дати відповіді на контрольні запитання. 3. Виконати завдання. 4. Оформити звіт. Контрольні запитання 1. Які значення можуть бути результатом виконання команди перевірки умови (обчислення значення логічного виразу)? 2. Як позначається команда перевірки умови в блок-схемі алгоритму? 3. Зобразіть блок-схеми повного і неповного розгалуження. Опишіть особливості їх виконання. 4. Поясніть відмінності повного і неповного розгалуження. 5. Наведіть загальний вигляд команд повного і неповного розгалуження в Delphi. 6. Поясніть виконання команд повного і неповного розгалуження в Delphi. 7. Які операції використовують для утворення складених логічних виразів у Delphi? 8. Для чого використовують прапорці, перемикачі та списки? 9. Що визначає властивість Checked для перемикачів і прапорців? 10. Поясніть відмінності використання команд розгалуження при складанні проектів з прапорцями та перемикачами. Література 1. Забарна А. Візуальне програмування у Delphi: Практикум/ А. Забарна, О. Войченко – К.: Вид.дім «Шкіл.світ»: Вид. Л.Галіцина, 2006 – 128 с. 2. Кащеєв Л.Б. Інформатика. Основи візуального програмування: Навч. Посібник/ Л.Б. Кащеєв, С.В. Коваленко, С.М. Коваленко. – Х.: Веста, 2011. – 192 с. 3. Ривкінд Й.А., Лисенко Т.І., Чернікова Л.А., Шакотько В.В.; за аг. Ред.. М.З. Згуровського. Інформатика: 11 кл.– К.: Генеза, 2011. – 304 с. |