ГЛАВА 7
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
Краткое содержание: операции +, *, /.
Выражения, усл.обозначения, имена
переменных
Вы уже видели несколько примеров, в которых ZX SPECTRUM может
оперирова1ъ числами. Можно выполнять четыре арифметических операции:
*. / (помнитё, что * используется для умножения, а "/ " используется
для деления). И при этом определяется значение переменной, задаваемой
именем. Пример:
LET tax-sum*15/100
Отсюда видно, что вычисления могут быть комбинированными.
Комбинации такого типа, как
sum* 15/100
называются выражениями. Выражение - это самый короткий путь для
указания компьютеру на то, что вычисления надо делать одно за другим. В
нашем примере выражение
sum*15/100
указывает: возьми значение переменной с именем "sum", умножь его
на 1э и затем подели на 100. Если ыы не можете ещё этого сделать, реко-
мендуем просмотреть вводную часть этой книги, чтобы ознакомиться с тем.
как ZX SPECTRUM работает с числами и каков порядок, в котором выполня-
ются математические выражения.
Краткое повторение: Умножение и деление выполняются первыми.
Они имеют более высокий приоритет, чем
сложение и вычитание.
Относительно друг друга умножение и деление
имеют равные приоритеты.
Существует правило, по которому умножение и
деление выполняются последовательно слева
направо. Когда все они выполняются, то затем
будут выполняться сложение и вычитание по
порядку также слева направо.
Для задания приоритета в компьютере ZX SPECTRUM используются
числа в интервале от 1 до 16. Например, операции п*м и V имеют
приоритет 8, а, "+" и - 6. Этот порядок вычислений является жестким, но
его можно изменить при помощи скобок. Выражение в скобках вычисляется
первым, а затем подставляется в общее выражение как одно число.
Вы можете использовать операции сложение (и+м) для сцепления строк
(конкатенции) в выражениях.
Имя строковой переменной состоит из буквы с последующим знаком
"$", имя управляющей переменной в FOR - NEXT цикле должно состоять из
одной буквы. А имена обычных числовых переменных могут выбираться
произвольно. Они могут содержать несколько букв и цифр, но первой всегда
должна быть буква.
Вы можете вставлять в имена пробелы для удобства чтения, поскольку
компьютер не считает их частью имени. Запись имени прописными или за-
главными буквами не делает их различными.
Примеры допустимых имен переменных:
х
Т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 эти два имени указывают на
одну
nOWWeaReSIX / и ту же переменную
Примеры недопустимых имен переменных:
2001 (начинается с цифры)
3 bears (начинается с цифры)
M*A*S*H (знак - не буква и не цифра)
Fotherington-Thomes (содержит знак
Числа в выражениях могут задаваться в экспоненциальной форме. Поп-
робуйте выполнить:
PRINT 2.34Е0
PRINT 2.34Е1
PRINT 2.34Е2 и т.д. до
PRINT 2.34Е15
Помните, что оператор PRINT даёт лишь 8 значащих цифр числа. Поп-
робуйте выполнить ещё:
PRINT 4294967295
PRINT 4294967295-429Е7
и Вы увидите, что компьютер может воспринять только цифры
4294967295.
Компьютер ZX SPECTRUM использует арифметику с плавающей точкой
(запятой), при этом различные части числа (мантисса и порядок) хранятся в
отдельных байтах, что приводит к не всегда точным результатам даже для
целых чисел. Выполните:
PRINT 1Е10+1-1Е10,1Е10-1Е10М
1 ЕЮ и 1Е10 + 1 не различаются компьютером как разные числа (1Е10
усекается справа).
Ещё один, более наглядный пример:
PRINT 5Е9+1-5Е9
Погрешность в 5Е9 составляет около 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 finished""Finnegans Wake""yet?"
В данном случае будет выведена фраза
Have you finished"Finnegans Wake"yet?