- •Тема 5. Функции Зачем нужны функции?
- •Определение и вызов функции
- •Void say_hello() {
- •Int main() {
- •Int main() {
- •Void drawStars(int n) {
- •Int main() {
- •Int main() {
- •Void printNumbers(int numbers[], int size) {
- •Int main()
- •Int summa(int y) {
- •Int summa_version2(int y) {
- •Int summa(int a, int b) {
- •Int factorial(int n) {
- •Int factorial(int n) {
- •Int factorial(int n) {
- •Int main() {
- •Реализация функций в компактном виде
- •Int indexOf(int element) {
- •Правильное проектирование функций
- •Int main() {
- •Примеры решения задач
- •Void printMark(int mark) {
- •Int main() {
- •Int main() {
- •Int main() {
- •Int main() {
- •Int main() {
Тема 5. Функции Зачем нужны функции?
Функции являются модулями, из которых создаётся программа. Существует по крайней мере две веские причины использовать функции: во-первых, они существенно упрощают разработку, отладку и поддержку программ, во-вторых, они могут позволить избежать дублирования кода. При грамотном использовании функций в программах отсутствуют запутанные логические конструкции, глубоко вложенные циклы и прочие нежелательные вещи. В конечном счете, использование функций делает программу легко читаемой и понятной даже программисту, который не участвовал в её разработке.
Функция – это часть программы (или подпрограмма), которая решает одну конкретную задачу. Точнее, данное определение относится к грамотно написанной функции, но именно к проектированию таких функций мы и стремимся. Функция может производить какие-то вычисления и возвращать полученный результат, а может просто выполнять последовательность действий и ничего не возвращать. Функция, которая не возвращает значения, в некоторых языках программирования называется процедурой. В объектно-ориентированном программировании функции называются методами.
Функцию часто представляют в виде черного ящика, который принимает что-то на вход и возвращает что-то на выходе.
Определение и вызов функции
Функции предназначены для того, чтобы их вызывать, а перед вызовом их требуется определить. Рассмотрим, как это делается. Для примера создадим функцию, которая приветствует пользователя на трёх разных языках.
#include <iostream>
using namespace std;
//Определение функции
Void say_hello() {
cout << "Hello!" << endl;
cout << "Bonjour!" << endl;
cout << "Привет!" << endl;
}
int main() {
//Вызов функции
say_hello();
return 0;
}
Разберём подробно эту программу. В данном случае функция не принимает никаких аргументов и не возвращает никакого значения: она просто выполняет некоторые действия, точнее, выводит три приветствия. Фактически мы просто назвали группу из трёх команд
cout << "Hello!" << endl;
cout << "Bonjour!" << endl;
cout << "Привет!" << endl;
именем say_hello(). После этого для выполнения этих команд достаточно вызвать функцию, другими словами, указать её имя, а не писать эти три команды.
Таким образом, после определения функции программа
Int main() {
cout << "Hello!" << endl;
cout << "Bonjour!" << endl;
cout << "Привет!" << endl;
return 0;
}
Выполнит те же действия, что и программа
Int main() {
say_hello();
return 0;
}
Заметим, что рассмотренная функция say_hello(), работает всегда одинаково. Рассмотрим теперь функцию, которая может работать по-разному от вызова к вызову. Создадим функцию, которая принимает в качестве аргумента целое число n и выводит на экран n звёздочек.
#include <iostream>
using namespace std;