Файл: Основы программирования на языке QBasic ( История языка программирования QBasic ).pdf
Добавлен: 01.04.2023
Просмотров: 223
Скачиваний: 1
Целый тип: 68, +407 , -1
Длинный целый тип: 95000000, -400141
Обычной точности: 9.0846
Двойной точности: 4.35D-10
Пример:
PRINT 15000
Именованные константы также бывают символьные и числовые, тех же типов, что и неименованные. Чтобы использовать именованную константу, ее необходимо объявить при помощи ключевого слова CONST, например:
CONST MaxArray% = 512
В этом примере объявляется целочисленная константа МахАггау и ей присваивается значение 512. В дальнейшем к этой константе можно обращаться по имени:
DIM Tovar$(МахАггау)
Символьная константа объявляется и используется аналогично:
CONST BAD$ = "mbtl20o016eeel2c"
…
PLAY BAD 58
Использование именованных констант имеет ряд преимуществ по сравнению с использованием для этих целей переменных:
- Однажды определив константу, вы не сможете случайно изменить ее значение. BASIC сразу выдаст сообщение об ошибке "Duplicate Definition" (Двойное определение);
- Именованная константа доступна всем процедурам и функциям данного модуля. В случае же использования переменной, вы должны будете объявить ее как SHARED во всех процедурах и функциях модуля;
- BASIC выполняет операции с константами быстрее, чем с переменными.
Переменная — эта величина, которая может меняться при выполнении программы. Переменные бывают простые (символьного типа, числового типа и пользовательского типа) и переменные массивы — представляющего собой группу объектов одного типа. Имена переменных могут содержать до 40 символов. В имени переменных могут содержаться латинские буквы, числа, десятичная точка, и символы определения типа (%, &, !, # и $). Первый символ должен быть латинской буквой. Если переменная начинается с FN, подразумевается вызов функции DEF FN. Имя переменной не может быть зарезервированным словом QBASIC, хотя допускается комбинация зарезервированного слова и других символов. Давая имена переменным, можно комбинировать в них прописные и строчные буквы. Хотя BASIC не различает прописные и строчные буквы при работе с переменными, это очень удобно для программиста, поскольку в имени переменной можно сделать акцент на ее назначение. QB внимательно следит за тем, чтобы комбинация прописных и строчных букв была бы одинакова для всех переменных. Так, если вы назвали переменную happynewyear, а затем, к примеру, обратились к ней, как к переменной с именем HappyNewYear, то QB сразу же изменит название happynewyear на HappyNewYear везде, где она встречается.
Глава 3. Выражения и операции
Последовательность операций, которые необходимо произвести над данными, чтобы получить требуемое значение называется выражением. Результатом выражения может быть символьная или числовая константа, переменная или значение.
В языке BASIC существует пять категорий операций:
- Арифметические операции;
- Операции отношений;
- Логические операции;
- Функциональные операции;
- Строковые операции.
3.1 Арифметические операции
В QBASIC существуют следующие арифметические операции, которые перечислены в порядке убывания приоритета выполнения:
^ – возведение в степень
+,- – присвоение знака числу (при возведении в степень приоритет присвоения знака считается выше приоритета операции возведения в степень)
*,/ – умножение, деление
\ – целочисленное деление
MOD – остаток после целочисленного деления
+,- – сложение, вычитание
3.2 Операции отношения
Эти операции используются для сравнения арифметических выражений. В QBASIC существует шесть операций отношения, перечисленных в таблице:
|
Оператор |
Значение |
Выражение в QBASIC |
|
= |
Равенство |
X=Y |
|
< > |
Неравенство |
X< >Y |
|
< |
Меньше |
X<Y |
|
> |
Больше |
X>Y |
|
<= |
Меньше или равно |
X<=Y |
|
>= |
Больше или равно |
X>=Y |
Операторы отношения используют два значения. Результатом операции отношения является либо "TRUE" (ИСТИНА — ненулевое значение), либо "FALSE" — (ЛОЖЬ — ноль).
Если в одном выражении встречаются и арифметические операторы и операторы отношения, то первыми выполняются арифметические операторы.
3.3 Логические операции
Логические операции осуществляют манипуляции над битами. По-другому они называются "Булевы операции". Они возвращают значения "TRUE" (ИСТИНА — не нулевое значение, внутренние представление BASIC = -1) и "FALSE" (ЛОЖЬ — нулевое значение, внутренние представление BASIC = 0.)
В QBASIC существует шесть логических операторов, название и толкование которых приведены ниже:
|
Оператор |
Название |
Объяснение |
|
NOT |
Отрицание |
NOT A истинно тогда и только тогда, когда А ложно |
|
AND |
Логическое умножение |
A AND B истинно тогда и только тогда, когда истинно А и истинно В |
|
OR |
Логическое сложение |
A OR B истинно тогда и только тогда, когда хотя бы одно из А и В истинно |
|
XOR |
Исключающее ИЛИ |
A XOR B истинно тогда и только тогда, когда значения А и В не совпадают |
|
EQV |
Эквивалентность |
A EQV B истинно тогда и только тогда, когда А и В одновременно истинны или одновременно ложны |
|
IMP |
Импликация |
A IMP B принимает значение «ложь», если А истинно, а В ложно, и значение «истина» в других случаях |
'В этом примере показана работа со всеми логическими операторами QBASIС:
DECLARE SUB TruthTable (X%, Y%)
DEFINT A-Z
CLS PRINT " X Y NOT AND OR ";
PRINT "XOR EQV IMP"
I = 10: J = 15
'X = TRUE (-1); Y = TRUE (-1)
X = (I = 10): Y = (J = 15)
CALL TruthTable(X, Y)
'X = TRUE (-1); Y = FALSE (0)
X = (I > 9) : Y = (J > 15)
CALL TruthTable(X, Y)
'X = FALSE (0); Y = TRUE (-1)
X = (I <> 10): Y = (J < 16)
CALL TruthTable(X, Y):
'X = FALSE (0); Y = FALSE (0)
X = (I < 10) : Y = (J < 15)
CALL TruthTable(X, Y)
END SUB TruthTable (X%, Y%)
STATIC
PRINT X; " "; Y; " "; NOT X; " "; X AND Y; "
PRINT X OR Y; " "; X XOR Y; " "; X EQV Y;
PRINT " "; X IMP Y
END SUB
Результат
X Y NOT AND OR XOR EQV IMP
-1 -1 0 -1 -1 0 -1 -1
-1 0 0 0 -1 -1 0 0
0 -1 -1 0 -1 -1 0 -1
0 0 -1 0 0 0 -1 -1
3.4 Логические операции
Функциональные операции определяют правила работы с функциями. Функции используются в выражениях для осуществления заранее определенных операций. В QBASIC существуют два вида функций: встроенные и определенные пользователем. Пользовательские функции действуют только в той программе, где они определены и не являются частью языка (если они не скомпилированы в Quick-библиотеку).
3.5 Строковые операции
Над строками можно осуществлять следующие действия — конкатенация (сложение) и сравнение строк.
Конкатенация — это сложение двух символьных строк. Для сложения используется символ(+).
Сравнение строк производится при помощи операторов срав- нения: <>, =, <, >, <=, >= Сравнение строк производится в соответствии с ASCII кодами каждого символа в сравниваемых строках. Если ASCII коды равны, то строки считаются равными. Строка, символы которой имеют большие ASCII коды, считается большей. Если одна из сравниваемых строк короче другой, то она считается меньшей (если до этого места строки были равными). При сравнении учитываются начальные и конечные пробелы.
Глава 4. Операторы передачи управления
При разработке программ часто приходится изменять порядок следования операторов. Только в очень простых программах операторы выполняются один за другим — управление передается последовательно, от оператора к оператору. На практике же, необходимые средства для изменения порядка следования операторов, другими словами, передачи управления — обеспечивают операторы цикла и условные операторы.
Циклы используются в том случае, когда вам необходимо несколько раз выполнить один и тот же фрагмент исходного текста. В BASIC существуют три вида циклов: FOR...NEXT; DO... LOOP; WHILE...WEND
Цикл FOR...NEXT — это цикл с заранее заданным количеством повторений. Можно также выйти из цикла, не дожидаясь выполнения всех повторений — воспользовавшись альтернативным выходом из цикла при помощи оператора EXIT FOR. Управление будет передано на оператор, стоящий после NEXT.
Цикл DO...LOOP выполняется до тех пор, пока истинно условие в начале или конце цикла. А также из цикла возможен альтернативный выход — вне зависимости от того выполнено ли условие выхода, из цикла можно выйти оператором EXIT DO, который передает управление на оператор, следующий за LOOP.
При использовании цикла WHILE...WEND условие может быть только в начале цикла. Альтернативный выход из цикла WHILE...WEND - невозможен.
Условные операторы BASIC помогают вам осуществить "ветвление" программы, т. е. передать управление по условию, на ту или иную "ветку" — это может быть фрагмент текста, процедура SUB или FUNCTION, подпрограмма GOSUB...RETURN, или даже другой модуль. Виды условных операторов BASIC: IF...THEN...ELSE; SELECT...END SELECT
IF...THEN...ELSE IF...THEN...ELSE обычно используется, когда проверяется одно или два условия в программе.
Если же необходимо осуществить проверку более сложных условий, чем ДА/НЕТ, целесообразно использовать условный оператор SELECT... END SELECT.
Глава 5. Ввод и вывод значений
В BASIC существует оператор INPUT, который позволяет запросить у пользователя значение необходимой переменной. Можно ввести одновременно значения нескольких переменных, при этом значения должны отделяться запятыми. Тип вводимых значений должен соответствовать типам переменных, перечисленных в операторе INPUT, иначе BASIC выдаст сообщение "Redo from start" (Начните сначала). Нажатие клавиши {ENTER} заканчивает ввод.
Так как вводимые значения в операторе INPUT должны отделяться запятыми, при помощи него нельзя ввести строку символов, например фразу, в которой содержатся запятые, — BASIC воспримет их как разделитель.
В этом случае используется оператор LINE INPUT:
LINE INPUT "Введите ключевую фразу "; frase$
PRINT "вы ввели: " + CHR$(34) + frase$ + CHR$(34)
Результат:
Введите ключевую фразу ? Казнить нельзя, помиловать
вы ввели "Казнить нельзя, помиловать"
Иногда необходимо ввести фиксированную строку символов так, чтобы они не печатались на экране — например, ну очень секретную информацию. В этом случае выручает оператор INKEY$. Он ждет нажатия заданного количества символов. В данном примере это используется для ввода пароля.
'выводим на экран напоминание
PRINT "Введите пароль (6 букв) для дальнейшей работы"
'цикл DO...LOOP повторяется до ввода правильного пароля DO
'Ждем ввода 5 символов
Parol$ = INPUT$ (5)
LOOP WHILE Parol$ <> "Пароль"
Если же необходимо отследить нажатие управляющих клавиш: {ENTER}, {ESC}, функциональных клавиш, тогда целесообразно использовать оператор INKEY$. В отличии от опера- торов INPUT, LINE INPUT и INPUTS, которые ждут ввода значений с клавиатуры, INKEYS этого не делает, поэтому оператор INKEYS всегда используется в цикле.
Для вывода значений на экран дисплея используется оператор PRINT. Также как и оператор INPUT, PRINT позволяет вывести несколько значений, при этом разделителями могут служить запятая "," или точка с запятой ";". Оператор PRINT без параметров выводит на экран пустую строку. Если необходимо вывести на экран строку символов по заранее известному формату, используется оператор PRINT USING. Операторы PRINT и PRINT USING выводят информацию на экран. Для того, чтобы напечатать ее, используются операторы LPRINT и LPRINT USING. Для того, чтобы красиво разместить текст на экране, в языке BASIC есть оператор LOCATE. В текстовом режиме экран разбивается на 25 строк и 80 столбцов, что позволяет вывести символ в любом месте экрана.