§ 3. Основные алгоритмические конструкции

Алгоритмические конструкции

Как вам уже известно из курса информатики, любой алгоритм может быть записан с использованием трех базовых алгоритмических конструкций: следование, цикл и ветвление (пример 3.1).

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

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

Алгоритмическая конструкция повторение (цикл) представляет собой последовательность действий, выполняемых многократно. Саму последовательность называют телом цикла. Оператор цикла — это команда, реализующая алгоритмическую конструкцию повторения на языке программирования.

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

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

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

Пример 3.1 Блок-схемы алгоритмических конструкций.

Следование

Ветвление

Цикл

  • Цикл с параметром (значение параметра изменяется от 1 до N):

  • Цикл с предусловием:

  • Цикл с постусловием:

Кроме блок-схем, для графического представления алгоритмов используют структурограммы (NS-диаграммы, диаграммы Насси — Шнейдермана).

Примеры структурограмм

Команда ветвления:

Команда цикла с предусловием:

3.2. Логический тип данных

В языке программирования С++ для работы с условиями определен логический тип данных bool. Величины типа bool могут принимать два значения — false (ложь) и true (истина).

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

Операция

С++

Равно (=) ==
Не равно (≠) !=
Больше (>)
Меньше (<)
Больше или равно (³) >=
Меньше или равно (≤) <=

Логическое выражение — выражение, принимающее одно из двух значений: true или false. Логические выражения можно присваивать переменным типа bool, а также выводить их значения на экран: будет выведено 0 для значения true или 1 для значения false соответственно (пример 3.2).

В языке С++ любое числовое значение может восприниматься как логическое. При этом значения, равные нулю, считаются ложью, а не равные нулю — истиной.

В С++ допустимы логические выражения следующего вида: bool a = 3 <= x <= 7;. Однако смысл такого выражения не совпадает с математическим. При выполнении программы компилятор сначала проверит истинность условия 3 <= x и заменит его на 0 или 1 в зависимости от того, истинно это условие или нет. Затем произойдет проверка того, что полученное значение меньше либо равно 7. Вне зависимости от истинности первой части условия результат всегда будет истинным, т. к. 0 <= 7 и 1 <= 7. Поэтому значение переменной a всегда будет истинным, и оно не зависит от значения переменной x.

Тип bool назван в честь английского математика и логика Джорджа Буля, занимавшегося вопросами математической логики в XIX в.

Пример 3.2. Примеры логических выражений:

Выражение

Значение

< 7 true
+ 2 == 8 false
abs(-5) > abs(3) true

Значение логического выражения   >= x * x  можно определить, только зная значения переменных x и y. При = 2 и = 10 значение выражения — true. При = 10 и = 2 – false.

Проверим истинность этих выражений в программе:

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

  bool a1 = 3 < 7;

  cout << "a1=" << a1 << endl;

  bool a2 = 2 + 2 * 2 == 8;

  cout << "a2=" << a2 << endl;

  bool a3 = abs(-5) > abs(3);

  cout << "a3=" << a3 << endl;

  double x, y;

  x = 2, y = 10;

  bool a4;

  a4 = y >= x * x;

  cout << "a4=" << a4 << endl;

  x = 10; y = 2;

  a4 = y >= x * x;

  cout << "a4=" << a4 << endl;

  return 0;

}

Результат работы программы:

Команда    cout << boolalpha   позволит вывести на экран значения true и false вместо 1 и 0. Команду достаточно написать один раз перед первым выводом. Если нужно вернуться к выводу 1/0, то используют команду   cout << noboolalpha.