Какие есть формы ветвления выберите два верных ответа
Перейти к содержимому

Какие есть формы ветвления выберите два верных ответа

  • автор:

2. Ветвление

Ветвление — алгоритмическая конструкция, при выполнении которой в зависимости от проверки условия («да» или «нет»), можно выбрать одну из двух последовательностей.

Алгоритмы с конструкцией «ветвление» называются разветвляющимися .

Общий вид (блок-схема).

Screenshot_7.png

Общий вид (алгоритмический язык).

в3.png

Неполная форма ветвления.

Общий вид (блок-схема).

Screenshot_8.png

Общий вид (алгоритмический язык).

2. Ветвление

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

Каждый путь называется ветвью алгоритма .

Существует полное и неполное ветвление.

Рис1.png

Рис2.png

Программный код в Pascal и Python

Язык программирования Pascal

Полное ветвление

Неполное ветвление

if then

else

if then

Язык программирования Python

Полное ветвление

Неполное ветвление

if :

else:

if :

Алгоритмическая структура «Выбор»

В алгоритмической структуре «Выбор» выполняется одна из нескольких последовательностей команд при истинности соответствующего условия.
Существуют следующие алгоритмические структуры «Выбор».

Рис3.png

Рис4.png

Рис. \(3\). Структура «Выбор»

Рис. \(4\). Структура Case

Программный код в Pascal и Python

§ 12. Алгоритмическая конструкция ветвление

Довольно часто на поставленный вопрос человек получает ответ «да» или «нет». В зависимости от ответа он определяет свои действия и выполняет одну или другую команду (группу команд).

Роботы и другие технические устройства тоже могут выполнять различные действия в зависимости от условия. Если условие истинно (на вопрос получен ответ «Да»), то выполняются одни действия, если ложно, то другие.

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

Ветвление может изображаться на блок-схеме следующим образом:

В данной конструкции в прямоугольнике(ах) записываются команды алгоритма. При такой организации алгоритма может выполниться только одна из двух команд (последовательностей команд). Другая последовательность будет проигнорирована (пример 12.1).

Для записи конструкции ветвления в языке программирования Pascal используется команда if . Формат записи команды:

if условие > then

Строка 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

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

Отрицанием условия FreeFromLeft будет условие not FreeFromLeft . Однако условие «слева не свободно» означает, что там стена. Поэтому вместо условия not FreeFromLeft может быть использовано условие WallFromLeft . Отрицания для других условий показаны в таблице:

Понятие ветвления используется в различных сферах человеческой деятельности.

В ботанике под ветвлением побегов понимают процесс образования боковых побегов у растений.

При употреблении термина в переносном смысле под ветвлением понимают наличие нескольких путей, направлений, сюжетных линий и т. д.

Ветвления используются в дорожной разметке и картографии.

Пример 12.1. Выбор обуви весной, в зависимости от погоды:

Если на улице дождь, то

надеть резиновые сапоги

В данном примере в текущий момент времени может быть выполнена только одна команда из двух: или надеть сапоги, или надеть туфли.

Блок-схема данного алгоритма будет выглядеть следующим образом:

Пример 12.2. Выход на улицу осенью.

Если на улице дождь, то

В данном примере используется сокращенная форма команды ветвления. Если условие выполнено, то выполняется команда «взять зонт». Если условие ложное, то никаких действий не происходит. Команда «выйти на улицу» выполняется всегда независимо от истинности или ложности условия.

Блок-схема данного алгоритма будет выглядеть следующим образом:

Пример 12.3. Имеется три монеты, среди которых одна фальшивая. Известно, что фальшивая монета легче настоящих монет. Требуется найти фальшивую монету за минимальное число взвешиваний на чашечных весах без гирь.

Представим словесное описание алгоритма решения этой задачи.

Положить на каждую чашу весов монеты 1 и 2

Если весы в равновесии, то

фальшивая монета 3

Если монета 1 тяжелее, то

фальшивая монета 2

фальшивая монета 1

Пример 12.4. Одна из возможных начальных обстановок:

Другая возможная начальная обстановка:

Программа для исполнителя Робот:

Delphi/Pascal
uses Robot ;
if FreeFromUp then
up ; right ; down ;
down ; right ; up ;

Пример 12.5. Программа для исполнителя Робот:

