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

Оглавление

Занятие 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”);

}