Вызовы функции и процесс выполнения программы

      Комментарии к записи Вызовы функции и процесс выполнения программы отключены

Лабораторная №4

Функции

Понятие функции в языке C++ не сильно отличается от понятия функции в математике, если вы вспомните алгебру высшей школы или колледжа. Функция принимает ноль или более входных параметров и возвращает результат, называемый возвращаемым значением (return value).

Вот другой пример — этот пример является гипотетическим и не является частью стандартной библиотеки языка C++. Данная функция принимает два входных параметра и возвращает их среднее число.

cout

Если предположить, что функция avg была правильно написана, то эта строка кода напечатает число 2,5.

По существу, идея данного примера похожа на идею функции sqrt: получить несколько входных параметров и вернуть результат. Вы можете представить вызов функции следующим образом:

Функция может не иметь входных параметров, как в случае с функцией rand, которая возвращает случайное целое число:

n = rand();

При вызове функции rand используются круглые скобки; круглые скобки присутствуют всегда при вызове функции в языке C++, даже в том случае, когда функция не имеет входных параметров. Это оказывается полезным, поскольку с их присутствием становится абсолютно понятно, когда выполняется именно вызов функции, а когда — нет.

Вообще говоря, функции делятся на две категории. Они не сильно отличаются — обе категории подчиняются одним и тем же правилам — но существует отличие в объеме работы, которую необходимо выполнить:

✓ Некоторые функции являются частью стандартной библиотеки языка C++. Они уже написаны и скомпилированы, поэтому вы не должны определять то, что они будут делать.

✓ Функции, не являющиеся частью стандартной библиотеки языка C++, должны быть написаны в самой программе. Вы определяете то, что будут делать эти функции.

Вызовы функции и процесс выполнения программы

Мысленно лучше всего представить функцию C++ как какую-то определенную задачу (а specific task). Программа может выполнять множество задач. Если это коммерческая программа, как например Microsoft Word, она может выполнять сотни или даже тысячи задач. Что делает возможным написание сложного программного обеспечения, так это то, что можно писать отдельные функции, каждая из которых выполняет ограниченную работу. Каждая функция может быть отдельно написана и протестирована.

После того как функция написана, ее можно вызывать любое количество раз. Каждый раз при вызове функции выполнение программы временно переносится из текущей функции (например, main) на описание вызываемой функции. На следующем рисунке показано, как это может происходить в простой программе.

Вот как происходит выполнение программы в этом примере:

1) Выполнение программы начинается как обычно, с автоматического выполнения функции main (которая выполняется до вызова какой-либо функции или до конца программы).

2) Вызов функции avg передает управление из функции main в функцию avg.

3) Выполнение функции avg продолжается до инструкции return или до конца функции. В этой точке управление возвращается обратно функции main, на инструкцию, следующую прямо за вызовом функции.

4) Функция main завершает выполнение. Инструкция return 0; возвращает управление обратно операционной системе. Программа завершена.

Исходя из этой логики можно сделать вывод, что возможно определить функции, которые никогда не будут выполнены. Это действительно так. Только функция main будет Обязательно выполнена. Другие функции выполняются только тогда, когда они вызываются.

Статьи к прочтению:

ВЫЗОВ — ЗАДНЕПРИВОДНЫЕ (2 сезон)


Похожие статьи: