| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Процедуры и функцииГлава
6. Процедуры и функции Часто, работая над
программой, программист замечает, что некоторая последовательность инструкций
встречается в разных частях программы несколько раз. Например, в листинге 6.1
приведена программа пересчета веса из фунтов в килограммы. Обратите внимание,
что инструкции, обеспечивающие ввод исходных данных из полей редактирования,
расчет и вывод результата (в листинге они выделены фоном), есть как в процедуре
обработки события на кнопке Вычислить, так и в процедуре обработки события
OnKeyPress В поле Editl. Листинг 6.1.
Пересчет веса из фунтов в килограммы unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1
= class(TForm) Label1:
TLabel; // пояснительный текст Edit1:
TEdit; // поле ввода веса в фунтах Button1:
TButton; // кнопка Вычислить Label2:
TLabel; // поле вывода результата procedure
ButtonlClick(Sender: TObject); procedure EditlKeyPress(Sender: TObject; var
Key: Char); private
{ Private declarations } public {
Public declarations } end; var Form1:
TForm1 ; implementation {$R
*.dfm} //
щелчок на кнопке Вычислить procedure
TForml.Button1Click(Sender: TObject); var f
: real; // вес в фунтах kg : real; // вес в килограммах begin f
:= StrToFloat(Edit1.Text); kg
:= f; * 0.4059; Label2.Caption
:= Edit1.Text + ' ф. — это ' + FloatToStrF(kg,
ffGeneral, 4, 2} + 'кг.'; end; //
нажатие клавиши в поле ввода исходных данных procedure
TForml.Edit1KeyPress(Sender: TObject; var Key: Char); var f : real; // вес в фунтах kg : real; // вес в килограммах begin if Key = Char(VK_RETURN) then
begin f:
= . StrToFloat(Editl.Text) ; kg
:= f * 0.4059; Label2.Caption
:= Editl.Text + ' ф. - это ' + FloatToStrF(kg, ffGeneral, 4, 2) + 'кг.'1.; end; end; end. Можно избежать дублирования
кода в программе. Для этого надо оформить инструкции, которые встречаются в
программе несколько раз, как подпрограмму,
и заменить инструкции, оформленные в виде подпрограммы, инструкцией вызова подпрограммы. В листинге 6.2 приведена
программа пересчета веса из фунтов в килограммы, в которой ввод исходных данных,
вычисления и вывод результата объединены в подпрограмму, реализованную как функция. Листинг 6.2. Пересчет
веса из фунтов в килограммы (использование процедуры) unit
Onit1; interface uses Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1=
class(TForm) Label1:
TLabel; // пояснительный текст Edit1:
TEdit; // поле ввода веса в фунтах Button1:
TButton; // кнопка Вычислить Label2:
TLabel; // поле вывела результата procedure
Button1Click(Sender: TObject); procedure EditlKeyPress(Sender: TObject; var
Key: Char); private
{ Private declarations } public
{ Public declarations } end; var Form1:
TForm1; implementation {$R
*.dfm} // процедура программиста procedure
FuntToKg; var f
: real; // вес в фунтах kg : real; // вес в килограммах begin f
:= StrToFloat(Form1.Edit1.Text); kg
:= f * 0.4059; Forml.Label2.Caption
:= Forml.Edit1.Text + ' ф. — это ' + FloatToStrF(kg, ffGeneral, 4, 2) + 'кг.'; end; //
щелчок на кнопке Вычислить procedure
TForml.ButtonlClick(Sender: TObject); begin FuntToKg;
// вызов процедуры FuntToKg end; //
нажатие клавиши в поле ввода исходных данных procedure TForm1.EditlKeyPress(Sender: TObject; var
Key: Char); begin if
Key = Char(VK_RETURN) then
FuntToKg; // вызов процедуры FuntToKg end; end. Преимущества использования
подпрограмм очевидны. Во-первых, в программе нет дублирования кода, что сокращает
трудоемкость создания программы, делает более удобным процесс отладки и внесения
изменений. Представьте, что нужно изменить пояснительный текст, выводимый программой
пересчета веса из фунтов в килограммы. В программе, не использующей подпрограмму,
нужно просмотреть весь текст и сделать необходимые изменения. Если программа
использует подпрограмму, то изменения надо внести только в текст подпрограммы.
Во-вторых, значительно повышается надежность программы. Следует обратить внимание,
что подпрограммы используют не только тогда, когда нужно избежать дублирования
кода. Удобно большую задачу разделить на несколько подзадач и оформить каждую
задачу как подпрограмму. В этом случае значительно улучшается "читаемость"
программы и, как следствие, существенно облегчается процесс отладки. Подпрограмма — это
небольшая программа, которая решает часть общей задачи. В языке Delphi есть
два вида подпрограмм — процедура и функция. У каждой подпрограммы
есть имя, которое используется в программе для вызова подпрограммы (процедуры). Отличие функции от
процедуры состоит в том, что с именем функции связано значение, поэтому функцию
можно использовать в качестве операнда выражения, например, инструкции присваивания. Как правило, подпрограмма
имеет параметры. Различают формальные и фактические параметры. Параметры, которые
указываются в объявлении функции, называются формальными. Параметры, которые
указываются в инструкции вызова процедуры, называются фактическими. Параметры используются:
В общем случае в качестве фактического параметра процедуры можно использовать выражение, тип которого должен совпадать с типом соответствующего формального параметра. Рубрика: Глава 6. Процедуры и функции
Инструменты Internet Explorer 8 Beta 2 для разработчиков.
Подробнее... |
Рубрика: Вебмастеру
| Добавлено: 05.09.2008
Google Developer Day 2008 в Москве.
Дата проведения: 28 октября 2008 г.; Место проведения: Амбер Плаза, Москва, Россия. Конференция для веб-разработчиков и разработчиков мобильных приложений в Москве. Узнайте, как наилучшим образом использовать инструменты разработки и API от Google, чтобы создавать социальные, мобильные и картографические приложения, как использовать AJAX/JavaScript инструменты и библиотеки от Google и многое другое из первых уст.
Подробнее... |
Рубрика: Мероприятия
| Добавлено: 05.09.2008
ТОП 10 самых раздражающих факторов для программиста.
Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…
Подробнее... |
Рубрика: Разное
| Добавлено: 03.09.2008
Остальные статьи:
Windows Server 7, 8 и 9
jQuery для JavaScript-программистов
Инновационный веб-броузер Google Chrome стартует уже сегодня
Windows 7: подход к производительности системы
Trac + Subversion @ Ubuntu: Revisited
[g]Vim в режиме Python: Рекомпиляция в Windows
Java + JSON. Пути к дружбе
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|