Урок 5 - Функции
Продолжаем обучение Delphi и в этом уроке мы познакомимся с функциями.
Представьте, что вы написали очень большую программу в которой более 2000 строк и у вас десятки раз повторяется один и тот же участок кода.
Функция позволяет избегать такие повторения. То есть мы выносим повторяющийся код в функцию, а на месте тех десятков кода просто вызываем нашу функцию.
Синтаксис функции:
function имя (входные параметры):тип выходной переменной;Рассмотрим подробнее на примере программы. Запускаем Delphi, создаем проект и кидаем кнопку и лабел на форму. Далее в редакторе кода находим слово 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;
|
-
фракция