Хелпикс

Главная

Контакты

Случайная статья





Лекция №23. Функции. Вызов функции



Лекция №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);

}

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.