Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_2.doc
Скачиваний:
12
Добавлен:
18.09.2019
Размер:
1.91 Mб
Скачать

Interface

uses

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

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

I

Mplementation

{$R *.DFM}

// обработчик события OnCliсk для кнопки "Вычислить"

procedure TForm1.Button1Click(Sender: TObject);

var

a,b,c:real; // коэффициенты уравнения

d:real; // дискриминант

x1,x2:real; // корни уравнения

code:integer; // для преобразования текста в число

st1,st2:string[10];

begin // ввод исходных данных из полей редактирования

val(Edit1.text,a,code); // преобразование текста в число

val(Edit2.text,b,code);

val(Edit3.text,c,code);

if a=0

then Label1.caption:='Коэффициенты при второй степени'

+chr(13)+'неизвестного равен нулю!';

else

begin // решение уравнения

d:=b*b-4*a*c;

if d<0

then Label1.caption:='Дискриминант < 0' +chr(13)+'Уравнение не имеет корней'

else

begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

str(x1:10:5,st1);

str(x2:10:5,st2);

Label1.Caption:='Корни уравнения:'+ chr(13)+'x1='+st1+ chr(13)+'x2='+st2;

end;

end;

end;

// обработчик событий OnClik для кнопки "Новое"

procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Label1.Caption:='';

Edit1.SetFocus;

end;

// обработчик событий OnClik для кнопки "Завершить"

procedure TForm1.Button3Click(Sender: TObject);

begin

Close;

end;

end.

На рис. 19 .3 приведен вид окна работающего приложения после ввода коэффициентов и вычислений.

рис. 19.3.Форма приложения при исполнении

Выводы

  1. Для управления используются компоненты Button (кнопка) и их обработчики событий.

  2. Для пояснений используются компоненты Label (метка).

  3. Для ввода данных используются компоненты Edit (однострочный редактор).

  4. Кнопка “Выход” дублирует стандартную кнопку завершения приложения Windows.

20.Класс tThread

Подготовка к работе

  1. По рекомендованной литературе изучить:

  • назначение объектов класса TThread;

  • свойства и методы объектов класса TThread;

  • синхронизация объектов класса TThread.

  1. Разработать алгоритмы и программырешения в соответствии с указанными заданиями.

Контрольные вопросы

  1. Определение Процесса и Нити (Thread).

  2. Основная и порождаемые нити.

  3. Способы взаимодействия порождаемых нитей с основной нитью и между собой.

  4. Приоритет нити и ограничение на использование высокоприоритетных потоков.

  5. Метод Create создания нити.

  6. Метод Execute запуска нити. Почему он должен быть переопределяемым

  7. Для чего нужна синхронизация параллельно выполняющихся нитей. Метод Syncronize.

  8. Метод Suspend приостанова выполнения нити.

  9. Метод Resume возобновления выполнения нити.

  10. Метод Terminate завершения выполнения нити.

  11. Использование объекта типа события (Event) для синхронизации нитей.

  12. Методы SetEvent и ResetEvent для перевода объекта в активное или пассивное состояния.

  13. Метод WaitFor ожидания активизации события в течение заданного времени.

  14. Методы Get и Release для получения объекта или освобождения от него.

Задания к работе

  1. Создать модуль класса потоков.

  2. Создать программу, использующую два параллельных потока с изменяемыми приоритетами. Проект – приложение.

  3. Добавить в программу задания 2 средства останова, возобновления и переключения потоков. Проект – приложение.

Пример выполнения

Задание 1.

Создаем модуль класса потока TMyThread, являющегося наследником класса. Для этого выполним следующие операции:

В ИСР выполняем команду File=>New=>Unit (Файл=>Создать=>Модуль). На рис. 20 .4показана заготовка модуля. Сохраним его с именем MyThread в папке проекта 20_1. При этом имя модуля сменится в окне кода автоматически.

рис. 20.4. Заготовка модуля

  1. Занесем в модуль текст кода, приведенный ниже. Процесс, выполняемый в потоке, оформляем, как подпрограмму с именем Execute. Это циклически повторяемые вычисления со счетчиком циклов Count.

Листинг модуля MyThread

unit MyThread;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]