ПРОГРАМУВАННЯ НА DELPHI

СКЛАДАННЯ ПРОГРАМ З РОЗГАЛУЖЕННЯМ

 

 

ПІДБІРКА РОЗРОБЛЕНИХ ІНСТРУКТИВНИХ КАРТОК  ПРОЕКТІВ ДЛЯ ВИВЧЕННЯ ТЕМИ  РОЗГАЛУЖЕННЯ

 

Хороший програміст

 це той, хто дивиться в обидва

 боки, переходячи дорогу

 з одностороннім рухом

 

 

 

ЗМІСТ

 

1.                Конструкція розгалуження у мові програмування  Delphi

2.                Проект №1 «Гадання на ромашці»

3.                Проект №2 «Контроль ваги»

4.                Проект №3 «Китайський гороскоп»

5.                Проект №4 «Вартість поїздки»

6.                Проект №5 «Шкільна їдальня»

7.                Проект №6 «Комунальні платежі»

8.                Проект №7 «Вартість компютера»

9.                Проект №8 «12 місяців»

10.           Проект №9 «Вартість фото»

11.           Створення тестової програми

 

 

1. КОНСТРУКЦІЯ  РОЗГАЛУЖЕННЯ У МОВІ ПРОГРАМУВАННЯ  DELPHI

Найчастіше використовувана конструкція для розгалуження коду

IF  УМОВА  THEN БЛОК_ІНСТРУКЦІЙ_1 ELSE  БЛОК_ІНСТРУКЦІЙ_2;

Дослівно можна перекласти: “Якщо умова виконується, тоді виконати блок інструкцій_1, інакше виконати блок інструкцій_2”

 Приведемо побутовий приклад — якщо продзвенів дзвінок, тоді вийти на перерву, інакше сидимо за партою. В данному випадку «продзвенів дзвінок» це умова. Будь-яка умова може мати тільки два значення  — True (Правда або Істина) і False (Неправда або Хибний). Отже, якщо умова виконується і ми отримуємо значення True, тоді “виходимо на перерву”, якщо ж умова повертає значення False, то “сидимо за партою”.

Блоки_ операцій можуть містити декілька команд, а не обов’язково одну.

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

IF УМОВА THEN БЛОК_ІНСТРУКЦІЙ;

Скорочена версія конструкції без оператора ELSE.

 Конструкція CASE використовується для розгалуження багатьох варіантів

CASE умова OF

Значення1: блок_інструкцій_1;

Значення2: блок_інструкцій_2;

ЗначенняN: блок_інструкцій _N;

END;

Якщо “умова “ збіглась з одним із значень, тоді виконується відповідний блок інструкцій.

Конструкція, наприклад, може використовуватись для створення «світлофора», де умова була б колір, а значення відповідно — червоний, жовтий, зелений. Для кожного кольору виконується свій блок інструкцій.

 

2. ПРОЕКТ №1 «ГАДАННЯ НА РОМАШЦІ»

Мета:  вивчення оператора розгалуження, застосування в проектах генератора випадкових чисел.

Завдання: Погадати на ромашці. Випадковим чином вибирається одне з 7 ворожінь. Забирається одна пелюстка ромашки. Остання пелюстка передбачить майбутнє.

Компоненти дизайну: 8 фігур Shape, 2 кнопки BitBtn (Additional),  Panel,  Label (Standart).

Дизайн має наступний вигляд:

 

 

 

 

 

 

 

 

 

Хід виконання:

1. У події Відкриття форми TForm1.FormCreate включаємо генератор випадкових чисел: Randomize.

Для цього двічі клацаємо по формі та в програмному коді записуємо:

procedure TForm1.FormCreate(Sender: TObject);

begin

             Randomize;

end;

2.  При клацанні на кнопці «Погадаємо»При к задаємо k – випадкове число в інтервалі від 1 до 100. Визначаємо залишок від ділення випадкового числа на 7 (по кількості пелюсток ромашки). Залежно від залишку в Label  виводимо прогноз і один Shape робимо невидимим.

procedure TForm1.BitBtn1Click(Sender: TObject);

var k:integer;

begin

k:=random(100);

if k mod 7=1 then

begin

 Label1.Caption:='Поступлю куди захочу';

 Shape2.Visible:=False;

end;

if k mod 7=2 then begin Label1.Caption:='Куди мама запхає'; Shape3.Visible:=False;end;

if k mod 7=3 then begin Label1.Caption:='Піду в ПТУ'; Shape4.Visible:=False;end;