Delphi/Pascal
uses Robot , RobTasks ;
Task ( ‘ myrob9 ’ ) ;
If FreeFromLeft then
left ; paint ;

Результаты работы программы для разных начальных обстановок:

Начальная
обстановка
Результат

Пример 12.6. Рассмотрим начальную обстановку поля Робота:

Проверим для Робота следующие составные условия:

  1. WallFromLeft and CellIsPainted .
  2. WallFromUp or WallFromDown .
  3. Not (WallFromRight or FreeFromUp) .

Первое условие состоит из двух простых: WallFromLeft (условие А ) и CellIsPainted (условие В ). Условие может быть записано как « А И В ». Это условие верно только тогда, когда верны и А , и В . Условие А — WallFromLeft — истинно, условие В — CellIsPainted — истинно, условие А И В — истинно.

Второе условие может быть записано как « А ИЛИ В », где А — WallFromUp , В — WallFromDown . Условие А — истинно, условие В — ложно. Значит, условие « А ИЛИ В » — истинно.

В третьем условии частица Not отрицает составное условие or WallFromRight FreeFromUp . Условие может быть записано как НЕА ИЛИ В »). Для того чтобы определить, истинно или ложно это условие, нужно сначала определить истинность условия « А ИЛИ В ». Условие А — ложно, условие В тоже ложно. Поэтому ложным будет и условие « А ИЛИ В », но тогда условие НЕ « А ИЛИ В » будет истинным.

1 Что такое алгоритмическая конструкция ветвление?

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

2 Что такое составное условие?

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

3 Какие логические операции можно использовать для записи составных условий?

Упражнения

  1. 1 Выделите конструкцию ветвления в отрывке из поэмы А. С. Пушкина «Руслан и Людмила» и изобразите ее с помощью блок-схемы.

У лукоморья дуб зеленый;

Златая цепь на дубе том:

И днем и ночью кот ученый

Все ходит по цепи кругом;

Идет направо — песнь заводит,

Налево — сказку говорит.

Там чудеса: там леший бродит,

Русалка на ветвях сидит… 1

1 Пушкин, А. С. Руслан и Людмила : поэма. — М. : Изд. Дом «Прибой». — 1996. — С. 5.

  1. 2 Для заданной обстановки поля Робота определите, какие из составных условий истинны, а какие ложны.

3* В задании 2 замените условия, содержащие not , соответствующими условиями без использования отрицания.

4 Для каждого из ложных условий задания 2 придумайте обстановку, в которой данное условие будет верным, а для каждого истинного — обстановку, в которой условие будет ложным.

  1. Решите задачи if 2 и if 3 из встроенного задачника.

Ветвление. Условный оператор

Ход выполнения программы может быть линейным, то есть таким, когда выражения выполняются друг за другом, начиная с первого и заканчивая последним. Ни одна строка кода программы не пропускается.

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

Проведем аналогию с реальностью. Человек живет по расписанию. Можно сказать, расписание – это алгоритм для человека, его программный код, подлежащий выполнению. В расписании на 18.00 стоит поход в бассейн. Однако экземпляр биоробота класса Homo sapiens через свои рецепторы-сенсоры получает информацию, что воду из бассейна слили. Разумно было бы отменить занятие по плаванию, то есть изменить ход выполнения программы-расписания. Одним из условий посещения бассейна должно быть его функционирование, иначе должны выполняться другие действия.

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

if логическое_выражение

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

Конструкция if логическое_выражение называется заголовком условного оператора. Выражения внутри фигурных скобок – телом условного оператора. Тело может содержать как множество выражений, так и всего одно.

Пример использования условного оператора в языке программирования Python:

if n  100: a = a + b

В Питоне вместо фигурных скобок используется двоеточие. Обособление вложенного кода, то есть тела оператора, достигается за счет отступов. В программировании принято делать отступ равным четырем пробелам. Можно использовать клавишу табуляции ( Tab ) на клавиатуре.

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

Инструкция if в интерпретаторе Python: отступы

Нахождение в теле условного оператора здесь обозначается тремя точками. При создании файла со скриптом таких точек быть не должно, как и приглашения >>> .

