Здравствуйте, народ.
Не писал с прошлого года, поэтому поздравляю всех с наступившей весной.
8 марта у меня нарисовался вот такой рисунок
Вложение:
			 romashki.jpg [ 72.72 КБ | Просмотров: 20971 ]
			romashki.jpg [ 72.72 КБ | Просмотров: 20971 ]
		
		
	 который повиг меня быстренько внести в мою программку большую часть
заявленных в ноябре прошлого  года  планируемых   изменений  (см. файл
dalvjaz2.txt). Добавлено почти все по файлу конфигурации (только
по-прежнему осталась работа только с одним файлом сокращений) плюс еще 
кое-что. 
d4dal207.rar  - скачиваний 55, новую версию см. ниже в этой теме в сообщении от 4.12.2012
Рабочая панель программы при этом почти не изменилась.
Вложение:
			 r_panel.JPG [ 11.48 КБ | Просмотров: 20971 ]
			r_panel.JPG [ 11.48 КБ | Просмотров: 20971 ]
		
		
	 Элементы рабочей панели слева направо:
1) кнопка возврата после перехода по ссылке на другую запись
2) "ЧФ" - чтение файла
3) "ЗФ" - запись файла
4) "Н" - нормализация индексов элементов схемы
5) "Р" - редактирование текстовой записи
6) группа кнопок навигации по записям модуля
7) список - выбор записи модуля из списка
8 ) "схема" - флажок просмотра программных записей как визуальных схем
(сейчас при запуске программы флажок сброшен, так что первая запись
первого модуля появляется в окне в текстовом режиме)
9) толщина линий - 1 или 2
10) цвет линий - черный или зеленый
11) "BMP" кнопка создания bmp-файла shema.bmp и файла текстового 
описания схемы shema.txt
12) закладки выбора модуля - щелчком по закладке модуля (можно 
загрузить в программу до 10 модулей, а всего в программе задать до 99
модулей и загружать любые из них, меняя для модуля режим загрузки:
"КОД" - кодогенерация (тут все как было: для сохранения новой версии
файла нужно нажать кнопку "ЗФ" или подтвердить сохранение при выходе из
программы);
"---" - модуль не загружается;
"ДОК" - документирование: т.к. я не могу поручиться, что моя программа
полностью отлажена, то я и ввел этот режим с целью заботы о сохранности
файлов исходного кода.
Окна редактирования текстовой записи и элемента схемы открываются как 
"ДОК" только для чтения, можно менять лишь значок пиктограммы и 
сокращение для элемента схемы. После их изменения и нажатия "F2" 
программа:
1) сохраняет файл исходного кода с расширением ".__b" и открывает для
записи новую версию файла исходного кода.
2) переписывает все строки ".__b" в новую версию файла, а когда доходит
до строки, с которой начинается отредактированный элемент записи 
(кстати, при наведении мыши на элемент схемы в режиме "ДОК" во 
всплывающем окне в скобках отображается номер строки файла исходного 
кода, с которой начинается этот элемент), дописывает в конец этой 
строки новый определитель рисунка и сокращения, после чего все 
остальные строки переписываются из ".__b" в новую версию файла без 
изменений.
3) закрывает новую версию файла.
Тупо, зато надежно.
После этого при переходе к окну среды программирования там появится 
вопрос: "Файл ХХХ изменился. Загрузить новую версию?".
Программа по таймеру постоянно проверяет времена создания файлов 
исходного кода и файла сокращений и при их изменении автоматически 
считывает новые версии этих файлов, получаемые при нажатии на кнопку
"сохранить файл" в среде программирования или в текстовом редакторе.
При считывании новой версии файла исходного кода он сохраняется с
расширением ".__r". Перед считыванием новых версий для модулей в режиме
"КОД" их текущие версии сохраняются в "__каталог_чт" (см. dalvjaz.cfg). 
Кроме того, при каждом запуске программы все считываемые программой 
модули сохраняются с расширением ".__o".
Модуль делится на записи, а схема на элементы при помощи служебных
комментариев программы dalvjaz2, которые легко могут быть введены прямо
в среде программирования (подробнее см. dalvjaz.cfg). А если все модули
были загружены как "ДОК" и не планируется вводить для элементов схемы
пиктограммы и сокращения, то dalvjaz2 будет работать в режиме вьюера.
СИЛУЭТНОЕ ПРОГРАММИРОВАНИЕ В ДАЛВЯЗ 2
Следствием вышеуказанных изменений явилось то, что теперь можно 
использовать программу dalvjaz2 как программу для разработки и 
документирования ее же самой.
Каталог для работы с dalvjaz2: ...\dalvjaz2\work - нужно только 
скопировать туда dalvjaz2.exe и исправить пути для каталогов в
...\dalvjaz2\work\dalvjaz.cfg.
Загружаются 5 модулей:
u_dalvj.pas    ДОК
u_files.pas    ДОК
u_ls.pas       ДОК
u_red.pas      ДОК
u_test.txt     КОД
Я решил превратить процедуру создания визуальной схемы 
procedure Tform_ls.b_sozdatx_shemuClick(Sender: TObject) (я раньше уже
разбирал логику работы этой процедуры и приводил скриншоты ее 
визуальной схемы в старом варианте) в цикл-силуэт и воссоздал ее заново
в модуле u_test.txt, вводя элементы схемы с клавиатуры из окна ЛСП,
фрагменты исходного кода вставлял из старой версии процедуры, а также
присваивал элементам схемы сокращения и пиктограммы (если требуется 
текст комментария, состоящий больше, чем из одной строки, можно 
вставить ссылку на запись модуля, содержащую текстовый комментарий,
или на htm-файл, в котором можно и рисунком непонятные моменты 
пояснить). После запоминания созданной процедуры по "ЗФ" я скопировал
сгенерированный текст процедуры в файл u_ls.pas, а старый вариант 
процедуры сохранил для сравнения в файле u_test.txt.
Вложение:
			
				 u_test.txt [15.72 КБ]
			
			Скачиваний: 926
 
				u_test.txt [15.72 КБ]
			
			Скачиваний: 926
		
		
	 В новой версии я изменил стиль вывода схемы.
