002 – Програма розрахунку площі круга та об’єму кулі

Розробка найпростішої програми розрахунку площі круга та об’єму кулі як Windows-додатку

У даній роботі буде описано як створювати елементарні додатки, призначені для експлуатації в середовищі Windows.


Зміст





Умова задачі

Розробити програму для обчислення площі круга та об’єму кулі для заданого радіусу R. Програму реалізувати як Windows-додаток.


Математична постановка задачі

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

Площа круга обчислюється за формулою:

S = π ·

Вхідним значенням тут є радіус кола R, результатом є площа круга – S.
Об’єм кулі обчислюється за формулою:

V = 4/3 · π · R³

Вхідним значенням тут є знову ж таки радіус кола R, результатом є об’єм кулі.

В обидвох формулах фігурує константа π, яка рівна 3,14159.

Отже, можна намалювати послідовність етапів розв’язку задачі (рис. 1).

01_02_00_002_01u

Рис. 1. Етапи розв’язку задачі


Виконання

1. Створення додатку за шаблоном VCL Forms Application

Детальний приклад створення додатку за шаблоном VCL Forms Application описується тут.

Запускаємо систему візуальної розробки Embracadero RAD Studio Delphi 2010 та створюємо Windows-додаток. Початковий вигляд форми перед початком проектування зображено на рис. 2.

01_02_00_002_02_

Рис. 2. Вигляд вікна програми

 

2. Вкладка Standard панелі інструментів Tool Palette

У даній програмі нам потрібно використати декілька компонент, перелік яких наведено нижче:

  • компонент типу TLabel, що представляє рядок тексту що виводиться на формі;
  • компонент типу TButton, що представляє собою кнопку на формі;
  • компонент типу TEdit, що є рядком введення тексту.

Усі ці компоненти розміщені на панелі інструментів Tool Palette на вкладці Standard (див. рис. 3.)

01_02_00_002_03_

Рис. 3. Вкладка Standard на палітрі компонент

 

3. Компонент TLabel

3.1. Розмістити компонент TLabel на форму

Для цього треба клікнути мишкою на компоненті TLabel (рис. 4) а потім клікнути у верхньому лівому куті форми як зображено на рис. 5.

01_02_00_002_04_

Рис. 4. Компонент TLabel на палітрі інструментів

 

01_02_00_002_05_

Рис. 5. Компонент типу TLabel на основній формі програми

 

3.2. Задавання тексту в TLabel

Для виконання яких-небудь дій з компонентом TLabel його спочатку треба виділити (з допомогою “мишки” або вибором в панелі Object Inspector). Після цього встановлюємо властивість Caption компонента TLabel в значення “R =” (рис. 6).

01_02_00_002_06_

Рис. 6. Властивість Caption

 

У результаті на формі текст “Label1” зміниться на текст “R =”.

В Object Inspector можна переглядати багато інших властивостей цього компонента. У нашому випадку нас цікавитиме властивість Name, що містить значення назви змінної. За замовчуванням це значення рівне “Label1“. Це означає, що під час написання програмного коду до властивостей цього компонента можна звертатись з префіксом “Label“. Наприклад, щоб у програмі змінити властивість Caption потрібно набрати такий рядок:

Label1.Caption := 'Радіус = ';

Таким самим чином виносимо компоненти з іменами Label2 та Label3 під попереднім компонентом і встановлюємо значення Caption відповідно в “S = ” та “V = “.

Форма має мати приблизний вигляд так як на рис. 7.

01_02_00_002_07_

Рис. 7. Форма додатку після винесення компонент Label1, Label2, Label3

Перенесення та обробка всіх інших компонент з палітри Tool Palette відбувається аналогічно.

 

4. Компонент TEdit

Додаємо з палітри компонент Tool Palette з вкладки Standard компонент TEdit, який представляє собою рядок вводу. З допомогою використання цього компонента будемо отримувати значення радіусу кола введеного користувачем з клавіатури.

Після додавання компонента на форму система Delphi створює компонент-змінну з назвою Edit1 (властивість Name).

Очищаємо властивість Text компонента.

 

5. Компонент TButton

Додаємо з палітри компонент Tool Palette компонент TButton, що являє собою звичайну кнопку, після натиску на якій буде обчислюватись площа круга та об’єм кулі. В програму система Delphi автоматично додасть компонент-змінну з іменем Button1.

Змінюємо значення властивості Caption компонента на “Обчислити“.

Форма додатку в режимі проектування матиме вигляд, зображений на рис. 8.

01_02_00_002_08u

Рис. 8. Форма додатку після додавання компонент TEdit та TButton

 

