Определение функций
В этом уроке вы научитесь писать собственные функции. Начнём с задачи: нам нужны площади трёх прямоугольников. Площадь прямоугольника — это ширина, умноженная на высоту, поэтому можно написать такую программу, как в редакторе:
#include <iostream>
int main() {
int width1 = 5;
int height1 = 6;
int area1 = width1 * height1;
std::cout << area1 << std::endl;
int width2 = 10;
int height2 = 5;
int area2 = width2 * height2;
std::cout << area2 << std::endl;
int width3 = 1;
int height3 = 5;
int area3 = width3 * height3;
std::cout << area3 << std::endl;
}Запустите её. Она выводит:
30
50
5Работает, но мы трижды написали одни и те же четыре строки, а менялись только числа. Представьте сотню прямоугольников! А если бы мы нашли ошибку в вычислениях, пришлось бы исправлять её в ста местах.
Программисты стараются не повторять код. Вместо этого они пишут повторяющуюся часть один раз, дают ей имя и используют там, где она нужна. Такой именованный кусок кода называется функцией.
На самом деле одну функцию вы пишете с первого урока: main. Строка int main() { начинает определение функции с именем main, а инструкции между фигурными скобками — её тело. Когда вы запускаете программу, она начинает с выполнения функции main. Свою функцию вы определяете похожим образом:
void sayHello() {
std::cout << "Привет!" << std::endl;
std::cout << "Хорошего дня!" << std::endl;
}В определении функции есть такие части:
void(по-английски «пустой») — это тип возвращаемого значения. Он говорит, что функция не возвращает значение, а только что-то делает: здесь выводит две строки. С функциями, которые возвращают значения, вы познакомитесь позже в этом уроке.- Имя функции, здесь
sayHello. Оно подчиняется тем же правилам, что и имена переменных: буквы, цифры и_, без пробелов, заглавные и строчные буквы различаются, а имена из нескольких слов пишут в camelCase. Выбирайте имя, которое говорит, что делает функция, напримерsayHelloилиprintArea. - Круглые скобки
(). Пока они пустые; скоро вы узнаете, что в них пишут. - Тело функции в фигурных скобках
{ }. В нём находятся инструкции, которые выполняет функция.
Пишите функцию выше main, а не внутри неё. В C++ определение функции не может находиться внутри другой функции. Если написать его в теле main, программа не скомпилируется, и компилятор сообщит об ошибке error: function definition is not allowed here.
Когда вы запустите программу с новой функцией, она по-прежнему выводит только то, что выводит main. Это не ошибка! Определение лишь говорит, что должна делать функция, как рецепт, записанный в поваренной книге: пока никто ничего не приготовил. В следующем упражнении вы заставите функцию выполниться.
Задание
- 1
Над функцией
main, на месте комментария, создайте функциюfirstFunction, тело которой выводитЭто моя первая функция!. Затем запустите программу: она по-прежнему выводит только три площади, потому что функцию пока никто не вызывал. Так и должно быть.