Функции
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
Практически всё, что было сказано о процедурах, является справедливым и для функций. Существенное отличие только одно - функция может возвращать результат. Хотя на самом деле это отличие не такое уж и существенное, поэтому во многих языках программирования (например, в С/С++) подпрограммы не делятся на функции и процедуры.
Однако в Паскале функции существуют, и иногда их удобнее использовать, чем процедуры. Объявление функции в Паскале выглядит так:
function Идентификатор(ВходныеПараметры; var ВходныеВыходныеПараметры) : Результат; БлокПодпрограмм; begin ИсходныйКодФункции; end;
Это упрощённый синтаксис. Полный вариант см. в документации на среду разработки.
Как видите, отличие от процедуры заключается только в использовании другого ключевого слова перед идентификатором и в том, что после закрывающей круглой скобки ставится двоеточие, а затем идентификатор типа данных, которые будут возвращены в основную программу в результате работы функции.
Пример использования функции:
function TestFunc(x, y : integer; var R : integer) : integer; begin x := x * 2; y := y * 2; R := x + y; TestFunc := R * 2; end; {********************************************************************** ОСНОВНАЯ ПРОГРАММА **********************************************************************} begin WriteLn(TestFunc(100, 50, Res)); //600 WriteLn(Res); //300 ReadLn; end.
Как видите, в конце тела функции мы указываем имя функции и присваиваем ей какой-то результат. Но вместо имени функции можно использовать слово Result. В некоторых случаях это удобнее. Пример:
function TestFunc(x, y : integer; var R : integer) : integer; begin x := x * 2; y := y * 2; R := x + y; Result := R * 2; end;
Этот пример работает точно также, как пример, рассмотренный выше.
См. также: