3.1 Числовые переменные
Это переменные, предназначенные для хранения чисел. В информатике различают целые и вещественные числа, поэтому есть два подтипа:
3.1.1 Целые числа
Название говорит само за себя. Это числа без десятичной запятой и дробной части. Во многих языках есть разные форматы, использующие разное количество байт, что позволяет хранить целые числа разного размера. Есть три подтипа: Short, Int и Long.
В YaBasic есть только длинное целое (4 байта, 32 бита) со знаком, которое позволяет представлять числа от -2147483648 до +2147483647.
3.1.1.1 Short (короткое целое)
С одним байтом (8 бит, 256 комбинаций) можно выразить числа:
- со знаком: от -128 до +127
- без знака: от 0 до 255
3.1.1.2 Int или Integer
Целое из двух байт, 16 бит, позволяет числа:
- со знаком: от -32768 до +32767
- без знака: от 0 до 65535
3.1.1.3 Long (длинное целое)
Этот тип поддерживается в YaBasic. По крайней мере, мы можем быть уверены, что можем хранить довольно большие целые числа, ведь 4 байта (32 бита) дают диапазон:
- со знаком: от -2 147 483 648 до +2 147 483 647
- без знака: от 0 до 4 294 967 295
Замечание по поводу целых типов: можно спросить, зачем нужны Short и Int, если Long позволяет гораздо больше? Верно, но если обрабатываемые числа не превышают 127 (например, возраст людей), можно использовать Short, занимающий 1 байт, а не 2 или 4. Это даёт два преимущества: меньше расход памяти и выше скорость (обрабатывать 1 байт быстрее, чем 4).
В критическом или продвинутом программировании такие тонкости важны.
Однако в YaBasic выбора нет: нет типа Short (1 байт) и обычного целого (2 байта), есть только Long (4 байта).
3.1.2 Вещественные числа
Вещественные числа позволяют выразить число с целой и дробной частью. Например: 23.546
Для отделения десятичных знаков, как правило, используется англосаксонская нотация: точка . для десятичных.
Существуют разные форматы и точности для вещественных чисел, но наиболее употребительны:
- Float (одинарная точность)
- Double (двойная точность)
3.1.2.1 Float или одинарная точность
Используется 4 байта. Диапазон чисел: от 1.5 × 10^-45 до 3.4 × 10^38.
Значащих цифр 7–8.
Символ ^ означает «возвести в степень».
Можно выражать большие числа, но с не очень высокой точностью.
3.1.2.2 Double или двойная точность
Похоже, YaBasic поддерживает именно этот тип. Я говорю «похоже», потому что YaBasic работает с вещественными числами, но в обширном руководстве ничего не сказано о вещественном типе, поэтому мне пришлось исследовать это самому с помощью множества тестов.
Тип Double использует 8 байт и может представлять по-настоящему большие числа в диапазоне:
от 5.0 × 10^-324 до 1.7 × 10^308.
Значащих цифр теоретически 15–16, но в моих тестах получается только 6; остальное — экспонента, которая может достигать e308 для положительных чисел и e-324 для отрицательных.
Примечание о целых и вещественных числах в YaBasic:
Эта сторона данного варианта Basic мне не нравится. Типизация отсутствует: можно назвать переменную целой, присвоить ей целое число, а затем присвоить той же переменной вещественное число, и Basic не «возразит», ошибки не будет. Так быть не должно: в надёжном языке целая переменная предназначена для целых чисел, вещественная — для вещественных. Будем учитывать это, чтобы избегать ошибок. Подчеркну, что даже другие варианты Basic имеют более строгую типизацию, чем мы только что видели.