Студопедия

Главная страница Случайная страница

Разделы сайта

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






Структурное кодирование






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

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

Этот принцип положен в основу проектирования микросхем. В булевой алгебре строго доказана теорема о том, что любая логическая структура может быть создана из элементарных структур И, ИЛИ и НЕ. Так как отмеченное положение обосновано теоретически, нет необходимости доказывать его в каждом отдельном случае. Задача по проектированию логической схемы из базисных составляющих относится к полю обычной деятельности инженера [17, 18].

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

1) последовательности двух или более операторов

(MOVE, ADD,...)

2) выбора одного из двух операторов (IF THEN ELSE)

3) повторения (или управления циклом) оператора, пока выполняется некоторое условие (DO WHILE)

а)

б) в)

Рис. 5.6. Основные логические структуры (а — последовательности, б — выбора и в — повторения).

На рис. 5.6 показаны эти основные логические структуры. Каждая структура имеет один вход и один выход. Затем, применяя итерацию и вложение этих основных структур, можно получить программу любого размера и сложности. Комбинации правильных программ, полученные с использованием трех основных управляющих структур (последовательности, выбора и повторения), также являются правильными программами.

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

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

Структура выбора — это выбор одного из двух действий, исходя из выполнения некоторого условия; ей соответствует оператор IF THEN ELSE.

Структура повторения реализует повторное выполнение группы операторов до тех пор, пока выполняется некоторое условие. Итеративная управляющая структура приводится в действие оператором DO WHILE.

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

Рис. 5.7. Структура последовательности.

Хотя теоретически возможно написать все правильные программы, используя только три перечисленные выше основные логические структуры, небольшое расширение этой совокупности облегчает программирование. Введенные структуры должны иметь один вход и один выход. Обычно добавляют операторы DO UNTIL и CASE.

Оператор DO UNTIL организует цикл, подобный циклу оператора.DO WHILE. Но между этими операторами существуют следующие различия:

1. Цикл DO WHILE окачивается, когда условие ложно, а цикл DO UNTIL — когда условие истинно.

2. В цикле DO UNTIL условие проверяется после выполнения операторов цикла, так что операторы тела цикла выполнятся, по крайней мере, один раз.

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

Рис. 5.8. Структура с вложением.

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

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

Чтобы получить простую структуру каждый сегмент программы должен состоять из прямой последовательности операторов IF THEN ELSE, циклов и операторов CASE. Для случаев программирования, когда нельзя исключить операторы GO TO, и для тех, кто не может отказаться от использования его в силу некоторых причин, нужно использовать два правила, которые помогут ограничить использование этого оператора:

1. Не нужно прибегать к GO TO там, где можно заменить его операторами CALL или PERFORM.

2. Нужно применять GO TO только для переходов вперед. Переход назад подразумевает цикл. В этом случае нужно использовать соответствующую конструкцию цикла.

Качество программы часто обратно пропорционально числу включенных в нее операторов GO TO. Эти операторы затрудняют чтение больших программ. В программе, написанной с помощью операторов GO TO, читатель, просмотрев несколько строк, перескакивает через определенное число строк или страниц. Затем прочесть еще несколько строк, опять перейти на другую страницу и т. д.

Структурное программирование не является самоцелью, его назначение — получение хорошей программы. Даже в самой лучшей программе иногда необходимы операторы GO TO (например, для выхода из группы внутренних циклов по ошибочному условию). Желательно не только отсутствие операторов GO TO, но и наличие структуры. Хорошо разработанная структура автоматически приводит к использованию небольшого количества операторов GO TO и обеспечивает возможность чтения программы от начала до конца, следуя ее внутренней логике.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.