КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Ветвление программы
Создание управляющих структур В главе 1 рассмотрен ветвящийся алгоритм, предусматривающий наличие нескольких альтернативных путей с выбором одного из них на основании значения некоторого логического выражения (см. рис. 1.9,б,в). Для реализации ветвлений используются структуры if-then, if-then-else, if-end if, select case – end select, on – goto и on – gosub. Структуры if-then, if-then-else используются для создания сходящихся и не сходящихся ветвлений и называются условными операторами. Формат операторов имеет следующий вид: If < логическое выражение > then < действие> или If < логическое выражение > then < действие_1> else < действие_2> Слово "действие" обозначает список операторов, написанных в одну строку и разделенных двоеточием. Например, if a=10 then b=100: c=20 else d=20. Если логическое выражение имеет значение true, то выполняется единственное значение в первом операторе и действие_1 во втором. В противном случае первый оператор не производит никаких действий, во втором – выполняется действие_2. Использование в логических операторах команды передачи управления goto МЕТКА [5] позволяет создать не сходящееся ветвление, при котором альтернативные пути не сходятся в одну точку. Этот оператор может входить в единственное "действие" первого оператора, а также в действие_1 и в действие_2 второго. [6] Существенным ограничением условных операторов является необходимость записи в одну строку операторов, выполняющих действия. Конечно, существуют символы переноса строк программы, но в каждом диалекте языка эти символы свои и запоминать их не имеет смысла. Кроме того, при достаточно сложных логических выражениях или наличии логических выражений в "действиях" значительно сокращается "жизненное пространство" операторов, реализующих альтернативные пути алгоритма. Построение сложных условий управления выбором ветвей в этих операторах возможно, но не наглядно и трудно обозримо. От этого недостатка свободны остальные четыре из перечисленных структур. Операторы if – end if называются "блочным if" и образуют структуру, имеющую следующий формат операторов, приведенный на рис. 4.8.
Легко сообразить, что действия, перечисленные в блочном if, выполняются только при истинности соответствующих логических выражений. Сами действия могут быть записаны во множествах строк, что очень удобно. Структура select case – end select обеспечивает получение ветвящегося не сходящегося алгоритма с выбором одного из альтернативных путей в зависимости от значения вычисляемого выражения. Получающаяся структура и пример ее реализации приведены на рис. 4.9. При попадании значения вычисляемого выражения в список выполняются соответствующие действия. Если значение выражения не попадает ни в один список, то выполняется действия, стоящие после оператора else.
Количество операторов elseif в "блочном if" и операторов "case" в структуре select case – end select произвольно, а оператор else в обеих структурах не обязателен. Принудительный выход из обеих структур осуществляется операторами exit if и exit select, но не оператором goto. Предупреждение! Возможность многострочной записи операторов в структурах "if-end if" и "select-end select" создает соблазн ставить метки внутри групп операторов, выполняющих действия, и переходить внутрь структуры, минуя ее заголовок (if или select), или переходить из одной группы операторов в другую. Этого делать ни в коем случае не следует, т.к. компилятор пропустит эту неточность, а при выполнении программы, особенно многократном, может возникнуть переполнение сегмента стека адресов возврата ([5, стр. 44]). Структуры on – goto и on – gosub реализуют ветвящийся алгоритм по значению вычисляемого выражения, имеющего значение целого типа, на основе фрагментов программы с метками. Первую структуру следует применять для реализации не сходящегося ветвления, вторую – для сходящегося. Общий вид структур и примеров их применения приведен на
Вычисляемое выражение определяет номер метки в списке. Если значение выражения равно нулю или превышает число меток, то операторы
Дата добавления: 2014-11-29; Просмотров: 622; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |