Новости

НОУ ІНТУЇТ | лекція | Загальні відомості про мову програмування Free Pascal

З докладним описом наведених в цьому розділі функцій і безліччю інших функцій можна ознайомитися в довідковій системі Lazarus.

Розглянемо рішення задачі з використанням стандартних функцій.

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


Мал.2.7.

Проект форми до задачі 2.1 Таблиця 2.11. Заголовки компонентів форми, представленої на рис. 2.7 Компонент Властивість Caption Form1 Параметри трикутника Label1 Введіть довжини сторін Label2 a = Label3 b = Label4 з = Label5 Величини кутів Label6 alfa = Label7 beta = Label8 gamma = Label9 Периметр P = Label10 Площа S = Button1 обчислити

;  другий по теоремі синусів:   ;  третій за формулою: ; другий по теоремі синусів: ; третій за формулою: .

Рішення завдання можна розбити на наступні етапи:

  1. визначення значень і (Введення величин і в пам'ять комп'ютера).
  2. Розрахунок значень S, P, α, β і γ і за наведеними вище формулами.
  3. Висновок значень S, P, α, β і γ і .

Процес розробки нескладного програмного інтерфейсу описаний в главі 1. Спробуйте самостійно розробити зовнішній вигляд даної програми. Додайте на формі десять міток, три поля введення і одну кнопку. Змініть заголовки форми і міток (властивість Caption) відповідно до табл. 2.11 . Як властивості Text компонентів Edit1, Edit2, Edit3 встановіть пробіл. В результаті форма повинна виглядати так, як показано на Мал. 2.7 .

Отже, проект форми готовий. У вікні програмного коду середовища Lazarus автоматично сформував структуру модуля, перерахувавши назви основних розділів. Подвійне клацання по кнопці Обчислити призведе до створення процедури TForm1.Button1Click в розділі implementation:

procedure TForm1. Button1Click (Sender: TObject); begin end;

і її опису в розділі interface. Зрозуміло, що створена процедура не містить жодної команди. Завдання програміста - заповнити шаблон описами і операторами. Всі команди, зазначені в процедурі між словами begin і end, будуть виконані при натисканні на кнопку Виконати. У нашому випадку процедура TForm1.Button1Click матиме вигляд:

procedure TForm1. Button1Click (Sender: TObject); // Опис змінних: // a, b, с - сторони трикутника; // alfa, beta, gamma - кути трикутника; // S - площа трикутника; // r - напівпериметр трикутника // Все змінні дійсного типу. var a, b, c, alfa, beta, gamma, S, r: real; begin // З полів введення Edit1, Edit2, Edit3 зчитуються введені рядки, // за допомогою функції StrToFloat (х) перетворюються // в речові числа і записуються в змінні а, b, c. a: = StrToFloat (Edit1. Text); b: = StrToFloat (Edit2. Text); c: = StrToFloat (Edit3. Text); // Обчислення значення напівпериметр. r: = (a + b + c) / 2; // Обчислення значення площі, // для обчислення застосовується функція: // sqrt (х) - корінь квадратний з х. S: = sqrt (r * (r - a) * (r - b) * (r - c)); // Обчислення значення кута alfa в радіанах. // Для обчислення застосовуємо функції: // acos (х) - арккосинус x; // sqr (х) - зведення х в квадрат. alfa: = arccos ((sqr (b) + sqr (c) -sqr (a)) / 2 / b / c); // Обчислення значення кута beta в радіанах. // Для обчислення застосовуємо функції: // asin (х) - арксинус x; beta: = arcsin (b / a * sin (alfa)); // Обчислення значення кута gamma в радіанах. // Математична постійна визначена функцією без аргументу pi. gamma: = pi - (alfa + beta); // Переклад з радіан в градуси. alfa: = alfa * 180 / pi; beta: = beta * 180 / pi; gamma: = gamma * 180 / pi; // Для виведення результатів обчислень використовуємо // операцію злиття рядків "+" і функцію FloatToStrF (х), // яка перетворює речову змінну х в рядок // і виводить її в зазначеному форматі, в нашому випадку // під змінну відводиться три позиції , включаючи точку // і нуль позицій після точки. // Величини кутів в градусах виводяться на форму // в відповідні об'єкти типу напис. Label6. Caption: = 'alfa =' + FloatToStrF (alfa, ffFixed, 3, 0); Label7. Caption: = 'beta =' + FloatToStrF (beta, ffFixed, 3, 0); Label8. Caption: = 'gamma =' + FloatToStrF (gamma, ffFixed, 3, 0); // Використовуємо функцію FloatToStrF (х) для форматованого // виведення, в нашому випадку під все число відводиться п'ять позиції, // включаючи точку, і дві позицій після точки. // Значення площі і периметра виводяться на форму. Label9. Caption: = 'Периметр P =' + FloatToStrF (2 * r, ffFixed, 5, 2); Label10. Caption: = 'Площа S =' + FloatToStrF (S, ffFixed, 5, 2); end;

