Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вызвать функцию можно только после объявления функции (то есть ниже объявления)

Вызов функции

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

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

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

Например вызов функции ожидания нажатия произвольной клавиши на клавиатуре - функция getch(), объявление которой находится в библиотеке conio.h, можно произвести следующим образом

.... getch();....

Некоторые функции возвращают значения, как, например, функция, вычисляющая квадратный корень от числа, возвращает значение этого корня. Если функция возвращает значение, Вы должны принять это значение в какую-либо переменную, вывести на экран либо использовать в составном выражении. Например, в библиотеке math.h определена функция извлекающая квадратный корень sqrt, которая принимает как параметр значение, из которого следует извлечь корень, и возвращает значение этого корня. Как ее можно использовать

.... int i=2; double dbl=sqrt(i); cout << sqrt(5);....

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

.... cout << 2*sqrt(3)+1; float res=sqrt(sqrt(7)/2)+10;....

Объявление функции из стандартной библиотеки выполняется при помощи подключения библиотеки директивой препроцессора #include.

Как объявить и определить свою функцию рассмотрим в следующем разделе.

return

Существует несколько способов возврата управления к точке, из которой была вызвана функция:

- Если функция не должна возвращать результат, управление возвращается либо просто при достижении правой фигурной скобки, завершающей функцию, либо

- при выполнении оператора return.

- Если функция должна возвращать результат, то оператор return выражение;

возвращает значение выражение в обращение к функции.

Таким образом, оператор возврата имеет две формы:

return;

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

return выражение;

В этом случае, в вызвавшую среду возвращается также значение выражения, которое следует за ключевым словом return. Это значение должно быть конвертируемым к возвращаемому типу из заголовка определения функции.

Например:

return; не возвращает значения;
return 3; возвращаемое значение = 3;
return (a + b); возвращаемое значение = значению выражения (а + b); скобки необязательны, используются для улучшения читаемости кода.

В качестве иллюстрации небольшой пример программы.

/* Программа для введеных с клавиатуры трех чисел предлагает выполнить след. действия:проверить на четность, вычислить сумму,вычислить сред. арифметическое нечетных чисел */ #include < iostream.h > // прототипы функции bool IsEven (int); /* функция проверяет число на четность*/ int abcMultiple (int, int, int); /* функция вычисляет сумму трех чисел */ float ArithMean (int, int, int); /* функция вычисляет среднее арифметическое нечетных чисел*/ // описания функций void OutputMenu () /* функция выводит на экран меню программы*/ { cout << "1. Ввод чисел " "2. Проверка чисел на четность " "3. Вычислить произведение " "4. Вычислить среднее арифметическое нечетных чисел "; cout << " Выберите пункт меню "; return; } int InputNumber () /* функция ввода числа в заданном диапазоне */ { int number = 0; do { cout << " Введите целое число в диапозоне от 0 до 500: "; cin >> number; } while(number < 0 || number > 500); return number; } void main() { int a = 0, b = 0, c = 0, /* объявление и инициализация переменных целого типа для хранения чисел, введенных пользователем с клавиатуры*/ menuVal = 0; /* объявление и инициализация переменной целого типа для хранения значения выбранного пункта меню */ do { OutputMenu (); /*вызов функции OutputMenu*/ cin >> menuVal; switch (menuVal) { case 1: /* Метка соответствует задаче первого пункта меню */ a = InputNumber (); cout << " a = " << a; b = InputNumber (); cout << " b = " << b; c = InputNumber (); cout << " c = " << c; break; case 2: /* Метка соответствует задаче второго пункта меню */ if (IsEven (a)) cout << " а = " << a << " - четное"; if (IsEven (b)) cout << " b = " << b << " - четное"; if (IsEven (c)) cout << " c = " << c << " - четное"; break; case 3: /* Метка соответствует задаче третьего пункта меню */ cout << " Произведение a*b*c = " << abcMultiple (a, b, c); break; case 4: /* Метка соответствует задаче четвертого пункта меню */ cout << " Среднее арифметическое нечетных чисел = " << ArithMean (a, b, c); break; default: /* В случае, если пользователь ввел значение вне диапозона 1-4 */ cout << " Будьте внимательней." " Имеется всего 4 пункта меню:)"; } cout << " Дальше? " " 0 - Нет, 1 - Да "; cin >> menuVal; }while(menuVal); return; } // описания функций, прототипы функций объявлены выше bool IsEven (int val) { bool valIsEven = val%2? false: true; return valIsEven; } int abcMultiple (int a, int b, int c) { return a*b*c; } float ArithMean (int val1, int val2, int val3) { int Sum = 0, count = 0; /* объявляем вспомогательные переменные для вычисления среднего арифметического Sum/count */ if (! IsEven (val1)) { count ++; Sum += val1; } if (! IsEven (val2)) { count ++; Sum += val2; } if (! IsEven (val3)) { count ++; Sum += val3; } if (count) return float(Sum)/count; else return 0; }

 

 

<== предыдущая лекция | следующая лекция ==>
Имена функций подчиняются тем же ограничениям, что и имена переменных | Прототипы функций
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 364; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.