Линии теперь по умолчанию двойной толщины и зеленого цвета.
Значки теперь выглядят вот так:
Вложение:
			 picts.JPG [ 90.29 КБ | Просмотров: 20971 ]
			picts.JPG [ 90.29 КБ | Просмотров: 20971 ]
		
		
	 После вставки нового варианта процедуры в программу (вроде работает) я
вывел схему этой процедуры на экран и нажал кнопку "BMP", после чего 
программа сгенерировала bmp-файл визуальной схемы процедуры и txt-файл
описания элементов процедуры по их пиктограммам и сокращениям.
Вложение:
			 shema.JPG [ 98.86 КБ | Просмотров: 20971 ]
			shema.JPG [ 98.86 КБ | Просмотров: 20971 ]
		
		
	 2:  начало цикла-силуэта
3:  ветка начальной инициализации
4:  загрузить ЛСП для возможного сообщения об ошибке
5:  запоминаем 1-ю выделенную строку списка ЛСП
6:  устанавливаем параметры главной вертикали схемы
7:  инициализация массива открытых вертикалей схемы
8:  начальная инициализация переменных
9:  удаляем вертикали для схемы
10:  переход к обработке ошибки при ошибке
12:  сброс стека ЛСП
13:  инициализация цикла сканирования ЛСП
15:  начало цикла сканирования ЛСП
16:  задание текущей строки ЛСП
17:  запомнить блочный элемент схемы
18:  получить текущий элемент схемы из ЛСП
19:  получить вершину стека ЛСП
20:  проверка ошибок ЛСП
21:  переход к обработке ошибки при ошибке
24:  окончание цикла сканирования ЛСП
25:  начало IF/EI/цикла
26:  оператор IF, обработка для IF
27:  оператор EI, обработка для EI
28:  начало цикла, обработка для начала цикла
29:  переход к обработке ошибки при ошибке
30:  заносим текущий элемент в стек ЛСП
31:  оператор EB, начало альтернативного блока условия
32:  оператор EB, начало альтернативного блока условия
33:  переход к обработке ошибки при ошибке
34:  оператор E, конец блока условия, обработка для E
35:  оператор E, конец блока условия, обработка для E
36:  переход к обработке ошибки при ошибке
37:  цикл ПОВТОРЯТЬ ДО ...
38:  переход к обработке ошибки при ошибке
39:  конец цикла
40:  переход к обработке ошибки при ошибке
41:  конец цикла, обработка для конца цикла
42:  конец цикла, обработка для конца цикла
43:  переход к обработке ошибки при ошибке
44:  переход к обработке ошибки при ошибке
45:  извлечь элемент из стека ЛСП
46:  обработка для действия
47:  переход к обработке ошибки при ошибке
48:  переход к следующему шагу цикла сканирования ЛСП
51:  заключительные действия
52:  получить вершину стека ЛСП
53:  переход к обработке ошибки при ошибке
54:  обработка после сканирования ЛСП
55:  ошибок при создании схемы не было
56:  схема считана
57:  пересчет координат схемы
58:  вывод на экран
59:  загрузка ЛСП
60:  восстановить выделенную линию списка ЛСП
61:  сохранить схему в массиве памяти модуля схемы
63:  обработка ошибок и выход
64:  обработка ошибки
66:  конец цикла-силуэта
Вот такой опыт силуэтного программирования.
Недавно прочитал заметку Геннадия Николаевича, что профессор Шалыто не
понимает, зачем нужно было придумывать силуэтное программирование, т.к.
все это слишком сложно и громоздко.
За Владимира Даниеловича я отвечать не буду, а от себя, для случая 
ДАЛВЯЗ 2, могу ответить:
1) цикл-силуэт компактифицирует визуальную схему алгоритма, позволяя
размещать достаточно сложный алгоритм на одном экране (можно сравнить
нынешний и предыдущий варианты визуализации b_sozdatx_shemuClick);
2) в ДАЛВЯЗ 2 для создания на основе процедуры визуальной схемы даже
в текстовом редакторе требуются не такие уж и большие усилия - нужно
только скопировать требуемое число раз основной служебный комментарий
задания элемента визуальной схемы (*i*) (или /*i*/ для семейства 
C/C++), а затем в некоторых местах его подкорректировать - для циклов,
выхода и окончания процедуры;
3) сложное условие в ДАЛВЯЗ 2 выполняет те же функции, что и switch-
переключатель, но при этом предоставляет более богатые возможности 
выбора, так что в этом смысле силуэтное программирование в ДАЛВЯЗ 2
можно рассматривать как расширенный вариант switch-программирования.
И еще по поводу внешнего вида блок- и прочих визуальных схем для
описания производственных процессов.
Как правило, блок-схемы алгоритмов реальных производственных и 
технологических процессов почти всегда нуждаются в пояснительном тексте
с расшифровкой используемых в этих схемах сокращений.
В качестве примера - алгоритм из учебника по железнодорожной автоматике
(Сапожников В.В., Кононов В.А. Электрическая централизация стрелок и
светофоров, М.: Маршрут, 2002)
Вложение:
			 2_6_uvs.JPG [ 196.58 КБ | Просмотров: 20971 ]
			2_6_uvs.JPG [ 196.58 КБ | Просмотров: 20971 ]