Потихонечку просматриваю залежи пуличной Драконологии – много информации к размышлению.
В данном случае такая тема давно свербит у автора этого поста:
нужна ли схемная визуализация линейных алгоритмов?
-----------------------------------------
Например:
1)
Руководство пользователя текстового редактора (текстового процессора) MS Word:
большинство алгоритмов работы с редактором – это линейные алгоритмы.
Вопрос:
нужны ли здесь блок-схемы линейных алгоритмов?
Возможные ответы будут, скорее всего, отрицательные и такого рода:
-- и без блок-схем последовательность (линейный порядок) действий очевидна
по порядку перечисления действий литерным текстом;
-- рисовать блок-схемы – это дополнительная работа (дополнительная морока) для разработчика алгоритма (и некоторый дополнительный напряг извилин),
но это упрощает работу с алгоритмами для пользователя;
-- писать линейные алгоритмы врукопашную – это привычнее и проще,
и оно было спокон веков - еще до изобретения блок-схем;
-- все (толстое) руководство пользователя редактора MS Word будет забито линейными блок-схемами:
это хорошо или плохо?
Возможные контр-возражения:
-- визуализация – это опора на исторически первичное и базисное образное мышление
(на которое, хочешь-не-хочешь, всегда опирается понятийное мышление);
-- всегда существует регулярный (стандартный) зрительный образ дискретного процесса,
хотя в данном случае в структурном отношении все линейные процессы однотипные
(и различаются только длиной и порядком следования действий);
-- для технических специальностей, с пеленок работающих с разной графикой, этот вопрос
гораздо менее проблематичный и т.п.
Такие возражения и контр-возражения в данном случае имеют свое значение,
но, к сожалению, в целом пока не являются решающими для однозначного вывода.
В принципе, хорошо было бы проводить подобные эксперименты
с пользовательской документацией на программные изделия такого типа.
2)
Маршрутная и операционная технология (маршрутные и операционные карты) в машиностроении (и приборостроении):
это, обычно, табличная форма представления линейных алгоритмов
(возможно с дополнительными технологическими эскизами разного рода).
Аналогичный вопрос:
нужны ли здесь блок-схемы линейных алгоритмов?
Здесь, в общем случае, тоже пока нет однозначных ответов: да или нет.
-------------------------------
Возьмем для пример такую алгоритмическую задачу.
Дано: Простая вычислительная формула (численной функции):
y = F(x) = F(x1, x2) = Sin(x1 + x2) * Cos(x1 +x2),
где x = (x1, x2) – составная входная переменная задачи (аргумент функции), представляющая величины некоторых углов (в радианах);
y – простая (несоставная) выходная переменная (результат функции);
имеются в виду все данные действительного типа (real).
Надо: 1) Представить алгоритм пошаговых вычислений по заданной формуле.
2) Использовать наличие потенциального параллелизма задачи:
минимальный, в данном случае потенциальный параллелизм (степени 2).
3) Обеспечить гибкую (вариативную) алгоритмизацию задачи с учетом допустимых вариантов параллельного и последовательного выполнения (вариативного) общего алгоритма:
выявление допустимых частных алгоритмов решения задачи.
Решения задачи (результаты без вывода):
Вложение:
SSA_ris4.PNG [ 34.47 КБ | Просмотров: 4433 ]
Представлены:
-- два возможных частных линейных последовательных алгоритма A11, A12;
-- один возможный частный параллельный алгоритм А2.
При этом наличие возможных линейных последовательных алгоритмов является следствием:
-- наличия потенциального параллелизма задачи;
-- отсутствия реализации потенциального параллелизма.
Очевидно, что в данном случае
привлечение блок-схем линейных алгоритмов весьма
полезно в разных отношениях
(наряду с литерными формами - структурные формулы и псевдокоды алгоритмов).
Представлены явные схемы потока управления с визуально неявным потоком данных.
Далее последовательно выполняется поэтапное визуальное проявление потока данных
согласно приложениям к стандарту
ГОСТ 19.701-90 (ISO 5807-85):
СХЕМЫ АЛГОРИТМОВ, ПРОГРАММ, ДАННЫХ И СИСТЕМ
УСЛОВНЫЕ ОБОЗНАЧЕНИЯ И ПРАВИЛА ВЫПОЛНЕНИЯВложение:
SSA_ris6.PNG [ 32.97 КБ | Просмотров: 4433 ]
Очевидна фрагментация потока данных по операторам
связной схемы потока управления линейных и параллельного алгоритмов:
с повторами УГО переменных.
Вложение:
SSA_ris7.PNG [ 25.69 КБ | Просмотров: 4433 ]
Связная структура потока данных линейных и параллельного алгоритмов:
с повторами УГО переменных.
Структура потока данных линейных и параллельного алгоритмов деформирована (в привязке точек деформации к операторам).
Вложение:
SSA_ris8.PNG [ 22.79 КБ | Просмотров: 4433 ]
Упрощение (деформированной) структуры потока данных линейных и параллельного алгоритмов:
совмещение повторных УГО переменных.
Вложение:
SSA_ris9.PNG [ 32.79 КБ | Просмотров: 4433 ]
Разделение структур потока управления и потока данных линейных и параллельного алгоритмов.
При этом явно отражаются:
-- одна структура потока данных - с наличием потенциального параллелизма;
-- несколько структур потока управления (потоком данных):
одна параллельная структура потока управления - реализация потенциального параллелизма;
две допустимые линейные структуры потока управления - нереализация потенциального параллелизма.
---------------------------
Это частный пример
практической полезности применения блок-схем линейных алгоритмовдля структурного анализа и реализации даже простейших алгоритмических задач.
Возможны и другие аспекты такой практической полезности линейных блок-схем.