Главная » Basic » ПСЕВДОГРАФИКА

0

Псевдографика представляет собой  возможность изображения  обычных  текстовых символов    и символов  особого вида   в  произвольном месте экрана ВТУ. Как минимум,  программа на Бейсике должна  иметь  возможность  изображать  все  символы из   набора  ASCII,   а   также  управлять перемещениями  курсора, но лучше всего, если кроме этого можно изображать некоторые символы особого вида или отдельные точки.

Подобные возможности псевдографики предоставляются многими системами посредством оператора PRINT.  При   этом  оказывается возможным программировать функции управления курсором  и изображать любой  символ    в   любой  заданной  точке  экрана.  Персональная  ЭВМ  PET  фирмы Commodore имеет очень хороший набор графических символов, так что при работе на ней описанный метод позволяет добиваться вполне удовлетворительных изображений.

Другие системы стремятся  предоставить  более  богатые  графические  возможности  и   позволяют высвечивать  или гасить  в произвольном месте экрана небольшие области, или точки,  или небольшие отрезки прямых линий, а также изображать их в разном цвете. В таких системах предусматриваются специальные операторы, например PLOT (чертить).

6.6.1 ПРИМЕНЕНИЕ ОПЕРАТОРА PRINT

Системы, в  которых графические  возможности обеспечиваются  применением обычного оператора PRINT (например, персональная ЭВМ PET), позволяют с его помощью выдавать любые символы,  в том числе  и управляющие, в результате чего можно получить  все те эффекты, которые достигаются нажатиями  клавиш на клавиатуре.  Таким образом, с помощью оператора PRINT можно добиться стирания экрана, перемещения курсора в начальную позицию, влево, вправо, вверх и вниз, вставки и удаления символов.  Обычно для этих целей используется функция CHRS  (  ),  которая способна возвращать символы  с  кодом,  соответствующим  нажатию любой  клавиши.  Если Ваша  система обеспечивает подобные возможности, то в результате исполнения программы

на экране должны произойти все виды странных действий, поскольку описанная выше программа выдает весь репертуар действий, вызываемых  при нажатии клавиш. Каждая система  имеет свои коды для многих управляющих действий, так что для иллюстраций этих действий выберем одну из систем,  а именно PET. В табл. 6.9 собраны все виды управляющих  действий для PET. Хотя описания этих действий относятся к системе PET, тем не менее они дают общее представление о работе подобных систем. Не забудьте, что в  системах, где псевдографика  ориентирована на оператор PRINT, номер текущей позиции курсора после изображения очередного символа увеличивается на 1 (или большее число, а зависимости  от разделителя запятой или  точки с запятой). Для проведения  обычным способом (слева направо) горизонтальной линии можно использовать операторы

10   FOR I=1 TO 10

20      PRINT"-";

30   NEXT I

Если попробовать  провести вертикальную линию посредством операторов

10  FOR I=1 ТО 10

20     PRINT "I";CHR$ (17);

30   NEXT I

Система ZX81 фирмы Sinclair служит примером системы, предусматривающей простейшие средства для вычерчивания и  позволяющей применение обоих описанных выше подходов. Каждая позиция символа на экране ВТУ рассматривается как квадрат, который делится на 4 квадрата (рис. 6.2),

каждый из которых может быть высвечен отдельно с помощью вызова

PLOT X, Y и погашен с помощью вызова

UNPLOT X, Y

Так как всего имеется 22 строки по 32 столбца, то возможны значения Y (снизу вверх) от 0 до 43, а X (слева направо) от  0  до  63.  Подпрограммы,  реализующие перемещение к  другой  позиции    и изображение отрезка прямой, могут быть получены из базовых операторов PLOT и UNPLOT. 210

Система ВВС  служит  примером системы, предоставляющей полный  набор  настоящих средств вычерчивания.  При работе с ней можно выбирать  любой из  пяти имеющихся  режимов графики, отличающихся  по  определению и   цветовой гамме.  Все  они основаны на  декартовой системе координат, у которой начало находится в  левом нижнем углу экрана, а размер координатной плоскости составляет 1280  единиц  масштаба по  горизонтали  (по  Х-координате) и   1024  единицы  по вертикали (по Y-координате) . В табл. 6.10 указано назначение различных операторов и функций. Таблица 6.10.

Графический оператор или функция

Действие

MODE N               Устанавливает  один из восьми возможных  режимов изображения данных на экране (от N = 0 до N = 7), но графика обеспечивается только в режимах N = 0, 1, 2, 4, 5

VDU список значений

Обеспечивает  комплексные возможности управления графикой, цветом участков экрана, перемещением курсора. Например, VDU 22,N эквивалентно MODE N

GCOL N, M          Устанавливает основной цвет или цвет фона графического изображения и производит  некоторые действия. При N = 0 значение М определяет цвет изображения: М =0-15       основной цвет, М

= 128-143 цвет фона

CLG                       Гасит графическое изображение на экране, закрашивает экран текущим цветом фона и перемещает курсор в исходную позицию с координатами (0, 0)

PLOT К, X, Y       Может выполнять различные действия в зависимости  от значения К: К = 0          перемещение на (X, Y) по отношению к последней точке; К =4         перемещение в позицию  с координатами (X, Y); К = 1,2,3   перемещение на (X,Y) по отношению к последней

точке  с изображением  отрезка заданного цвета; К =5,6,7 перемещение в позицию  с координатами (X,Y)  с изображением отрезка заданного цвета;

