Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Главный маршрут силуэта

Читайте также:
  1. I Западная вершина по центру северо-западной стены, маршрут 6 к/тр. (Шрамко Г., Божуков В., Ванин В., Гаврилов Г., Маркелов В., Петров М. — 1971 г.).
  2. Mеждународные маршруты
  3. Авиценна с северо-запада по гребню, маршрут 26 к/тр.
  4. Анализ себестоимости маршрута
  5. Бабр с северо-запада, маршрут 16 к/тр.
  6. В крупную строительную компанию требуется Главный специалист в отдел экологической и промышленной безопасности.
  7. В чем суть исторической версии и о какой части маршрута идет спор?

В этом параграфе мы продолжим изучение веточных циклов и попытаемся ответить на вопрос: как найти главный маршрут веточного цикла? Для этого нужно проанализировать понятие “главный маршрут силуэта” (рис. 54).

Линейный (неразветвленный) силуэт имеет один-единственный маршрут, который и является главным. Он проходит по шампурам всех веток и по всем иконам силуэта (рис. 54 а).

 
 

Формула маршрута для силуэта имеет особенность: одноименные иконы “адрес” и “имя ветки” обозначаются одной буквой, которая повторяется в формуле дважды. Например, силуэт на рис. 54 а имеет формулу

 

где парные буквы обозначают переход с первой ветки на вторую (СС) и со второй на третью (DD).

Ветка называется одноадресной, если она имеет одну икону “адрес”. Если все ветки одноадресные, силуэт считается одноадресным.

Линейный силуэт всегда одноадресный. Однако одноадресный силуэт может быть и разветвленным. В последнем случае его главный маршрут следует по шампурам всех веток, однако он не проходит по всем иконам (рис. 54 б).

Если хотя бы одна ветка имеет более одного адреса, может сложиться ситуация, когда какие-то ветки не попадают на главный маршрут. На рис. 54 в икона-адрес D лежит на побочном маршруте. Это приводит к тому, что ветка D также оказывается на побочном маршруте. В результате главный маршрут проходит по шампурам всех веток, кроме ветки D (рис. 54 в).

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

! одноветочные (если цикл помещается в одной ветке);

! двухветочные (если цикл занимает две ветки);

! трехветочные (цикл в трех ветках)

и т. д.

 
 

Как работает одноветочный цикл? Предположим, до начала выполнения цикла на рис. 54 г имеют место условия

 
 

Предположим также, что веточный цикл выполняется два раза, после чего условие Е принимает значение “нет”. Это значит, что при третьем проходе по ветке В произойдет выход из цикла по пути “ Е нет С ”. В такой ситуации формула главного маршрута для силуэта на рис. 54 г принимает вид:

Как выглядит главный маршрут на дракон-схеме? Ответ изображен жирной линией на рис. 54 г. Мы видим, что главный маршрут как бы разветвляется в иконе Е и проходит через оба ее выхода. Разумеется, это условность, которая означает следующее. Сначала (когда Е = да) главный маршрут идет по шампуру, затем (когда выполняется условие окончания цикла Е = нет) главный маршрут проходит через правый выход иконы Е.

Чтобы построить одноветочный цикл, нужно в левой иконе “адрес” записать Х, где Х — имя данной ветки. Для выхода из цикла следует добавить вторую икону “адрес” и записать в ней Y, где Y — имя следующей (по порядку исполнения) ветки.

Если в веточном цикле слишком много икон, он может не поместиться в одной ветке. К счастью, его можно разделить на части. Например, веточный цикл на рис. 54 д содержит пять икон: Е, F, G, H, R (иконы “имя ветки” и “адрес” не в счет). Поместим иконы Е и F в ветку В, а иконы G, H, R — в ветку С. В результате цикл станет двухветочным. Главный маршрут силуэта с двухветочным циклом имеет разветвление в иконе R. Условие R = да позволяет вернуться к началу цикла. Если R = нет, главный маршрут ведет нас к концу алгоритма (рис. 54 д).

Таким образом, двухветочный цикл — это цикл, содержащий две ветки Х и Y, причем в ветке Х имеется икона-адрес Y, а в ветке Y — икона-адрес Х.

На рис. 54 е представлена ситуация “цикл в цикле”: веточный цикл С находится внутри веточного цикла В. Из рисунка видно, что в этом случае главный маршрут “разветвляется” дважды: в иконах R и J.

 
 

Если выполняется условие R = да, происходит повторение внутреннего цикла С. При сочетании условий производится выход из цикла С и повторение внешнего цикла В. Наконец, сочетание условий означает, что выполнение цикла В и алгоритма в целом заканчивается.

Выводы

1. В различных текстовых языках при описании циклов применяются разные наборы ключевых слов, имеющих к тому же разную семантику. Неразбериху усугубляют отличия в логике окончания цикла. Например, в языке Си для циклов while и do-while условие окончания цикла соответствует значению false или 0, условие продолжения — значению true или 1. В языке Паскаль картина иная: в цикле while-do выход из цикла соответствует значению false, а в цикле repeat-until по каким-то загадочным причинам применяется диаметрально противоположный принцип: выход из цикла производится, когда логическое выражение принимает значение true. Все эти путаные правила программист обязан знать и неукоснительно выполнять.

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

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

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

5. Визуализация циклов — весьма полезный инструмент, так как сложные вложенные циклы со многими выходами часто бывают источником трудных ошибок. Многие из них возникают из-за путаницы, связанной с устаревшей привычкой описывать циклы словами. Сегодня никто не пытается заменить конструкторские и строительные чертежи словесными описаниями. По мнению автора, текстовая форма записи циклов во многих случаях является таким же анахронизмом, как словесное описание механического чертежа или электрической схемы.

 


Дата добавления: 2015-08-21; просмотров: 91 | Нарушение авторских прав


Читайте в этой же книге: Возможна ли стретегическая реформа мировой практики программирования | Зачем нужна ветка? | Что такое шапка? | Пересечения линий? — БОЖЕ УПАСИ! | Семейство Дракон-языков | Чем отличается икона “Вопрос” от развилки? | Что такое рокировка? | Эргономичность литеральных алгоритмов | Что такое подстановка? | Улучшение эргономичности алгоритмов с помощью цепочки эквивалентных преобразований |
<== предыдущая страница | следующая страница ==>
Обычный цикл| Визуализация функции И

mybiblioteka.su - 2015-2024 год. (0.008 сек.)