if k mod 7=4 then begin Label1.Caption:='Поступлю на платну форму'; Shape5.Visible:=False;end;

if k mod 7=5 then begin Label1.Caption:=' Поїду на роботу за кордон'; Shape6.Visible:=False;end;

if k mod 7=6 then begin Label1.Caption:='Вийду заміж'; Shape7.Visible:=False;end;

if k mod 7=0 then begin Label1.Caption:='Тернопіль forever – щастя більшого не треба; Shape8.Visible:=False;end;

end;

end.

* Варіанти ворожіння придумали випускниці 2018

4.     ПРОЕКТ №2 «КОНТРОЛЬ ВАГИ»

Мета:  вивчення оператора розгалуження, застосування в проектах перемикачів.

Завдання: Порахувати ідеальну вагу людини, в залежності від її статі, зросту та віку. Формула має вигляд для чоловіків  50 + 0,75 (ріст-150) + (вік-20): 4 ,а для жінок – 0,9(50 + 0,75 (ріст-150) + (вік-20): 4)

Компоненти дизайну: 5 надпиів Label, 2 перемикачі RadioButton,  картинка Image, 2поля введення  Edit., кнопка  Batton.

Дизайн має наступний вигляд

 

 

 

 

 

 

 

 

 

 


Хід виконання:

1. При клацанні кнопки «ПОРАХУВАТИ ІДЕАЛЬНУ ВАГУ»  має виконуватися така процедура:

Procedure TForm11.Button1Click(Sender: TObject);

VAR vik, vaga, rist:real;

begin

 vik:=StrTofloat(Edit1.text);

 rist:=StrTofloat(Edit2.text);

 if RadioButton1.Checked=True  then  vaga:= 50+0.75*( rist-150)+(vik-20)/4;

 if RadioButton2.Checked=True  then  vaga:= 0.9*(50+0.75*( rist-150)+(vik-20)/4);

 Label4.Caption:='ІДЕАЛЬНА ВАГА ' +floatToStr(vaga)+'кг';

end;

2. Вводимо змінні :vik – вік; vaga-вага,  rist - ріст

RadioButton1.Checked=True  - умова  ввімкнення пперемикачаця – чоловік, а RadioButton2.Checked=True   - прапорця жінка.

5. ПРОЕКТ №3 «КИТАЙСЬКИЙ ГОРОСКОП»

Мета:  вивчення оператора розгалуження, застосування в проектах конструкції CASE-OF.

Завдання: За введеним роком визначити хто Ви за східним гороскопом і вивести на екран картинку.

Таблиця років. 

Щур - 1924 1936 1948 1960 1972 1984 1996 2008
Бик - 1925 1937 1949 1961 1973 1985 1997 2009
Тигр - 1926 1938 1950 1962 1974 1986 1998 2010
Кролик - 1927 1939 1951 1963 1975 1987 1999 2011
Дракон - 1928 1940 1952 1964 1976 1988 2000 2012
Змія - 1929 1941 1953 1965 1977 1989 2001 2013
К
інь - 1930 1942 1954 1966 1978 1990 2002 2014
Коза (Вівця) - 1931 1943 1955 1967 1979 1991 2003 2015
Мавпи - 1920 1932 1944 1956 1968 1980 1992 2004
Півень - 1921 1933 1945 1957 1969 1981 1993 2005
Собака - 1922 1934 1946 1958 1970 1982 1994 2006
Свиня (Кабан) - 1923 1935 1947 1959 1971 1983 1995 2007

Картинки підібрати в Інтернеті

Компоненти дизайну:  13 картинок Image, поле для введення року Edit, кнопка Button, надпис Label.

Дизайн має наступний вигляд

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Хід виконання:

1. При клацанні кнопки «Визначити»  має  виконуватися така процедура,  яка  показує картинку і виводить надпис.

2. Фрагмент процедури

 procedure TForm6.Button1Click(Sender: TObject);

begin

case StrToInt(Edit1.Text) of

1972, 1984, 1996, 2008:

 begin

 Label3.Caption:= 'Мишка. The Rat';

Image1.Visible:=True;

Image2.Visible:=False;

…………

Image13.Visible:=False;

end;

976, 1988, 2000, 2012:

 begin

Label3.Caption:= 'Дракоша. The Dragon';

Image1.Visible:=False;

Image2.Visible:=True;

Image3.Visible:=False;

………..

Image12.Visible:=False;

Image13.Visible:=False;

end;

3. Аналогічно для решти  знаків за китайським гороскопом.

