Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП всі лабораторні.doc
Скачиваний:
2
Добавлен:
28.08.2019
Размер:
1 Мб
Скачать
☆

Лабораторна робота №2 Програмування алгоритмів, що розгалужуються

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

2.1. Приклад створення додатка

Завдання: створити Windows-додаток для обчислення виразу

Z=, де за бажанням користувача. У панелі інтерфейсу передбачити можливість управління контрольним виведенням початкових даних.

Один з можливих варіантів панелі інтерфейсу створюваного застосування показаний на рис. 2.1.

2.1.1. Розміщення компонентів на Формі

Розміщуватимемо компоненти на Формі так, щоб вони відповідали панелі, показаній на рис. 2.1.

Рис. 2.1

При створенні додатків в DELPHI часто використовуються компоненти у вигляді кнопок-перемикачів. Стан такої кнопки (включено - вимкнено) візуально відбивається на Формі. На панелі (рис. 2.1) представлені кнопки-перемикачі двох типів: CheckBox і RadioGroup .

Компонент CheckBox організовує кнопку незалежного перемикача, за допомогою якої користувач може вказати своє вирішення типу “так/ні”. Компонент RadioGroup організовує групу кнопок – залежних перемикачів. При натисненні однієї з кнопок групи решта всіх кнопок вимикається.

Помістите на Форму компоненти Label, Edit і Memo відповідно до рис.2.1. Виберіть в Палітрі Компонентів на сторінці Standard піктограму компонента CheckBox і розмістите її в потрібному місці Форми. . У властивості Caption Інспектора Об'єктів заміните напис CheckBox1 на Контрольне виведення даних. . Щоб при запуску додатка кнопка CheckBox опинилася включена, властивість Checked встановите рівним True.

Виберіть в Палітрі Компонентів Standard піктограму компонента RadioGroup і помістіть її в потрібне місце Форми. У властивості Caption зміните заголовок RadioGroup1 на f(x). Для розміщення кнопок в один стовпець, властивість Columns встановите рівним 1. Двічі клацніть “мишею” по правій частині властивості Items - з'явиться рядковий редактор списку найменувань кнопок. Наберіть 2 рядки з іменами: у першому рядку - sin(x), в другій - cos(x) і натисніть ОК. Після цього на Формі з'явиться група з двох кнопок - перемикачів з відповідними написами. Щоб при запуску додатка перша кнопка RadioGroup опинилася включена, властивість ItemIndex встановите рівним 0.

2.1.2. Створення процедур обробки подій FormСreate і Button1Сlick

Технологія створення процедур обробки подій FormСreate і Button1Сlick нічим не відрізняється від попередньої роботи. Уважно наберіть операторів цих процедур, використовуючи текст модуля UnRazvAlg.

2.1.3. Текст модуля UnRazvAlg

Unit UnRazvAlg;

interface

uses

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

StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label4: TLabel;

Memo1: TMemo;

Button1: TButton;

RadioGroup1: TRadioGroup;

CheckBox1: TCheckBox;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

// Процедура обробки події створення Форми:

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='0.5'; // початкове значення X

Edit2.Text:='1.8'; // початкове значення Y

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

// Виведення рядка в Memo1:

Memo1.Lines.Add(‘Лабораторна робота №2 - алгоритм’, що Розгалужується);

end;

// Процедура обробки події натиснення кнопки Button1:

procedure TForm1.Button1Click(Sender: TObject);

var

x,y,z,fx : extended; // оголошення локальних змінних

begin

x:=StrToFloat(Edit1.Text); // X привласнюється вміст Edit1

y:=StrToFloat(Edit2.Text); // Y привласнюється вміст Edit2

fx:=sin(x); // fx привласнюється початкове значення

// Вибір функції, відповідній натиснутій кнопці:

case RadioGroup1.ItemIndex of

0:fx:=sin(x);

1:fx:=cos(x);

end;

// Обчислення виразу:

if x<y then

z:=fx

else

z:=y;

// Перевірка стану кнопки CheckBox1:

if CheckBox1.Checked then

Memo1.Lines.Add('X = '+Edit1.Text+

' Y = '+Edit2.Text); // контрольний вивід X, Y в Memo1

// Виведення результату в Memo1:

Memo1.Lines.Add(' Z = '+FloatToStrF(z,ffFixed,8,3));

end;

end.

Якщо натиснута перша кнопка RadioGroup1, в змінну цілого типу RadioGroup1.ItemIndex заноситься нуль, якщо друга – одиниця. Якщо кнопка CheckBox1 натиснута, логічна змінна CheckBox1.Checked має значення True, якщо немає – False.