Программирование на Бейсик 48/128 для ZX-Spectrum 1993 г.

SPECTRUM-бейсик - запись и загрузка экранного изображения. Запись и загрузка содержимого областей памяти. Работа с принтером. Экспоненциальная форма записи чисел. Двоичное счисление.


Запись и загрузка экранного изображения_
save...screens, load...screens, verify...screens

Сохранить на магнитной ленте можно и картинку, изображен-
ную на экране, записав ее на ленту с помощью оператора

save "picture" screens

После чего, вставив в программу строку:
5 load "picture" screens

— можно (если не выключать магнитофон после загрузки програм-
мы) загрузить картинку с ленты прямо на экран. Для этого надо
поместить на ленте файл с картинкой вслед за программным
файлом.

Лучше написать специальный загрузочный модуль — коротень-
кую программку, которая должна загрузиться и запуститься пер-
вой и обеспечить последовательную загрузку сначала заставки
(чтобы скрасить ожидание), потом основного текста программы.

В нашем случае программа-загрузчик может выглядеть так:
5 load "picture" screen$
10 load "dollar"

Запись экранного изображения можно проверить на отсутствие
ошибок оператором

verify "picture" screens

Запись и загрузка содержимого областей памяти

save...code, load...code, verify...code

Сохранить на магнитной ленте экранное изображение можно и
другим способом — как область памяти:

save "picture" code 16384, 6912

Приведенный оператор запишет на ленту содержимое области
памяти, начиная с адреса* 16384 (первый параметр после ключе-
вого слова code) длиной в 6912 байт** (второй параметр). Именно
в этой области памяти хранится информация об экранном изобра-
жении.

Таким же образом, указывая начальный адрес и размер в бай-
тах, можно скопировать на магнитную ленту любую область памя-
ти компьютера. После чего загрузить ее обычным образом, только
указав компьютеру, что следует ожидать блок кодов:

load "picture" code

Если после code не стоит никаких параметров, то блок кодов
загрузится в то место, с которого его записывали. Но можно и
изменить адрес начала области памяти, куда должна производить-
ся загрузка блока, и указать количество загружаемых байт:

load "picture" code 16384, 6912

Запись блока кодов можно проверить на отсутствие ошибок
оператором

verify "picture" code 16384, 6912

Что такое адрес в памяти, см. на стр. 60.

** Напомним, байтом называется восьмиразрядное двоичное число.

РАБОТА С ПРИНТЕРОМ_

LPRINT, LLIST

ZX Spectrum с подключенным к нему принтером открывает
перед программистом новые горизонты.

Во-первых, намного упрощается отладка больших программ.
Ведь с помощью оператора LLIST (аналогичного LIST) можно выве-
сти листинг на принтер и, уже не уткнувшись в экран, а аккуратно
разложив перед собой листки с текстом программы, разбираться:
что, куда и как.

Во-вторых, имея принтер, результаты выполнения собственно-
ручно написанных программ можно не только наблюдать на экра-
не монитора, но и получать материальный продукт их работы в
виде распечаток. Так, например, при работе с нашей «долларовой»
программой можно автоматически распечатывать ведомость расче-
тов. Для этого потребуется лишь добавить в программу несколько
строчек:

1 LET NP=1

2 INPUT "Введите сегодняшнее число "; LINE D$;

3 LPRINT "Ведомость на "; D$

76 LPRINT NP;" " ; Rub; " - "; Dol; "$ ";

77 LET NP=NP+1

В переменной NP хранится номер очередного вычисления.

С помощью оператора COPY на принтере можно получить и
целиком копию экрана. Причем безразлично, что в этот момент
находится на экране — текст или графическая картинка.

При отключенном принтере операторы LLIST, LPRINT и COPY игно-
рируются. Печать всегда можно остановить нажатием Break
(CS/Space).

Как компьютер общается с принтером, на какие управляющие
символы и ключевые слова тот реагирует, зависит от многих при-
чин. В основном, от специальной подпрограммы (драйвера), обслу-
живающей принтер. Тут уж кто как устроится.

О ЧЕМ ЕЩЕ МОЖНО РАССКАЗАТЬ

В этом разделе мы дадим информацию, без которой наш рассказ
был бы неполным.

Экспоненциальная форма записи чисел

Кроме обычной формы представления чисел Speccy понимает и
экспоненциальную, записывая степень через букву Е. Например,
числа 5,5*105, 2,3*10"1 запишутся следующим образом:

print 5.5е5
55ММ
print 2.3е—1
•.23

Оператор print при расчетах выводит результат не более чем с
8 значащими цифрами. Причем и те не всегда точны, даже при
обращении с целыми числами. Например, гт^лолним:

print 1е10+1-1 ею: print 1е10-1е10+1
1
Сравнение чисел

Сравнение чисел может использоваться не только как условие в
операторе if...then, но и при обычных математических расчетах.
Например, попросим print вывести результат выражений, в кото-
рых сравниваются два числа:

print 5<4
print 5>4
1

Что и следовало ожидать: результат истинного сравнения — 1,
ложного — 0. В выражениях, сравнивающих величины, использу-
ются все возможные сочетания знаков: «равно» (=), «больше» (>),
«меньше» (<), «больше или равно» (>=), «неравно» (О), «меньше
или равно» (<=).

Выражения со сравнением можно вставлять и в «нормальные»
числовые выражения:

print 5+2*(3>6)
5

Сравнив числа 3 и 6, компьютер сделал заключение, что выра-
жение в скобках ложно и подставил вместо него ноль.

Сравнение символьных значений

Поскольку каждому символу соответствует некий числовой эк-
вивалент — код, то можно сравнивать не только числовые, но и
символьные значения. Например, казалось бы, абсолютно бес-
смысленное с точки зрения математики выражение:

print "а"<"в"

1

— для компьютера имеет вполне конкретное значение. Подумав,
он сделал заключение, что оно верно, поскольку код буквы А
меньше кода буквы В. При сравнении символьных значений,
состоящих более чем из одного символа, происходит последова-
тельное сравнение кодов до тех пор, пока не встретятся неравные
коды:

print "аааас">"аааав"

1

При прочих равных условиях меньшим будет признано более
короткое символьное значение:

print "аааа">"аааав"

Двоичное счисление

_

Реально компьютер обрабатывает числа, записанные в двоич-
ном счислении: нулями и единицами. Поэтому часто приходится
сталкиваться с необходимостью преобразовывать числа, записан-
ные в двоичном виде, в привычные и для глаза, и для счета,
десятичные. Специализируется на этом функция BIN. Например:

print bin о

print bin 1
1

print bin 10
2

print bin 11

3

print bin 100

4

Мы привели так много примеров, чтобы хоть как-то помочь тем,
кто впервые сталкивается с двоичной записью чисел.

Математически оператор bin эквивалентен формуле:

Dox2° + Dix2X + D2X22 + D3X23 + ...

- где Do, Di, D2, D3, соответственно, разряды двоичного числа,
читаемые справа налево и принимающие значения 0 или 1. Пере-
ведем из двоичного в десятичный вид число 1101:

Do=l, Di=0, D2=l, D3=0, D4=l
1x2° + 0X21 + 1х22 + lx23 = 13
Проверим:
PRINT BIN 1101
13

Так оно и есть.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Hints - хитрости текстового редактора Modern Word 2.1.
G.A.C. - адаптация под TR-DOS системы для написания адвентюр G.A.C.
От авторов - мы будем сторатся все время улучшать и улучшать наше издание.
Железо - Свой первый компьютер я собрал еще в школе...
Игротека - BRAIN PRESSURE. Рассказ о новой логической игре.

В этот день...   29 марта