Лабораторная работа № 19.
Программирование алгоритмов выбора в среде разработки Borland Delphi

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

4 часа

Цель работы

Научиться программировать процессы, которые позволяют сделать выбор того или иного действия.

Задачи лабораторной работы

После выполнения работы студент должен:
  1. Знать, как отличить алгоритм выбора от других алгоритмов и как его можно реализовать в среде Delphi.
  2. Уметь самостоятельно написать программу для любого процесса выбора.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система Windows 2003 и выше и система визуального программирования Delphi на основе 6-ой версии.

Общие теоретические сведения

Интегрированная среда разработки Delphi представляет собой многооконную систему (рис. 1). 
 
Рисунок 1. Пользовательский интерфейс интегрированной среды разработки Delphi

После загрузки интерфейс Delphi включает следующие окна:
  1. Главное окно – Project1, осуществляет основные функции управления проектом создаваемой программы.
  2. Окно Инспектора объектов Object Inspector содержит две страницы Properties (Свойства) и Events (События).
  3. Окно Конструктора формы Form1 представляет проект интерфейсной части будущего проекта.
  4. Окно Редактора кода – Unit1.pas предназначено для создания и редактирования текста программы на языке Object Pascal.
Пункт меню View позволяет увидеть окна на экране при их отсутствии. В зависимости от настроек можно видеть окна:
  • окно обозревателя дерева объектов Object Tree View;
  • окно Проводника кода – Exploring  Unit1.pas.
Delphi – однодокументная среда и может работать только с одним приложением. Закрытие Delphi – закрытие главного окна. 
Project1 включает:            
  • главное меню, которое содержит команды доступа к функциям Delphi;
  • панели инструментов (часто используемые команды главного меню);
  • палитру компонентов (содержит строительные блоки для форм приложения).
Имеется 6 панелей инструментов: 
  1. Standard (стандартная). 
  2. View (просмотра).
  3. Debug (отладки).
  4. Custom (пользователя).
  5. Desktop (рабочий стол).
  6. Internet (интернет).
Все компоненты разбиты на группы, каждая из которых в Палитре компонентов располагается на отдельной странице. Нужная страница выбирается щелчком мыши на ее ярлычке.
Основные страницы Палитры компонентов:
  1. Standard (стандартная)
  2. Additional (дополнительная)
  3. Win32 (32-разрядный интерфейс Windows)
  4. System (доступ к системным функциям)
  5. Data Access (работа с информацией из базы данных)
  6. Data Controls (создание элементов управления данными)
  7. BDE (доступ к данным с помощью процессора баз)
  8. Qreport (составление отчетов)
  9. Dialogs (создание стандартных диалоговых окон)
Окно конструктора формы находится в центре экрана с заголовком  Form1.
В нем выполняется проектирование формы. На форму из палитры компонентов помещаются компоненты. Окно редактора кода Unit1.pas находится под окном конструктора формы – это обычный текстовый редактор, используется для редактирования текста модуля и в начале содержит исходный код модуля. Окно проводника кода (Exploring Unit1.pas) содержит и отображает все объекты модуля формы.
Окно инспектора объектов (Object Inspector) находится в левой части экрана и отображает свойства и события объектов для текущей формы Form1. Страница Properties (Свойства) отображает информацию о текущем компоненте и позволяет изменять свойства компонентов.
Events (События) определяет процедуру, которую должен выполнить компонент при возникновении события. Компонент, расположенный на форме, можно выбрать щелчком мыши на нем или выбором в списке Инспектора объектов (Object Inspector).Каждый объект имеет свой набор свойств и событий, определяющий его особенности. 

Разработка приложения

Разработка приложения включает:
  1. Создание интерфейса приложения.
  2. Определение функциональности приложения.
Интерфейс приложения определяет способ взаимодействия пользователя и приложения т.е. внешний вид формы. Интерфейс создается путем размещения в форме компонентов, которые называются интерфейсными или управляющими компонентами и выполняется с помощью конструктора формы.
Функциональность приложения определяется процедурами, которые выполняются при возникновении определенных событий, например, при действиях пользователя с управляющими элементами формы. В процессе создания приложения на форму помещаются компоненты, для которых создаются обработчики событий.

Создание интерфейса приложения

Интерфейс приложения составляют компоненты, которые разработчик выбирает из Палитры компонентов и размещает на форме. При этом выполняются следующие операции:
  • выбор компонента в Палитре  компонентов и размещение на форме;
  • изменение  свойств компонента.
Выбор компонента выполняется щелчком мыши на нужном компоненте, в результате пиктограмма принимает утопленный вид и, если щелкнуть на свободном месте формы на ней, появится выбранный компонент и его пиктограмма принимает  обычный вид. Пиктограммы компонентов отражают назначение компонентов. В обозначении типа объектов Delphi, в том числе и компонент указывается буква T. Это означает, что объект принадлежит классу T, например, TForm1, T - это имя  класса, созданного по образцу стандартного класса TForm.

Определение функциональности приложения.

Для компонентов, размещенных на форме, разработчик может определить нужную реакцию на те или иные действия пользователя, например, что должно произойти, если нажать кнопку на форме. На форме, как правило, размещены компоненты, образующие интерфейс приложения, и разработчик должен для этих компонентов определить нужную реакцию на те или иные действия пользователя. Например, на нажатие кнопки или включение переключателя. Эта реакция и определяет функциональность приложения. Так, если при создании интерфейса на форме размещена кнопка Button1, то ее можно нажимать с помощью мыши; она отображает нажатие на себя визуально, но никаких действий она не выполняет до тех пор, пока не будет создана процедура обработки этого события. Для создания этой процедуры нужно выделить кнопку на форме и перейти на страницу событий инспектора объектов (Events), где указаны все возможные события для кнопки. При нажатии на кнопку возникает событие OnClick и необходимо создать обработку этого события. Двойной щелчок на кнопке и Delphi автоматически создает в модуле формы заготовку процедуры-обработчика, при этом окно редактора кода переводится на передний план, а курсор устанавливается в место, куда должны быть внесены изменения.
Компиляция выполняется с помощью меню или клавишами Ctrl + F9. В результате компиляции создается готовый к выполнению файл с расширением *.exe. Языком программирования Delphi является язык Object Pascal, который представляет собой объектно-ориентированное расширение стандартного языка Pascal. В версии Delphi 7 язык Object Pascal переименован в язык Delphi, который почти идентичен языку Object Pascal. Отличие касается работы с базами данных и Интернет.
Рассмотрим реализацию процесса выбора из двух вариантов.
Если переменная х задана на отрезке [0,1] вычислить площадь квадрата, иначе вычислить площадь круга (переменную использовать соответственно как сторону квадрата или радиус круга).

Пример 1
Если переменная х задана на отрезке [0,1] вычислить площадь квадрата, иначе вычислить площадь круга (переменную использовать соответственно как сторону квадрата или радиус круга).

Конструирование формы

Для формы Form1 в инспекторе объектов Object Inspector можно задать следующие свойства:
  • Caption – заголовок окна (например, «Вычисление»);
  • Height – 400 (высота окна);
  • Width – 600 (ширина окна).
Поместить на форму компоненты:
  • панель Panel1 (в верхней части экрана для ввода информации);
  • панель Panel2 (в нижней части для вывода информации) (страница Standard).
Для панелей с помощью свойства Caption очистить поле заголовка.
На панели Panel1 разместить компоненту Edit1 – для ввода переменной х (страница Standard).
Поле Text – очистить для ввода переменной x.
Label1 – использовать для задания метки для х (страница Standard).
Для Label1 задать свойство Caption – x=.
На панели Panel2 разместить метку Label2.
Caption задать – Результат.
Управлять вычислением будет кнопка Button1, разместить ее на панели Panel1 и задать Caption – Вычислить. Для Button1 необходимо создать обработчик события OnClick (нажатие кнопки).
Форма будет иметь вид (рис. 2):
 
Рисунок 2. Форма с размещенными объектами

Для создания обработчика надо перейти на вкладку Events Инспектора объектов Object Inspector, выбрать мышкой нужную компоненту (Button1) и найти требуемое событие OnClick.
Двойной щелчок на этой кнопке и на экране окно кода программы.
Курсор устанавливается в процедуру – обработчика события, которая должна иметь следующий вид: 
procedure Tform1.Button1Click(Sender:Tobject);
begin
<место курсора>
End;

Ниже представлена программа обработки заданного события.
procedure Tform1.Button1Click(Sender:Tobject);
Var
x,s:real;  //  описание переменных
begin
x:=StrToFloat(Edit1.Text);// ввод переменной х и преобразование ее из строкового в вещественный тип в соответствии с заданием 
If (x>=0) and(x<=1) then begin S:=x*x; Panel2.Caption:=’Площадь квадрата=’+FloatToStr(s) end // вывод результата с преобразованием его в строковый тип данных для вывода в форму
else
begin s:=3,14*x*x;  Panel2.Caption:=’Площадь круга=’+FloatToStr(s)
end;
end;
Вывод результата выполнен в заголовок панели Panel2. 

Переменная х и результат s в форме – строкового типа, поэтому в программе переменная х преобразована в вещественный тип данных (StrToFloat), а при выводе s преобразуется в строковый тип данных (FloatToStr).

Множественный выбор

Для выполнения множественного выбора используются переключатели.
Delphi для работы с переключателями предлагает следующие компоненты:
  • переключатель с независимой фиксацией (CheckBox), флажок этой компоненты можно переключать щелчком мыши;
  • переключатели с зависимой фиксацией – RadioButton (кнопки выбора), RadioGroup  (группа переключателей RadioButton).
Если в группе зависимых переключателей выбран один, то в отличие от независимого переключателя, его состояние нельзя изменить повторным щелчком. Для отмены выбора зависимого переключателя нужно выбрать другой переключатель из этой группы.

Пример 2
Вывести на экран произведения одного из пяти известных поэтов. Вывод выполнить с помощью зависимого переключателя RadioGroup.

Конструирование формы

Для ввода фамилий поэтов выберем компонент RadioGroup (группа зависимых переключателей).
Items этого компонента – список (зададим заголовки переключателей: (А.С. Пушкин, М.Ю. Лермонтов, С. Есенин, А. Блок, В. Маяковский).
ItemIndex указывает, какой из списка выбран переключатель: -1 – выбран никакой, 0 – первый и т. д.).
Добавить компонент Panel2 для вывода результата и метку. Label2 с заголовком Caption – Произведения известных поэтов.
Для запуска программы выберем компоненту Button и поместим ее на Panel1 в верхней части формы. Свойство Caption у кнопки зададим – Выполнить (рис. 3).
Все выбранные компоненты находятся на странице Standard.
 Рисунок 3. Форма с размещенными объектами

Для установки обработчика события выберем компоненту Button1.
Двойной щелчок на этой компоненте и мы попадаем в редактор кода программы. В процедуре для получения результата используется оператор множественного выбора case of. 
Результат зависит от месторасположения поэта. 
procedure Tform1.Button1Click(Sender:Tobject);
Var
c:string;
begin
case RadioGroup1.ItemIndex of
0: c:='Поэмы: Руслан и Людмила, Бахчисарайский фонтан';
1: c:='Поэмы: Мцыри, Демон';
2: c:='Поэмы: Анна Снегина, Пугачев';
3: c:='Стихи О прекрасной даме';
4: c:='Поэмы: Хорошо, Облако в штанах';
end;
Panel2.Caption:=c;
end;

Так как в процедуре нет никаких вычислений и результат символьный (тип string), то и нет никаких преобразований данных в отличие от предыдущего примера. Полный текст модуля будет иметь вид:
unit Unitradio1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
 Panel1: TPanel;
 Panel2: TPanel;
 RadioGroup1: TRadioGroup;
 Button1: TButton;
 Label1: TLabel;
 procedure Button1Click(Sender: TObject);

private
 { Private declarations }
public
 { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
c:string;
begin
case RadioGroup1.ItemIndex of
0: c:='Поэмы: Руслан и Людмила, Бахчисарайский фонтан';
1: c:='Поэмы: Мцыри, Демон';
2: c:='Поэмы: Анна Снегина, Пугачев';
3: c:='Стихи О прекрасной даме';
4: c:='Поэмы: Хорошо, Облако в штанах';
end;
Panel2.Caption:=c;
end;

end.

Видеоурок по выполнению заданий лабораторной работы

Варианты заданий

Содержание отчета
  1. Задание и цель работы.
  2. Описание формы.
  3. Текст процедуры обработки процесса.

Технология выполнения работы

В данной работе сначала создается форма приложения, а затем процедура обработки процесса.

Вопросы для защиты

  1. Назначение Инспектора объектов (Object Inspector).
  2. Что такое интерфейс приложения?
  3. Для какой цели используется палитра компонентов?
  4. Что такое функциональность приложения?
  5. Какой язык программирования используется при работе с Delphi?