[АП 2023/05] - свежий номер журнала
Работа с переменными в C#: объявление, инициализация, правила именования
[АП 2023/04] - свежий номер журнала
Как научиться верстать сайты с нуля, без предварительной подготовки
Краткое описание онлайн-интерпретатора языка Фортран

Основы программирования 2.0
Функции
![]() |
Что делать, чтобы стать программистом
Многие сегодня хотят стать программистами. Хотят. Но ничего не делают для этого. Не делают даже простых вещей. Не хотят даже прочитать книжку из 10 страниц. В итоге так и остаются никем. Потому что мечты не сбываются никогда. Сбываются только планы… Подробнее... |
Практически всё, что было сказано о процедурах, является справедливым и для функций. Существенное отличие только одно - функция может возвращать результат. Хотя на самом деле это отличие не такое уж и существенное, поэтому во многих языках программирования (например, в С/С++) подпрограммы не делятся на функции и процедуры.
Однако в Паскале функции существуют, и иногда их удобнее использовать, чем процедуры. Объявление функции в Паскале выглядит так:
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;
Этот пример работает точно также, как пример, рассмотренный выше.
См. также: