Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процедуры и функции.doc
Скачиваний:
1
Добавлен:
08.12.2018
Размер:
522.24 Кб
Скачать

7.3,2. Функции

Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово function, идентификатор (имя) функ­ ции, заключенный в круглые скобки, необязательный список формальных парамет­ ров и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе: .,

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

Обращение к функции осуществляется по имени с необязательным указанием списка аргументов. Каждый аргумент должен соответствовать формальным пара­метрам, указанным в заголовке, и иметь тот же тип. В качестве примера приведем программу вычисления выражения Z=(A5+A~3)/2*A^ в которой возведение в сте­пень выполняется функцией Step.

В начале программы описываются переменная целого типа М и переменные вещественного типа A, Z, R, после этого описывается функция вычисления степени числа Step с формальными параметрами N и X, результат, возвращаемый функци­ей в точку вызова, — вещественного типа.

В описании функции вводятся две локальных (местных) переменных I и Y. Пе­ременная I служит для подсчета числа повторений цикла, а в Y накапливается зна­чение степени как произведения N одинаковых сомножителей. В заключение функ­ции Step присваивается значение вычисленного произведения.

В начале выполнения основной программы на экран выводится запрос "Введите значение числа А и показатель степени М" и считывается с клавиатуры значение вещественного числа А и целого числа М.

Затем выполняется оператор Z:=Step(5,A). Вначале осуществляется вызов функции Step с передачей ей фактических параметров 5, А. Их значения присваива­ются формальным параметрам функции N и X. По окончании вычисления степени числа значение функции Step, вычисленное для фактических параметров 5 и А. присваивается переменной Z. Аналогично в операторе Z := Z + Step(3,l/A) сначала осуществляется вызов функции Step с передачей ей фактических параметров 3. 1/А, после чего значение переменной Z увеличивается на величину возвращенного в основную программу результата вычисления функции Step.

Оператор ifM=0 then R:=l else if M>0 then R:=Step(M,A) else R:=Step(— M,A) проверяет условия М=0, М>0 и в зависимости от их соблюдения либо при­сваивает переменной R значение 1 (при М=0), либо выполняет вызов функции Step для фактических значений М, А или —М, А, а после вычисления значения функции

Step присваивает его переменной R. Оператор Z:=Z/(2*R) выполняет вычисление значения выражения Z/(2*R), а затем присваивает вычисленное значение перемен­ной Z.

В заключение программы стандартная процедура Writeln выводит на экран со­общение о результате вычислений степени М числа А.

Упражнение 2. Запустите интегрированную среду программирования. Введите текст программы DemoFunc и запишите файл на диск под соответствующим именем, а затем от­компилируйте его. После того как компиляция выполнится успешно, задайте для просмотра в окне отладчика величины А, М, I, Y, Step, Z, R. Установите видимыми одновременно ок­на редактора с текстом программы и окно просмотра. Исполните программу в пошаговом режиме с заходом в функцию и пронаблюдайте за изменениями значений переменных в ос­новной программе и в подпрограмме-функции, обратите внимание на передачу значений при вызове функции от фактических параметров основной программы формальным пара­метрам функции и возврат вычисленного функцией значения в основную программу.