![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Подпрограммы, возвращающие значение (функции)
В том случае, если подпрограмма возвращает одно значение, удобно использовать другую форму подпрограммы - функцию. Заголовок и тело такой подпрограммы отличаются от заголовка и тела процедуры. На Паскале отличия проявляются в том, что 1) вместо слова procedure пишется function и справа от круглых скобок через двоеточие указывается тип возвращаемого значения; 2) в теле функции должен быть оператор присваивания типа имя_функции: = возвращаемое значение.
function имя(список_формальных_параметров): тип_возвращаемого_значения;
a, b, c, s: real; function summa (x, y, z: real): real; begin
end; begin 2)
c: = 3; s: = 0;
s: = summa(a, b, c, ); --- вызов функции writeln(‘s=’, s: 8: 4); --- после end. Из примера важно выделить два момента: 1-й момент. Форма описания и вызова процедуры и функции отличаются . В отличие от процедуры функция задает не просто набор действий как этап вычислительного процесса (это было в случае процедуры), а задает правило вычисления одного значения (с помощью определенных действий). Поэтому и форма вызова функции другая, чем у процедуры - вызов функции может размещаться или в составе какого-либо выражения или в правой части оператора присваивания (R-value). В общем случае при вычислении выражения, содержащего вызов функции, выполняются следующие действия: а) вычисляются значения выражений для фактических параметров функции; б) значения фактических параметров присваиваются соответствующим формальным параметрам; в) выполняются действия в теле функции над формальными параметрами (с переданными им значениями фактических параметров) и вычисляется возвращаемое функцией значение; г) возвращаемое значение подставляется в выражение, из которого (в котором) осуществляется обращения к функции; д) вычисляется значение выражения с использованием возвращенного функцией значения. 2-ой момент В теле функции обязательно должна быть хотя бы одна строчка в которой имени функции присваивается возвращаемое значение. (в Delphi вместо этого д.б. строка вида: result: = возвращающие значение; ) Обычно делают две следующих ошибкипри записи функции:
f(x): = x*3.14*2; end;
Begin
g: = g * a; end; В первом случае сделано две ошибки: 1-я синтаксическая: Нарушен синтаксис, т.к. для возврата из функции значения должен быть записан оператор присваивания в форме имя: = значение. 2-я семантическая: для f(x) -компилятор посчитает, что вызов функции стоит слева от знака присваивания. Во втором случае ошибка (синтаксическая) заключается в том, что имя функции используется в выражении в правой части оператора присваивания так же как имя переменной, т.е. без списка параметров, что не совпадает с тем, что записано в заголовке этой функции (там написано, что функция с параметром). Примечания. 1. Возвращаемым значением может быть значение простого типа или строкового типа или ссылочного типа. Если в теле функции отсутствует оператор присваивания имени функции какого - либо значения, то возвращаемое значение функции считается неопределенным. 2. function fact(n: byte): longint; var i: word; //параметр (счетчик) цикла for f: longint; //вспомогательная переменная begin f: =1; for i: =1 to n do f: = f * i; fact: = f; end;
Популярное: |
Последнее изменение этой страницы: 2016-07-12; Просмотров: 610; Нарушение авторского права страницы