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

В чем различие визуального и текстовго структурного программирования?

Читайте также:
  1. А в чем различие молодежной и бабушкиной "атмосфер"?
  2. А в чем различие?
  3. Возможна ли теория визуального программирования?
  4. Волшебная сила визуального контакта
  5. Вопрос 9. Охарактеризуйте различие трех основных типов туристской анимации в зависимости от важности, приоритетности и объема анимационных программ в общей программе путешествия.
  6. Вот в чем различие между силой-ли и силой-цзинь. Силу-ли используют в Шаолиньском боевом искусстве (шаолиньцюань 少林拳).

Структурные, лианные и адресные блоки

Шампур-метод позволяет строить как структурные, так и метаструктурные (лианные) программы. Выше мы выяснили, что базовые операции моделируют классическое структурное кодирование. Чтобы смоделировать полезные функции оператора goto, в шампур-методе предусмотрены операции “пересадка лианы” и “заземление лианы”.

Введем три понятия.

Структурный блок — шампур-блок, построенный только с помощью базовых операций, без использования действий с лианой.

Лианный блок — шампур-блок, полученный из структурного блока с помощью операции “пересадка лианы”.

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

В примитиве могут использоваться только структурные и лианные блоки (рис. 133, 134), в силуэте — все три типа блоков: структурные, лианные и адресные (рис. 135, 136)[24].

Операции с лианой и оператор goto

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

Чтобы убедиться в этом на примере, вернемся к анализу рис. 27. В гл. 7 мы рассмотрели эргономические преимущества схемы на рис. 27 б по сравнению с рис. 27 а. Было показано, что улучшение эргономич­ности достигнуто за счет использования равносильных преобразований алгоритмов: вертикального и горизонтального объединения. При этом за кадром осталась важная проблема — проблема синтаксиса: как построить указанные схемы? Теперь мы имеем возможность осветить этот вопрос. Схема на рис. 27 а представляет собой структурный блок, полученный с помощью операции “ввод атома”. В отличие от нее схема на рис. 27 б — это лианный блок, построенный методом пересадки лианы.

Уместно вспомнить предостережение Г. Майерса: “Правила структурного программирования часто предписывают повторять одинаковые фрагменты программы в разных участках модуля, чтобы избавиться от употребления операторов goto. В этом случае лекарство хуже болезни; дублирование резко увеличивает возможность внесения ошибок при изменении модуля в будущем” [4]. Как видно из рис. 26 и 27, пересадка лианы позволяет элегантно и без потерь решить эту непростую проблему, одновременно улучшая наглядность и понимаемость программы, обеспечивая более эффективное топологическое упорядочивание маршрутов.

Пересадка лианы узаконивает лишь некоторые, отнюдь не любые передачи управления, поскольку определение данной операции (см. гл. 15, тезис 28) содержит ряд ограничений. Запрет на образование нового цикла вызван тем, что переход на оператор, расположенный выше (раньше) в тексте программы, считается “наихудшим применением оператора goto ” [4]. Указанный запрет вводится, чтобы выполнить требование: использовать goto только для передачи управления вперед по программе, “которое некоторыми организациями принимается в качестве компромиссной версии структурного программирования”.

Запрет на образование второго входа в цикл соответствует требованию структурного кодирования, согласно которому цикл, как и любая простая программа, должен иметь не более одного входа. Лишь третий запрет является оригинальной особенностью шампур-метода: он запрещает передачи управления, изображение которых с помощью лианы ведет к пересечению линий. Таким образом, пересадка лианы разрешает только те переходы вниз по ДРАКОН-программе, которые образуют связи с валентными точками и изображаются легко прослеживаемыми маршрутами, т. е. непересекающимися линиями.

Является ли
текстовое структурное программирование
формальным методом?

Ортодоксальный метод Дейкстры, полностью запрещающий goto и заменители (см. с. 238, табл. 4, вариант 1), безусловно является строгим формальным методом. К сожалению, он полезен лишь как интересная теоретическая идея, которая, как показал всемирный опыт, в чистом виде оказалась непригодной для массового использования.

По мнению специалистов, “правила структурного программирования верны в 95%. Но остаются злополучные 5%” [20]. Чтобы поправить дело, решить проблему пяти процентов и создать метод, пригодный для широкой практики, пришлось пойти на компромисс и дать добро на использование заменителей и так называемое “ограниченное применение goto ” (см. табл. 4, варианты 2—4). Благодаря этому проблема массовой практики программирования была решена. Но какой ценой? Ценой отказа от строгого формализма.

Это нетрудно показать. Например, авторы учебника языка СИ со­ветуют осторожно и редко применять заменители break и continue, “поскольку слишком частое их использование ухудшает читаемость программы, увеличивает вероятность ошибок и затрудняет ее модификацию” [21]. Далее они пишут: избегайте использовать goto, ибо это “чрезвычайно плохое” средство, которое следует применять “как можно реже или не применять совсем” [21].

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

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

В шампур-методе аналогом goto и заменителей служат формальные операции “пересадка лианы” и “заземление лианы”, на использование которых не накладывается никаких неформальных ограничений.

Тем самым мы приходим к важному выводу. В отличие от тексто­вого структурного программирования, обладающего лишь частичной формализацией, правила визуального структурного программирования формализованы на 100%, что подтверждается тем фактом, что они реализованы в алгоритмах ДРАКОН-редактора.


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


Читайте в этой же книге: Другие примеры визуализации | Описание структуры деятельности | Нужен ли стандарт для описания деятельности? | Что такое атом? | Прочие операции | Историческая справка | Четыре принципа структуризации блок-схем, предложенные Э.Дейкстрой | Почему научное сообщество не приняло видеоструктурную концепцию Э.Дейкстры? | Плохие блокс-схемы или плохие стандарты? | Новые цели стандартизации блок-схем |
<== предыдущая страница | следующая страница ==>
Чем отличаются блок-схемы от Дракон-схем?| Почему самолет не машет крыльями?

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