6. ПРОЕКТ №4 «ВАРТІСТЬ ПОЇЗДКИ»

 

Мета:  вивчення оператора розгалуження, застосування в проектах групи перемикачів та прапорців.

 

Завдання: Потрібно розрахувати вартість поїздки в залежності від відстані до пункту призначення, типу транспорту (витрата пального на 100 км), виду палива, та від того, чи потрібно повертатися від пункту призначення назад у попередній пункт.  Вартість 1л.  пального дізнаємось в Інтернеті

 

Компоненти дизайну: картинка Image, 2 поля введення Edit, кнопка Batton, надпис Label, група для вибору перемикачів RadioGroup,  прапорець CheckBox

Дизайн має наступний вигляд

 

 

 

 

 

 

 

 

 


Хід виконання:

1.     Пишемо процедуру на натискування кнопки «ВАРТІСТЬ ПОЇЗДКИ»

2.     procedure TForm11.Button1Click(Sender: TObject);

VAR s, vid, vutr, ben:real;

begin

vid:=strToFloat(Edit1.Text);

vutr:=strToFloat(Edit2.Text);

ben:=vid/100*vutr;

if radioGroup1.ItemIndex=-1 then   ShowMessage('оберіть марку бензину')

else

if radioGroup1.ItemIndex=0 then S:=ben*11.07 else

if radioGroup1.ItemIndex=1  then S:=ben*10.78 else

if radioGroup1.ItemIndex=2  then S:=ben*10.4 else

 if radioGroup1.ItemIndex=3  then S:=ben*10.07;

if CheckBox1.Checked=true then  S:=S*2;

3.     ShowMessage('вартість поїздки  '+floatToStr(S)); end;

4.     Враховуємо, що  нумерація перемикачів в RadioGroup починається з 0, а якщо RadioGroup.ItemIndex=-1 – це означає, що не вибрано жодного варіанту.

5.     Виводити результат можна з допомогою додаткового вікна, використовуючи ShowMessage('вартість поїздки  '+floatToStr(S));  

 

7. ПРОЕКТ №5 «ШКІЛЬНА ЇДАЛЬНЯ»

Мета:  вивчення оператора розгалуження, застосування в проектах  з розгалуженням прапорців.

Завдання: Потрібно полегшити роботу шкільних поварів і скласти для них меню, яке б обчислювало вартість замовлення.

Компоненти дизайну: картинка Image, кнопка Batton, надпис Label, прапорці  CheckBox – довільна кількість (залежить від кількості страв в меню)

Диза йн має наступний вигляд:

 

 

 

 

 

 

 

 

 

 

 


Хід виконання:

1.     Пишемо процедуру на натискування кнопки «Обрахувати суму замовлення»

2.     procedure TForm10.Button1Click(Sender: TObject);

var  s : real;

begin

if CheckBox1.Checked = true then

s:=s+ 0.50;

if CheckBox2.Checked = true then

s:=s+ 1.00;

if CheckBox3.Checked = true then

s:=s+ 2.00;

if CheckBox4.Checked = true then

s:=s+ 1.50;

if CheckBox5.Checked = true then

s:=s+ 0.50;

if CheckBox6.Checked = true then

s:=s+ 1.50;

if CheckBox7.Checked = true then

s:=s+ 2.50;

if CheckBox8.Checked = true then

s:=s+ 1.75;

if CheckBox9.Checked = true then

s:=s+ 3.25;

if CheckBox10.Checked = true then

s:=s+ 2.25;

if CheckBox11.Checked = true then

s:=s+ 0.25;

if CheckBox12.Checked = true then

s:=s+ 0.10;

ShowMessage ( 'Ваш рахунок становить '+ FloatToStr(s) + ' гривень');

end;

3.     Вводимо змінну S,  до якої додаємо після того якщо властивість CheckBox*.Checked = true  вартість відповідної страви.

 

 

 

 

 

8. ПРОЕКТ №6 «КОМУНАЛЬНІ ПЛАТЕЖІ»

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

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

Тарифи за електроенергію

<150кВт*год/місяць - 28,02 коп/1кВт*год

>150кВт*год/місяць і <800кВт*год/місяць–36,48 коп/1кВт*год;  >800кВт*год/місяць - 95,76 коп/1кВт*год.

Тарифи за газ:

   <2500 куб м./рік - 0,7254 грн/куб.м

>2500 куб м./рік і <6000 куб м./рік  - 1,

Компоненти дизайну: поле для вкладок PageControl(Win32), 2 картинки Image, 2 кнопки Batton, надписи Label, 3 перемикачі RadioButton

 

 

