Урок 5 - Функции

  Продолжаем обучение Delphi и в этом уроке мы познакомимся с функциями. Представьте, что вы написали очень большую программу в которой более 2000 строк и у вас десятки раз повторяется один и тот же участок кода. Функция позволяет избегать такие повторения. То есть мы выносим повторяющийся код в функцию, а на месте тех десятков кода просто вызываем нашу функцию.

Синтаксис функции:

function имя (входные параметры):тип выходной переменной;
Рассмотрим подробнее на примере программы. Запускаем Delphi, создаем проект и кидаем кнопку и лабел на форму. Далее в редакторе кода находим слово Private.

Private


После слова Private объявляем функцию:
function sum (a, b:integer):integer;
Сейчас нажимаем комбинацию клавиш Ctrl+Shift+C и Delphi автоматически создает загатовку:
function TForm1.sum(a, b: integer): integer;
begin

end;
И между ключевыми словами begin и end пишем то, что будет делать наша функция, а функция будет делать простейшее - сложение переменных a и b, которые мы уже записали, когда объявляли функцию.

Тело функции:
function TForm1.sum(a, b: integer): integer;
begin
sum:=a+b; //Присваиваем функции сумму переменных
end;
Если сейчас запустить программу, то ничего не произойдет, так как функция у нас нигде не вызывается, да и значение переменным a и b мы не указали.

Создаем событие OnClick на кнопке и пишем:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; //создаем переменную
begin
i:=sum(5,7); //ссумируем
Label1.Caption:=IntToStr(i);//выводим
end;
Разберем строчку, где происходит суммирование. Пишем имя функции, потом в скобках значения для переменных a и b и результат присваиваем переменной i, которую потом выводим в лабел.

Конечно я привел самый простой и понятный пример. В функцию можно записать громадную формулу, по которой вы будете вычислять конец света и что бы потом не переписывать эту формулу можно просто указывать имя функции и вводить значения переменным.

Ну вот и всё! Удачи!
Встретимся в следующем уроке!




Добавил(а): Programer Дата: 2012-08-09
Процедура это тоже самое что и функция?



Добавил(а): Admin Дата: 2012-08-09
Функция возвращает результат, а процедура нет.
P.S. А Вы уже и процедуры освоили? Похвально.



Добавил(а): Programer Дата: 2012-08-10
thanks



Добавил(а): delfiSkin Дата: 2013-05-18
Хороший урок вычислил конец света)



Добавил(а): delfiSkin Дата: 2013-05-18
не знаю что за глюк произошел но выше написанный комментарий относился к 6 уроку)



Добавил(а): delfiSkin Дата: 2013-05-18
О боже ,оказывается это глюк в моей голове,тот комментарий к этому уроку



Добавил(а): ДимаДК Дата: 2013-07-14
Поражаюсь похожести Delphi на Паскаль . Думал будет сложно, придется переучиваться, а это полная копия Паскаля ! Сайт просто супер ! Ведь как бы Delphi не был похож на Паскаль, сам бы я в нем не разобрался.



Добавил(а): RinDproramer Дата: 2013-07-15
Delphi - это и есть Паскаль, только измененный. Немного истории: В 1970 году появился сам Паскаль. В 1978 г. появился диалект Паскаля - UCSD Pascal.В 1983 г. вышла 1-я версия диалекта - Turbo Pascal от фирмы Borland(эта фирма и сделала для нас Delphi), который базировался на UCSD Pascal.В 90-х годах фирма Borland выпустила Object Pascal, ему передалось "наследство" от Turbo Pascal.А Delphi - это по сути вариант языка Object Pascal.Но сейчас Delphi все больше отделяется от "прородителя" - Object Pascal.(Вот так-то)



Добавил(а): Fanner Дата: 2013-12-03
Отличный сайт.Огромнейшее спасибо за уроки как всегда все откладывал, а теперь вот приходится экстерном учить т.к. через пару дней нужно что-то сдать преподу.)



Добавил(а): MothaFucka Дата: 2013-12-31
Комбинация ctrl+shift+c не срабатывает. Embarcadero Delphi XE3



Добавил(а): eltgm Дата: 2014-05-12
не срабатывает комбинация Ctrl+Shift+C. PortableDelphi7



Добавил(а): Denismen Дата: 2014-06-06
eltgm, не может такого быть



Добавил(а): eltgm Дата: 2014-06-18
Denismen, ты до конца дочитай на PortableDelphi эту функцию вырезали,умник



Добавил(а): Exotic Дата: 2014-10-10
В качестве ДЗ подобрал себе опупительное задание - написать самому дискриминант через функцию. Как ни странно, получилось.



Добавил(а): Dragonfly Дата: 2014-11-26
Спасибо, не сразу все дошло вот код (домашки от Exotic) function TForm1.dis(a,b: integer): integer; begin A:=StrToInt(Edit1.Text); repeat B:=a+b; A:=a-1; until A=0; dis:=b; end; procedure TForm1.Button1Click(Sender: TObject); var c,D:integer; begin D:=dis(0,0); Label1.Caption:=IntToStr(D); end;



Добавил(а): derevyov Дата: 2015-08-11
Замечательный сайт! Очень доступно и понятно! Спасибо



Добавил(а): shukrona.normatova Дата: 2016-07-06
Здравствуйте. Можете привести ещё более сложный пример?



Добавил(а): spilberg2007 Дата: 2016-07-16
Согласен с shukrona.normatova. Более сложный пример не помешал бы. И еще у функций есть основное свойство выводить информацию в конце расчетов через слово Result



Добавил(а): spilberg2007 Дата: 2016-07-16
function NameFunc(Param : Тип) : Тип_возвращаемого_значения; var //объявление переменных (необязательно) begin //тело функции Result := результат вычислений; end;


  1. asd
    asd a year ago
    фракция
Отменить.