Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторна 1.doc
Скачиваний:
0
Добавлен:
30.08.2019
Размер:
885.76 Кб
Скачать

Implementation

($R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

const

PAY =0.15; // ціна однієї мінути розмови 0.05 грн.

DISCOUNT = 0.2; // знижка 20 відсотків

Var Time:Real; // тривалість розмови

Day:integer; // день тижня

Summa:real; // вартість розмови

begin

// одержати вихідні дані

Time:=StrToFloat(Editl.Text) ;

Day:=StrToInt(Edit2.Text);

// Обчислити вартість розмови

Summa:= PAY*Time;

// Якщо день субота або неділя, то зменшити

// вартість на величину знижки

if (Day = 6) OR (Day = 7)

then Surama:=Summa*(1 - DISCOUNT);

// вивід результату обчислення

label3.caption:='До оплати '

+ FloatToStr(Summa) + 'грн.';

end; end.

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

Ріст(см)- 100.

Реальна вага може відрізнятися від оптимального: вага може бути менше оптимального, рівнятися йому або перевищувати оптимальне значення.

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

Рис. 2. Вікно програми Контроль ваги

Як і в попередній програмі, обчислення виконуються при клацанні на кнопці Обчислити (її ім'я Button1). У лістингу 2. наведений текст програми.

Лістинг 2. Контроль ваги

unit wtest_;

Interface

uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit; // поле введення ваги

Edit2: TEdit; // поле введення росту

Button1: TButton; // кнопка Обчислити

Label3: TLabel; // поле виводу повідомлення -результату роботи

// програми

procedure ButtonlClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Implementation

($R *.DFM}

procedure TForml.Button1Click(Sender: TObject);

var

w:real; { вага }

h:real; { ріст }

opt:real;{ оптимальна вага }

d:real; { відхилення від оптимальної ваги }

begin

w:=StrToFloat(Editl.text);

h:=StrToInt(Edit2.Text);

opt:=h-100;

if w=opt then

Label3.caption:='Bu у гарній формі!'

else

if w < opt then

begin

d:=opt-w;

Labels.caption:='Вам треба поправитися, на '

+ FloatToStr(d)+ 'кг.';

end

else

begin

d:=w-opt;

Labels.caption:='Haдo небагато схуднути, на '

+ FloatTostr(d)+ ' кг.';

end;

end;

end.

У наведеному прикладі множинний вибір реалізований за допомогою

двох інструкцій if, одна йз яких "вкладена" в іншу.

Інструкція case

У мові Delphi є інструкція case, що дозволяє ефективно реалізувати множинний вибір. У загальному виді вона записується в такий спосіб:

case Селектор of

список1: begin { інструкції 1 } end;

список2: begin { інструкції 2 } end;

списокN: begin{ інструкції N } end;

else

begin

{ інструкції )

end;

end;

де:

  • Селектор - вираження, значення якого визначає подальший хід виконання програми (тобто послідовність інструкцій, що буде виконана);

  • Список N - список констант. Якщо константи являють собою діапазон чисел, то замість списку можна вказати першу й останню константу діапазону, розділивши їхніми двома крапками. Наприклад, список 1, 2, 3, 4, 5, 6 може бути замінений діапазоном 1..6.

Виконується інструкція case у такий спосіб:

1. Спочатку обчислюється значення виразу-селектора.

2. Значення виразу-селектора послідовно рівняється з константами зі списків констант.

3. Якщо значення вираження збігається з константою зі списку, то виконується відповідному цьому списку група інструкцій. На цьому виконання інструкції саsе завершується.

4. Якщо значення виразу-селектора не збігається з жодною константою із всіх списків, то виконується послідовність інструкцій, що випливає за else.

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

case n_day of

1,2,3,4,5: day:='Робочий день. ' ;

6: day:='Cyббoтa!';

7: day:='Неділя!';

end;

case n_day of

6: day:='Субота!';

7: day:='Неділя!';

else day:='Робочий день.';

end;

Як приклад використання інструкції case розглянемо програму, що перераховує вагу з фунтів у кілограми. Програма враховує, що в різних країнах фунт "важить" по-різному. Наприклад, у Росії фунт дорівнює 409,5 грамів, в Англії - 453,592 грама, а в Німеччині, Данії й Ісландії фунт важить 500 грамів.

У діалоговому вікні програми, зображеному на рис. 3, для вибору країни використається список Країна.

Для вибору назви країни використовується список — компонентів ListBox. Значок компонента ListBox перебуває на вкладці Standard. У табл. 3 наведені властивості компонента ListBox.

Рис. 3. Діалогове вікно програми Приклад використання case

Таблиця 3. Властивості компонента ListBox

Властивість

Визначає

Name

Ім'я компонента. У програмі використається для доступу до властивостей компонента

Items

Елементи списку

Itemindex

Номер обраного елемента списку. Номер першого елемента списку дорівнює нулю

Left

Відстань від лівої границі списку до лівої границі форми

Top

Відстань від верхньої границі списку до верхньої границі форми

Height

Висоту поля списку

Width

Ширину поля списку

Font

Шрифт, використовуваний для відображення елементів списку

Parent-Font

Ознака спадкування властивостей шрифту батьківської форми

Найбільший інтерес представляють властивості Items і Itemindex. Властивість items містить елементи списку. Властивість itemindex задає номер обраного елемента списку. Якщо жоден з елементів не обраний, то значення властивості дорівнює мінус одиниці.

Список може бути сформований під час створення форми або під час роботи програми.

Для формування списку під час створення форми треба у вікні Object Inspector вибрати властивість items і клацнути на кнопці запуску редактори списку рядків.

У діалоговому вікні, що відкрилося, String List Editor потрібно ввести список, набираючи кожний елемент списку в окремому рядку. Після введення чергового елемента списку для переходу до нового рядка необхідно нажати клавішу <Enter>. Після введення останнього елемента клавішу <Enter> натискати не треба. Завершивши уведення списку, варто клацнути на кнопці ОК.

У табл. 4 перераховані компоненти форми додатка, а в табл. 5 наведені значення властивостей компонентів.

Таблиця 4. Компоненти форми

Компонент

Призначення

ListBoxl

Для вибору країни, для якої треба виконати перерахування

Edit1

Для введення ваги у фунтах

Label1, Label2, Label3

Для виводу пояснювального тексту про призначення полів уведення

Label4

Для виводу результату перерахування

Button1

Для активізації процедури перерахування ваги з фунтів у кілограми

 

Таблиця 5. Значення властивостей компонентів

Властивість

Значення

Form1.Caption

Приклад використання case

Editl. Text

Label1. Caption

Label1. AutoSize

Label1. WordWrap

Виберіть країну, уведіть кількість фунтів і клацніть на кнопці Обчислити

False

True

Label2 .Caption

Країна

Label3 . Caption

Фунтів

Button1 . Caption

Обчислити

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

Лістинг 3. Перерахування ваги з фунтів у кілограми

unit Unit1;