Сегодня мы с
вами, уважаемые подписчики, приступаем к изучению разветвляющихся
алгоритмических структур.
Обычные
линейные алгоритмы даже в принципе не могут обеспечить реализацию всего
многообразия особенностей решаемых задач. Основная причина этого состоит в том,
что в них отсутствуют средства управления процессом вычислений в зависимости от
результатов проверки тех или иных условий.
ПОСТРОЕНИЕ РАЗВЕТВЛЕНИЙ СРЕДСТВАМИ АЯ
1. Общие понятия об алгоритмических структурах.
Первоначальные сведения на эту тему были кратко представлены ещё при
изучении основных понятий алгоритмизации и программирования (см. о
разновидностях алгоритмов в материалах занятия 2).
В общем случае алгоритмической структурой называетсясовокупность
обрабатываемых данных, элементарных операций по обработке и правил их
применения.
Традиционно различают три вида алгоритмических структур: линейные,
разветвляющиеся и циклические.
Линейная алгоритмическая структура – это такая, в которой обработка данных ведётся
посредством однократного выполнения каждой из составляющих элементарных
опреций.
Такими структурами мы с вами, уважаемые подписчики, занимались
достаточно долго и подробно, начиная с основных определений и правил (см.
материалы занятий 7 и 8) и заканчивая построением алгоритмов решения конкретных
задач (см. материалы занятий 13, 14, 16, 17, 18 и 19) и их реализацией в виде
программ на Паскале (см. материалы занятия 12).
Разветвляющаяся алгоритмическая структура – эта такая, в которой для обработки данных
выбирается только одна из нескольких групп составляющих элементарных операций в
зависимости от тех или иных условий.
Основные свойства
разветвляющейся алгоритмической структуры таковы:
-В результате проверки одного условия может быть
выбрана одна из двух групп элементарных операций.
-Выбор может осуществляться между выполнением и
невыполнением некоторой группы элементарных операций. В этом случае считается,
что альтернативная группа элементарных операций пуста.
-В качестве альтернативной группы элементарных
операций может использоваться другая разветвляющаяся алгоритмическая структура.
Так образуется множественное ветвление.
Циклические алгоритмические структуры мы с вами рассмотрим позже.
В соответствии с вышеизложенным разветвляющиеся алгоритмы распределяют
на две основные
группы: алгоритмы с двойным ветвлением и алгоритмы с множественным
ветвлением.
Для построения разветвлений в АЯ предусмотрено два вида команд: команда ветвления
и команда
выбора. Обе эти команды относятся к числу структурных, так как содержат в
своём составе другие команды, а также условия, определяющие порядок их выполнения
(см. материалы занятия 4).
Определённые отличия между этими командами обуславливают
целесообразность использования той или иной из них в зависимости от
особенностей решаемой задачи:
-команда ветвления более
удобна и понятна в записи, но может быть рекомендована только для построения
двойного ветвления;
-команда выбора
универсальна, то есть позволяет реализовать множественное ветвление, но не
очень удобна в записи.
Иными словами говоря, использование той или иной из этих команд
обусловлено лишь удобством записи алгоритма. В принципе же, в любом алгоритме
команда ветвления может быть использована вместо команды выбора, и наоборот,
команда выбора – вместо команды ветвления. Но при этом всегда нужно иметь в виду следующее:
-Использование команды ветвления вместо команды
выбора при построениимножественных
ветвлений приводит к необходимости образования, так называемых, вложенных
ветвлений. Вложенные ветвления чрезвычайно сложно читать и анализировать, при
их записи весьма легко ошибиться.
-Использование команды выбора вместо команды
ветвления для построения двойных ветвлений приводит к неуклюжей записи.
2. Команда ветвления АЯ.
Команда ветвления АЯ имеет две формы записи – полную и сокращённую.
Команда ветвления
в полной форме содержит две группы команд, из которых выбирается
для выполнения только одна в зависимости от указанного условия. Общий вид
команды следующий:
если <условие> то <серия_1> иначе <серия_2>
Команда ветвления
в сокращённой форме содержит одну группу команд, которая может выполняться
или не выполняться в зависимости от указанного условия. Общий вид команды
следующий:
если <условие> то <серия_1>
Ступенчатая запись
команд ветвления предпочтительнее для более лёгкого их прочтения. Однако,
допустима и строчная запись этих команд:
если <условие> то <серия_1> иначе <серия_2> если <условие> то <серия_1>
В этих командах
появились три новых служебных слова: если,
то, иначе. Эти слова несут очевидную смысловую нагрузку,
известную нам по жизненному опыту. Наверняка, многим из вас приходилось слышать
такой совет: “если
идёт дождь то поезжай в
школу на автобусе иначе иди
пешком”. В составе команды эти слова имеют и синтаксическую нагрузку, состоящую
в том, что после слова если
должно быть обязательно указано <условие>, после которого должно идти
слово то; в свою очередь,
после слова то должна быть
записана <серия_1> и т. д.
<Серия_1> и <серия_2>
в команде ветвления в полной форме представляют группы команд, из которых
делается выбор для выполнения. При этом <серию_1> называют основной, а <серию_2>
– альтернативной. В команде ветвления в сокращённой форме альтернативная серия
вместе со служебным словом иначе
отсутствует. Поэтому можно сказать, что в ней делается выбор между выполнением
и невыполнением <серии_1>.
Напомню, что серией
называют последовательность нескольких команд алгоритма, начало и конец которой
отмечены служебными словами нс
и кс. При этом серию можно
рассматривать как единую составную команду (см. материалы занятия 3).
<Условие> команды
ветвления представляет собой логическое выражение, значение которого, как
известно, может быть истинным или ложным (см. материалы занятия 15).
Правило выполнения команды ветвления в полной
форме:
-в
первую очередь вычисляется логическое выражение (проверяется <условие>);
-если
значение выражения оказалось истинным ( ДА ), то выполняются команды <серии_1>, а команды
<серии_2> пропускаются;
-в
противном случае, если значение выражения оказалось ложным ( НЕТ ), то выполняются
команды <серии_2>, а команды <серии_1> пропускаются.
Правило выполнения команды ветвления в
сокращённой форме:
-в
первую очередь вычисляется логическое выражение (проверяется <условие>);
-если
значение выражения оказалось истинным ( ДА ), то выполняются команды <серии_1>;
-в
противном случае, если значение выражения оказалось ложным ( НЕТ ), то команды <серии_1>
пропускаются.
Отметим ряд особенностей в
записи команд ветвления:
-серия
команды ветвления может содержать неограниченное количество любых команд;
-серия
команды ветвления может быть пустой, то есть не содержать ни одной команды;
-если
серия состоит из одной команды или пуста, то отмечать её служебными словами нс и кс не обязательно.
Используя понятие пустой
серии, можно утверждать, что по своему смыслу команды ветвления в полной и
сокращённой формах совпадают в том случае, если <серия_2> пуста.
Определённые проблемы с
прочтением и выполнением команд существуют при использования вложенных
ветвлений. Обе формы команды допускают инвертирование своих <условий>. Обязательно
изучите весь указанный материал в разделе 7.2 по ссылке http://a-morgun.narod.ru/a06-01/Glava_07.pdf.
3. Команда выбора АЯ.
Команда выбора, так же
как и команда ветвления, имеет две формы записи – полную и сокращённую.
Команда выбора в
полной форме
Команда выбора в
сокращённой форме
выбор при <условие_1>: <серия_1> при <условие_2>: <серия_2> .................................................. при <условие_N>: <серия_N> иначе <серия> кв
выбор при <условие_1>: <серия_1> при
<условие_2>: <серия_2>
.................................................. при
<условие_N>: <серия_N> кв
Основные свойства и особенности команды выбора таковы:
-В
общем случае команда выбора позволяет реализовать множественное ветвление, то
есть осуществить выбор для выполнения одной из N +1
групп команд.
-Все
Nосновных ветвей команды выбора начинаются со
служебного слова при, после
которого сначала указывается <условие_*> выбора <серии_*>, а затем, через
двоеточие, и сама <серия_*>.
-Альтернативная
ветвь команды выбора в полной форме начинается со служебного слова иначе и содержит N +1-
ую<серию>.
-Служебное
слово кв означает конец
команды выбора.
-Каждое
<условие_*>
команды выбора представляет собой определённое логическое выражение, которое
может быть истинным или ложным.
-Любая
серия команды выбора может содержать неограниченное количество произвольных
команд.
-Любая
серия команды выбора может быть пустой.
-Если
серия состоит из одной команды или пуста, то отмечать её служебными словами нс и кс не обязательно.
Правило выполнения команды выбора в полной форме состоит в следующем:
-осуществляется
последовательное вычисление логических выражений (проверка <условий_*>) в основных ветвях;
-как
только встретилось логическое выражение, имеющее истинное значение, то выполняются
команды соответствующей основной серии;
-если
были выполнены команды какой-то из основных серий, то команда выбора считается выполненной
в целом и все последующие условия и серии пропускаются;
-если
не нашлось логического выражения, имеющего истинное значение, и ни одна из
основных серий не была выполнена, то выполняется <серия> из
альтернативной ветви, указанная после служебного слова иначе.
Таким образом
осуществляется выбор для исполнения одной из N +1
серий команды выбора.
Правило выполнения команды выбора в сокращённой
форме
отличается лишь тем, что в случае необнаружения логического выражения, имеющего
истинное значение, не будет выполнено ни одной серии.
Уважаемые подписчики! На очереди изучение аналогичного материала в языке Паскаль.
Уважаемые подписчики!При
необходимости задать вопрос, проконсультироваться, уточнить или обсудить
что-либо обращайтесь через Гостевую
книгу моего персонального сайта http://a-morgun.narod.ru