- •Оглавление
- •Занятие 6. Функции.
- •Прототип функции
- •Определение функции
- •Аргументы и параметры функции
- •Функции с переменным числом параметров
- •Рекурсивные функции
- •Математические функции
- •Передача массивов как параметров
- •Передача многомерных массивов как параметров
- •Использование указателей при работе с функциями
- •Перегрузка функций
- •Занятие 7. Коллоквиум.
- •Занятие 8. Строки Указатели и строки
- •Функции ввода, вывода строк
- •Стандартные функции обработки строк
- •Занятие 9. Директивы препроцессора.
- •Директива #include
- •Директива #define
- •Директивы условной компиляции #if, #elif, #else и #endif
- •Директива #undef
- •Макроопределения с параметрами
- •Занятие 10.
- •Занятие 11.
- •Занятие 12.
Оглавление
Занятие 6. Функции. 2
Занятие 7. Коллоквиум. 14
Занятие 8. Строки 15
Занятие 9. Директивы препроцессора. 21
Занятие 10. 27
Занятие 11. 27
Занятие 12. 27
Занятие 6. Функции.
В отличии от других языков, где есть различие между подпрограммами, процедурами и функциями, в С++ и его предшественнике – языке С – используются только функции.
Функция – это блок программы, который выполняет одно или несколько действий. Каждая программа С++ имеет по крайней мере одну функцию - main(), которая при запуске программы вызывается автоматически. Функция main() может вызывать другие функции, те, в свою очередь, могут вызывать следующие, и т.д. Функция может принимать параметры и возвращать значение. Функция начинает выполняться в момент вызова. Поэтому до момента вызова функция должна быть сначала объявлена, а потом определена. Различают два вида функций: стандартные и программируемые пользователем.
Прототип функции
Объявление или прототип функции задает ее имя, тип возвращаемого значения и список формальных параметров (наличие параметров необязятельно):
тип_функции имя_функции(список_формальных_параметров);
Здесь, тип_функции – тип возвращаемого функцией значения, в том числе void, если функция никакого значения не возвращает. Если он явно не указан, то по умолчанию устанавливается тип возврата int.
Список формальных параметров представляет собой список имен всех параметров и их типов, разделенных запятыми. Однако в прототипе функции указывать имена формальных параметров не обязательно, достаточно указать тип.
Прототипы стандартных функций уже записаны в файлы заголовков (*.h), включаемых в программу с помощью директивы #include. Строка прототипа всегда оканчивается точкой с запятой.
Примеры прототипов функций.
double Summer(double a, double b, double c);
//возвращает значение типа double, имеет три параметра типа double
int Max(int, int);
// возвращает значение типа int, имеет два параметра
void printm(int a);
// возвращает значение типа void, имеет один параметр
int run();
// возвращает значение типа int, не имеет параметров
jump();
// возвращает значение типа int, не имеет параметров
Определение функции
Определение функции состоит из заголовка функции и ее тела. Заголовок подобен прототипу за исключением того, что параметры в данном случае именованные и в конце заголовка отсутствует точка с запятой, а тело функции представляет собой последовательность операторов и описаний в фигурных скобках:
тип_функции имя_функции(список_формальных_параметров)
{
тело_функции;
}
Определение функции должно соответствовать своему прототипу по типу возвращаемого значения и списку параметров. Все выражения внутри тела функции должны оканчиваться точкой с запятой. Имена параметров в прототипе не обязательно должны совпадать с именами параметров в определении. Возврат из функции в вызвавшую ее функцию реализуется оператором
return выражение;
Функция может содержать несколько операторов return или не содержать ни одного (это определяется потребностями алгоритма). Если функция описана как void, а наличие оператора return диктуется потребностями алгоритма, то выражение не указывается. После выполнения оператора return программа немедленно переходит к строке, следующей после вызова функции, и любые операторы, стоящие в теле функции после ключевого слова return, не выполняются.
Примеры определений функций.
double Summer(double a1, double a2, double a3)
{
return a1+a2+a3;
}
void printm(int a)
{
if (a==1) puts(“Hello!”);
else puts(“I’m confused.\n”);
}