Глава 7
Арифметические операции
Краткое содержание: операции +, -, /
выражения, усл. обозначения, имена переменных
Вы уже видели несколько примеров, в которых ZX SPECTRUM может
оперировать числами. Можно выполнять четыре арифметические опера-
ции: ♦, -, / (помните, что * умножение, а / деление), и при
этом определяется значение переменной, задаваемой именем.
Пример:
LET TAXsSUM♦15/100
Отсюда видно, что вычисления могут быть комбинированными. Ком-
бинации такого типа, как:
SUM*15/100
называются выражениями. Выражение - это самый краткий путь для
указания компьютеру на то, что вычисления надо делать одно за
другим. В нашем примере выражение:
SUM*15/100 .
указывает: возьми значение переменной с именем ''SUM'4, умножь
его на 15 и затем раздели на 100. Если вы не можете еще этого
сделать, мы рекомендуем просмотреть вводную часть этой книги,
чтобы ознакомиться с тем, как ZX SPECTRUM работает с числами и
каков порядок, в котором выполняются математические выражения.
Краткое повторение:
Умножение и деление выполняются первыми, они имеют более высо-
кий приоритет, чем сложение и вычитание. Относительно друг друга
умножение и деление имеют равные приоритеты. Существует правило,
по которому умножение и деление выполняются последовательно слева
направо. Когда все они выполнятся, то затем будут выполняться
сложение и вычитание.по порядку слева направо.
Для задания приоритета в компьютере ZX SPECTRUM используются
числа в интервале от 1 до 16. Например, операции '•' н '/' имеют
приоритет 8, а ' + ' и -6. Этот порядок вычислений является
жестким, но его можно изменить при помощи скобок. Выражение в
скобках вычисляется первым, а затем подставляется в общее выраже-
ние как одно число.
Вы можете использовать операцию сложение для сцепления строк
(конкатенции) в выражениях.
Имя строковой переменной состоит из буквы с последующим знаком
'в', имя управляющей переменной в F0R-NEXT цикле должно•состоять
из одной буквы, а имена обычных числовых переменных могут выби-
раться произвольно. Они могут содержать несколько букв и цифр, но
первой всегда должна быть буква.
Вы можете вставлять в имена пробелы для удобства чтения,,
поскольку компьютер не считает их частью имени. Запись имени про-
писными или заглавными буквами не делает их различными,
примеры допустимых имен переменных:
X
Т42
THIS NAME IS SO LONG THAT I SHALL NEVER BE ABLE TO
TYPE IT OUT AGAIN WITHOUT
MAKING A MISTAKE
NOW WE ARE SIX Г ЭТИ ДВА ИМЕНИ УКАЗЫВАЮТ
NOWWEARES1X L НА ОДНУ И ТУ ЖЕ ПЕРЕМЕННУЮ
примеры недопустимых имен переменных:
2001 НАЧИНАЕТСЯ С ЦИФРЫ
3 WEARS --/--/--/--/--/--
M*A*S*H ЗНАК * НЕ БУКВА И НЕ ЦИФРА
FOTHERINGTON-THOMAS СОДЕРЖИТ ЗНАК '-'
числа в выражениях могут задаваться в экспоненциальной форме.
Попробуйте выполнить:
PRINT 2.34Е0
PRINT 2.34Е1
PRINT 2.34Е2 и т.д. до
PRINT 2.34E1S
помните, что оператор PRINT дает лишь 8 значащих цифр числа. Поп-
робуйте выполнить еще:
PRINT 429496729 5,42949 6729 5-429Е7
и вы увидите, что компьютер может воспринять только цифры
4292967295. Компьютер ZX SPECTRUM использует арифметику с плаваю-
щей точкой (запятой), при этом различные части числа (мантисса и
порядок) хранятся в отдельных байтах, что приводит к не всегда
точным результатам даже для чисел. Выполните:
PRINT 1Е10 ♦ 1 - 1Е10, 1Е10 - 1Е10 ♦ 1
1е10 и lelO + 1 не различаются компьютером как разные числа (1е10
усекается справа).
еще один наглядный пример:
PRINT SE9 + 1 - SE9
погрешность составляет около 1, ас прибавлением 1, фактически
округляется до 2. Числа 5е9 + 1 и 5е9 + 2 для компьютера равны.
Наибольшее целое, которое воспринимает он, равно 2**32 - 1 или 4
294 967 295.
Строка (" ") без единого символа называется пустой или нулевой
строкой. Не путайте ее с пробелом, наберите:
PRINT ''HAVE YOU FINISHED " FINNEGANS WAKE" YET?"
Когда вы нажмете клавишу ENTER, то получите мерцающий знак
вопроса, указывающий ошибочное место в строке, когда, при интерп-
ретации этой строки, компьютер найдет двойную кавычку, открываю-
щую" FINNEGANS WAKE", то сочтет ее закрывающей кавычкой для
строки "HAVE YOU FINISHED" и затем сможет вывести "FINNEGANS
WAKE" здесь Надо помнить специальное правило: если вы хотите вы-
вести кавычки внутри строки, они должны удваиваться, например:
PRINT "HAVE YOU FI NN I SHED" " FI NN I SHED WAKE" YET?" В ДАННОМ
СЛУЧАЕ БУДЕТ выведена только фраза, обрамленная двойными кавычка-
ми ' 'FI NN ISHED WAKE' ' .