Дизайн має наступний вигляд:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Хід виконання:

1. Для дизайну використовуємо PageControl (Win32),  добавляємо ПКМ дві вкладки New Page (газ і електроенергія)

2.  На кожній  на відповідну кнопку пишемо процедуру.

3. Процедура обчислення оплати за газ:

 procedure TForm5.Button2Click(Sender: TObject);

var POK,x2,t,x1,s:Real;

begin

x1:=StrToFloat(Edit3.Text);

x2:=StrToFloat(Edit4.Text);

POK:=x2-x1;

if  RadioButton 1.Checked=True

Then t:=0.7254;

if RadioButton 2.Checked=True

Then t:=1.0980;

if RadioButton 3.Checked=True

Then t:=2.2482;

S:=POK*T;

ShowMessage('До оплати за природний газ '+FloatToStr(S));

end;

4.     Процедура на кнопку оплати за електроенергію:

procedure TForm5.Button1Click(Sender: TObject);

var

POK,x2,t,x1,s:Real;

begin

x1:=StrToFloat(Edit1.Text);

x2:=StrToFloat(Edit2.Text);

POK:=x2-x1;

 

if POK < 150

Then T:=0.28;

if (POK > 150)and(POK<800)Then

T:=0.3648 else T:=0.5472;

S:=POK*T;

ShowMessage('До оплати за електроенергію '+ FloatToStr(S));

end;

 

9. ПРОЕКТ №7 «ВАРТІСТЬ КОМП’ЮТЕРА»

Мета:  вивчення оператора розгалуження, застосування в проектах  з розгалуженням прапорців.

Завдання: Потрібно скласти програму, з допомогою якої можна було б порахувати вартість ПК, підібравши його конфігурацію. Вартість складових ПК знайти в мережі Інтернет.

Компоненти дизайну: кнопка Batton, надпис Label, прапорці  CheckBox – довільна кількість (залежить від кількості складових ПК)

Дизайн має наступний вигляд:

 

 

 

 

 

 

 

 

 

 

Хід виконання:

1.     Пишемо процедуру на натискування кнопки «Порахувати вартість ПК»

2.     procedure TForm5.Button1Click(Sender: TObject);

 var S,A,B,C,D:integer;

begin

S:=400;

if CheckBox1.Checked=true then S:=s+350;

if CheckBox2.Checked=true then S:=s+400;

if CheckBox3.Checked=true then S:=s+450;

if CheckBox5.Checked=true then S:=s+668;

if CheckBox7.Checked=true then S:=s+754;

if CheckBox12.Checked=true then S:=s+593;

if CheckBox6.Checked=true then S:=s+2730;

if CheckBox13.Checked=true then S:=s+1550;

if CheckBox9.Checked=true then S:=s+1010;

if CheckBox15.Checked=true then S:=s+150;

if CheckBox11.Checked=true then S:=s+225;

if CheckBox10.Checked=true then S:=s+359;

if CheckBox19.Checked=true then S:=s+1812;

if CheckBox20.Checked=true then S:=s+2350;

if CheckBox21.Checked=true then S:=s+1000;

if CheckBox16.Checked=true then S:=s+104;

if CheckBox17.Checked=true then S:=s+117;

if CheckBox18.Checked=true then S:=s+63;

if CheckBox22.Checked=true then S:=s+242;

if CheckBox23.Checked=true then S:=s+543;

if CheckBox24.Checked=true then S:=s+117;

if CheckBox14.Checked=true then S:=s+350;

if CheckBox8.Checked=true then S:=s+90;

if CheckBox4.Checked=true then S:=s+63;

 label10.Caption:='Загальна вартість ПК ='+intToStr(s)+' грн';

end;

3.  Вводимо змінну S  і  спочатку присвоюємо їй  вартість системного блока,  а потім додаємо  вибрані елементи конфігурації.

 

 

 

 

 

10. ПРОЕКТ №8 «12 МІСЯЦІВ»

Мета:  вивчення оператора розгалуження, застосування в проектах конструкції CASE-OF.

Завдання: За введеним номером місяця вивести його назву українською та англійською мовами та картинку пори року, до якої належить цей місяцьові.

Компоненти дизайну: 4 картинки з порами року Image, поле для введення номера місяця Edit, 3 кнопки Batton,  надпис Label.

Дизайн має наступний вигляд:

Початковий

 

 Після виконання

 

 

 

 

 

 

 

 


Хід виконання:

1.     Пишемо процедури на натискання кнопок «Українська назва»

case StrToInt(Edit1.Text) of

1:Label2.Caption:='Січень';

…………..

12:Label2.Caption:='Грудень';

end;

end;

2.     - «Англійська назва»

procedure TForm1.Button2Click(Sender: TObject);

begin

case StrToInt(Edit1.Text) of

1:Label3.Caption:='January';

………………….

12:Label3.Caption:='December';

end;

end;

3.      - та «Пора року»:

procedure TForm1.Button3Click(Sender: TObject);

begin

case StrToInt(Edit1.Text) of

3..5:begin Image1.Visible:=True;

Image2.Visible:=False;Image3.Visible:=False;

Image4.Visible:=False; end;

6..8:begin Image1.Visible:=False;

Image2.Visible:=True;Image3.Visible:=False;

Image4.Visible:=False;end;

9..11:begin Image1.Visible:=False;

Image2.Visible:=False;Image3.Visible:=True;

Image4.Visible:=False;end;

0..2:begin Image1.Visible:=False;

Image2.Visible:=False;Image3.Visible:=False;

Image4.Visible:=True;end;

12:begin Image1.Visible:=False;

Image2.Visible:=False;Image3.Visible:=False;

Image4.Visible:=True;

end;

end;

end;

 

 

11. ПРОЕКТ №9 «ВАРТІСТЬ ФОТО»

Мета:  вивчення оператора розгалуження, застосування в проектах  з розгалуженням прапорців.

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

Компоненти дизайну: картинка Image, кнопка Batton, надпис Label, 3 прапорці  CheckBox  

Диза йн має наступний вигляд:

 

 

 

 

 

 

 

 

 

 

 


Хід виконання:

1.Пишемо процедуру  на натискання кнопки «Порахувати вартість»

procedure TForm3.Button1Click(Sender: TObject);

var  S:real;

k1,k2,k3:real;

begin

k1:=strTofloat(edit1.Text);

k2:=strToFloat(edit2.Text);

k3:=strToFloat(edit3.Text);

if CheckBox1.Checked=True then S:=S+2.5*k1;

if CheckBox2.Checked=True then S:=S+4*k2;

if CheckBox3.Checked=True then S:=S+5.5*k3; showMessage('СУМА ЗАМОВЛЕННЯ  ' + FloatToStr(S));

end;

2. k1,k2,k3 – відповідно кількості різних розмірів фото,  а  S – сума замовлення.

 

 

 

12. СТВОРЕННЯ ТЕСТОВОЇ ПРОГРАМИ

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

Завдання: Потрібно скласти тестову програму  на 6 запитань.

Компоненти дизайну: може бути картинка Image, надпис, група перемикачів RadioGroup,  головне меню MainMenu

Дизайн має наступний вигляд:

Активна одна з закладок

 

 

 

 

 


5.                 Використані джерела.

 

 

 

 

Хід виконання:

1 Для дизайну використовуємо поле для вкладок PageControl (Win32).

2. Вкладки робимо, клацнувши на полі ПКМ - New Page

3. Розміщуємо на кожній вкладці групу перемикачів RadioGroup та надпис з запитанням Label

4. Щоб внести варіанти відповіді в групу перемикачів використовуємо властивість Items

5. Вводимо змінну Ball,  до якої буде додаватися 2, коли виконається умова ввімкнення правильної відповіді. Наприклад,  RadioGroup.ItemIndex=1(крім -1, бо це означає, що не вибрано жодного з варіантів)

6. Створюємо головне меню з допомогою MainMenu.

7. На  ФАЙЛ – РЕЗУЛЬТАТ пишемо процедуру:

procedure TForm3.N2Click(Sender: TObject);

var ball: integer;

begin

If RadioGroup1.ItemIndex=-1 then ShowMessage ('Ви не обрали варіанту відповіді')else

If RadioGroup6.ItemIndex=2 then Ball:= ball+2;

If RadioGroup5.ItemIndex=3 then Ball:= ball+2;

If RadioGroup4.ItemIndex=0 then Ball:= ball+2;

If RadioGroup3.ItemIndex=1 then Ball:= ball+2;

If RadioGroup2.ItemIndex=2 then Ball:= ball+2;

If RadioGroup1.ItemIndex=1 then Ball:= ball+2;

Label1.Caption:=IntToStr(Ball);

end;

8. При потребі тест можна налаштувати  на  різні запитання  і різну їх кількість.

 

Ідеї для проектів взяті в мережі Інтернет  та  зумовлені практичними потребами