Общие теоретические сведения
Разветвляющимся является алгоритм, если последовательность выполнения шагов решения задачи изменяется в зависимости от некоторых условий. Условие – это логическое выражение, принимающее одно из двух значений: «Да» – если условие верно и «Нет» – если условие неверно, – и которое может содержать логические операции и знаки отношений. Рис. 1 иллюстрирует структурные схемы разветвляющихся алгоритмов укороченной (а) и полной (б) формы.
Разветвляющиеся алгоритмы оформляются операторами полной или укороченной формы (табл. 1). В условном операторевыполняется всегда одна из веток («Да» при истинном условии или «Нет», если оно ложно), и никогда не выполняются обе вместе.
Таблица 1 – Формы записи операторов условного перехода
К условным операторам относится оператор выбора или оператор переключатель (табл. 2), который замечателен тем, что может заменить вложенные операторы условия.
Таблица 2 – Оператор выбора (или оператор-переключатель)
Выражение – это целочисленная или строковая переменная, значение которой определяет ветвь. Каждая ветвь, определяемая case, может заканчиваться оператором прерывания break. Можно объединять ветви, через список значений, перечисляемые через запятую (или в Pascal – в виде интервала через две точки). Например:
Пример. Дано целое число a. Узнать, четное ли оно. Текстуальная форма алгоритма задачи. 1. Ввести число а с клавиатуры в ЭВМ. 2. Для определения четности можно воспользоваться известным в математике способом деления числа а на 2, если остаток равен нулю, то число – четное. 3. Выдать на экран дисплея «Введенное число четное» – если число а четное, или выдать «Введенное число нечетное» – если число а нечетное.
На рис. 2 представлена схема алгоритма этой задачи и описана программа.
Варианты заданий Задание. Составить алгоритм, написать программу на языке программирования С ++, отладить программу на ПК. Написать тестпрограммы по всем ветвям. Все результаты предъявить преподавателю. Подготовить ответы на контрольные вопросы. 1. Определить, верно ли, что при делении неотрицательного целого числа а на положительное число b получается остаток, равный одному из двух заданных чисел c или d. 2. Дано натуральное четырехзначное число n. Выяснить, различны ли все четыре цифры этого числа. Например, в числе 3678 все цифры различны, в числе 0230 – нет. 3. Имеются стол прямоугольной формы с размерами a × b (a и b – целые числа, a > b) и кости домино с размерами c × d × e (c, d и e – целые числа, c > d > e). Найти вариант размещения на столе наибольшего количества костей. Все размещаемые кости должны лежать на одной и той же грани в один ярус без свешивания со стола. Все ребра костей домино должны быть параллельны или перпендикулярны каждой стороне стола. 4. Дано целое число k (1 ≤ k ≤ 365). Определить, каким будет k -й день года: выходным (суббота и воскресенье) или рабочим, если 1 января – понедельник. 5. Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой – вторым. Определить, принадлежат ли все точки первого прямоугольника второму. 6. Даны вещественные положительные числа a, b, c, d. Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c и d так, чтобы каждая из сторон была параллельна или перпендикулярна каждой стороне второго прямоугольника. 7. Вывести на экран номер четверти координатной плоскости, которой принадлежит точка с координатами (x, y), при условии, что x ≠ 0 и y ≠ 0. 8. Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой – вторым. Определить, принадлежат ли все точки одного из прямоугольников другому. 9. Даны вещественные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия. 10. Дано четырехзначное число. Определить, входят ли в него цифры 3, 6 или 9. 11. Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой – вторым. Определить, пересекаются ли эти прямоугольники. 12. Дано четырехзначное натуральное число n. Выяснить, является ли оно палиндромом («перевертышем»), как, например, числа 7777, 8338, 0330 и т.п. (палиндромом называется число, десятичная запись которого читается одинаково слева направо и справа налево). 13. Даны два двухзначных числа. Вычислить их сумму. Выяснить, является ли сумма совершенным числом (натуральное число называется совершенным, если оно равно сумме своих делителей, включая 1 и исключая это самое число, например, число 6 совершенное 6=1+2+3). 14. Даны два целых числа, одно в шестнадцатеричной системе счисления, а другое в двоичной системе счисления. Узнать, равнозначные ли эти числа. Например, числа А и 101 – не равнозначны, а числа F и 1111 – равнозначны. 15. Даны два целых числа, одно в шестнадцатеричной системе счисления, а другое в двоичной системе счисления. Найти произведение этих чисел и обратный код полученного ответа.
|