|
|||
Лекция №23. Функции. Вызов функцииСтр 1 из 3Следующая ⇒ Лекция №23. Функции
План: 1. Вызов функции; 2. Прототипы функций.
1. Вызов функции
Всякая задача может быть разбита на подзадачи, каждую из которых можно либо непосредственно представить в виде кода, либо разбить на ещё более мелкие подзадачи. Данный метод носит название пошагового уточнения (stepwise refinement). Функции в С++ служат для записи программного кода этих непосредственно решаемых подзадач. Такие функции используются другими функциями, и в конечном – функцией main() для решения исходной задачи. Программа на С++ составляется из одной или более функций, одна из которых – main(). Выполнение программы всегда начинается с функции main(). Когда при выполнении программы встречается имя функции, происходит обращение к этой функции (она вызывается). То есть управление программой передаётся функции. После того как функция выполнила свою работу, управление возвращается в место, откуда функция была вызвана – в вызывающее окружение (calling environment). Пример: // позвоним, используя символ ‘\a’ (звуковой сигнал) #include <iostream.h> const char bell = ‘\a’; void ring() { cout << bell; } int main () { ring(); } В С++ код, описывающий, что делает функция, называется определением функции (function definition). Формально это выглядит так: Заголовок_функции { инструкции } Всё, что стоит перед первой фигурной скобкой, составляет заголовок определения функции, а то, что находится между фигурными скобками, является телом определения функции. Заголовок функции – это: Тип имя (список_объявлений_параметров) Спецификация типа, стоящая пред именем функции, является возвращаемым типом. Он определяет тип значения, возвращаемого функцией (если оно вообще возвращается). В определении функции ring() из предыдущего примера список параметров пуст, то есть объявлений параметров нет. Тело функции состоит из единственной инструкции. Поскольку функция не возвращает значение, возвращаемый тип этой функции – void. Синтаксически параметры – это идентификаторы, они могут использоваться внутри тела функции. Формальные параметры – это то, вместо чего будут подставлены фактические значения, предаваемые функции в момент её вызова. После вызова функции значение аргумента, соответствующее формальному параметру, используется в теле выполняемой функции. В С++ такие параметры являются вызываемые по значению (call-by-value). Когда применяется вызов по значению, переменные передаются функции как аргументы, их значения копируются в соответствующие параметры функции, а сами переменные не изменяются в вызывающем окружении. В сущности, вызываемые по значению параметры являются локальными в своей процедуре. Им могут передаваться выражения, значения которых присваиваются этим локальным переменным (параметрам). Перепишем предыдущую программу так, чтобы у функции ring() появился формальный параметр, задающий количество звонков: // несколько звонков #include <iostream.h> const char bell = ‘\a’; void ring (int k) { int i; for (i = 0; i < k; ++i) cout << bell; } int main () { int n; cout << “\nвведите небольшое положительное целое: ”; cin >> n; ring(n); }
|
|||
|