logo

Лекция 6

Процедуры и функции. Условные структуры.

Функции Function

Рассмотрим раздел FUNCTION на примере вычисления значения функции:

Реализовать формулу перехода из градусов в радианы (так как тригонометрические функции понимают лишь аргумент в радианной мере (см. ниже Примечание)) несложно, но выписывать ее придется четыре раза. С этой целью имеет смысл один раз запрограммировать ее и четыре раза вызывать. Делается это с помощью организации функции в разделе FUNCTION:

Function Имя_функции (входные параметры): тип_результата;

Label внутренние метки функции;

Const определение локальных констант;

Type определение типов;

Var описание локальных переменных функции;

Begin

основной блок функции

End;

Глобальные и локальные переменные, формальные и фактические переменные и параметры в функциях и процедурах в языке Pascal

Термин «ЛОКАЛЬНЫЙ»применимо к меткам, константам и переменным, описанным в разделе FUNCTION, означает, что эти метки,константы и переменные с этими именами могут фигурировать лишь в тексте основного блока функции. При этом следует давать именалокальным переменным, константам и даже – входным параметрам,отличающиеся от имен параметров, фигурирующих в основном блоке программы(так называемыхГЛОБАЛЬНЫХпараметров) во избежание путаницы.

Совпадение меток может привести к выдаче сообщения об ошибке «Duplicate Label Number», а локальная переменная «перекроет» свою глобальную напарницу, что очень трудно предугадать в процессе анализа программы. Приведенная структура в точности копирует в миниатюре структуру программы. Тогда текст функции перевода из градусов в радианы (назовем ее GradRad) будет выглядеть так:

Function GradRad(fi:real):real;

begin

GradRad:=fi*Pi/180;

end;

При описании и в тексте функции фигурирует не конкретное значение, а некоторый параметр ‘fi’, для которого и выписана формула. Такой параметр называется ФОРМАЛЬНЫМ. Потом, после вызова функции (например, GradRad(17)) в нее будет передано конкретное значение аргумента (17), для которого функция и будет вычислена. Такой параметр называютФАКТИЧЕСКИМ.

Для перестраховки fiописан типомreal, хотя в нашем примере значения целы. Зато именно такой текст функции годится для любой программы.

Примечание. Тригонометрические функции sin(x) иcos(x) обрабатывают аргумент, представленный в радианной, а не градусной мере. Поэтому выражениеsin(30) соответствует синусу 30 радиан, а не 30 градусов и, следовательно, не равно 0.5. Аргумент может быть пересчитан из градусной меры в радианную по формуле

Соответственно значение функции ArcTan(x) получается в радианной мере, и для его пересчета в градусы используют формулу

Пример: Вычислить значение

Program Trigonometry;

Uses crt; {стандартная библиотека}

Var{раздел описания переменных}

y:real;

FunctionGradRad(fi:real):real;{функция перевода угла из градусной меры в радианную}

Begin

GradRad:=fi*pi/180

End;

Begin

ClrScr;

y:=sin(GradRad(17))-cos(GradRad(82));

y:=y+sin(GradRad(28))/cos(GradRad(28));

Writeln(' y= ', y:6:2); {вывод на экран результата}

Repeat Until KeyPressed; {стандартная функция из библиотеки CRT, приводит

к задержке окна результатов до нажатия любой клавиши}

End.

Результат работы программы y=0.685.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4