Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_раб С++_ОСНОВЫ ПРОГРАММИРОВАНИЯ_ч_2_изм_чис...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
803.84 Кб
Скачать

Лабораторная работа №7 Функции и процедуры

1.Цель работы

Целью работы является изучение функций и процедур.

2.Контрольные вопросы

2.1.Какой формат определения функции в программе?

2.2.В чем различие между функцией и процедурой?

2.3.Что передается в функцию при использовании параметра-ссылки?

2.4.Для чего необходимо "предварительное" объявление функции?

3.Методические указания

3.1.Описание функций

Как и в языке Pascal, функция программы на языке - это логически самостоятельная именованная часть программы, которой могут передаваться параметры и которая может возвращать какое-то значение. Язык C++ предполагает следующий формат определения функции:

где

  • имя - то имя, которое программист решил дать своей функции;

  • параметры - список переменных с указанием их типов, своего рода описание;

  • тип - это тип значения, которое вычисляет функция;

  • операторы - тело функции;

  • return - команда выхода из функции и возвращения вычисленного значения.

Пример. Описание функции выбора большего из двух аргументом (Листинг 3.49):

Листинг 3.49. Пример функции, вычисляющей наибольшее число

Компиляторы C++ требуют, чтобы функции были объявлены до первой ссылки на них. В некоторых сложных случаях (перекрестных ссылках) это невозможно. Поэтому, помимо приведенного выше способа объявления функции, существует еще и "предварительное" объявление, называемое прототипом функции (Листинг 3.50).

Листинг 3.50. Предварительное объявление функций

Обычно прототипы функции указывают в начале модуля тогда их реализацию можно располагать в любом месте, не опасаясь, что функция не была объявлена до первого обращения. Ниже приведен пример подобного приема (Листинг 3.51).

Листинг 3.11. Безопасное объявление функций

3.2.Процедуры

Как таковых процедур (какие есть, например, в языке Pascal) в языке C++ не существует - во всех случаях применяются функции. Однако, если функция не возвращает никакого значения, указывается специаль­ный тип возвращаемого значения - void. В этом случае для выхода из функции писать команду return необязательно, а если надо сделать это досрочно, то команда return пишется без аргументов (Листинг 3.52).

Листинг 3.52. Пример функции, не возвращающей никакого значения

Дополнительным примером такой функции может служить главная функция main(), которая ничего не возвращает.

3.3.Параметр-ссылка

Для возвращения нескольких значений в C++ можно использовать указатели в качестве параметров функции. Однако это не совсем удобно и часто приводит к неявным ошибкам (передача неверного указателя). Как и в языке Pascal, язык C++ имеет специальный ме­ханизм для возвращения функцией нескольких значений. Аналогом параметра-переменной языка Pascal в языке C++ является пара­метр-ссылка. Для указания того, что параметр является ссылкой, перед его именем ставится символ & (Листинг 3.53):

Листинг 3.53. Прототип функции, имеющей параметр-ссылку

Пример. Описание и вызов функции, которая очищает заданный массив (Листинг 3.54).

Листинг 3.54. Пример функции, использующей параметр-ссылку

Есть еще одна тонкость использования параметров-ссылок - на са­мом деле, это скрытый указатель. Т.е. в функцию передается только адрес переменной. Таким образом, при передачи переменной в каче­стве параметра, копия параметра не создается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]