что такое алгоритм с ветвлением
Информатика. 7 класс
Электронное приложение к учебному пособию
Напишите нам
белый — основные материалы, обязательные для изучения;
голубой — примеры, иллюстрирующие основные материалы;
желтый — определения основных понятий;
светло-зеленый — исторические сведения, информация об ученых, внесших вклад в развитие информатики, и другие интересные факты.
В учебном пособии используются следующие условные обозначения:
— вопросы и задания для проверки знаний;
— раздел «Упражнения» содержит задания, при выполнении которых используется компьютер;
— раздел «Упражнения» содержит задания для выполнения в тетради;
— раздел «Упражнения» содержит задания, при выполнении которых может быть использована информация, размещенная на Национальном образовательном портале;
* — задание или пример для любознательных.
§ 12. Алгоритмическая конструкция ветвление
12.1. Команда ветвления
Довольно часто на поставленный вопрос человек получает ответ «да» или «нет». В зависимости от ответа он определяет свои действия и выполняет одну или другую команду (группу команд).
Роботы и другие технические устройства тоже могут выполнять различные действия в зависимости от условия. Если условие истинно (на вопрос получен ответ «Да»), то выполняются одни действия, если ложно, то другие.
Алгоритмическая конструкция ветвление обеспечивает выполнение одной или другой последовательности команд в зависимости от истинности или ложности некоторого условия.
Ветвление может изображаться на блок-схеме следующим образом:
В данной конструкции в прямоугольнике(ах) записываются команды алгоритма. При такой организации алгоритма может выполниться только одна из двух команд (последовательностей команд). Другая последовательность будет проигнорирована (пример 12.1).
Строка if условие > then является заголовком ветвления. Эту строку можно прочитать следующим образом: «Если условие верно, то». После слова then записывается последовательность команд 1, которая выполнится, если условие истинно. После слова else записывается последовательность команд 2, которая выполнится, если условие ложно. Слова begin и end; в данном случае играют роль операторных скобок. Обратите внимание, что перед словом else точка с запятой не ставится.
Ветвление может быть записано в полной или сокращенной форме.
Полная форма ветвления предусматривает организацию выполнения двух разных наборов команд, из которых выполняется только один. В сокращенной форме один из наборов команд (чаще по ответу «Нет») опускается. В этом случае, если условие ложное, то никакие действия не выполняются.
На блок-схеме сокращенная форма ветвления изображается следующим образом:
На языке программирования Pascal команда запишется следующим образом:
Алгоритм может содержать более одной конструкции ветвления (пример 12.3).
Пример 12.4. Решим задачу if 1 из встроенного задачника.
Робот должен закрасить клетку, которая находится за стеной. В зависимости от обстановки обход стены может осуществляться по-разному.
Вначале Робот должен сдвинуться вправо. Если стена снизу, то сверху свободно и можно обойти стену сверху, в противном случае Робот обходит стену снизу.
После обхода стены Робот закрашивает клетку. Алгоритм можно записать следующим образом:
Если сверху свободно, то
Пример 12.5. Робот находится на неизвестной клетке поля без линий. Он должен закрасить клетку слева от себя.
Для того чтобы закрасить клетку слева от себя, Робот должен переместиться влево, а затем закрасить клетку. Однако сделать это Робот сможет только тогда, когда не находится в клетках, являющихся левой границей поля. Поэтому, прежде чем сдвинуться влево, Робот должен проверить, свободно ли слева.
Результат работы данной программы зависит от начального положения Робота. Поэтому для проверки правильности работы программы необходимо подготовить начальные обстановки, которые дают разные ответы на вопрос: слева пусто?
12.2. Составные условия
В качестве условия в алгоритмах с циклами и ветвлениями используется любое понятное исполнителю этого алгоритма высказывание, которое может быть либо истинным, либо ложным.
Все условия, с которыми нам приходилось до сих пор встречаться при составлении алгоритмов для Робота, были простыми высказываниями. Однако для исполнителя Робот можно строить и составные условия.
Составное условие — условие, которое образуется из нескольких простых условий, соединенных друг с другом логическими операциями.
С логическими операциями над высказываниями вы уже знакомы. В PascalABC используются следующие логические операции:
Логическая операция | Запись в PascalABC |
Не | Not |
И | And |
Или | Or |
Система условий для исполнителя Робот построена таким образом, что можно обойтись без использования логической операции отрицания.
Что такое алгоритм с ветвлением
Блок-схема алгоритмической структуры ветвления может быть представлена в двух формах: полной и неполной (рис. 1.19).
Рис. 3.6. Алгоритм выбора большего из двух чисел (с полным ветвлением) |
Нетрудно понять смысл этого алгоритма. Если значение переменной А больше, чем В, то переменной С присвоится значение А. В противном случае, когда А В. Изучая базы данных и электронные таблицы, вы узнали, что такое отношение является логическим выражением. Если оно справедливо, то результатом будет логическая величина «истина» и выполнение алгоритма продолжится по ветви «да»; в противном случае логическое выражение примет значение «ложь» и выполнение алгоритма пойдет по ветви «нет».
До выполнения на компьютере правильность алгоритма можно проверить путем заполнения трассировочной таблицы. Вот как будет выглядеть трассировка нашего алгоритма для исходных значений А = 5, В = 8.
Шаг | Операция | А | В | С | Проверка условия |
1 | ввод А, В | 5 | 8 | ||
2 | А>В | 5 | 8 | 5 > 8, нет (ложь) | |
3 | С:=В | 5 | 8 | 8 | |
4 | вывод С | 5 | 8 | 8 |
Ветвление является структурной командой. Его исполнение происходит в несколько шагов: проверка условия (выполнение логического выражения) и выполнение команд на одной из ветвей «да» или «нет». Поэтому в трассировочной таблице записываются не команды алгоритма, а отдельные операции, выполняемые компьютером на каждом шаге.
В алгоритме на рис. 3.6 используется полное ветвление. Эту же самую задачу можно решить, применяя структурную команду неполного ветвления. Блок-схема такого алгоритма изображена на рис. 3.7.
Рис. 3.7. Алгоритм выбора большего из двух значений (с неполным ветвлением) |
Выполните самостоятельно трассировку этого алгоритма для вариантов 1) А = 0,2, В = 0,3; 2) А = 7, В = 4; 3) А = 5, В = 5. Если вы все проделаете правильно, то убедитесь, что алгоритм верный.
А теперь запишем рассмотренные алгоритмы на Алгоритмическом языке (АЯ). Во-первых, нужно решить вопрос о том, как описать переменные в этом алгоритме. Вспомним, что для всех переменных в алгоритме на Алгоритмическом языке необходимо указать их тип.
Как выглядит команда ветвления, вы уже знаете. Вот два алгоритма на АЯ, соответствующие блок-схемам на рис. 3.6 и 3.7:
алг БИД1 вещ А, В, С нач ввод А, В если А>В то С:=А иначе С:=В кв вывод С кон | алг БИД2 вещ А, В, С нач ввод А, В С:=А если В>А то С:=В кв вывод С кон |
Под сокращенным названием алгоритмов ВИД подразумевается «Большее из двух».
Для программирования характерно то, что одна и та же задача может быть решена с помощью разных алгоритмов. И чем сложнее задача, тем больше можно придумать различных алгоритмов ее решения. Для больших задач (производственных, научных) практически невозможно точное совпадение алгоритмов, составленных разными программистами.
Следующая задача: упорядочить значения двух переменных X и Y по возрастанию. Смысл этой задачи следующий: если для исходных значений переменных справедливо отношение X Y (например, X = 2, Y = 1), то выполнить обмен значениями.
Алгоритм обмена значениями двух переменных был рассмотрен в предыдущем параграфе. Вспомним, что для обмена нужна третья вспомогательная переменная.
В алгоритме решения данной задачи используется неполное ветвление. Приведем блок-схему (рис. 3.8) и алгоритм на АЯ.
алг СОРТИРОВКА
вещ X, Y, С
нач ввод X, Y
если X>Y
то С:=Х
Х:=Y
Y:=С
кв
вывод X, Y
кон
Здесь роль вспомогательной переменной для обмена выполняет С.
Сложные ветвящиеся алгоритмы
Получим алгоритм решения еще одной задачи: найти наибольшее значение среди трех величин: А, В, С.
Естественно, возникает следующая идея этого алгоритма: сначала нужно найти большее из значений АИВИ присвоить его какой-то дополнительной переменной, например D; затем найти большее среди D и С. Это значение можно присвоить той же переменной D.
алг БИТ1
вещ А, В, С, D
нач ввод А, B, С
если А>В
то D:=A
иначе D:=B
кв
если C>D
то D:=C
кв
вывод D
кон
Эту же задачу можно решить с помощью алгоритма, имеющего структуру вложенных ветвлений. Его блок-схема приведенная на рис. 3.10.
А вот как выглядят описание этого алгоритма на АЯ и трассировочная таблица при А = 5,В = 7,С = 2.
Шаг | Операция | А | В | С | D | Проверка условия |
1 | ввод А, В, С | 5 | 7 | 2 | — | |
2 | А>В | 5 | 7 | 2 | — | 5 > 7, нет |
3 | В>С | 5 | 7 | 2 | — | 7 > 2, да |
4 | D:=B | 5 | 7 | 2 | 7 | |
5 | вывод D | 5 | 7 | 2 | 7 |
1. Какую структуру имеет алгоритм нахождения большего из двух значений?
2. Почему отношение неравенства можно назвать логическим выражением?
4. Составьте алгоритм (в виде блок-схемы и на АЯ) нахождения меньшего из двух значений.
5. Составьте алгоритм нахождения наименьшего из трех значений.
6. Для вывода на экран произвольной символьной строки нужно в команде вывода записать эту строку в апострофах. Например, по команде
Определите, какая задача решается по следующему алгоритму: