Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Философия программирования на C++ Выпуск 15. Циклы.


Всем привет! Сегодня мы перейдем к следующей теме - циклы.

Мы уже научились разветвлять программу (то есть делать разное поведение программы в зависимости от чего-либо), теперь осталось научиться писать циклы - и можно будет уже написать абсолютно любую программу (хотя и с текущими знаниями это будет сделать сложно, но теоретически возможно).

Начнем с простой программки, считающей сумму всех введенных чисел, пока не будет введен 0.

#include <iostream>
using namespace std;
int main() {
    int inputNumber = 0;  // В этой переменной мы будем хранить введенное пользователем число
    cout << "Enter next number
(0 for exit): ";
    cin >> inputNumber;
    int sum = 0;  // Здесь будет храниться сумма всех чисел
    while (inputNumber != 0) {
        sum += inputNumber;
        cout << "Enter next number (0 for exit): ";
        cin >> inputNumber;
    }
    cout << "Sum of all numbers: " << sum << endl;
}

Итак, здесь для нас из нового только слово while. Это ключевое слово означает один из видов цикла - наиболее похожий на условия. Главное отличие от условия в том, что цикл "зацикливается" - то есть код внутри него повторяется до тех пор, пока (while) inputNumber (введенное число) не равно нулю.

Если условие внутри while (<условие>) выполняется (true, истинно) - то выполняется код внутри него, в конце это условие проверяется снова - и так до тех пор, пока условие выполняется. Как только пользователь введет 0, условие inputNumber != 0 вернет false (ложь) и код перейдет к строке за циклом - вывод суммы на экран, и дальше уже программа завершится.

Этот вид циклов наиболее простой для понимания, поскольку он очень похож на if. Единственная проблема - в приведенной программе повторяется один участок кода в двух местах. Это - очень плохой стиль программирования. Всегда и везде необходимо добиваться того, чтобы код не повторялся. Здесь есть несколько вариантов, но мы рассмотрим вариант с другим видом цикла while:

#include <iostream>
using namespace std;
int main() {
    int inputNumber = 0;  // В этой переменной мы будем хранить введенное пользователем число
    int sum = 0;  // Здесь будет храниться сумма всех чисел
    do {
        cout << "Enter next number (0 for exit): ";
        cin >> inputNumber;
        sum += inputNumber;
    } while (inputNumber != 0);
    cout << "Sum of all numbers: " << sum << endl;
}

Итак, здесь появилось еще одно ключевое слово - do! В чем отличие этой формы от того, что мы использовали в предыдущей программе? Единственное отличие заключается в том, что здесь в первый раз условие выхода из цикла не(!) проверяется. Каким бы ни было inputNumber, тело цикла выполнится в любом случае как минимум один раз. За счет этого нам удалось сократить программу, что очень даже хорошо.

Итак, сегодня мы узнали о циклах while (пока условие выполняется - делать тело цикла) и do..while (делать тело цикла, потом проверять условие).

На сегодня все, спасибо за внимание! 


В избранное