К =16-23 изображение пунктирного отрезка; К =64-71 изображение точки; К =80-87 изображение треугольника с вершинами   в  точке (X,Y)  и в двух последних использованных точках

DRAW X, Y

MOVE X, Y

Действует как PLOT 5, X, Y Действует как PLOT 4, X, Y

Система ВВС предусматривает  три типа операторов:  выбор режима и других параметров с помощью оператора MODE  или более сложного оператора

VDU, выбор основных цветов   и инициация  экрана с помощью операторов GCOL и  CLG, а также полный  набор  средств вычерчивания,  предоставляемый оператором PLOT.  Операторы DRAW  и

MOVE  можно  рассматривать как  частные  случаи оператора  PLOT.  Последующие расширения оператора PLOT смогут включать  вычерчивание кривых.

В системе ВВС команды COLOUR  и  CLS эквивалентны  GCOL  и  CLG, но  действуют только в текстовом режиме.

Треугольник  для   иллюстрации   применения этих  функций  вычерчивает следующая   простая программа:

10 REM ВЫЧЕРЧИВАНИЕ ТРЕУГОЛЬНИКА НА ПЭВМ ВВС

20 REM ПРИСВАИВАНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ

30 ANGLE=2.094395         :REM 120 ГРАДУСОВ

40 CENTREX=640                       :REM ЦЕНТР ТРЕУГОЛЬНИКА

50 CENTREY=512

60 R=400                                    :REM РАДИУС ОПИСАННОЙ ОКРУЖНОСТИ

70 REM НАЧАЛЬНЫЕ УСТАНОВКИ ДЛЯ ВЫЧЕРЧИВАНИЯ

80 MODE 5

90 GCOL 0,129                         :REM КРАСНЫЙ ФОН

100 GCOL 0,2                               :REM ЖЕЛТЫЕ ЛИНИИ

110 CLG                                         :REM ГАШЕНИЕ ЭКРАНА

120 REM

130 FOR THETA=0 TO 2 STEP .1 :REM ВРАЩЕНИЕ ТРЕУГОЛЬНИКА

140   X0=CENTREX+R*COS(THETA)

150   Y0=CENTREY+R*SIN(THETA)

160   MOVE Х0.Y0

170 X=CENTREX+R*COS(THETA+ANGLE)

180 Y=CENTREY+B*SIN(THETA+ANGLE)

190   DRAW X,Y

200   X=CENTREX+R*COS(THETA+2*ANGLE)

210   Y=CENTREY+R*SIN(THETA+2*ANGLE)

220   DRAW X,Y

230   DRAW X0.Y0

240 NEXT THETA

250 END

6.7.  ВО ЧТО ПРЕВРАЩАЕТСЯ БЕЙСИК

He все версии Бейсика имеют расширения, описанные в предыдущих разделах настоящей главы. Повидимому, происходит  так, что появляющуюся на рынке новую вычислительную систему стараются снабжать версией Бейсика,  обладающей несколько бс5льшими возможностями,  чем у конкурентов. Вследствие  этого  с  годами язык разрастается, так как ранее сделанные расширения  признаются большинством разработчиков компиляторов как  стандартные  свойства языка.  Хотя  многие из расширений имеют идентичное назначение, способы  их   записи значительно варьируются.   В действительности   существуют  стандарт  минимального подмножества  Бейсика,  разработанный Американским национальным  институтом стандартов (ANSI) в 1976 году и принятый в 1978 году как стандарт ЕСМА-55 Европейской ассоциацией  производителей  ЭВМ, и  последний стандарт ANSI, принятый в 1982 году и включающий в себя расширенные возможности.

Складывается впечатление, что расширения Бейсика возникают самым беспорядочным образом. Так,

версия Бейсика Microsoft имеет только циклы

WHILE-WEND, а в  Бейсике ВВС циклы организованы по принципу REPEAT-UNTIL. Но если бы разработчики  этих компиляторов поговорили  с  несколькими  пользователями  своих систем, то,

наверное, услышали бы пожелания иметь сразу оба типа структуры циклов.  Это обусловило  бы незначительное  увеличение   памяти,  занимаемой  компилятором/интерпретатором, и    чуть-чуть замедлило бы  его  работу.  Очевидно,  фирма Microsoft  решила реализовать  цикл WHILE-WEND потому, что он похож на ее реализацию цикла FOR-NEXT, в которой проверка выполняется в начале цикла и,  следовательно, компилятор/интерпретатор  может обрабатывать эти циклы аналогичным образом.  А  в   версии    ВВС  проверка   выполняется в   конце  циклов FOR-NEXT,  чему  хорошо соответствует конструкция REPEAT-UNTIL.

Одним из заслуживающих  внимания этапов в развитии  Бейсика является создание языка COMAL. Он был разработан в 1974 году в Дании  Б. Кристенсеном и Б. Лофштедтом как расширение Бейсика. В настоящее время закончена работа над стандартом языка COMAL 80. Он предусматривает большое число  расширений Бейсика  и    разработан   с   учетом   современных  идей  построения   языков программирования и методов структурного программирования и структурного проектирования. Этот язык прекрасно разработан, и  некоторые из  его свойств  бегло описаны в  следующем  подразделе. Однако в последние годы было разработано немало хороших языков программирования, которые так и не получили широкого распространения не из-за каких-либо недостатков,  а просто потому, что они не были поддержаны крупными  производителями ЭВМ. Надо надеяться, что COMAL не постигнет эта судьба. Более подробные сведения об этом языке можно найти   в книге Roy Atherton Structured Programming with COMAL, выпущенную издательством Ellis Horwood в 1982 году.

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии