§ 3. Основные алгоритмические конструкции
Алгоритмические конструкции
Как вам уже известно из курса информатики, любой алгоритм может быть записан с использованием трех базовых алгоритмических конструкций: следование, цикл и ветвление (пример 3.1). Команды, составляющие алгоритмическую конструкцию следование, выполняются последовательно, друг за другом, в том порядке, в котором они записаны. Команды цикла и ветвления управляют порядком выполнения других команд в программе и относятся к командам управления (управляющим конструкциями). Алгоритмическая конструкция ветвления обеспечивает выполнение одной или другой последовательности команд в зависимости от истинности или ложности некоторого условия. Оператор ветвления — команда, реализующая алгоритмическую конструкцию ветвления на языке программирования. Алгоритмическая конструкция повторение (цикл) представляет собой последовательность действий, выполняемых многократно. Саму последовательность называют телом цикла. Оператор цикла — это команда, реализующая алгоритмическую конструкцию повторения на языке программирования. Существуют разные возможности управлять тем, сколько раз будет повторяться тело цикла. Может быть задано условие продолжения или окончания работы цикла, а также число повторений тела цикла. В зависимости от этого выделяют цикл с предусловием, цикл с постусловием и цикл с параметром. Существуют разные возможности управлять тем, сколько раз будет повторяться тело цикла. Может быть задано условие продолжения или окончания работы цикла, а также число повторений тела цикла. Выделяют следующие циклы: цикл с предусловием, цикл с постусловием и цикл с параметром. Выбор цикла зависит от задачи. Во многих случаях циклы взаимозаменяемы. При выборе цикла можно ориентироваться на следующее:
|
Пример 3.1 Блок-схемы алгоритмических конструкций. Следование Ветвление Цикл
Кроме блок-схем, для графического представления алгоритмов используют структурограммы (N — S-диаграммы, диаграммы Насси — Шнейдермана). Примеры структурограмм Команда ветвления: Команда цикла с предусловием: |
3.3. Составные условия
Для логических переменных в С++ определены логические операции !, &&, ||, соответствующие операциям НЕ, И, ИЛИ, выполняемым над высказываниями. Логические выражения, в которых наряду с простыми условиями (сравнениями) используются логические операции, называют составными условиями. Приведем таблицу истинности для логических операций.
В логических выражениях могут встречаться как арифметические, так и логические операции. Порядок выполнения операций определяется их приоритетом [1]: 1. !; 2. *, /, %; 3/ +, –; 4. <, >, <=, >= 5. ==, !=; 6. &&; 7. ||. Операции с одинаковым приоритетом выполняются по порядку, слева направо. Для изменения порядка выполнения операций применяют скобки (примеры 3.3 и 3.4). При составлении программ часто нужно строить отрицания сложным логическим выражениям. Для этого полезно использовать тождества, известные из алгебры логики (пример 3.5) и следующую таблицу:
Пример 3.6. Написать программу, которая выдаст на экран значение true или false в зависимости от того, находится ли число B между числами A и C. Этапы выполнения задания I. Исходные данные: переменные a, b, c (вводимые числа). II. Результат: rez (true или false). III. Алгоритм решения задачи. 1. Ввод исходных данных. 2.1. Верно неравенство: а < b < c. Этому неравенству соответствует логическое выражение: а < b && b < с. Присвоим переменной r1 значение этого выражения. 3. Вывод результата. IV. Описание переменных: a, b, c – int, r1, r2, rez – bool.[1] Обратите внимание, что приоритет операций отличается от того, который принят в Pascal (http://informatika8.adu.by/#fif2-2). |
Пример 3.3. Определение порядка действий для выражения: a || c < b && d Первым выполняется сравнение c и b, затем логическая операция &&, потом — ||. Пример 3.4. Рассмотрим выражение: (a < b) && (c < d) Здесь скобки определяют приоритет выполнения операций: т. е. сначала должны выполниться сравнения, а затем —логическая операция &&. Однако в С++ операции сравнения обладают более высоким приоритетом, чем логические операции (в отличие от Pascal), поэтому приведенная выше запись эквивалентна: a < b && c < d Пример 3.5. Построение отрицаний:
Рассмотрим выражение !a > b с переменными а и b типа int. Здесь операция ! относится к переменной a. Поскольку целые могут рассматриваться как логические, то отрицанием любого числа, кроме нуля, будет 0, отрицанием нуля будет 1. Затем полученный результат (0 или 1) сравнится с числом b. Для отрицания сравнения выражение нужно записать так: !(a > b). В языке С++ используются значки «&» и «|». Этими значками обозначаются битовые операции над целыми числами. Значок «&» соответствует операции and (И), проводимой над двоичными разрядами числа, а значок «|» — операции or (ИЛИ). Кроме этих операций, над битами числа можно выполнять операции «~» not (инверсия) и «^» xor (исключающее ИЛИ, сложение по модулю 2). Пример 3.6. V. Программа:
VI. Тестирование. Запустить программу и ввести значения а = 5, b = 0, c = –5. Результат: Запустить программу и ввести значения a = –2, b = –7, с = 5. Результат: VII. Анализ результатов. Для полного тестирования программы нужно проверить все 6 возможных случаев взаимного расположения a, b, c. В программировании на С++ могут использоваться диграфы (англ. digraphs) — последовательности из двух или более символов, которые компилятор воспринимает как один (или более символов). Они созданы и используются для ввода символов, отсутствующих на клавиатуре или в кодировке. К диграфам относят слова and и or, которые эквивалентны && и ||.
|