Отправляет email-рассылки с помощью сервиса Sendsay

Object programming world

  Все выпуски  

Object programming world


Рассылка сайта
Object Programming World

Выпуск 4.


Сегоднешняя тема:
Процедуры и функции.



Процедуры и функции в Delphi.

 

Всем привет. В этой статье мы узнаем, что такое процедуры и функции в Делфи и как их использовать. Итак, процедура (функция) это выделенная часть программного кода, к которому Вам необходимо обращаться более или менее часто в ходе выполнения программы. Процедура обозначается ключевым словом procedure в листинге. Процедуры и функции могут иметь входные параметры. Количество их и тип устанавливаются программистом. Вот пример процедуры:

Procedure SetCaption( newCaption: String);

Begin

Form1.Caption:=newCaption;

End;

Давайте разберемся, что же делает данная процедура. Как видно из названия, она устанавливает заголовок формы с названием Form1 в значение переданное в параметре newCaption. Отличие процедур от функций заключается в том, что функции могут возвращать результат своей работы. Например вы пишите функцию, которая рассчитывает площадь треугольника, а сама площадь будет у нас результатом функции. Давайте рассмотрим реализацию данной функции.

Function GetSquare( a: real, ha: real) : real;

Begin

Result := (a * ha) / 2;

End;

В качестве входных параметров в функцию передаются две величины: длина стороны треугольника и длина высоты опущенной на эту сторону. Вычисление происходит по всем известной школьной формуле. Результат функции сохраняется в стандартной переменной для всех функций Result.

Как оформлять процедуры и функции мы узнали. А как же их теперь использовать. Представим ситуацию: у Вас на форме есть два поля ввода TEdit с именами Edit1 и Edit2. Результат работы функции будет отображаться в метке типа TLabel и с именем Label1, а так же кнопка типа TButton с именем Button1. Тогда код, связанный с нажатием на кнопку будет выглядеть так:

procedure TForm1.Button1Click(Sender: TObject);

var a, ha: real

begin

a := StrToFloat( Edit1.Text);

// Сохраняем в памяти значение из поля ввода Edit1

ha := StrToFloat( Edit2.Text);

// Сохраняем в памяти значение из поля ввода Edit2

Label1.Caption := FloatToStr( GetSquare( a, ha) );

// Присваиваем метке Label1 надпись-результат вычисления нашей чудо- функции ;)

 

SetCaption( ‘Hello ;) ’);

end;

Готово! Теперь при нажатии на кнопку Button1 в метке Label1 будет отображаться площадь задуманного Вами треугольника (конечно, если Вы не забыли заполнить поля ввода Edit1 и Edit2 ;) ) , ну и, в довершение, на Вашей форме заголовок будет установлен в “Hello ;)”. Кстати, обработчик щелчка на кнопке тоже является процедурой, но если быть точным, то он является методом класса TForm. О классах и их методах мы поговорим в следующих выпусках рассылки.

Если мозги у Вас еще не закипели, то предлагаю вам узнать о такой вещи, относящейся к процедурам и функциям, как рекурсия.

Рекурсией называется вызов процедуры изнутри самой себя. Не пугайтесь этого. На самом деле это очень важная вещь, во многих случаях намного облегчающих работу программиста. Рассмотрим реализацию рекурсии на примере факториала. Факториалом числа N называется число равное произведению всех чисел стоящих в ряду до него, то есть факториал числа N равен N! = 1 * 2 * 3 * … * (N-1) * (N-1) * N. Знак ! как раз и обозначает факториал в математике. Особо внимательные могут заметить, что факториал числа N равен факториалу числа (N-1) умноженному на число N. То есть N! = (N-1)! * N . Такие замены можно делать вплоть до числа 1, факториал которого по определению есть сама единица. Итак, давайте посмотрим реализацию факториала.

Function Factorial( N: integer): integer;

Begin

If N = 1 then Result := 1

Else

Result := Factorial( N-1);

End;

Готово! Важным в рекурсии является условие выхода из нее, иначе процедура (или функция) будет выполняться бесконечно и программа зависнет. В нашем примере условием на выход является сравнение параметра функции с единицей. Надеюсь Вам все понятно. Ну а если что-то не понятно, то заходите к нам на http://programming.byethost31.com. Желаю удачи в постижении искусства программирования.

Eugen

 




В избранное