Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Применение функций с возвращаемым значением




Функция, имеющая возвращаемое значение, в результате своей работы выдает значение, которое можно присвоить переменной. Например, в стандартную библиотеку DELPHI входит функция Sqrt(), возвращающая квадратный корень числа. Предположим, что требуется вычислить квадратный корень числа 6,25 и присвоить полученное значение переменной х. Для этого в программе можно использовать такой оператор:

x:= Sqrt(6.25); //возвращает значение 2,5 и присваивает его переменной x

Выражение Sqrt(6.25) вызывает функцию Sqrt(). Выражение Sqrt(6.25) называется вызовом функции, сама функция называется вызываемой, а функция, в которой находится вызов функции, называется вызывающей (рис. 1.1)

Рис. 1.1 Вызов функции

Значение в круглых скобках (в данном случае 6.25) представляет собой информацию, посылаемую функции; говорят, что эта информация передается в функцию. Значение, посылаемое в функцию таким образом, называется аргументом или параметром (рис. 1.2). Функция Sqrt() вычисляет результат, который будет равен 2,5, и отправляет это значение обратно вызывающей функции. Это отправляемое значение называется возвращаемым значением функции. Можно считать, что возвращаемое значение замещает в операторе вызов функции после того, как функция завершит свою работу. Таким образом, в данном примере возвращаемое значение присваивается переменной Х. Коротко говоря, аргумент — это информация, посылаемая в функцию, а возвращаемое значение — это значение, передаваемое обратно из функции.

Рис. 1.2. Синтаксис вызова функции

Это практически все, что необходимо знать о вызове функции. Необходимо лишь добавить, что, перед тем как использовать функцию, компилятор DELPHI должен знать типы аргументов и возвращаемого значения функции. Другими словами, что возвращает функция? Целое число? Символ? Число с дробной частью? Приговор присяжных? Или что-нибудь еще? Если у компилятора отсутствует информация, он не сможет интерпретировать возвращаемое значение. В языке DELPHI эта информация передается компилятору с помощью прототипа функции.

Прототип функции является для функции тем же, чем для переменной является объявление переменной, — он информирует программу о типах данных. Например, в библиотеке DELPHI определено, что функция Sqrt() принимает в качестве аргумента число с необязательной дробной частью (например, 6,25) и возвращает число того же самого типа. В языке DELPHI такие числа называются вещественными типа Real (Extended) или числами с удвоенной точностью. Прототип функции Sqrt() выглядит так:

function Sqrt(const X: Extended): Extended;

Первое ключевое слово function означает, что функция Sqrt() возвращает значение типа Extended, указанное в конце оператора после двоеточия. Ключевое слово Extended в круглых скобках означает, что функции Sqrt() необходим аргумент типа Extended, т.е. этот прототип описывает функцию Sqrt() точно так, как она используется в следующем выражении:

var

х: Extended; // объявление х как переменкой типа Extended

begin

х:= Sqrt(6.25);

Если в программе применяется функция Sqrt(), необходимо включить в код ее прототип. Это можно обеспечить двумя способами:

· Вручную ввести прототип функции в исходный код программы.

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

Второй способ предпочтительней, так как он с большей вероятностью обеспечит правильность прототипа. Прототип любой функции из библиотеки DELPHI обязательно имеется в одном или нескольких заголовочных файлах. Для того чтобы узнать, какой заголовочный файл необходимо применить, следует просто посмотреть описание функции в руководстве к программе или в справочном файле, если он имеется. Например, из описания функции Sqrt() можно узнать, что нужно использовать файл заголовков System.

Не следует путать прототип функции с определением функции. Прототип, как можно было видеть, лишь описывает интерфейс функции, другими словами, он описывает информацию, посылаемую в функцию и из функции. А определение содержит код функции — например, код вычисления квадратного корня числа. В языке DELPHI прототипы и определения функций хранятся раздельно. Библиотечные файлы (*.DCU) содержат скомпилированные коды функций, тогда как заголовочные файлы (*.PAS) содержат прототипы функций.

В листинге 1.4 демонстрируется применение библиотечной функции Sqrt(); прототип функции помещается в программу путем включения файла System в раздел uses.

Программа 1_4

//sqrt.pas - использование функции sqrt()

//не забудьте подключить библиотеку Math

program Project1;

 

{$APPTYPE CONSOLE}

 

Uses

SysUtils, Math;

Var

cover, side: Real;

Begin

Writeln('How many square feet of sheets do you have?');

Readln(cover);

side:= Sqrt(cover); //вызвать функцию и присвоить возвращаемое значение переменной

Writeln('You can cover a square with sides of ', side:0:1, ' feet with your sheets.');

Readln;

end.

Вот пример выполнения программы:

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...