Урок 7 - процедуры

Что такое процедуры?

Процедура - подпрограмма, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы.

Позволяет выносить повторяющиеся куски кода в отдельные подпрограммы.

Как создавать и использовать процедуры?

#include <iostream>

using namespace std;

void print_endl(string text) {
   cout << text << endl;
}

int main() {
   print_endl("hello");
   print_endl("world");
}

Вывод:

hello
world

Разбираем как объявлять процедуры

void название_процедуры(тип_данных_параметра1 название_параметра1, тип_данных_параметра2 название_параметра2) {
   код_который_выполняет_процедура
}
  • void - тип данных, который возвращает процедура. Void переводится с английского как пустота.
  • название_процедуры - название процедуры, которое мы будем использовать для её вызова.
  • тип_данных_параметра название_параметра - параметры, которые мы передаем в процедуру. Работают они также, как и обычные переменные. Можно сделать несколько параметров, перечислив их через запятую.

Рекурсивные процедуры

Процедуры могут вызывать сами себя, что позволяет их использовать вместо циклов.

Разберу решение на C++ №6990 с сайта СДАМГИА

#include <iostream>

using namespace std;

void f(int n) {
   cout << n;
   n = n - 1;
   if (n > 0) f(n);
}

int main() {
   cout << f(4) << endl;
}

Вывод:

4
3
2
1

Как изменять переменные вне процедуры

Возможно вам стоит использовать функции из 8 урока? Если вы уверенны что вам нужны именно процедуры - то вот:

#include <iostream>

using namespace std;

void swap (int &a, int &b) {
  int c;
  c = a;
  a = b;
  b = c;
}

int main() {
   int a, b;
   cin >> a >> b;
   swap(a, b);
   cout << a << b; // Переменные поменялись местами!
}

Ввод:

123 456

Вывод:

456 123

Посмотрим в аргументы у процедуры swap. Что за &a спросите вы? Указание & перед переменной позволит взять ее оригинал вместо копии. Это и позволит нам изменить переменную вне процедуры. Подробнее мы разберем это на 9 уроке.