Схема — это абстракция какого-либо процесса или системы, наглядно отображающая наиболее значимые части . Схемы широко применяются с древних времен до настоящего времени — чертежи древних пирамид, карты земель, принципиальные электрические схемы. Очевидно, древние мореплаватели хотели обмениваться картами и поэтому выработали единую систему обозначений и правил их выполнения. Аналогичные соглашения выработаны для изображения схем-алгоритмов и закреплены ГОСТ и международными стандартами.
На территории Российской Федерации действует единая система программной документации (ЕСПД) , частью которой является Государственный стандарт — ГОСТ 19.701-90 «Схемы алгоритмов программ, данных и систем» . Не смотря на то, что описанные в стандарте обозначения могут использоваться для изображения схем ресурсов системы, схем взаимодействия программ и т.п., в настоящей статье описана лишь разработка схем алгоритмов программ.
Рассматриваемый ГОСТ практически полностью соответствует международному стандарту ISO 5807:1985 .
Элементы блок-схем алгоритмов
Блок-схема представляет собой совокупность символов, соответствующих этапам работы алгоритма и соединяющих их линий. Пунктирная линия используется для соединения символа с комментарием. Сплошная линия отражает зависимости по управлению между символами и может снабжаться стрелкой. Стрелку можно не указывать при направлении дуги слева направо и сверху вниз. Согласно п. 4.2.4, линии должны подходить к символу слева, либо сверху, а исходить снизу, либо справа.
Есть и другие типы линий, используемые, например, для изображения блок-схем параллельных алгоритмов, но в текущей статье они, как и ряд специфических символов, не рассматриваются. Рассмотрены лишь основные символы, которых всегда достаточно студентам.
Терминатор начала и конца работы функции | Терминатором начинается и заканчивается любая функция. Тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора. |
Операции ввода и вывода данных | В ГОСТ определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. Если источник данных не принципиален, обычно используется символ параллелограмма. Подробности ввода/вывода могут быть указаны в комментариях. |
Выполнение операций над данными | В блоке операций обычно размещают одно или несколько (ГОСТ не запрещает) операций присваивания, не требующих вызова внешних функций. |
Блок, иллюстрирующий ветвление алгоритма | Блок в виде ромба имеет один вход и несколько подписанных выходов. В случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». Если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной. |
Вызов внешней процедуры | Вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями. |
Начало и конец цикла | Символы начала и конца цикла содержат имя и условие. Условие может отсутствовать в одном из символов пары. Расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while). |
Подготовка данных | Символ «подготовка данных» в произвольной форме (в ГОСТ нет ни пояснений, ни примеров), задает входные значения. Используется обычно для задания циклов со счетчиком. |
Соединитель | В случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока управления между листами. Символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно. |
Комментарий | Комментарий может быть соединен как с одним блоком, так и группой. Группа блоков выделяется на схеме пунктирной линией. |
Примеры блок-схем
В качестве примеров, построены блок-схемы очень простых алгоритмов сортировки, при этом акцент сделан на различные реализации циклов, т.к. у студенты делают наибольшее число ошибок именно в этой части.
Сортировка вставками
Массив в алгоритме сортировки вставками разделяется на отсортированную и еще не обработанную части. Изначально отсортированная часть состоит из одного элемента, и постепенно увеличивается.
На каждом шаге алгоритма выбирается первый элемент необработанной части массива и вставляется в отсортированную так, чтобы в ней сохранялся требуемый порядок следования элементов. Вставка может выполняться как в конец массива, так и в середину. При вставке в середину необходимо сдвинуть все элементы, расположенные «правее» позиции вставки на один элемент вправо. В алгоритме используется два цикла — в первом выбираются элементы необработанной части, а во втором осуществляется вставка.
Блок-схема алгоритма сортировки вставками
В приведенной блок-схеме для организации цикла используется символ ветвления. В главном цикле (i < n) перебираются элементы необработанной части массива. Если все элементы обработаны — алгоритм завершает работу, в противном случае выполняется поиск позиции для вставки i-того элемента. Искомая позиция будет сохранена в переменной j в результате выполнения внутреннего цикла, осуществляющем сдвиг элементов до тех пор, пока не будет найден элемент, значение которого меньше i-того .
На блок-схеме показано каким образом может использоваться символ перехода — его можно использовать не только для соединения частей схем, размещенных на разных листах, но и для сокращения количества линий. В ряде случаев это позволяет избежать пересечения линий и упрощает восприятие алгоритма.
Сортировка пузырьком
Сортировка пузырьком , как и сортировка вставками , использует два цикла. Во вложенном цикле выполняется попарное сравнение элементов и, в случае нарушения порядка их следования, перестановка. В результате выполнения одной итерации внутреннего цикла, максимальный элемент гарантированно будет смещен в конец массива. Внешний цикл выполняется до тех пор, пока весь массив не будет отсортирован.
Блок-схема алгоритма сортировки пузырьком
На блок-схеме показано использование символов начала и конца цикла. Условие внешнего цикла (А) проверяется в конце (с постусловием ), он работает до тех пор, пока переменная hasSwapped имеет значение true. Внутренний цикл использует предусловие для перебора пар сравниваемых элементов. В случае, если элементы расположены в неправильном порядке, выполняется их перестановка посредством вызова внешней процедуры (swap ). Для того, чтобы было понятно назначение внешней процедуры и порядок следования ее аргументов, необходимо писать комментарии. В случае, если функция возвращает значение, комментарий может быть написан к символу терминатору конца.
Сортировка выбором
В сортировке выбором массив разделяется на отсортированную и необработанную части. Изначально отсортированная часть пустая, но постепенно она увеличивается. Алгоритм производит поиск минимального элемента необработанной части и меняет его местами с первым элементом той же части, после чего считается, что первый элемент обработан (отсортированная часть увеличивается).
Блок-схема сортировки выбором
На блок-схеме приведен пример использования блока «подготовка», а также показано, что в ряде случаев можно описывать алгоритм более «укрупнённо» (не вдаваясь в детали). К сортировке выбором не имеют отношения детали реализации поиска индекса минимального элемента массива , поэтому они могут быть описаны символом вызова внешней процедуры. Если блок-схема алгоритма внешней процедуры отсутствует, не помешает написать к символу вызова комментарий, исключением могут быть функции с говорящими названиями типа swap, sort , … .
Назад
Вперёд
Внимание! Предварительный просмотр слайдов используется исключительно в ознакомительных целях и может не давать представления о всех возможностях презентации. Если вас заинтересовала данная работа, пожалуйста, загрузите полную версию.
Цели урока.
Образовательная - систематизация знаний, умений и навыков работы по теме “Алгоритмы и исполнители”; отработка навыков составления алгоритмов и представление их в виде блок-схем.
Воспитательная – повышение мотивации учащихся, формирование навыков самоорганизации, самостоятельности и инициативы.
Развивающая – развитие образного, логического мышления учащихся; умения анализировать и синтезировать знания; формирование у учащихся информационной культуры.
Оборудование: компьютер, проектор, экран, презентация.
ХОД УРОКА
I. Организационный момент (слайды 1, 2).
II. Актуализация опорных знаний (слайды 3, 4, 5).Что такое алгоритм?
10. По данным блок-схемам назовите вид алгоритма.
линейный
цикл с предусловием
разветвляющийся (полная форма)
цикл с постусловием
разветвляющийся (неполная форма)
цикл с параметром
III. Решение задач
Учитель: Теперь мы переходим к решению задач. Будем сегодня с вами строить блок-схемы.
Задача 1. Определить расстояние, пройденное человеком, если известно время, скорость движения, и движение было равномерным. (Cлайд 6)
Алгоритм
1. Ввод v, t.
2. Вычисление s.
3. Вывод s.
- Скажите, какой мы получили с вами алгоритм? (Линейный алгоритм)
- Теперь переходим к построению блок-схемы. Какие элементы блок-схемы нам понадобятся? (Начало, конец, ввод данных, вычисление расстояния, вывод результата) на экране все элементы.
- Ребята, расставьте все элементы в нужном порядке. (На экране результат )
Вычислить(слайд 7).
- С чего мы начинаем? (Составляем словесный алгоритм)
- На что в данной задаче надо обратить внимание? (Вычисляем значение дроби, в знаменателе стоит разность 7-у, которая в зависимости от значения у может быть равна нулю, в этом случае не будет решения)
Алгоритм
1. Ввод a, y.
2. Если 7-у=0, то нет решения.
4. Вывод s.
- Скажите, какой мы получили с вами алгоритм? (Разветвляющийся алгоритм, полная форма)
- Ребята, посмотрите на каждый пункт алгоритма и скажите какие элементы блок-схемы им соответствуют. (На экране фигуры в отдельности)
- Каких элементов блок-схемы нам не хватает? (Начало, конец)
- Ребята, вы мне помогите построить блок-схему, называя элементы по порядку. (На экране элементы появляются по очереди).
Задача 3. Постройте блок-схему алгоритма подписи 10 новогодних открыток. (Слайд 8)
Учащиеся в тетради записывают словесный алгоритм, осуществляется проверка (на экране ответ), затем строят блок-схему, осуществляется проверка (на экране ответ).
IV. Подведение итогов урока
V. Домашнее задание
Для задачи 3 составить блок-схемы с использованием цикла с предусловием и постусловием.
Зачастую, чтобы лучше понять задачу и быстрее ее реализовать, используют различные схемы, таблицы и диаграммы. В нашей подборке 6 сервисов для работы с ними.
Чтобы упростить процесс объяснения и разработки очень удобно использовать блок-схемы. Блок-схема – один из типов схем, который позволяет описать алгоритмы или процессы. Они часто используются для работы со сложными задачами, состоящими из множества пунктов. Мы сделали подборку из 6 инструментов, которые помогут вам создать такие схемы. Для работы с большинством из них оплата не потребуется.
6 инструментов для работы с блок-схемами:
draw.io
Этот сервис позволит создавать не только блок-схемы, но и UML, диаграммы сущность-связь, сетевые диаграммы, электрические схемы, каркасные схемы и модели. Интуитивный интерфейс и большая библиотека элементов позволят работать легко и комфортно. Важно также и то, что над одним проектом могут работать сразу несколько человек. Результат можно сохранить в форматах PNG/JPG/XML/SVG/PDF. Имеется интеграция с Google Drive.
gliffy.com
Gliffy предоставляет схожий набор инструментов и возможностей: большая библиотека элементов, удобный интерфейс, возможность коллективной работы, интеграция с Google Drive, работа с документами Visio, готовые цветовые темы для проектов.
gomockingbird.com
Программа имеет простой и понятный UI, работает в браузере, есть возможность работы в команде. Также, добавив ссылки, можно объединять несколько проектов в один.
lucidchart.com
Онлайн-сервис, который облегчит создание скетчей и диаграмм. Совместим с G Suite и документами Microsoft Visio. После окончания работы можно экспортировать файл в различных форматах, либо отправить на публикацию.
Balsamiq mockups
Программа позволяет создавать мокапы, диаграммы, различные схемы. Имеется обширная библиотека элементов, с помощью которых можно создать любой проект. Приложение требует установки на компьютер, к тому же платное, однако можно воспользоваться пробным периодом web-версии.
Блок-схема является вариантом формализованной записи алгоритма или процесса. Каждый шаг алгоритма в данном представлении изображается в виде блоков различной формы, которые соединены между собой линиями. В блок-схеме можно отобразить все этапы решения любой задачи, начиная с ввода исходных данных, обработки операторами, выполнения цикличных и условных функций, и заканчивая операциями вывода результирующих значений.
Инструкция
Как правило, вначале алгоритма производится ввод исходных данных для решения поставленной задачи. Нарисуйте параллелограмм ниже линии так, чтобы он непрерывным продолжением схемы. В параллелограмме напишите производимое действие, обычно это операции данных с экрана (Read nInp) или других устройств. Важно, что введенные вами переменных в данном шаге будут использоваться в дальнейшем во всем теле блок-схемы.
Выполнение одной или группы операций, любая обработка данных (изменение значения или формы представления) обозначается в виде прямоугольника. Нарисуйте данную фигуру в нужном месте алгоритма при составлении блок-схемы. Внутри прямоугольника запишите производимые действия , например, операция присваивания записывается следующим образом: mOut = 10*nInp b + 5. Далее также для продолжения блок-схемы нарисуйте линию вниз.
Важной составляющей любого алгоритма и соответственно блок-схемы являются условные и цикличные операторы. У данных операторов один вход и два и или более альтернативных выхода. После вычисления условия, заданного оператором, дальнейший переход осуществляется лишь по одному пути. Нарисуйте вход в элемент в виде линии входящей в верхнюю вершину элемента.
Для задания оператора условия нарисуйте от данной линии ромб. Внутри фигуры укажите само условие и проведите линии, указывающие дальнейший переход в зависимости от его выполнения. Условие задается в общем случае операциями сравнения (>, <, =). Переход по линии вниз осуществляется при истинном условии, назад – при ложном. Укажите около выходных линий фигуры результаты условия (true, false). Невыполнение условия (false) возвращает к определенному шагу выше по телу алгоритма. Проведите линии под прямым углом от выхода с условия и до нужного оператора.
8.2. Блок-схемы алгоритмовПри описании алгоритмов давно и успешно используются блок-схемы (Basic Flowchart). Построение блок-схем алгоритмов регламентируется ГОСТ 19.701-90 (ИСО 5807-85) "Единая система программной документации. Схемы алгоритмов программ, данных и систем. Условные обозначения и правила выполнения" . Данный государственный стандарт составлен на основе международного стандарта "ISO 5807-85. Information processing – Documentation symbols and conventions for data, program and system flowcharts, program network charts and system resources charts".
Согласно ГОСТ 19.701-90 под схемой понимается графическое представление определения, анализа или метода решения задачи. С помощью схем можно отобразить как статические, так и динамические аспекты системы. Символы, приведенные в государственном стандарте, могут использоваться в следующих типах схем :
Схемы данных – определяют последовательность обработки данных и их носители;
Схемы программ – отображают последовательность операций в программе (по сути, это и есть блок-схемы алгоритмов в традиционном понимании);
Схемы работы системы – отображают управление операциями и потоки данных в системе;
Схемы взаимодействия программ – отображают путь активации программ (модулей) и их взаимодействие с соответствующими данными;
Схемы ресурсов системы – отображают конфигурацию блоков данных и обрабатывающих блоков.
Как видно из приведенных выше типов схем, они могут использоваться не только для моделирования поведенческого аспекта, но и для задач функционального, информационного и компонентного проектирования.
При построении поведенческой модели системы используются основные принципы структурного подхода – принципы декомпозиции и иерархического упорядочения. Поведенческая модель представляет собой набор взаимосвязанных схем (диаграмм) с разным уровнем детализации, причем с каждым новым уровнем детализации система приобретает все более законченные очертания.
На схемах могут присутствовать следующие элементы графической нотации :
Символы данных – указывают на наличие данных, вид носителя или способ ввода-вывода данных;
Символы процесса – указывают операции, которые следует выполнить над данными;
Символы линий – указывают потоки данных между процессами и/или носителями данных, а также потоки управления между процессами;
Специальные символы – используются для облегчения написания и чтения схем.
Кроме деления по смысловому содержанию, каждую категорию символов (кроме специальных) делят на основные и специфические символы. Основной символ используется в тех случаях, когда точный вид процесса или носителя данных неизвестен или отсутствует необходимость в описании фактического носителя данных (процесса). Специфический символ используется в тех случаях, когда известен точный вид процесса или носителя данных и это необходимо отобразить на схеме. В следующей таблице приводятся элементы графической нотации блок-схем.
Таблица 8.1. Условные обозначения на блок-схемах
№ п/п | Символ | Наименование | Примечания | |
1. СИМВОЛЫ ДАННЫХ
Основные |
||||
1.1 | Данные | Данные, носитель которых не определен | ||
1.2 | Запоминающее устройство (ЗУ) | Данные, хранимые в виде, пригодном для автоматической обработки, носитель не определен | ||
Специфические | ||||
1.3 | ОЗУ | Данные, хранящиеся в ОЗУ (оперативная память) | ||
1.4 | ЗУ с последовательным доступом | Данные, хранящиеся на магнитной ленте (магнитная лента, магнитофонная кассета) | ||
1.5 | ЗУ с прямым доступом | Данные, хранящиеся на жестких или гибких магнитных дисках, CD, DVD, ZIP и т.д. | ||
1.6 | Документ | Данные, представляемые не в компьютерном виде (на бумаге, на пленках и т.д.) | ||
1.7 | Ручной ввод | Данные, вводимые вручную с помощью клавиатуры, мыши, светового пера и т. д. | ||
1.8 | Карта | Данные на перфокартах, магнитных картах, картах со считываемыми метками и т.д. | ||
1.9 | Бумажная лента | Данные на бумажной ленте | ||
1.10 | Дисплей | Данные, отображаемые на экране монитора, сигнальные индикаторы и т.д. | ||
2. СИМВОЛЫ ПРОЦЕССА
Основной |
||||
2.1 | Процесс | Элементарная (атомарная) операция по обработке данных (например, n:=n+1) | ||
Специфические | ||||
2.2 | Предопределенный процесс (процедура) | Процесс, состоящий из операций, описанных в другом месте (на другой схеме) | ||
2.3 | Ручная операция | Операция, выполняемая вручную | ||
2.4 | Подготовка | Подготовительные операции, выполняемые с целью модификации последующих операций (цикл с параметром ) | ||
2.5 | Решение | Операция с одним входом и несколькими альтернативными выходами, один из которых активизируется после проверки условия, записываемого внутри символа (операторы If-Then-Else или Case) | ||
2.6 | Параллельные действия | Параллельное выполнения двух и более операций | ||
2.7 | Границы цикла | Начало и конец цикла. Особенности работы цикла (инициализация, приращение, условие) записывается в начале или конце, в зависимости от того, где осуществляется его проверка (циклы с пред- или постусловием) | ||
3. СИМВОЛЫ ЛИНИЙ
Основной |
||||
3.1 | Линия | Поток данных или управления | ||
Специфические | ||||
3.2 | Канал связи | Передача данных по каналу связи | ||
3.3 | Пунктирная линия | Альтернативная связь между двумя и более символами или для обводки комментируемого участка схемы | ||
4. СПЕЦИАЛЬНЫЕ СИМВОЛЫ | ||||
4.1 | ГОСТ | Соединитель | Используется для обрыва линий и их продолжения в другом месте. Обычно используется для обозначения взаимосвязанных частей схемы на разных листах. Внутри соединителя пишется номер соединения |
|
ИСО | ||||
4.2 | Терминатор | Выход во внешнюю среду или вход из внешней среды (начало и конец процесса обработки данных [в этом случае внутри пишут "начало" или "конец"], источник или пункт назначения данных, начало и конец работы предопределенного процесса) | ||
4.3 | Получатель – отправитель | По функциональному назначению аналогичен символу "Терминатор" | ||
4.4 |