ZX учебный класс - Команды BASIC на ZX Spectrum и ввод данных через INPUT

ZX Revija #01

ZX Учебная: BASIC

В этой рубрике первые три номера ZX Revije постараются вкратце познакомить вас с основами BASIC для ZX Spectrum. Это сделано по предложениям, поступившим в редакцию.

Основные команды компьютера

RUN — выполнение программы
LIST — вывод программы на экран
BREAK — временная остановка программы
CONTINUE — продолжение выполнения программы, временно остановленной командой BREAK
EDIT — вывод текущей строки внизу экрана, что позволяет изменить её содержимое
NEW — удаление программы и переменных из памяти, а также очистка самого экрана
CLEAR — удаляет все переменные и освобождает занимаемое ими пространство

Команды ввода-вывода и связанные с ними команды

К этой группе относятся следующие команды: INPUT, PRINT, CLS, READ, DATA и RESTORE.

INPUT

Служит для ввода данных с клавиатуры и присваивания их входным переменным.

Общий формат:

INPUT[ строковое выражение ;] список

где:

  • строковое выражение — строковое выражение, которое отображается на экране в момент ожидания ввода данных с клавиатуры;
  • список — одна или несколько переменных, разделённых запятыми, которым присваиваются значения, введённые с клавиатуры;
  • ; — символ, отделяющий строковое выражение от переменных, указанных в списке.

Команда выполняется так: выполнение программы временно приостанавливается и ожидается ввод значений для переменных, указанных в списке.

Примечания:

  1. Команду INPUT можно использовать вместе с опцией AT, чтобы задать позицию на экране (строку, столбец), в которой будет приниматься значение.

    Общий формат опции:

    AT m,n

    где:

    • m — задаёт строку;
    • n — задаёт столбец в строке m (0–31).
  2. Команду INPUT можно использовать вместе с опцией LINE. Она позволяет избежать появления кавычек при вводе строковой переменной.

  3. Команду INPUT можно использовать вместе с опциями задания цвета (PAPER, INK, FLASH, BRIGHT, INVERSE или OVER).

PRINT

Используется для вывода числовых значений и текста на экран монитора (или телевизора).

Общий формат команды:

PRINT[ список]

где:

  • список — перечень элементов.

Примечания:

  1. Символы запятая, апостроф и точка с запятой служат для разделения элементов списка и задают расположение выводимых на экран данных и текста:

    • ' — продолжает вывод в следующей строке;
    • , — продолжает вывод в следующей половине строки (начиная со столбца 0 или столбца 16);
    • ; — продолжает вывод в следующем столбце.
  2. Команду PRINT можно использовать вместе с опцией TAB, которая задаёт расположение вывода в пределах одной строки, то есть определяет начальную позицию поля вывода в строке.

    Общий формат опции:

    TAB n

    где n задаёт столбец, с которого начинается первое поле, указанное в команде PRINT.

  3. Команду PRINT можно использовать вместе с опцией AT, чтобы задать начальную позицию (строку и столбец) на экране, с которой начинается вывод данных и текста.

    Общий формат опции:

    AT m,n

    где:

    • m — задаёт строку (0–21);
    • n — задаёт столбец в строке m.
  4. Команду PRINT можно использовать вместе с опциями задания цвета (PAPER, INK, FLASH, BRIGHT, INVERSE или OVER).

CLS

Используется для очистки экрана.

Общий формат команды:

CLS

При выполнении этой команды содержимое экрана очищается.

DATA

Используется для размещения в программе данных, которые будут прочитаны командой READ. Данные считываются последовательно, по порядку; строковые данные должны быть заключены в кавычки.

Общий формат команды:

ZX Учебная: BASIC

DATA

Список данных, где:

список данных — перечень элементов, разделённых запятыми. Элементами списка могут быть числовые и символьные переменные.

Эта команда не исполняется сама по себе, а связана с одной из команд READ. Чаще всего она помещается в конце программы. Типы данных в команде DATA и имена переменных в команде READ должны соответствовать друг другу.

READ

Используется для считывания данных, указанных в команде DATA, и присвоения их переменным, перечисленным в команде READ.

Общий вид команды:

READ список переменных

где:

список переменных — одна или несколько числовых, символьных или индексных переменных, разделённых запятыми.

При выполнении этой команды переменным, указанным в READ, присваиваются значения из одной или нескольких команд DATA. Эта команда похожа на INPUT, но считываемые данные фиксированы и заранее заданы командой DATA.

RESTORE

Используется для инициализации данных, указанных в команде DATA.

Общий вид команды:

RESTORE [номер]

где:

номер — номер строки команды DATA, с которой начинается инициализация. Если номер не указан, начальной позицией считается первая команда DATA в программе.

Эта команда позволяет следующей команде READ считывать данные начиная с первой команды DATA, номер строки которой равен или больше номера, указанного в команде RESTORE.

Примеры команд из предыдущей группы:

10 PRINT "Obrež",15.10.1989;" god."

a) PRINT 2+3*5
b) PRINT "Novi Sad"
c) PRINT "Novi Sad"
d) PRINT "Novi Sad"
e) PRINT AT 10,10;"ZX REVIJA"
f) PRINT TAB 10;"BASIC"

10 INPUT "argument? ";x
20 PRINT "Funkcija:"
30 PRINT: PRINT y=x*x-3*x-1.6
40 PRINT: PRINT "za x=";x;" ima vrednost"
50 PRINT x*x-3*x-1.6

10 INPUT a$:INPUT LINE b$
20 PRINT "(INPUT):"
   ;a$
30 PRINT "(INPUT LINE):"
   ;b$

10 READ a$
20 PRINT "ime:"
   ;a$
30 DATA Matija

10 READ a,b:PRINT a,b
20 RESTORE 40
30 READ x,y,z:PRINT x,y,z
40 DATA 1,2,4

10 READ x:RESTORE 200
20 READ y:RESTORE 300
30 READ z
40 PRINT x;" ";y;" ";z
100 DATA 23,43,54
200 DATA 1,0,3
300 DATA 200,300,400

Команда комментария REM

Используется для добавления строки комментария в программу.

Общий вид команды:

REM текст

где:

текст — любое содержимое, служащее комментарием.

Пример команды REM:

10 REM primer za naredbu REM
20 INPUT "stranica?";a
   INPUT "visina?";h
30 PRINT "trougao sa:"
   PRINT "stranicom a=";a
40 PRINT "i visinom h=";h
50 REM rezultat P=a*h/2
60 PRINT "ima površinu P=";a*h/2

Команда остановки STOP

Используется для прекращения дальнейшего выполнения текущей программы.

Общий вид команды:

STOP

Она останавливает выполнение программы, после чего его можно продолжить командой CONTINUE.

Пример команды STOP:

10 READ a,b,c
20 PRINT a,b,c
30 DATA 10,11,15
40 STOP

Команда присваивания LET

Используется для вычисления значения выражения — числового или символьного — и присваивания вычисленного значения переменной, числовой или символьной.

Общий вид команды:

LET<числовая переменная>=<числовое выражение>
LET<символьная переменная>=<символьное выражение>

Команда действует следующим образом: вычисляется значение выражения справа от знака равенства, а затем присваивается переменной слева от знака равенства.

Пример команды LET:

10 REM pretvaranje metre u centimetre
20 INPUT "unesite veličinu u metrima:";m

ZX Учебная: BASIC

Фрагмент 3/4.

;m
30 LET c=100*m
40 PRINT m; "метров — "; c; " см": STOP

Функции для выполнения основных математических операций

Доступны следующие функции: SQR, EXP, LN, ABS, SGN, INT, SIN, COS, TAN, ASN, ACS и ATN.

SQR

Используется для вычисления квадратного корня из числового значения.

Общий вид функции:

SQR(числовое выражение)

Значение числового выражения, являющегося аргументом функции, не должно быть меньше нуля.

EXP

Используется для определения экспоненты числового выражения.

Общий вид функции:

EXP(числовое выражение)

Экспоненциальную функцию вида aᵇ можно вычислить с помощью соотношения:

aᵇ = EXP(b*LN(a))
LN

Используется для вычисления логарифма числового выражения (речь идёт о функции ln(x), то есть о логарифме по основанию e = 2,71…).

Общий вид функции:

LN(числовое выражение)

Значение числового выражения должно быть больше нуля.

ABS

Используется для определения абсолютного значения числового выражения.

Общий вид функции:

ABS(числовое выражение)

По определению:

|x| =  x, если x > 0
        0, если x = 0
       -x, если x < 0
SGN

Используется для определения знака числового выражения.

Общий вид функции:

SGN(числовое выражение)

По определению:

sgn(x) =  1, если x > 0
          0, если x = 0
         -1, если x < 0
INT

