Звіт за обчислювальну практику, страница 7

1. Проектую розташування додатку всередині екрану (Натискаю на форму-Object Inspector-Properties-Position: poScreenCenter)  і встановлюю заборону зміни  його розмірів (Натискаю на форму-Object Inspector-Properties-BorderStyle: bsDialog).

2. Зменшую розмір форми до розумних розмірів.

3. Додаю  на порожню форму Рядки  введення  Edit1, Edit2, 3 мітки  Label, 2 кнопки BitBtn, Поле Memo1, Панель  Panel1  та розташовую їх зручним  чином. 

4. Клацаю  мишею по формі, переходжу до Інспектора Об’єктів і задаю властивість Caption форми: Натуральний логарифм.

 5. Змінюю властивість Caption кнопки BitBtn1 на Обчислення, кнопки BitBtn2 на Очищення.

6.Задаю властивість Caption для міток Label1 – Число, Label3 – Точність. Властивість Caption для мітки  Label2 очищую.

7. Очищую значення властивості Text компонентів  Edit1 і Edit2.

8.Змінюю властивість Lines поля  Memo1 ( вводжу умову задачі).

9. Змінюю властивість Color  поля  Memo1 (Color: clMenu).

10. До обробника події OnClick кнопки BitBtn1 вводжу такий програмний код:

x:=StrToFloat(Edit1.Text);

e:=StrToFloat(Edit2.Text);

if (x<0) or (x>2) or (e=0.0001) or (e=0.1)  then

begin

Label2.Caption:='Помилка! Вводьте числа з проміжку 0<x<2.';

Edit1.Clear;

end

else

Begin

l:=0;

i:=1;

repeat

if i mod 2=0 then

begin

L:=L-abs(exp(i+ln(x-1)))/i;

i:=i+1;

end

else

begin

 L:=L+abs(exp(i+ln(x-1)))/i;

 i:=i+1;

end;

 until  l<e;

Label2.Caption:='Ln('+Edit1.Text+')= '+ FloatToStr(L);

end;

11. До розділу var модуля дописую:

i:integer;

L,x,e,h:extended;

12. До обробника події OnClick кнопки BitBtn2 вводжу такий програмний код: Edit1.Clear;

  Edit2.Clear;

Label2.Caption:='';

Edit1.SetFocus;

13. Створюю ярлички-підказки для всіх елементів додатку . Для цього:

- виділяю компонент і до його властивості Hint вводжу пояснювальний текст;

- встановлюю властивість ShowHint (показ ярличка) у значення true.

14. Компілюю створений додаток, зберігаю його.

ЛІСТИНГ

unit Unit1; //назва проекта

interface // описання інтерфейсу

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, Buttons,math; // підключення бібліотек

Type // описання класу

  TForm1 = class(TForm) // описання класу

    Edit1: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    Edit2: TEdit;

    Label3: TLabel;

    Memo1: TMemo;

    procedure BitBtn1Click(Sender: TObject); // опис процедури

    procedure BitBtn2Click(Sender: TObject);

  private 

    { Private declarations }

  public

    { Public declarations }

  end;

var  //блок опису змінних

  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject); //обробка подіі onclick  на компоненті BitBtn1

var //блок опису змінних

i:integer;

L,x,e,h:extended;

begin

x:=StrToFloat(Edit1.Text); // присвоєння змінній х значення поля Edit1; StrToFloat – переведення рядкового типу даних в дійсний

e:=StrToFloat(Edit2.Text);// присвоєння змінній е значення рядка Edit2

if (x<0) or (x>2) or (e=0.0001) or (e=0.1)  then //перевірка належності введеного числа заданому проміжку

begin

Label2.Caption:='Помилка! Вводьте числа з проміжку 0<x<2.'; // присвоєння властивості Caption компонента Label2 тексту'Помилка! Вводьте числа з проміжку 0<x<2.

Edit1.Clear; // очищення  Edit1

end

else

Begin

l:=0;

i:=1;

repeat // опис циклу з післяумовою

if i mod 2=0 then // визначення знаку («+» чи «-») перед членами ряду

begin

L:=L-abs(exp(i+ln(x-1)))/i;

i:=i+1;

end

else

begin

 L:=L+abs(exp(i+ln(x-1)))/i;

 i:=i+1;

end;

 until  l<e; // умова закінчення виконання циклу

Label2.Caption:='Ln('+Edit1.Text+')= '+ FloatToStr(L); // виведення в мітку Label2 розрахунку і отриманого значення

end;

end;

procedure TForm1.BitBtn2Click(Sender: TObject); //обробка подіі onclick  на компоненті BitBtn1

begin

  Edit1.Clear; // очищення  Edit1

  Edit2.Clear; // очищення  Edit2

Label2.Caption:=''; // очищення  Label2

Edit1.SetFocus; // присвоєння фокусу рядку Edit1, тобто він стає активним для введення

end;

end.

Вигляд форми:

Результати виконання:

            День8

Варіант 8

Постановка задачі

Самостійно розробити форму для проекту, що реалізує розв’язання даної матричної задачі. Передбачити наявність зручного інтерфейсу користувача, який дозволяє прочитати умову задачі, що її розв’язує проект, підказки щодо того, в яке вікно що треба вводити, коментарі в разі некоректних дій при введенні даних, тощо. У якості об’єкту для введення матричної інформації використати компонент StringGrid. Перевірити проект для різних наборів вхідних даних, у тому числі і некоректних, після чого записати його до окремої папки з назвою Day8. Папку записати до персональної флеш-карти пам’яті..

Задача: Ввести цілочисельний масив 5х5 і вивести мінімальний додатний елемент кожного рядка.

Опис форми та її компонентів

На формі міститься:

·  5 міток                                          Label1, Label2, Label3, Label4, Label5

·  Кнопка                                          BitBtn1

·  Компонент                                    StringGrid

Опис алгоритму розв’язання задачі

1. Проектую розташування додатку всередині екрану (Натискаю на форму-Object Inspector-Properties-Position: poScreenCenter)  і встановлюю заборону зміни  його розмірів (Натискаю на форму-Object Inspector-Properties-BorderStyle: bsDialog).

2. Зменшую розмір форми до розумних розмірів.

3. Додаю  на порожню форму 5 міток Label зі сторінки Standard, один компонент StringGrid та одну кнопку BitBtn зі сторінки Additional та розташовую їх зручним  чином. 

4. Клацаю  мишею по формі, переходжу до Інспектора Об’єктів і задаю властивість Caption форми: Мінімальний елемент.

5. Для компоненту StringGrid встановлюю такі значення властивостей:

  ColCount: 5;

  RowCount: 5;

  FixedCols: 0;

  FixedRows: 0;

  Options-goEditing: True;

  Options-goTabs: True.

6. Змінюю властивість Caption кнопки BitBtn1 на Обчислити.

7. Очищую значення властивості Caption для усіх міток Label.

8. До обробника події OnClick кнопки BitBtn1 вводжу такий програмний код:

StringGrid1.SetFocus;