Подпрограммы-функции
Набор стандартных функций Паскаля, как и других алгоритмических языков, ограничен, поэтому в нем предусмотрены средства создания дополнительных функций самим программистом. Обращаться к таким функциям можно, как и к стандартным, по имени, указывая при этом необходимые значения аргументов. Функции располагаются в основной программе между разделом описания переменных Var и Begin основной программы. Функции используются для вычисления единственного значения, присваиваемого имени самой функции. Это значение вычисляется внутри самой функции по нужному алгоритму с помощью переменных (аргументов), называемых формальными параметрами. Как и все программы в Паскале, функция состоит из заголовка, блока описаний и блока операторов: Function Geron(x, y, z : Real):Real; заголовок функции Var p : Real; описание локальных переменных Begin начало блока операторов p := (x + y + z)/2.0; Geron := Sqrt(p*(p – x)*(p – y)*(p – z)); вычисленное значениеприсваивается имени функции End; Внимание! После оператора End ставится точка с запятой. Эта функция вычисляет площадь треугольника по формуле Герона – по трем его сторонам. Заголовок функции Function Geron(x, y, z : Real):Real; начинается со слова Function , за которым следует ее имя, в данном случае Geron. После имени функции в скобках перечисляются имена и типы аргументов функции – входных данных или формальных параметров. В данном случае это x, y, z типа Real. Если имеются формальные параметры нескольких типов, то они группируются по типам, а между типами ставятся точки с запятой. Заголовок заканчивается указанием типа самой функции, то есть типа результата, вычисляемого этой функцией. В данном случае это Real. Аргументы функции называются формальными параметрами лишь потому, что они определяют только способ вычисления значения функции, реализацию алгоритма. При обращении к функции в основной программе формальные параметры автоматически заменяются фактическими параметрами или их конкретными значениями, для которых необходимо произвести вычисления: s := Geron(3.0, 4.0, 5.0); В данном случае формальные параметры x, y, z функции Geron заменяются соответственно фактическими аргументами 3.0, 4.0, 5.0 , для которых и вычисляется значение функции. Вычисленное значение присваивается имени самой функции Geron и далее - переменной s. В этом примере s = 6.0. Вся программа, использующая функцию Geron, может иметь следующий вид: Program Primer; Uses CRT; Var a, b, c, s : Real; описание фактических (глобальных) параметров
Function Geron(x, y, z : Real):Real; заголовок функции Var p : Real; Begin p := (x + y + z)/2.0; Geron := Sqrt(p*(p – x)*(p – y)*(p – z)); End; конец функции
Begin начало основной (головной) программы ClrScr; a := 3.0; инициализация фактических параметров b := 4.0; c := 5.0; s := Geron(a, b, c); обращение к функции с фактическими параметрами a, b, c WriteLn(‘Площадь треугольника равна ’, s:6:2); ReadLn; End. Так как функция вычисляет единственное значение типа, указанного в заголовке функции и присваиваемое имени самой функции, то ее можно использовать в любых выражениях, корректных для данного типа (в правых частях операторов присваивания). Таким образом, формальные параметры описываются в заголовке функции и используются для реализации заданного алгоритма. Фактические же параметры – это конкретные имена или значения переменных (структур), для которых производятся вычисления по данному алгоритму; они заменяют собой формальные параметры в момент обращения к функции. То есть формальные параметры определяют, как вычислять (алгоритм), а фактические – для чего вычислять. Структура функции, как и структура всех программ Паскаля, включает следующие разделы: описание меток Label, определение констант Const определения типов Type описание переменных Var описание процедур и функций Function, Procedure операторы функции Begin … End; Построение и использование функций подчиняется следующим правилам: 1.имя функции не должно совпадать со служебными словами, именами стандартных функций, именем основной (головной) программы или именами переменных в ней, 2. в программе не должно быть двух функций с одинаковыми именами, 3. формальные и фактические параметры должны совпадать по порядку следования, количеству и типам, 4.типы функции и переменной, которой присваивается ее значение в вызывающей программе, должны совпадать, 5. формальные параметры не должны совпадать по имени: Function Err(x, y: Word; a, b, y: Real): Real; ошибка! 6. в конце функции обязательно должен присутствовать операторприсваивания, в левой части которого стоит имя этой функции без списка формальных параметров; в противном случае функция ничего не вычислит: ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|