Используется для определения целой части числового выражения.

Общий вид функции:

INT(числовое выражение)

Под целой частью числового выражения понимается наибольшее целое число, не превышающее значение заданного выражения. Например:

INT(7.13)=7
INT(-5.6)=-6
SIN, COS и TAN

Используются для вычисления одной из тригонометрических функций SIN, COS и TAN для заданного числового выражения.

Общий вид функций:

SIN(числовое выражение)
COS(числовое выражение)
TAN(числовое выражение)

Здесь числовое выражение — аргумент функции, представляющий значение угла в радианах.

Примечания:

  1. При использовании функции TAN следует учитывать, где эта функция не определена.
  2. Функцию ctg(x) можно вычислить по формуле:
ctg(x)=1/tg(x)
ASN, ACS и ATN

Используются для вычисления значений обратных тригонометрических функций для заданного числового выражения.

Общий вид функций:

ASN(числовое выражение)
ACS(числовое выражение)
ATN(числовое выражение)

Числовое выражение — аргумент функции. Для него существуют определённые ограничения, поскольку оно представляет собой значение sin(x), cos(x) или tg(x).

Примечания:

  1. Для функций ASN и ACS числовое выражение должно принадлежать интервалу [-1, 1]. Для функции ATN следует учитывать, где функция tg(x) определена.
  2. Функцию arcctg(x) можно вычислить по формуле:
arcctg(x)=PI/2-arctg(x)

Примеры использования предыдущих функций

10 REM вычисление квадратного корня
20 INPUT "Введите число?";a
30 PRINT "Для числа a=";a
   PRINT "Квадратный корень равен ";SQR(a)
40 STOP
10 INPUT "Введите значение показателя?";a
20 PRINT "Для числа a=";a
   PRINT "Значение EXP(a) равно ";EXP(a)
30 STOP
10 INPUT "Введите число?";a
20 PRINT "Логарифм числа a=";a;" равен ";LN(a)
10 INPUT "Первое число ";a
   INPUT "Второе число ";b
20 PRINT "Для чисел a=";a
   PRINT "Абсолютное значение произведения a*b равно ";ABS(a*b)
10 INPUT a,b: PRINT "a=";a, "b=";b
20 PRINT "Знак разности a-b: ";SGN(a-b)
10 INPUT "Введите число?";a
20 PRINT "INT(a)=";INT(a)
10 PRINT "ТРИГОНОМЕТРИЧЕСКИЕ ФУНКЦИИ"
   PRINT
20 PRINT "Для угла АЛЬФА=30 градусов, то есть..."

π/6 радиан

30 PRINT "sin 30°="; SIN(PI/6)
40 PRINT "cos 30°="; COS(PI/6)
50 PRINT "tg 30°="; TAN(PI/6)
60 PRINT "ctg 30°="; 1/TAN(PI/6)

10 FOR n=0 TO 255
20 PLOT n,88+175/PI*ASN(n/128-1)
30 NEXT n

10 FOR n=0 TO 255
20 PLOT n,40+120/PI*ASN(n/128-1)
30 NEXT n

10 PRINT ATN -1
20 PRINT ATN 0
30 PRINT ATN 1

Команды для генерации случайных чисел

RND

Используется для получения случайного числа из интервала [0, 1), то есть числа, которое не может быть меньше 0 и обязательно меньше 1. Таким образом, функция RND возвращает случайное значение, всегда находящееся между 0 и 1.

Общий вид функции:

RND

RANDOMIZE

Используется для задания начальной позиции в последовательности случайных чисел, генерируемых функцией RND, то есть для определения начального случайного числа.

Общий вид команды:

RANDOMIZE [n]

где:

n — целое число, удовлетворяющее условию 0<=n<=65535

Примечания:

  1. Запись RANDOMIZE эквивалентна записи RANDOMIZE 0.
  2. Функция RND, следующая за командой RANDOMIZE n, всегда возвращает значение [75*(n+1)-1]/65536.

Пример использования функции RND:

10 REM случайное число из интервала 1–36
20 PRINT 1+INT(RND*36): STOP

Пример использования команды RANDOMIZE:

10 RANDOMIZE 1
20 PRINT "случайное число 1"; RND
30 PRINT "случайное число 2"; RND
40 PRINT "случайное число 3"; RND
50 PRINT "случайное число 4"; RND: STOP

Нажми a для повтора
Нажми b для продолжения

Экран 25

Поделитесь вашим мнением о статье