Каждая переменная в языке 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
TabNomer AS INTEGER
Family AS STRING * 15
Stavka AS DOUBLE
‘Присваиваем переменной Rabotnikпользовательский тип
DIM Rabotnik AS Record
‘Последовательно вводим значение каждого элемента записи
INPUT «Введите табельный номер»; Rabotnik.TabNomer
INPUT «Введите фамилию работника»; Rabotnik. Family
INPUT «Введите тарифнуюставку»; Rabotnik.Stavka
Пользовательский тип данных занимает в памяти столько байт, сколько занимают в сумме каждый из составляющих его элементов. Для нашего примера запись Rabotnik включает целое число (2 байта), строку фиксированной длины (15 байт) и число удвоенной точности (8 байт). Таким образом она имеет размер 25 байт.
Типы данных, определяемые пользователем, могут включать любые типы стандартных данных, кроме строк переменной длины и массивов.
Функция ЕСЛИ в Excel с несколькими условиями (IF) и функция из Excel 2016 ЕСЛИМН (IFS)
Константы
Константами называются заранее предопределенные значения, которые не меняются в процессе работы программы. В качестве примера можно привести число PI, основание натурального логарифма, год Вашего рождения и т.д. Константы удобно использовать для тех величин в Вашей программе, которые не предполагается изменять — число строк, выводимых на экран, значения функциональных клавиш, и т. д.
В языке QuickBASIC имеются 2 типа констант — неименованные и именованные.
Неименованные константы
Они бывают символьные и числовые, и используются в программе в тех случаях, когда их значение заранее известно и не подлежит изменению.
Символьные константы — это последовательность до 32767 алфавитно-числовых символов (за исключением кавычек («) и символов перевода каретки и пропуска строки (CR — ASCII 13 и LF — ASCII 10). Они обязательно должны заключаться в кавычки:
PRINT «Средняя заработная плата»
Числовые константы представляют собой положительные или отрицательные числа. Они могут быть тех же типов, что и переменные — целые или длинные целые типа, обычной или двойной точности:
Целый тип: 68, +407 -1
Длинный целый тип: 95000000, -400141
Обычной точности: 9.0846
Двойной точности: 4.35D-10
Именованные константы
Они также бывают символьные и числовые, тех же типов, чтои неименованные. Чтобы использовать именованную константу, ее необходимо объявить при помощи ключевого слова CONST, например:
CONST MaxArray% = 512
В этом примере объявляется целочисленная константа МахАrrау и ей присваивается значение 512. В дальнейшем к этой константе можно обращаться по имени:
Символьная константа объявляется и используется аналогично:
CONST BAD$ = «mbt120o016eee12c»
При обращении к именованным константам вы можете опускать расширение, как показано в этих примерах.
Использование именованных констант имеет ряд преимуществ по сравнению с использованием для этих целей переменных:
• Однажды определив константу, вы не сможете случайно изменить ее значение. 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
Переменные
Переменная — эта величина, которая может меняться при выполнении программы. Если привести пример из житейской практики, то можно скачать, что переменная величина, к примеру, сколько у Вас сейчас денег, или ближе к компьютерной практике, сколько свободного места осталось у Вас на жестком диске.
Переменные бывают простые (символьного типа, числового типа и пользовательского типа) и переменные массивы — представляющего собой группу объектов одного типа.
Имена переменных
Имена переменных могут содержать до 40 символов. В имени переменных могут содержаться латинские буквы, числа, десятичная точка, и символы определения типа (%, %»
‘Переменная Flag% – целого типа
в) Использовать оператор описания переменной
‘описываем переменную как целую
DIM Flag AS INTEGER
Длинные целые (LONG) – 4 байта. Используются для значений в диапазоне от — 2,147,483,648до +2,147,483,647. Они используются в тех случаях, когда необходимы операции с целочисленными переменными, выходящими за рамки диапазона целых чисел в представлении BASIC. Присвоить переменной длинный целый тип можно следующим образом:
а) поставить в начало программы оператор объявления длинного целого типа данных DEFLNG (DEFINED LONG):
‘объявить переменные в программе (от В до С)
‘длинного целого типа
‘Переменная BisunessTotal – длинная целая, так как
‘она начинается с буквы В, которая входит в диапазон В-С BisunessTotal = 999999999
б) Явно задать переменную с помощью суффикса «:
‘Переменная BisunessTotal!». Следует учесть, что поскольку переменная в BASIC имеет тип обычной точности по умолчанию, то числовая переменная, у которой указан суффикс «!» и та, у которой этот суффикс отсутствует, считаются одинаковым и не различаются языком BASIC.
‘Переменная SingleValue! – обычной точности, она же
PRINT SingleValue!, SingleValue
в) Использовать оператор описания переменной
‘описываем переменную обычной точности
DIM SingleValue AS SINGLE
Двойной точности (DOUBLE) — 8 байт. Используется для значений в диапазоне от 1.797693134862316Е+308до -4.94965Е-324 для отрицательных значений и от 4.94965Е-324 до 1.797693134862316Е+308 для положительных значений. Обычно применяется для точных математических вычислений, не допускающих потерю значности. Присвоить переменной тип двойной точности можно следующим образом:
а) поставить в начало программы оператор объявления длинного типа данных типа данных DEFLNG (DEFINED LONG):
‘объявить переменные, начинающие с буквы D, а также
‘входящие в диапазон от М до Р, двойной точности
‘начинается с буквы D
б) Явно задать переменную с помощью суффикса «#»
‘Переменная Determinant# – двойной точности
в) Использовать оператор описания переменной
‘описываем переменную двойной точности
DIM Determinant AS DOUBLE
Источник: poisk-ru.ru
Статья №2
Переменная – это величина, которая может меняться в процессе выполнения программы. В Bascom переменная, а следовательно и в микроконтроллере, — это быстрое осуществление доступа к ячейке памяти, данные в которой могут меняться.
В Bascom переменные бывают следующих типов:
В этой статье мы ограничимся пока знакомством с числовыми переменными, а далее, по мере усложнения программ, с остальными.
В Bascom есть следующие типы числовых переменных:
Хранит значение 0 или 1. Используется для хранения состояния кнопки, переключателя, контакта порта ввода/ вывода и др.
Xранит в памяти один байт (8 бит). Используется для хранения числа от 0 до 255 или символа. Часто используется в микроконтроллерах AVR типа tiny, когда память ограничена. Необходимо отметить, что при прибавлении 1 к переменной Byte, имеющей значение 255, она сбрасывается до 0.
Хранит в памяти два байта. Используется для хранения числа от -32768 до +32767. Так как один бит зарезервирован под знак числа, оставшиеся делятся 15 делятся пополам на положительные и отрицательные значения. При переполнении переменной данного типа, её значение изменится с +32767 на -32768.
Хранит два байта информации, не имеющей знака. Для хранения доступны все 16 бит, т.е. числа от 0 до 65535. При переполнении значение 65535 изменяется до 0.
Хранит в памяти 4 байта. Из 32 бит один отводится под знак, а остальные хранят модуль числа от -2147483648 до 2147483647. При переполнении значение переменной +2147483647 изменится на -2147483648.
Четырёхбайтный тип для хранения чисел с плавающей запятой. Запоминает числа от 1.5х10ˆ45 до 3.4×10ˆ38. Используется только для хранения дробных чисел не более девяти знаков после запятой.
Пример описания переменной:
Dim X as Byte ‘ Объявим переменную Х типа Byte
X = 100 ‘ положим в неё число 100
Теперь возвратимся к программе “INT0”, которая была представлена в статье №1. Дело в том, что только идеальная кнопка может строго переключать состояние с разомкнутого на замкнутый и обратно, но таких кнопок в природе, к сожалению, нет. При нажатии и отпускании реальная кнопка выдаёт серию импульсов, называемых дребезгом, длительность которого может достигать 50 миллисекунд.
Таким образом мы получим множество прерываний вместо одного. Поэтому необходимо реализовать функцию антидребезга с помощью введения в программу задержки. Назовём новую программу “INT0 + DEB”. Её блок – схема представлена на Рис.1.
Здесь видно, что в программу введены две задержки: задержка по срабатыванию от внешнего сигнала и задержка после появления слова на дисплее. Таким образом, программа как бы пережидает дребезг и при нажатии кнопки и при её отпускании. Ниже приведена программа “INT0 + DEB”.
Первая задержка создана с помощью функции задержки срабатывания от внешних сигналов DEBOUNCE, а вторая – с помощью Waitms. Они равны, и их длительность составляет по 75 миллисекунд. В остальном же программа идентична программе “INT0”.
config Portd.6 = output ‘PD6-выход
config portd.6 = 0 ‘исходное состояние PD6=0
config PORTD.2 = input ‘PD2-вход
config portd.2 = 1 ‘исходное состояние PD2=1 (подтяжка)
config INT0 = FALLING ‘прерывание INT0 по спаду импульса
config DEBOUNCE = 75 ‘задержка внешних сигналов на 75мс
dim Wtime as Byte ‘объявление переменной типа Byte
on Int0 Displey ‘определение подпрограммы прерывания
cls ‘очистка дисплея
Wtime = 255 ‘величина задержки
Enable INTERRUPTS ‘включение всех прерываний
Enable INT0 ‘вкючение прерывания INT0
do ‘начало цикла
set Portd.6 ‘установка PD6=1
waitms Wtime ‘задержка=255 тактов
reset PortD.6 ‘установка PD6=0
loop ‘конец цикла
Displey: ‘подпрограмма обработки прерывания
Lcd «stop» ‘вывод на дисплей слова Stop
Waitms 75 ‘задержка 75мс
return ‘оператор возврата из подпрограммы
end ‘end program
Cама программа находится в папке приложение 1 данной статьи.
Теперь пришло время поговорить о таймерах. Как известно микроконтроллер ATtiny2313 имеет четыре таймера: два восьмибитных таймера – счётчика (0А и 0В) и два шестнадцатибитных таймера – счётчика (1А и 1В), однако скачанная автором из интернета версия Bascom не поддерживает данные таймеры, поэтому мы будем говорить о Timer0 и Timer1 (версия для AT90S2313). Однако все сказанное ниже в полной мере справедливо и для ATtiny2313.
Восьмибитный таймер – счётчик (Timer0) может принимать значение от 0 до 255. С помощью команды Config мы можем задать ему коэффициент деления частоты:
Config Timer0 = Timer, Prescale = 1|8|64|256|1024
Здесь Timer0 настроен на счёт. Он считает тактовые импульсы с выхода делителя с переменным коэффициентом деления 1, 8, 64, 256, 1024. Если тактовая частота контроллера 4МГц, а коэффициент деления 1024, тогда таймер будет увеличивать значение через каждые 0.256 миллисекунд (1024/4000000 Гц) и будет переполняться каждые 65 миллисекунд (255 х 0.256). Timer1 подобен Timer0, но считает, поскольку он шеснадцатибитный, до 65535. Таймеры начинают осчёт сразу после конфигурации.
Таймеры можно запустить и остановить в любой момент командами Start и Stop. Например: Start Timer0 и Stop Timer0 или Start Timer1 и Stop Timer1.
Информацию из таймера можно считать и вывести, например, на дисплей:
Источник: avr.ru
Константы и переменные языка Бейсик
Из алфавита языка программирования могут быть сформированы функционально законченные элементарные конструкции, которые называются синтаксическими единицами. Если провести аналогию с разговорным языком, например русским, то это отдельные слова: существительные, глаголы, междометия и т.д.
Синтаксические единицы условно можно разбить на следующие виды:
Константы – это фиксированные величины, которые в процессе вычислений не изменяют своих значений. В Бейсике используются константы двух типов – числовые и символьные.
Числовые константы – это десятичные числа, которые состоят из десятичных цифр или десятичных цифр и дополнительных символов. В свою очередь, числовые константы можно разделить на целые и вещественные.
Целые константы – это целые числа, которые записываются в виде последовательности десятичных цифр, перед которой может стоять знак + или –. Числа без знака воспринимаются положительными. Бейсик допускает использование как целых чисел в диапазоне от –32768 до 32768, так и длинных целых чисел в диапазоне от –2147483648 до 2147483648.
Примеры записи целых чисел:
Математическая запись | Запись на языке Бейсик |
41 или +41 | |
-39 | -39 |
-2147483648 | -2147483648 |
Вещественные числа при переводе в двоичную систему счисления представляют собой, как правило, бесконечные дроби и округляются в пределах формы записи. Поэтому эти числа представляются в памяти приближенно.
Допускается запись вещественных чисел:
~ в основной форме – числа с фиксированной точкой;
~ в форме с порядком – числа с плавающей точкой.
Числа с фиксированной точкой – это дробные десятичные числа, у которых дробная часть отделяется от целой части десятичной точкой. Они могут быть записаны следующим образом:
где N и М – последовательности десятичных цифр.
Десятичная точка в записи этого числа обязательна. Знак + или — записываются в начале константы. Число без знака воспринимается положительным.
Примеры записи чисел с фиксированной точкой:
Математическая запись | Запись на языке Бейсик | |
Верно | Неверно | |
0. или 0.0 или.0 | ||
4. или 4.0 | 4 или +.4 | |
-1,0 | -1.0 или -1. | .1 или -1,0 |
-1,5 | -1.5 | 1.5 или -1,5 |
Числа с плавающей точкой – запись чисел представленных в математике в показательной форме. На языке бейсик они записываются:
и имеют в записи отличия по основанию степени и где N и М — последовательность десятичных цифр.
Для чисел одинарной точности N + М = 6.
Для чисел удвоенной точности N + М = 14.
Е – основание степени для чисел одинарной точности, т.е. число 10.
D – основание степени для чисел удвоенной точности, т.е. число 10.
S – порядок числа, выражается целой константой, состоящей из одной или двух десятичных цифр.
Положительный знак числа и показателя степени можно не указывать.
Примеры записи чисел с плавающей точкой одинарной точности:
Математическая запись | Запись на языке Бейсик | |
Верно | Неверно | |
123,4∙10 -2 = =1,234= =0,1234∙10 1 | 123.4Е-2 | 123.4*10**(-2) |
1.234Е00 | 1.234*10 | |
0.1234Е1 | 0.1234*Е1 |
Примеры записи чисел с плавающей точкой удвоенной точности:
Математическая запись | Запись на языке Бейсик | |
Верно | Неверно | |
1234,5678∙10 -2 = =12345678∙10 -6 = =0,12345678 | 1234.5678D-2 | 1234.5678*10**(-2) |
12345678.D-6 | 12345678D-6 | |
0.12345678D2 | .12345678E2 |
Символьная константа представляет собой последовательность любых символов алфавита. Значения символьных констант заключается в кавычки. Примеры записи символьных констант: ”Кстовский нефтяной техникум”, ”Array”, ”sin(x)= ”.
Переменная – это величина, которая может меняться при выполнении программы. При изучении алгебры дается понятие переменной величины. Например, в простом алгебраическом равенстве c = f + 2b – 5 значение переменной с зависит от значения переменных f и b, указанных в правой части равенства.
Если f= 2 и b= 6, тогда с= 9. Такое же равенство можно записать в программе на Бейсике: c = f + 2*b – 5. В терминах языка Бейсик c, f и b – это имена переменных. Такие имена также называют идентификаторами.
Кроме имени переменная характеризуется типом. Переменные – это величины, которые имеют определенное значение в каждый момент выполнения программы, а оно может быть как числовым, так и символьным. Для хранения значения переменной выделяется поле памяти компьютера.
Тип переменной, определяемый ее значением | Символ, определяющий тип переменной | Описание типа переменной | Объём поля памяти | Пример значения переменной | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Целые числа | % | integer | 2 байта | 17; -123 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вещественные числа | ! | single | 4 байта | 314.15; 3.1415Е+2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Символьный | $ | string | min 1 байт | язык | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Длинные целые числа | ! – вещественная переменная обычной точности; # — вещественная переменная двойной точности; $ — символьная переменная, а также может определяться специальным оператором задания типа.
Арифметические выражения Выражением называется последовательность операций, которые необходимо произвести над данными, чтобы получить требуемое значение. В Бейсике существует четыре вида выражений: • арифметические; Арифметическое выражение – это аналог обычной арифметической (алгебраической, математической) формулы. Результатом его вычисления является целое или вещественное число. Любое математическое выражение на Бейсике записывается в виде строки и может содержать: числовые константы, числовые переменные, математические функции, знаки математических операций, систему скобок. Понятие числовых констант и числовых переменных было уже дано выше, поэтому рассмотрим последующие три составляющие арифметических выражений. Функция – это заранее определённая операция над данными, математическая функция – это функция, значением которой является число. Вот некоторые примеры математических функций встроенных в транслятор Бейсика:
Таким образом, в Бейсике обращение к функции осуществляется по ее имени, а аргумент обязательно записывается в скобках. При вычислении арифметического выражения значения функций определяются в первую очередь еще до выполнения математических операций. В Бейсике допустимы следующие арифметические операции:
Заметим, что операции указаны в вышеприведенной таблице в порядке уменьшения приоритета. Действия в арифметических выражениях выполняют слева направо в зависимости от их приоритета. Для того чтобы изменить естественный порядок действий, используются круглые скобки. Выражения в круглых скобках выполняются в первую очередь. Заметим, что понятие система скобок означает то, что в выражении всегда должно совпадать количество открывающихся скобок с количеством закрывающихся скобок. Примеры записи чисел математических выражений на языке Бейсик: Математическое выражение запишется на языке Бейсик в виде: ((sin(x^3)–cos(x)^2)/(sqr(x–8.5)+1.75E-6))^(1/5)+exp(x+1)/5/abs(x) Источник: cyberpedia.su
Загрузка ...
|