6. Програмування події натиску на кнопці “Обчислити”

Наступним кроком в програмі є програмування події в Delphi, яка виникає при натиску на кнопці Button1. Подія кліку мишки на кнопці називається OnClick.

Детальний приклад програмування події в Delphi описується тут.

Delphi 2010 автоматично створює фрагмент програмного коду, в який потрібно вписати власний код. Створений код має вигляд:

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

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

Згідно з умовою задачі у нашій програмі опишемо три змінні з відповідним позначенням:

  • R – радіус кола;
  • S – площа круга;
  • V – об’єм кулі.

Усі змінні мають бути дійсного типу.

Також у програмі використовується одна константа – число π.

Позначимо її іменем Pi. Слід зауважити, що у Delphi є вбудована функція з іменем Pi, але в нашій програмі вона задіяна не буде. Таким чином, опис змінних і констант перед словом begin буде наступний:

const
 Pi = 3.1415; // Число Пі

var
 R:real; // Радіус кола
 S:real; // Площа круга
 V:real; // Об'єм кулі

Між операторами begin та end вписуємо наступні рядки основного програмного коду:

// 1. Читання значення радіусу 
// кола з компонента Edit1.Text
R := StrToFloat(Edit1.Text);

// 2. Обчислення площі круга
S := Pi * R * R;

// 3. Обчислення об'єму кулі
V := 4/3 * Pi * R * R * R;

// 4. Виведення результатів з точністю 3 знаки після коми
Label2.Caption:='S='+FloatToStrF(S,ffFixed,8,3);
Label3.Caption:='V='+FloatToStrF(V,ffFixed,8,3);

Пояснимо деякі функції, що використовуються в програмному коді. Функція StrToFloat перетворює значення рядкової величини Edit1.Text в число дійсного типу. Наприклад, після виконання такого коду

x := StrToFloat('-3.675');

значення х стане -3.675.

У пунктах 2 та 3 відбуваються звичайні обчислення площі круга та об’єму кулі з допомогою арифметичних операцій мови Паскаль.

У пункті 4 виводяться результати на екран. Оскільки програма реалізована як Windows-додаток, то для виведення результату достатньо заповнити значення властивості Caption у компонентах Label2 (площа) та Label3 (об’єм).

Функція FloatToStrF здійснює зворотне перетворення до функції StrToFloat, тобто перетворює число дійсного типу в рядок.

Наприклад, для перетворення числа 2.87 у рядок з точністю 4 знаки після коми потрібно написати:

v := 2.87;
str := FloatToStrF(v, ffFixed, 8, 4);

де v – змінна дійсного типу; str – змінна рядкового типу; ffFixed – формат перетворення. Константа 8 означає що використовується загальна ширина виведення розміром у 8 знаків. Константа 4 означає точність після коми.

Загальний лістинг процедури обробки події OnClick компонента Button1 має вигляд.

procedure TForm1.Button1Click(Sender: TObject);
const
 Pi = 3.1415; // Число Пі
var
 R:real; // Радіус кола
 S:real; // Площа круга
 V:real; // Об'єм кулі
begin
 // 1. Читання значення радіусу кола 
 // з компонента Edit1.Text
 R := StrToFloat(Edit1.Text);
 // 2. Обчислення площі круга
 S := Pi * R * R;

 // 3. Обчислення об'єму кулі
 V := 4/3 * Pi * R * R * R;
 // 4. Виведення результатів з точністю 3 знаки після коми
 Label2.Caption:='S='+FloatToStrF(S,ffFixed,8,3);
 Label3.Caption:='V='+FloatToStrF(V,ffFixed,8,3);
end;

 

7. Зміна назви програми

Щоб змінити заголовок програми, якій відповідає основна форма Form1, потрібно змінити властивість Caption форми. Встановимо цю властивість у значення “Розрахунок площі круга та об’єму кулі“.

 

8. Результат роботи програми

Після запуску програми на виконання відображається вікно з запитом до введення радіусу кола R. Вводимо значення 2,5. Вікно з результатом виконання програми наведено на рис. 9.

01_02_00_002_09u

Рис. 9. Результат роботи програми


Підсумки

У програмі було розглянуто роботу компонент таких типів:

  • TLabel – компонент типу “мітка”, що представляє собою текстовий рядок;
  • TButton – компонент, що представляє звичайну кнопку на формі;
  • TEdit – рядок вводу, призначений для отримання введеної з клавіатури інформації від користувача.

Для проектування інтерфейсу програми використовувалась панель інструментів Tool Palette та інспектор об’єктів Object Inspector.


Зв’язані теми