#include
using namespace std;
2 :
const double Pi = 3.14159;
// Объявления функций (прототипы)
double Area(double InputRadius);
double Circumference(double InputRadius);
8 :
int main()
10: {
cout « "Enter radius: ";
double Radius = 0;
cin » Radius;
14:
// Вызов функции "Area"
cout « "Area is: " « Area(Radius) « endl;
// Вызов функции "Circumference"
19: cout « "Circumference is: " « Circumference(Radius) « endl;
2 0 :
return 0;
}
23:
// Определения функций (реализации)
double Area(double InputRadius)
{
return Pi * InputRadius * InputRadius;
}
29:
double Circumference(double InputRadius)
{
return 2 * Pi * InputRadius;
}
Результат
Enter radius: 6 .5
Area is: 132.732
Circumference is: 40.8407
Анализ
На первый взгляд это выглядит как то же содержимое, но в разных упаковках. Впо следствии вы оцените, что разделение вычисления площади и периметра на отдельные функции позволяет многократно использовать этот код, поскольку функции можно вы зывать неоднократно, как и когда понадобится. Функция m ain () весьма компактна, она делегирует действия функциям A rea () и C irc u m fe re n c e (), вызов которых осуществля ется в строках 16 и 19 соответственно.
Программа демонстрирует следующие элементы, используемые при применении функций.
■ Прототипы функции объявляются (declare) в строках 6 и 7. Так компилятор узнает о том, что означают термины A re a и C irc u m f e r e n c e , когда они будут использованы
в функции m ain ().
Функции A rea () и C irc u m fe re n c e () вызываются (invoke) в функции m ain () в стро ках 16 и 19.
■ Ф ункция A re a () определяется (define) в строках 25 -38, а функция C i r c u m f e r e n c e () — в строках 30-33.
Что такое прототип функции
Рассмотрим строки 6 и 7 в листинге 7.1:
double Area(double InputRadius);
double Circumference(double InputRadius);
Состав прототипа функции представлен на рис. 7.1.
double Area(double InputRadius);
Тип
|
Имя
|
Параметры функции (необязательно),
|
возвращаемого
|
функции
|
Список, способный состоять из нескольких
|
значения
|
|
параметров и включающий указания типов
|
|
|
и имен (необязательно), разделенных запятой
|
РИС. 7.1. Части прототипа функции
Прототип функции в основном указывает имя функции (в данном случае A rea), список получаемых ею параметров (в данном случае один параметр типа d o u b le по имени In p u tR a d iu s ) и тип возвращаемого функцией значения (в данном случае d o u b le ).
Без прототипа функции по достижении строк 16 и 19 в функции m ain () компилятор не будет знать, что это за термины такие — A rea и C irc u m fe re n c e . Прототипы функции указывают компилятору, что A re a и C irc u m f e r e n c e — это функции, которые получа ют один параметр типа d o u b le и возвращают значение типа d o u b le . Теперь компилятор распознает эти операторы и считает их допустимыми, а свою задачу понимает как необ ходимость связать функции с их реализациями и гарантировать, чтобы при выполнении программа фактически вызывала именно их.
148 ЗАНЯТИЕ 7. Организация кода при помощи функций
ПРИМЕЧАНИЕ Функции могут иметь список из нескольких параметров, разделенных запяты
ми, но только один тип возвращаемого значения.
При создании функции, которая не должна возвращать никаких значений, ука жите ее тип возвращаемого значения как void (пусто).
Do'stlaringiz bilan baham: |