Типы данных
Данные и их типы
Каждая переменная в языке QuickBASIC имеет тип. Тип определяет, какие данные хранятся в этой переменной. Существует две основных категории данных: числовые и символьные. Каждая категория включает в себя элементарные типы данных, о которых рассказано ниже.
Числовые типы данных
Числовые данные представляют собой числа. Они бывают следующих типов: целые, длинные целые, обычной точности, двойной точности:
Целые (INTEGER) — занимают в памяти 2 байта и используются для значений в диапазоне от -32768 до +32768.
Длинные целые (LONG) — 4 байта. Используются для значений в диапазоне от -2,147,483,648 до +2,147,483,647. Они используются в тех случаях, когда необходимы операции с целочисленными переменными, выходящими за рамки диапазона целых чисел в представлении BASIC.
Обычной точности (SINGLE) — 4 байта. Используется для значений в диапазоне от -3.402823Е+38 до -1.40129Е-45 для отрицательных значений и от +I.40129E-45 до т3.402823Е+38 для положительных значений.
Двойной точности (DOUBLE) — 8 байт. Используется для значений в диапазоне о т -1.797693134862316Е+308 до -4.94965Е-324 для отрицательных значений и от 4.94965Е-324 до 1.797693134862316Е+308 для положительных значений. Обычно применяется для точных математических вычислений, не допускающих потерю значности.
Символьные типы данных
Строка переменной длины (STRING)— это последовательность длиной до 32567 символов из таблицы ASCII. В памяти она занимает столько байт, какова ее длина + 4 байта на описатель.
Строка фиксированной длины (STRING * num) — символьная строка длиною num байт. В памяти такая строка занимает num байт.
Пользовательские типы данных (записи)
Если данные, которые выиспользуете в программе, необходимо сгруппировать по какому-либо признаку, то для этого очень удобно использовать пользовательский тип данных (записи). Он составляется из простых типов данных (числовых и символьных), описанных выше.
|
Например, нам необходимо ввести табельный номер работника, его фамилию и тарифную ставку.
‘Определим пользовательский тип данных Record
‘с помощью оператора TYPE
TYPE Record
TabNomer AS INTEGER
Family AS STRING * 15
Stavka AS DOUBLE
END TYPE
‘Присваиваем переменной Rabotnikпользовательский тип
‘данных Record
DIM Rabotnik AS Record
‘Последовательно вводим значение каждого элемента записи
INPUT "Введите табельный номер"; Rabotnik.TabNomer
INPUT "Введите фамилию работника"; Rabotnik. Family
INPUT "Введите тарифнуюставку"; Rabotnik.Stavka
Пользовательский тип данных занимает в памяти столько байт, сколько занимают в сумме каждый из составляющих его элементов. Для нашего примера запись Rabotnik включает целое число (2 байта), строку фиксированной длины (15 байт) и число удвоенной точности (8 байт). Таким образом она имеет размер 25 байт.
Типы данных, определяемые пользователем, могут включать любые типы стандартных данных, кроме строк переменной длины и массивов.
Константы
Константами называются заранее предопределенные значения, которые не меняются в процессе работы программы. В качестве примера можно привести число PI, основание натурального логарифма, год Вашего рождения и т.д. Константы удобно использовать для тех величин в Вашей программе, которые не предполагается изменять — число строк, выводимых на экран, значения функциональных клавиш, и т. д.
В языке QuickBASIC имеются 2 типа констант — неименованные и именованные.
|
Неименованные константы
Они бывают символьные и числовые, и используются в программе в тех случаях, когда их значение заранее известно и не подлежит изменению.
Символьные константы — это последовательность до 32767 алфавитно-числовых символов (за исключением кавычек (") и символов перевода каретки и пропуска строки (CR — ASCII 13 и LF — ASCII 10). Они обязательно должны заключаться в кавычки:
"ПРИВЕТ"
"$ 25,000,000"
"Число работников"
Пример:
PRINT "Средняя заработная плата"
Числовые константы представляют собой положительные или отрицательные числа. Они могут быть тех же типов, что и переменные — целые или длинные целые типа, обычной или двойной точности:
Целый тип: 68, +407 -1
Длинный целый тип: 95000000, -400141
Обычной точности: 9.0846
Двойной точности: 4.35D-10
Пример:
PRINT 15000
Именованные константы
Они также бывают символьные и числовые, тех же типов, чтои неименованные. Чтобы использовать именованную константу, ее необходимо объявить при помощи ключевого слова CONST, например:
CONST MaxArray% = 512
В этом примере объявляется целочисленная константа МахАrrау и ей присваивается значение 512. В дальнейшем к этой константе можно обращаться по имени:
DIM Tovar$(МахАrrау)
Символьная константа объявляется и используется аналогично:
CONST BAD$ = "mbt120o016eee12c"
…..
PLAY BAD
При обращении к именованным константам вы можете опускать расширение, как показано в этих примерах.
Использование именованных констант имеет ряд преимуществ по сравнению с использованием для этих целей переменных:
|
• Однажды определив константу, вы не сможете случайно изменить ее значение. BASIC сразу выдаст сообщение об ошибке "Duplicate Definition" (Двойное определение);
• Именованная константа доступна всем процедурам и функциям данного модуля. В случае же использования переменной, вы должны будете объявить ее как SHARED во всех процедурах и функциях модуля;
• BASIC выполняет операции с константами быстрее, чем с переменными.
|
Удобно использовать именованные константы для обозначения функциональных клавиш. Это очень помогает при написании программ — не надо держать в голове, коды этих клавиш — вместо этого можно просто написать:
CONST F1% = 59, F2% = 60, F3% = 61, F4% = 62, F5% = 63
CONST F6% = 64, F7% = 65, F8% = 66, F9% = 67, F10% = 68
………
SELECT CASE Kod
CASE IS = Fl: …….
CASE IS = F2: …….
CASE F3 TO F9:.......
CASE IS = F10:...
END SELECT
Переменные
Переменная — эта величина, которая может меняться при выполнении программы. Если привести пример из житейской практики, то можно скачать, что переменная величина, к примеру, сколько у Вас сейчас денег, или ближе к компьютерной практике, сколько свободного места осталось у Вас на жестком диске.
Переменные бывают простые (символьного типа, числового типа и пользовательского типа) и переменные массивы — представляющего собой группу объектов одного типа.
Имена переменных
Имена переменных могут содержать до 40 символов. В имени переменных могут содержаться латинские буквы, числа, десятичная точка, и символы определения типа (%, &,!, # и $). Первый символ должен быть латинской буквой. Если переменная начинается с FN, подразумевается вызов функции DEF FN.
Имя переменной не может быть зарезервированным словом QuickBASIC, хотя допускается комбинация зарезервированного слова и других символов.
Так, в примере содержится ошибка — LOCATE (разместить) является зарезервированным словом (без учета регистра):
locate = 7
Однако следующий пример допустим:
LocateCursor = 7
Зарезервированными словами в QuickBASIC являются команды, операторы, имена функций.
Давая имена переменным, вы можете комбинировать в них прописные и строчные буквы. Хотя BASIC не различает прописные и строчные буквы при работе с переменными, это очень удобно для программиста, поскольку в имени переменной он может сделать акцент на ее назначение, например:
PrixodSklad% = 1000
ErrorHandler% = 7
DetalName$ = "Турбодетандер"
QB внимательно следит за тем, чтобы комбинация прописных и строчных букв была бы одинакова для всех переменных. Так, если вы назвали переменную happynewyear, а затем, к примеру, обратились к ней, как к переменной с именем HappyNewYear, то QB сразу же изменит название happynewyear на HappyNewYear везде, где она встречается.
Переменные числового типа
Переменные числового типа представляют собой, естественно, числа. Они бывают целые (INTEGER), длинные целые (LONG INTEGER), обычной точности (SINGLE), двойной точности (DOUBLE):
Целые (INTEGER) — занимают в памяти 2 байта и используются для значений в диапазоне от -32768 до +32768. Присвоить переменной целый тип можно следующим образом:
а) поставить в начало программы оператор объявления целого типа данных DEFINT (DEFINED INTEGER):
'объявить переменные в программе (от А до Z) целого типа
DEFINT A-Z
'Переменная Flag - целая, так как она начинается с буквы F, которая входит в диапазон A-Z
Flag = 1
б) Явно задать переменную с помощью суффикса "%"
'Переменная Flag% – целого типа
Flag% = 1
в) Использовать оператор описания переменной
'описываем переменную как целую
DIM Flag AS INTEGER
Длинные целые (LONG) – 4 байта. Используются для значений в диапазоне от - 2,147,483,648до +2,147,483,647. Они используются в тех случаях, когда необходимы операции с целочисленными переменными, выходящими за рамки диапазона целых чисел в представлении BASIC. Присвоить переменной длинный целый тип можно следующим образом:
а) поставить в начало программы оператор объявления длинного целого типа данных DEFLNG (DEFINED LONG):
'объявить переменные в программе (от В до С)
'длинного целого типа
DEFLNG В-С
'Переменная BisunessTotal – длинная целая, так как
'она начинается с буквы В, которая входит в диапазон В-С BisunessTotal = 999999999
б) Явно задать переменную с помощью суффикса "&":
'Переменная BisunessTotal& – длинная целая
BisunessTotal& = 999999999
в) Использовать оператор описания переменной:
'описываем переменную как длинную целую
DIM BisunessTotal AS LONG
Обычной точности (SINGLE) — 4 байта. Используется для значений в диапазоне от -3.402823Е+38 до -1.40129E-45 для отрицательных значений и от + 1.40129Е-45 до -3.402S23E+38 для положительных значений. Если тип числовой переменной не задан (оператором DEFтип, суффиксом или оператором описания типа), то она автоматически становится обычной точности.
Присвоить переменной тип обычной точности можно следующим образом:
а) поставить в начало программы оператор объявления данных обычной точности DEFSNG (DEFINED SINGLE).
'объявить переменные в программе, начинающиеся с буквы S
'обычной точности
DEFSNG S
'Переменная SingleValue - обычной точности, так как она
'начинается с буквы S
SingleValue = 123.321
б) Явно задать переменную с помощью суффикса "!". Следует учесть, что поскольку переменная в BASIC имеет тип обычной точности по умолчанию, то числовая переменная, у которой указан суффикс "!" и та, у которой этот суффикс отсутствует, считаются одинаковым и не различаются языком BASIC.
'Переменная SingleValue! – обычной точности, она же
'переменная SingleValue
SingleValue! = 123.321
PRINT SingleValue!, SingleValue
Результат:
12 3.321 123.321
в) Использовать оператор описания переменной
'описываем переменную обычной точности
DIM SingleValue AS SINGLE
Двойной точности (DOUBLE) — 8 байт. Используется для значений в диапазоне от 1.797693134862316Е+308до -4.94965Е-324 для отрицательных значений и от 4.94965Е-324 до 1.797693134862316Е+308 для положительных значений. Обычно применяется для точных математических вычислений, не допускающих потерю значности. Присвоить переменной тип двойной точности можно следующим образом:
а) поставить в начало программы оператор объявления длинного типа данных типа данных DEFLNG (DEFINED LONG):
'объявить переменные, начинающие с буквы D, а также
'входящие в диапазон от М до Р, двойной точности
DEFDBL D, М-Р
'начинается с буквы D
Determinant = 53.49852432
б) Явно задать переменную с помощью суффикса "#"
'Переменная Determinant# – двойной точности
Determinant# = 53.49852432
в) Использовать оператор описания переменной
'описываем переменную двойной точности
DIM Determinant AS DOUBLE