Методическое пособие для выполнения лабораторных работ и КР (1075934), страница 22
Текст из файла (страница 22)
Таких элементов может бытьнесколько, в зависимости отлогики работы программы.Имеет однувходящуюстрелку.Данный (и следующий)элемент используется дляусловного разрыва соединяющих линий. В поле элемента записывается обозначение (чаще буква или цифра). Это обозначение должно соответствовать обозначению другой точки разрыва.Этот элемент является парным к предыдущему. Онипозволяюторганизоватьразрыв линий на одномлисте или на разных листах.Элементы в виде простыхлиний и линий со стрелками задают связи междублочнымиэлементамиблок-схем. Для линий безстрелокподразумеваетсястрелка: сверху - вниз ислева - направо.
Линии сдвойными стрелками используются для обозначения вызова процедур.ПримечаниеНеобязательныйэлемент блоксхем. В поляблока записывается названиепроцедуры.Для программ снесколькимивходаминачальныеэлементы должныбыть помечены.Элемент окончанияможетиметь один илинесколько входов.Линиимогутбыть ломаными,но только подпрямым углом(ГОСТ). Предпочтительнееиспользоватьлинии со стрелками.2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”10421.3. Примеры блок-схем программВ данном разделе мы рассмотрим несколько примеров блок-схем для иллюстрациииспользования элементов и приемов построения алгоритмов. Примеры простые и соответствуют программам, которые рассмотрены в других разделах настоящего пособия. Передблок-схемой дана ссылка на раздел, в котором описана программа ей соответствующая.Если щелкнуть мышкой на ссылку (с клавишей Ctrl) можно оперативно перейти к теступрограммы.Пример блок-схемы программы для командного файла, рассмотренного в разделе5.7.
Примеры командных файлов. Данный командный файл соответвуют программе,которую нужно разработать в ЛР номер 2. В блок-схеме этого примерапродемонстрировано использование переключателя и элементов типа процесс. Отметим,Н ачалоО ч и с тка э кр а н аВы вод м еню(E C H O )З а п р о с кл а в и ш и(B E A S K )ERRORLEVEL = ?1Реж им 123Р еж им 2Конецчто переключатель в командном файле реализован с помощтю директив IF, поэтому,строго говоря, блок-схема не совсем точна, хотя полностью отражает алгоритмпрограммы.
Причина неточности данной блок-схемы заключается в том, не ясно куда мыбудем двигаться в том случае, когда будет получен результат ERRORLEVEL < 1.Вспомните, что сравнение выполняется по условию >=. При использовании BE ASKдопустимо назначить ключ возврата по умолчанию, например 3. Тогда программазавершиться даже при невозможности задания нужного номера с клавиатуры (отличными1052010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”от 1, 2, 3). При использовании CHOICE такое невозможно, так как ключа по умолчаниюзадать нельзя.Когда выбран метод реализации алгоритма можно приступить к написаниюпрограммы. Если блок-схему для нашего командного файла построить после написанияпрограммы, то она может выглялеть так, как показано на следующем рисунке.Эта блок-схема является более точной, так как может правильно работать и в томслучае когда код возврата < 1.НачалоОчистка экранаВывод меню(ECHO)Запрос клавиши(BE ASK)ERRORLEVEL=3ДаНетERRORLEVEL=2ДаРежим 2НетERRORLEVEL=1ДаРежим 1НетКонецВ этой схеме переключатель построен на основе второй конструкции.2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”106Пример блок-схемы алгоритма программы на языке Ассемблер с процедурами ( см.раздел 10.5.
Пример программы с процедурами ). Следующая блок-схема показывает какиспользовать блоки вызова процедур.НачалоЗагрузка DSВывод символаLETPUTCHПеревод строкиCRLFФормирование РА длинного адресаВывод символа ВTESTPПеревод строкиCRLFОжидание вводасимволаЗавершениепрограммыКонецДля отдельных процедур нужно разработать отдельные блок-схемы и представитьв отчете. В методических указаниях отмечено, что если Вы используете повторно одни ите же процедуры, то допускается не повторять в новых отчетах блок-схемы этих процедур. Программа для этой блок-схемы очень проста.
Однако, блок-схема нужна для детального описания шагов, которые нужно выполнить для решения задачи.В детальной блок-схеме мы можем расписать алгоритм работы программы вплотьдо отдельной команды. Это позволяет процедуру кодирования сделать простой и формализованной. Возможно в группах разработчиков и такое: один программист-аналитик разрабатывает алгоритмы и оформляет детальные блок-схемы, а другие, причем менее квалифицированные выполняют кодирование и отладку программ. Такое разделение возможно, так как процесс создания алгоритмов решения задач более трудоемок, требуетбольшего опыта и квалификации.
Часто бывает так, что начинающие программисты зани-2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”107маются кодированием программ до тех пор пока не получат достаточного опыта и знанийдля самостоятельной разработки сложных алгоритмов программ.Детальная блок-схема программы на Ассемблере для вывода 2-х символов приведена ниже.НачалоЗагрузка DSPUSH CSPOP DSВывод символа LETMOV DL , LETCALL PUTCHПеревод строкиCALL CRLFPUTCHCRLFФормирование РАLEA BX , TESTPMOV PA , BXMOV PA + 2 ,DSВывод символа ВMOV DL , 'B'PUSH DXCALL DWORD PTR CS:[PA]POP DXПеревод строкиCALL CRLFОжидание ввода символаMOV AH, 01HINT 021HЗавершение программыMOV AL, 0MOV AH, 4CHINT 21HКонецTESTPCRLF2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”108Ниже представлена блок-схема процедуры для программы печати символов и сканкодов клавиш ( см.
раздел 23.7. Программы для получения списка кодов ).НачалоУсловие концацикла не задано (1)КонецЧитать символ:key = getch()НетKey = 0ДаСимволпечатныйДаВыводсимволаВывод scanкодаНетААНетДаKey = 27(ESC)Вывод и запросподтвержденияkey = getch()Key = Y илиKey = 13 (Enter)НетДаКонецВ этой программе в интерактивном режиме считываются коды нажатых клавиш, ипроизводится их распечатка. Программа написана на языке СИ. В данном примере проиллюстрировано: использование циклической конструкции. Использование условных элементов и применение элементов для разрыва линий связи в блок-схеме.В программе организован бесконечный цикл.
Выход из цикла выполняется в телецикла при проверке нажатия клавиши ESC (код 27) и подтверждения клавишами Enter иликлавишей “Y”. При считывании кода клавиши проверяется первый байт. Значение первогобайта указывает на ввод печатного символа или ввод скан кода (key = 0). Подробно оскан-кодах смотрите в разделе пособия 23.5. SCAN – коды.Проверки в программе выполняются оператором if и условным выражением. Условное выражение (isgraph( key ) ? key : ' ') вставлено в вызов функции печати – printf.Функция isgraph проверяет признак печатного символа и отображает символ (key) или2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”109пробел Отмечу, что в блок-схеме эта логика отображается условным элементом, в программе вставлена в вызов функции. Кстати, это одна из причин того, почему не всегдапрограммы сгенерированные автоматически являются эффективными и наглядными.
После проверки завершения по ESC в программе выполняется запрос символа подтверждения и проверка его ввода. Для этого используются условный элемент блок-схемы.И последнее, с помощью элемента в кружочке (“A”) мы показываем, как сделатьразрыв линии связи. Это позволяет не тянуть связующую линию через всю страницу и избежать пересечения линий. После выяснения того, является ли символ печатным или нет,мы должны перейти на проверку завершения цикла. Это делается с помощью добавленияэлемента с символом “А” в место проверки клавиши завершения.21.4.
Оформление блок-схемы программыПри оформлении блок-схем нужно соблюдать формальные, визуальные и семантические правила. Формальные правила задаются языком блок-схем и изображением егоэлементов. Визуальные правила позволяют сделать блок-схему более наглядной. Смысловые правила определяются алгоритмом конкретной задачи разработки программы. Перечислим основные правила:− Все элементы должны иметь точно такое число входов и выходов, которое определяется изображением элемента.− Должны существовать пути из начального элемента хотя бы в один конечный элемент.− Не должно быть элементов типа процесс с одним входом и без выхода.− Данные в блок-схемах не описываются.− Из элемента типа процесс не может быть более одного выхода.− Элементы блок-схемы должны занимать равномерно все пространство страницыили листа, на котором они располагаются.− Элементы должны иметь приблизительно равные размеры и одинаковое форматирование.− Расстояние между элементами должно быть по возможности одинаковым.− Элементы и линии связи не должны располагаться очень близко друг от друга.− Линии связи не должны пересекаться (только в порядке исключения).− Если линии связей не имеют стрелок, то направление стрелки подразумевается так:слева направо и снизу вверх.
Если возникают неоднозначности, то желательно использовать концевые стрелки.− Блоки в блок-схеме желательно пронумеровать, в этом случае удобнее создаватьописание блок-схем программ.− Толщина линий связи должна быть одинакова.− Блок-схема должна оформляться с помощью стандартных программ рисования, например MS VISIO или MS WORD.Нумерация блоков может быть выполнена различными способами. На рисунке ниже показаны варианты такой нумерации.52Процесс4. Печать0Условие12010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”110Для описания блок схем очень удобно использовать программный продукт MSVISIO, причем можно воспользоваться любой версией программного продукта.