большинство людей владеет тем или иным языком программирования или знает, каким образом структурированные алгоритмы записываются на Фортране.
Проиллюстрируем используемую нами систему записи на примере алгоритма, обеспечивающего получение изображения класса 1 при помощи печати с наложением. Этот способ вывода изображений являлся хорошим подспорьем для исследователей в период, предшествовавший распространению растровых графических устройств; еще и сегодня он остается популярным хобби. Этот способ целесообразно использовать также в процессе обучения, поскольку построчно-печатающие устройства все еще являются более стандартным оборудованием, чем растровые графические дисплеи. Предполагается, что известна некоторая матрица С, определяющая кодировку печати с наложением. Все символы, содержащиеся
столбце этой матрицы, налагаются при печати для получения тона
Хорошим вариантом матрицы С является матрица символов, используемых для воспроизведения тонов серой шкалы при помощи печати с наложением:
(см. скан)
Операторную конструкцию 1 можно реализовать либо посредством цикла
если известно число строк, либо посредством Цикла
в котором проверяется окончание файла. Операторная
конструкция 2 очевидна, а операторную конструкцию 3 можно реализовать посредством цикла for/do, или while, если конец строки отмечается нуль-символом. В большинстве языков операторная конструкция 4 будет иметь видр (I) —
причем в Фортране для ее реализации может потребоваться два шага. И, наконец, реализация операторной конструкции 5 предполагает, что символы управления кареткой известны. В языке ПЛ/1 следует опускать команду
а в Фортране, при использовании форматированного вывода, первым символом должен быть
Приведенный алгоритм основан на предположении о равенстве числа столбцов матрицы С числу допустимых шкал полутонов. Если это допущение оказывается неверным, то необходимо предусмотреть соответствующие процедуры проверки индексов. Мы не будем включать в алгоритмы подобные процедуры, поскольку рассматриваем их просто в качестве приемов программирования, позволяющих получать хорошие программы (см. например, [1.3]). В данном случае может оказаться целесообразным воспользоваться несколько более сложным отображением
связывающим уровни полутонов и столбцы матрицы С; в результате в операторную конструкцию шага 4 придется ввести запись С
Выбор такого отображения рассматривается в разд. 3.2. Более эффективным способом является расширение исходной матрицы С таким образом, чтобы ее размерность соответствовала числу допустимых уровней полутонов. Однако, описывая алгоритмы, мы таких проблем затрагивать не будем, поскольку они относятся к качеству и стилю программирования.
Если читатель захочет реализовать алгоритм 1.1, он может воспользоваться приведенной здесь таблицей значений матрицы С. Она была предложена Хендерсоном и Танимото [1.2]; тот, кто хочет попытаться реализовать данный алгоритм на ассемблере, найдет в их статье интересную для себя информацию.