Python считается языком с ясным синтаксисом и легко читаемым кодом. Это достигается сведением к минимуму таких вспомогательных элементов как различные скобки и точка с запятой. Для разделения выражений используется переход на новую строку, а для обозначения вложенных выражений – отступы от начала строки. В других языках данный стиль программирования также используется, но лишь для удобочитаемости кода человеком. В Питоне же такой стиль возведен в ранг синтаксического правила.

Данный пример вырван из контекста и сам по-себе не является рабочим. Полная версия программы могла бы выглядеть так:

a = 50 b = 10 n = 98 if n  100: a = a + b print(a)

Последняя строчка кода print(a) уже не относится к условному оператору, что обозначено отсутствием перед ней отступа. Она не является вложенной в условный оператор, значит, не принадлежит ему.

Поскольку переменная n равна 98, а это меньше 100, то a станет равной 60. Это значение будет выведено на экран. Если переменная n изначально была бы связана, например, со значением 101, то на экран было бы выведено 50. Потому что при n , равной 101, логическое выражение в заголовке условного оператора вернуло бы ложь. Значит, тело не было бы выполнено, и переменная a не изменилась бы.

Структуру программы можно изобразить следующим образом:

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

Для небольших программ иногда чертят так называемые блок-схемы, отражающие алгоритм выполнения. В языке блок-схем различные части кода обозначаются своими фигурами. Так блоку последовательно выполняемых действий соответствует прямоугольник, ветвлению – ромб. Для кода выше блок-схема может выглядеть так:

Блок-схема оператора if

Условный оператор может включать не одну ветку, а две, реализуя тем самым полноценное ветвление.

Блок-схема конструкции if-else

В случае возврата логическим выражением False поток выполнения программы не возвращается сразу в основную ветку. На случай False существует другой вложенный код, отличный от случая True . Другими словами, встретившись с расширенной версией условного оператора, поток выполнения программы не вернется в основную ветку, не выполнив хоть какой-нибудь вложенный код.

В языках программирования разделение на две ветви достигается с помощью добавления блока else, получается так называемое if–else (если-иначе). Синтаксис выглядит примерно так:

if логическое_выражение < выражение 1; выражение 2; … >else

Если условие при инструкции if оказывается ложным, то выполняется блок кода при инструкции else . Ситуация, при которой бы выполнились обе ветви, невозможна. Либо код, принадлежащий if , либо код, принадлежащий еlse . Никак иначе. В заголовке else никогда не бывает логического выражения.

Пример программы с веткой else на языке Python:

tovar1 = 50 tovar2 = 32 if tovar1 + tovar2 > 99: print("99 рублей недостаточно") else: print("Чек оплачен") 

Следует иметь в виду, что логическое выражение при if может выглядеть нестандартно, то есть не так просто, как a > b и тому подобное. Там может стоять просто одна переменная, число, слово True или False , а также сложное логическое выражение, когда два простых соединяются через логически and или or .

a = ? if a: a = 1

Если вместо знака вопроса будет стоять 0, то с логической точки зрения это False , значит выражение в if не будет выполнено. Если a будет связано с любым другим числом, то оно будет расцениваться как True , и тело условного оператора выполнится. Другой пример:

a = 5 > 0 if a: print(a)

Здесь a уже связана с булевым значением. В данном случае это True . Отметим, что в выражении a = 5 > 0 присваивание выполняется после оператора сравнения, так что подвыражение 5 > 0 выполнится первым, после чего его результат будет присвоен переменной a . На будущее, если вы сомневаетесь в последовательности выполнения операторов, используйте скобки, например так: a = (5 > 0) .

if a > 0 and a  b: print(b - a)

Тут, чтобы вложенный код выполнился, a должно быть больше нуля и одновременно меньше b . Также в Питоне, в отличие от других языков программирования, позволительна такая сокращенная запись сложного логического выражения:

if 0  a  b: print(b - a)

Практическая работа

  1. Напишите программу, которая просит пользователя что-нибудь ввести с клавиатуры. Если он вводит какие-нибудь данные, то на экране должно выводиться сообщение «ОК». Если он не вводит данные, а просто нажимает Enter , то программа ничего не выводит на экран.
  2. Напишите программу, которая запрашивает у пользователя число. Если оно больше нуля, то в ответ на экран выводится число 1. Если введенное число не является положительным, то на экран должно выводиться -1.

Примеры решения и дополнительные уроки в pdf-версии курса

X Скрыть Наверх

Python. Введение в программирование

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *