- •Введение
- •1Алгоритм. Разработка алгоритмов. Блок-схемы
- •3Операторы языка Delphi
- •3.1Оператор присваивания
- •3.2Оператор ввода-вывода
- •3.3Составные операторы
- •3.4Условный оператор
- •3.7Цикл с параметром (счетчик)
- •3.8Массивы
- •3.5Цикл с предусловием
- •3.6 Цикл с постусловием
- •3.9Строки
- •3.10Записи
- •3.11Множества
- •4Отладчик программы Debugger
- •5Среда Delphi
- •6Создание интерфейса приложения
- •7Подпрограммы
- •7.1Процедуры
- •7.2Функции
- •7.3Параметры и аргументы
- •8Особенности объектно-ориентированного программирования
- •9Работа с кнопкой
- •10Работа с текстом
- •10.1Работа с надписью
- •10.2Функции преобразования числа в строку и строки в число
- •10.3Работа в однострочном редакторе (Edit, LabeledEdit)
- •10.4Работа с многострочным редактором Memo
- •11Диалоги, сообщения
- •11.1Процедура ShowMessage
- •11.2Процедура MessageDlg
- •11.3Процедура InputBox
- •11.4Процедура InputQuery
- •11.5Стандартные диалоги
- •12Работа с компонентом StringGrid
- •13Построение графика функции
- •14Файлы
- •15Работа со списками и переключателями
- •15.1 Компонент ChekBox
- •15.2Компонент RadioButton
- •16Исключительные ситуации
- •17Работа с несколькими модулями
- •18Работа с формой
- •Содержание
- •Список использованных источников
17Работа с несколькими модулями
Когда создается новое приложение, то оно содержит один модуль и форму. Программист может добавить в свой проект столько модулей, сколько ему необходимо. Обычно отдельный модуль необходим, чтобы отделить функции и процедуры, предназначаемые для конкретной задачи. В нем располагаются описание типов и переменные, используемые в других модулях (глобальные) и подпрограммы. Разработка приложений с использованием принципа модульности построения является хорошим тоном.
Чтобы добавить новый модуль в свой проект, необходимо открыть пункт главного меню Delphi File/New/Unit. После этого откроется новый пустой модуль, который содержит следующие разделы:
unit Unit2; // заголовок модуля
interface // раздел интерфейса
implementation //раздел реализации
end.
В разделе интерфейса располагается описание идентификаторов, которые будут доступны всем другим модулям, в которых текущий модуль содержится в списке Uses. В данном разделе размещаются константы, переменные и подпрограммы. Для подпрограмм указывается имя и входящие параметры, само описание подпрограммы находится в разделе реализации. Все другие модули, которые будут использованы в текущем модуле, записываются через запятую в списке Uses. При построении приложения старайтесь, чтобы модули не ссылались друг на друга. Если этого избежать нельзя, тогда указывайте их в списке Uses в разделе реализации.
В разделе реализации располагается код подпрограмм, заголовки которых были приведены в предыдущем разделе. Порядок следования подпрограмм в разделе реализации не важен. В разделе реализации можно также объявлять константы, переменные и типы данных, которые будут видны (доступны) только в данном модуле (локальные).
Также могут существовать два необязательных раздела: инициализация и деинициализация [6].
Чтобы новый модуль был подключен к проекту, необходимо сначала сохранить его в папку, в которой находится проект и все модули. Желательно называть модули значащими именами. Затем нужно выбрать пункт главного меню Delphi Project/Add to Project. После этого откроется диалоговое окно, в котором нужно выбрать кнопку открыть (рисунок 36):
Рисунок 36 - Добавление модуля в проект
Пример
21.
Расчет значения функции
на
интервале
[хн,хк] с
шагом h.
Изменим пример 20, в котором рассчитывалось
значение функции
.
Добавим на форму компонент для ввода основания логарифма (LabeledEdit). Расчет функции будет проводиться в новом модуле. Функция расчета называется Rascet .
Код нового модуля:
unit Mat;
interface
uses SysUtils; //необходимо записать для использования класса
//исключительных ситуаций
// следующие функции можно использовать в любом модуле проекта
function Log(x,a:real):real;
function Rascet(x,a:real;var y:real):boolean;
implementation
// функция расчета логарифма x по основанию a
function Log(x,a:real):real;
begin
Result:=ln(x)/ln(a);
end;
function Rascet(x,a:real;var y:real):boolean;
{функция логического типа. Если значение вычисляемого параметра
у определено, то значение функции True}
begin
try
y:=Log(x,a);
Result:=true;
except
Result:=false;
end;
end;
end.
Код программы при нажатии на кнопку изменился следующим образом:
//в ввод параметров расчета добавилась строка
a:=StrToFloat(Form1.LabeledEdit3.Text);
//--------------
if (a<=0) or (a=1) then
begin
MessageDlg('Ошибка в записи основании
логарифма', mtError,[mbOK],0);
exit;
end;
case Form1.RadioGroup1.ItemIndex of
0:begin
Form1.StringGrid1.Visible:=true;
Form1.Chart1.Visible:=false;
while xn<=xk do
begin
if i>Form1.StringGrid1.RowCount then
Form1.StringGrid1.RowCount:=
Form1.StringGrid1.RowCount+1;
Form1.StringGrid1.Cells[0,i]:=
FloatToStr(xn);
if Rascet(xn,a,y)
then Form1.StringGrid1.Cells[1,i]:=
FloatToStr(y)
else Form1.StringGrid1.Cells[1,i]:=
'нет';
xn:=xn+h;
inc(i);
end;
end;
1:begin
Form1.StringGrid1.Visible:=false;
Form1.Chart1.Visible:=true;
while xn<=xk do
begin
if Rascet(xn,a,y)
then Form1.Chart1.SeriesList.
Series[0].AddXY(xn,y,'',clRed);
xn:=xn+h;
end;
end;
2:begin
Form1.StringGrid1.Visible:=false;
Form1.Chart1.Visible:=false;
if Form1.SaveDialog1.Execute then
begin
try
AssignFile(Raschet,
Form1.SaveDialog1.FileName);
Rewrite(Raschet);
while xn<=xk do
begin
if Rascet(xn,a,y)
then WriteLn(Raschet,
FloatToStr(xn)+'
'+FloatToStr(y))
else WriteLn(Raschet,
FloatToStr(xn)+
'не определено');
xn:=xn+h;
end;
finally
CloseFile(Raschet);
end;
end;
end;
end;