Зверніть увагу, що були написані всього десять команд, призначених для вирішення поставленого завдання. Решта тексту у вікні редактора створюється автоматично. В результаті весь програмний код (без коментарів) має вигляд:

unit Unit1; {$ Mode objfpc} {$ H +} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Math; type {TForm1} TForm1 = class (TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label10: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; procedure Button1Click (Sender: TObject); private {private declarations} public {public declarations} end; var Form1: TForm1; implementation {TForm1} procedure TForm1. Button1Click (Sender: TObject); var a, b, c, alfa, beta, gamma, S, r: real; begin a: = StrToFloat (Edit1. Text); b: = StrToFloat (Edit2. Text); c: = StrToFloat (Edit3. Text); r: = (a + b + c) / 2; S: = sqrt (r * (r - a) * (r - b) * (r - c)); alfa: = arccos ((sqr (b) + sqr (c) -sqr (a)) / 2 / b / c); beta: = arcsin (b / a * sin (alfa)); gamma: = pi - (alfa + beta); alfa: = alfa * 180 / pi; beta: = beta * 180 / pi; gamma: = gamma * 180 / pi; Label6. Caption: = 'alfa =' + FloatToStrF (alfa, ffFixed, 3, 0); Label7. Caption: = 'beta =' + FloatToStrF (beta, ffFixed, 3, 0); Label8. Caption: = 'gamma =' + FloatToStrF (gamma, ffFixed, 3, 0); Label9. Caption: = 'Периметр P =' + FloatToStrF (2 * r, ffFixed, 5, 2); Label10. Caption: = 'Площа S =' + FloatToStrF (S, ffFixed, 5, 2); end; initialization {$ I unit1.lrs} end.
Мал. 2.8. Результат роботи програми до задачі 2.1

на Мал. 2.8 представлено діалогове вікно, яке з'явиться, якщо запустити цю програму, натиснувши кнопку Обчислити.

Тепер напишемо консольний додаток для вирішення цього завдання. Для цього запустимо текстовий редактор Geany. Виконаємо команду Файл - New with Template - Pascal Source File. У вікні реактора введемо наступний текст програми.

program pr3; // Підключення модуля для роботи з математичними функціями, // см. табл. 2.6. uses math; // Опис всіх використовуваних змінних. var a, b, c, r, s, alfa, beta, gamma: real; begin // Введення сторін Трикутник. writeln ( 'Введіть боку трикутника'); readln (a, b, c); // Обчислення значення напівпериметр. R: = (a + b + c) / 2; // Обчислення значення площі, // для обчислення застосовується функція: // sqrt (х) - корінь квадратний з х. S: = sqrt (r * (r - a) * (r - b) * (r - c)); // Обчислення значення кута alfa в радіанах. // Для обчислення застосовуємо функції: // acos (х) - арккосинус x; // sqr (х) - зведення х в квадрат. alfa: = arccos ((sqr (b) + sqr (c) - sqr (a)) / 2 / b / c); // Обчислення значення кута beta в радіанах. // Для обчислення застосовуємо функції: // asin (х) - арксинус x; beta: = arcsin (b / a * sin (alfa)); // Обчислення значення кута gamma в радіанах. // Математична постійна визначена // функцією без аргументу pi. gamma: = pi - (alfa + beta); // Переклад з радіан в градуси. alfa: = alfa * 180 / pi; beta: = beta * 180 / pi; gamma: = gamma * 180 / pi; // Висновок площі і сторін трикутника. writeln ( 'Площа трикутника =', S: 6: 2); writeln ( 'alf =', alfa: 6: 2, 'bet =', beta: 6: 2, 'gam =', gamma: 6: 2); end.

Для компіляції програми в Geany необхідно виконати команду Побудувати - Зібрати (F8), для запуску - Побудувати - Виконати (F5). на Мал. 2.9 представлені результати роботи програми.

Введіть боку трикутника 3 4 5 Площа трикутника = 6.00 alf = 36.87 bet = 53.13 gam = 90.00
Мал. 2.9. Результати роботи консольного застосування рішення задачі 2.1

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: