Понятие исполнителя невозможно определить с помощью какой-либо формализации. Исполнителем может быть человек, группа людей, робот, станок, компьютер, язык программирования и т.д. Важнейшим свойством, характеризующим любого из этих исполнителей, является то, что исполнитель умеет выполнять некоторые команды. Так, исполнитель-человек умеет выполнять такие команды как «встать», «сесть», «включить компьютер» и т.д., а исполнитель-язык программирования Бейсик - команды PRINT, END, LIST и другие аналогичные. Вся совокупность команд, которые данный исполнитель умеет выполнять, называется системой командисполнителя (СКИ).
В качестве примера (рис. 1.11) рассмотрим исполнителя-робота, работа которого состоит в собственном перемещении по рабочему полю (квадрату произвольного размера, разделенному на клетки) и перемещении объектов, в начальный момент времени находящихся на «складе» (правая верхняя клетка).
Рис. 1.11. Исполнитель-робот
Одно из принципиальных обстоятельств состоит в том, что исполнитель не вникает в смысл того, что он делает, но получает необходимый результат. В таком случае говорят, что исполнитель действуетформально, т. е. отвлекается от содержания поставленной задачи и только строго выполняет некоторые правила, инструкции.
Это - важная особенность алгоритмов. Наличие алгоритма формализует процесс решения задачи, исключает рассуждение исполнителя. Использование алгоритма дает возможность решать задачу формально, механически исполняя команды алгоритма в указанной последовательности. Целесообразность предусматриваемых алгоритмом действий обеспечивается точным анализом со стороны того, кто составляет этот алгоритм.
Введение в рассмотрение понятия «исполнитель» позволяет определить алгоритм как понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение поставленной цели. В случае исполнителя-робота мы имеем пример алгоритма «в обстановке», характеризующегося отсутствием каких-либо величин. Наиболее же распространенными и привычными являются алгоритмы работы с величинами - числовыми, символьными, логическими и т.д.
Алгоритм, составленный для некоторого исполнителя, можно представить различными способами: с помощью графического или словесного описания, в виде таблицы, последовательностью формул, записанным на алгоритмическом языке (языке программирования). Остановимся на графическом описании алгоритма, называемом блок-схемой. Этот способ имеет ряд преимуществ благодаря наглядности, обеспечивающей, в частности, высокую «читаемость» алгоритма и явное отображение управления в нем.
Прежде всего определим понятие блок-схемы. Блок-схема - это ориентированный граф, указывающий порядок исполнения команд алгоритма; вершины такого графа могут быть одного из трех типов (рис. 1.12).
Рис. 1.12. Три типа вершин графа
На рис. 1.12 изображены «функциональная» (a) вершина (имеющая один вход и один выход); «предикатная» (б) вершина, имеющая один вход и два выхода (в этом случае функция Р передает управление по одной из ветвей в зависимости от значения Р (Т, т.е. true, означает «истина», F, т.е. false - «ложь»); «объединяющая» (в) вершина (вершина «слияния»), обеспечивающая передачу управления от одного из двух входов к выходу. Иногда вместо Т пишут «да» (либо знак +), вместо F- «нет» (либо знак -).
Из данных элементарных блок-схем можно построить четыре блок-схемы (рис. 1.13), имеющих особое значение для практики алгоритмизации.
Рис. 1.13. Основные алгоритмические структуры
На рис. 1.13 изображены следующие блок-схемы: а -композиция, или следование; б -альтернатива, илиразвилка,в иг - блок-схемы, каждую из которых называютитерацией, илициклом (с предусловием (в), с постусловием (г)). S1 и S2 представляют собой в общем случае некоторые серии команд для соответствующего исполнителя, В - это условие, в зависимости от истинности (Т) или ложности (F) которого управление передаётся по одной из двух ветвей. Можно доказать, что для составления любого алгоритма достаточно представленных выше четырех блок-схем, если пользоваться их последовательностями и/или суперпозициями.
Блок-схема «альтернатива» может иметь и сокращенную форму, в которой отсутствует ветвь S2 (рис. 1.14, а). Развитием блок-схемы типа альтернатива является блок-схема «выбор» (рис. 1.14, б).
Рис. 1.14. Развитие структуры типа «альтернатива»;
о) - неполная развилка; б) - структура «выбор»
На практике при составлении блок-схем оказывается удобным использовать и другие графические знаки (некоторые из них приведены на рис. 1.15).
Рис. 1.15. Некоторые дополнительные конструкции для изображения блок-схем алгоритмов
Таблица 1.1
Условные графические обозначения
Соотношения между геометрическими элементами символов устанавливаются стандартом.
Размер а10, 15,20 … мм.
Размер b = 1,5а. (b = 2а.)
Линии потока рекомендуется выполнять в два раза тоньше линий обводки блоков.
Процесс
Выполнение операции или группы операций, в результате которых изменяется значение, форма представления или расположение данных
Решение
Выбор направления выполнения алгоритма или программы в зависимости от некоторых переменных условий
Наименование
Обозначение
Функция
Модификация
Выполнение операций, меняющих команды или группы команд, изменяющих программу
Предопределенный процесс
Использование ранее созданных и отдельно описанных алгоритмов или программ
Наименование
Обозначение
Функция
Ввод – вывод
Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод)
Документ
Ввод – вывод данных, носителем которых служит бумага
Линия потока
Указание на последовательность связей между символами
Пуск – останов
Начало, конец, прерывание процесса обработки данных или выполнения программы
Комментарий
Связь между элементами схемы и пояснением
Правила выполнения алгоритмов с использованием рассмотренных символов устанавливает ГОСТ 19.002 – 80.