- •Обзорные лекции по курсу
- •Параметры и аргументы функций
- •Int swap(int, int);
- •Void func();
- •Int MyFunction(int Number, float Point);
- •Int main ()
- •Void Out(double numb, double sig, bool fig)
- •Int. Main ()
- •Void PrintTest(void);
- •Int main о
- •Void PrintTest(void) {
- •Int main ()
- •Int main ()
- •Int main ()
- •Void ChangeFlag(void);
- •Void ChangeFlag(void)
- •Int main()
- •If(Flag)
- •Int Count(void);
- •Int main()
- •Int result;
- •Int Count(void)
- •Volatile short sTest;
- •Volatile const int vciTest;
- •Int main()
- •Int main ()
- •Int main 0
- •Int main()
- •Inline double sqr(double X)
- •Inline double Round(double X)
- •Int swap(int, int);
- •Void func();
- •Int main()
- •Int main 0
- •Упражнения для самопроверки
Int MyFunction(int Number, float Point);
char InputSymbol();
void SetBit(short Hum);
void EmptySample(int, char);
// Вызов функций:
Result = MyFunction(varbl, 3.11);
symb = InputSymbol();
SetBit(3);
EmptySample(2, smbl);
// Определение функций:
int MyFunction(int Number, float Point)
{
int my_x;
return my_x;
// my_x - типа int
};
char InputSymbol()\
{
char symbol;
cin » symbol;
return symbol;
};
void SetBit(short number)
{
GlobalBit = GlobalBit | number;
};
void EmptySample(int x, char ch)
{
};
Для того чтобы было более понятно место функции в программе, детально рассмотрим пример вычисления квадрата числа с использованием функции.
В заголовочном файле header.hразместим прототип функцииMySquare():
// header.h
long MySquare(int);
Тогда главный модуль программы будет подключать заголовочный файл, содержать описание и вызов функции MySquare () из функции main ().
#include "header.h"
int main()
{
int Variable = 5;
cout « MySquare(Variable);
return 0;
}
long MySquare(int x)
{
return x * x;
}
Тот же пример может выглядеть несколько иначе, если вместо подключения заголовочного файла поместить прототип функции MySquare () прямо в файл исходного текста программы:
// Прототип функции:
long MySquare(int);
int main()
{
int Variable = 5;
cout « MySquare (Variable) ;
return 0;
}
long MySquare(int x)
{
return x * x;
}
Результат работы программы не изменится - на печать будет выведено число 25.
В С++ допускается при вызове функций опускать некоторые ее параметры. Достигается это указанием в прототипе функции значений аргументов по умолчанию. Например, функция, прототип которой приведен ниже, может при вызове иметь различный вид в зависимости от ситуации.
// Прототип функции:
void ShowInt (int i, bool Flag = true, char symbol = '\n');
// Вызовы функции ShowInt:
Showlnt(1, false, 'a');
Showlnt(2, false);
Showlnt(3);
В первом случае все три аргумента заданы явно, поэтому работа функции осуществляется в обычном режиме. Во втором вызове в функцию передается два параметра из трех, причем вместо последнего аргумента подставляется значение по умолчанию, а именно символ ' \n'. Третий вариант обращения к функции сообщает только один целочисленный параметр, а в качестве остальных аргументов используются значения по умолчанию: логическая переменная со значением true и символьная переменная со значением ' \n'.
Для используемых параметров по умолчанию существует обязательное правило: все параметры справа от аргумента по умолчанию должны также иметь значение по умолчанию. Так, в приведенном выше прототипе нельзя было бы, указав значение параметра по умолчанию для целочисленной переменной i пропустить определение любого из остальных аргументов по умолчанию.
Рассмотрим пример, в котором осуществляется вывод знакового числа двойной точности с указанием количества значащих символов. Другими словами, определим функцию, принимающую в качестве одного из параметров число выводимых знаков. Для решения поставленной задачи можно воспользоваться функцией возведения числа в степень pow() и функцией взятия модуля от длинного числа с плавающей точкой fabsl (), прототипы которых содержатся в заголовочном файле math. h:
#include <iostream.h>
#include <math.h>
void Out(double Numb, double Sig=l, bool Flg=true);