Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Верстальнику: замінити після Початок блок-ромб на блок-прямокутник

Поиск

Звертаємо вашу увагу: в алгоритмі розв’язування задачі 2 виконання або невиконання тих чи інших команд алгоритму залежить від того, в яку купку попаде фальшива монета. Наприклад, якщо при першому зважуванні терези будуть не в рівновазі, то команда «Узяти третю купку монет» не буде виконана. Але якщо монети розподілити на купки по-іншому, то може статися так, що при першому зважуванні терези будуть у рівновазі, і тоді не буде виконана команда «Узяти легшу купку монет».

Розгалуження в Delphi

Команда повного розгалуження в Delphi має такий загальний вигляд:

If <логічний вираз>

Then begin

< послідовність команд 1>

End

Else begin

< послідовність команд 2>

end;

(англ. if – якщо, then – тоді, else – інакше)

Є в Delphi й команда неповного розгалуження:

If <логічний вираз>

Then begin

<послідовність команд >

end;

Виконання команди повного розгалуження відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконується послідовність команд 1 і після цього виконується команда, наступна за командою розгалуження; якщо це значення false, то виконується послідовність команд 2 і після цього виконується команда, наступна за командою розгалуження.

Виконання команди неповного розгалуження відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконується послідовність команд і після цього виконується команда, наступна за командою розгалуження; якщо це значення false, одразу виконується команда, наступна за командою розгалуження.

Звертаємо вашу увагу:

  • якщо після ключових слів Then і Else слідують тільки по одній команді, то операторні дужки begin і end можна не ставити;
  • перед Else ставити крапку з комою не можна.

 

Якщо записати в Delphi фрагмент програми розв’язування задачі 1 (блок-схема відповідного алгоритму наведена на рис. 2.46), то він виглядатиме так:

a:= StrToFloat(Edit1.Text);

b:= StrToFloat(Edit2.Text);

c:= StrToFloat(Edit3.Text);

d:= StrToFloat(Edit4.Text);

x:= c–d;

If x = 0

Then Label1.Caption:= 'Вираз значення не має: д ілення на нуль'

Else begin

y:= a–b;

z:= y/x;

Label1.Caption:= FloatToStr(z);

end;

Звертаємо вашу увагу: обчислення значення виразу можна було б записати не двома командами, а однією: z:= (a–b)/x.

 

Логічний вираз у команді розгалуження може бути простим або складеним. Складені логічні вирази утворюються з простих шляхом використання розглянутих у попередньому пункті операцій кон’юнкції (and), диз’юнкції (or), заперечення (not). Порядок виконання цих операцій в Delphi такий самий, як і в математичній логіці.

 

Наведемо приклад задачі з використанням складених логічних виразів.

Задача 4. Обчислити значення заданої функції

 

Фрагмент програми для розв’язування цієї задачі виглядатиме так:

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 може містити в собі іншу команду розгалуження. Ось як виглядатиме команда розгалуження для алгоритму, наведеному на рис. 2.49:

If x = у

Then Label1.Caption:= 'Числа рівні'

Else If x > у

Then Label1.Caption:= 'Перше число більше'

Else Label1.Caption:= 'Перше число менше';

Перемикачі та прапорці

Для реалізації розгалуження в проекті можна використати такі елементи керування як перемикачі та прапорці. Працюючи з текстовими і графічними редакторами, редактором презентацій, іншими програмами, ви неодноразово бачили, що при виборі перемикача всередині з’являється позначка , а при виборі прапорця – позначка .

Нагадаємо, що з групи перемикачів може бути вибраний тільки один, а в групі прапорців позначка може бути встановлена або на одному з них, або на кількох, або на жодному. Перемикачі призначені для того, щоб у ході виконання проекту вибрати один з можливих варіантів. Наприклад, установити для певної властивості об’єкта одне значення з деякого визначеного набору значень. Прапорці призначені для того, щоб у ході виконання проекту вибрати або один з можливих варіантів, або кілька. Наприклад, установити значення однієї або кількох властивостей об’єкта з деякого визначеного набору властивостей.

Для розміщення на формі перемикача потрібно встановити вказівник на рядок TRadioButton (англ. radio button – кругла кнопка) вікна Tool Palette і двічі клацнути ліву кнопку миші, а для розміщення прапорця – встановити вказівник на рядок TCheckBox (англ. check box – коробка для перевірки) і також двічі клацнути ліву кнопку миші.

Перемикач і прапорець мають більшість властивостей, які ми розглядали для форми, поля, кнопки і напису, та ще деякі, серед яких розглянемо властивість Checked (англ. checked – вибраний), яка може набувати одне з двох значень True або False і яка визначає, встановлена позначка в даному об’єкті чи ні (вибраний цей об’єкт чи ні). Тому значення цієї властивості можна використовувати в команді розгалуження замість логічного виразу.

 

Розглянемо, як можна використати перемикачі для реалізації розгалуження в проекті.

Нехай, наприклад, потрібно в ході виконання проекту змінювати значення тільки однієї з таких властивостей форми: або заголовок, або колір, або розміри.

Для цього розмістимо на формі кнопку і три перемикачі (рис. 2.51). При розміщенні перемикачів на формі для кожного з них за замовчуванням встановлюється значення властивості CheckedFalse. До запуску проекту змінимо у першого перемикача значення цієї властивості на True. Після цього на формі він виглядатиме вибраним (рис. 2.51). Таким він буде і після запуску проекту на виконання.

Створимо процедуру для опрацювання події OnClick кнопки, і до її тексту помістимо таку команду:

If RadioButton1.Checked

Then Form1.Caption:= ‘Заголовок змінений’



Поделиться:


Последнее изменение этой страницы: 2016-09-18; просмотров: 357; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.178.162 (0.009 с.)