ПРОГРАМУВАННЯ
НА DELPHI
СКЛАДАННЯ
ПРОГРАМ З РОЗГАЛУЖЕННЯМ
ПІДБІРКА РОЗРОБЛЕНИХ ІНСТРУКТИВНИХ КАРТОК ПРОЕКТІВ ДЛЯ ВИВЧЕННЯ ТЕМИ РОЗГАЛУЖЕННЯ
Хороший програміст
—
це той, хто дивиться в обидва
боки, переходячи дорогу
з одностороннім рухом
ЗМІСТ
1.
Конструкція розгалуження у
мові програмування Delphi
2.
Проект №1 «Гадання на
ромашці»
4.
Проект №3 «Китайський
гороскоп»
5.
Проект №4 «Вартість
поїздки»
6.
Проект №5 «Шкільна
їдальня»
7.
Проект №6 «Комунальні
платежі»
8.
Проект №7 «Вартість комп’ютера»
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
Мета: вивчення оператора розгалуження, застосування
в проектах перемикачів.
Завдання: Порахувати
ідеальну вагу людини, в залежності від її статі, зросту та віку. Формула має
вигляд для чоловіків 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 «ВАРТІСТЬ
ПОЇЗДКИ»
Мета: вивчення оператора розгалуження, застосування
в проектах групи перемикачів та прапорців.
Завдання:
Потрібно розрахувати вартість поїздки в залежності від відстані до пункту
призначення, типу транспорту (витрата пального на
Компоненти дизайну: картинка
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 і
спочатку присвоюємо їй вартість
системного блока, а потім додаємо вибрані елементи конфігурації.
Мета: вивчення оператора розгалуження, застосування
в проектах конструкції 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;
Мета: вивчення оператора розгалуження, застосування
в проектах з розгалуженням прапорців.
Завдання:
Потрібно скласти програму для фотостудії для обчислення вартості фото різного
розміру і кількості, тобто вартості замовлення клієнтів.
Компоненти дизайну: картинка
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. При потребі
тест можна налаштувати на різні запитання і різну їх кількість.
Ідеї для
проектів взяті в мережі Інтернет та зумовлені практичними потребами