Языки Бейсик
.pdfГлава II. Язык программирования |
11 |
\целочисленное деление
MOD определение остатка от деления по модулю + - сложение и вычитание
Целочисленное деление выполняется следующим образом: делимое и делитель округляются до целых чисел (в пределах — 32 768 до 32 767), после чего выполняется обычная операция деления, остаток отбрасывается. Например:
Print 25\3; 23.7\3; 23.4\3.5 ââîä
результат 8 8 5
Результатом деления числа по модулю (операция MOD) является остаток, получаемый от целочисленного деления. Например:
print 25 mod 3; 23.7 mod 3; 23.4 mod 3.5 ввод результат 1 0 3
2.3.2. Операции сравнения
Эти операции используются для сравнения. Члены операции должны быть одного типа: числовыми или символьными. Операции сравнения записываются с помощью символов сравнения:
= |
равно |
<> |
не равно |
< |
меньше |
>больше
<= меньше или равно >= больше или равно
Если отношение выполняется (оно истинно), то результатом операции является минус единица, в противном случае результат равен нулю (отношение ложно). Например: а = 2 b = 8
Print à >b; a <b; a =>b; a <=b
результат 0(лож) — 1(истина) 0(лож) — 1(истина)
Если в выражении встречаются арифметические операции и операции сравнения, то первыми всегда выполняются арифметические операции. Например:
print 5<8-3 результат 0(ложно)
Если в выражении участвуют символьные константы, то они выравниваются по длине путем добавления пробелов к более короткой константе и сравнение выполняется посимвольно слева направо до обнаружения первого несовпадения. Это значит, что если члены операции сравнения совпадают посимвольно, то они равны. Например:
print “Гелиос”=“gelios” результат 0(ложь)
print “Гелиос”=“Гелиос “ результат — 1(истина)
При сравнении символьных данных большим считается тот, у которого первый несовпадающий символ имеет больший код. Например:
print “Гелиос1”>“Гелиос” результат — 1(истина)
12 |
Языки Бейсик |
2.3.3.Операции сцепления
Эти операции используются только при работе с символьной информацией. Операция сцепления обозначается знаками + и &. В результате операции сцепления строки символов объединяются в одну строку. Например:
A$=“школа”
B$=“Гелиос”
C$=A$&” “&B$ print C$
результат: школа Гелиос
2.3.4. Операнды
Операнды — это данные, которые участвуют в арифметических и логических операциях, операциях сравнения. К операндам относятся константы, переменные и значения функций.
Значения функций. В языке Бейсик используются следующие виды функций: элементарные математические (См. гл. VIII), специальные (Cм. гл. X-раздел 11.12), функции для работы с символьными данными (См. гл. IX) и функции пользователя.
2.3.5. Виды выражений
Все выражения делятся на выполняемые и невыполняемые (См. гл. XI-раздел 11.3. “ключевые слова Бейсика”). Выполняемые предназначены для выполнения определенных операций над членами выражения или изменения порядка выполнения выражений.
К невыполняемым выражениям относятся в первую очередь операторы выполнения трансляцией. Операторы управления трансляцией определяют нача- ло и конец программы (или подпрограммы), объявляют виды переменных и т.д. Например:
END — оператор конца программы;
DIM — оператор определения вида переменной...
REM — оператор комментария
2.3.5.1. Условные обозначения
Все выражения языка Бейсик пишутся по определенным правилам.(См. также гл. XI-раздел 11.1. Синтаксис языка Бейсик). Для описания этих правил используются условные обозначения:
—операторы языка и латинские буквы в других лексических единицах остаются без изменений. Слова, записанные русскими строчными буквами, заменяются на соответствующие значения параметров;
—слова в тексте, соединенные знаком подчеркивания (_), представляют один параметр. Например: имя_функции должно быть заменено на имя конкретной функции;
—элементы, заключенные в квадратные скобки, являются необязательными, то есть их можно опустить; например
Глава II. Язык программирования |
13 |
INPUT [“текст_приглашения”;] переменная |
|
где параметр “текст_приглашения”; можно не указывать при записи выражения;
—элементы, заключенные в фигурные скобки, обязательны, но из всех предлагаемых вариантов необходимо выбрать только один;
—сами квадратные или фигурные скобки являются условными обозначениями и при записи выражения опускаются. Многоточие указывает на возможность многократного повторения элементов. Числа и разделители, кроме многоточия, фигурных и квадратных скобок, остаются при записи выражения в программе.
2.3.5.2. Правила записи выражений
Программа на языке Бейсик вводится по строкам. Как правило, одно выражение записывается в одну строку. Допустимая длина строки, которую обрабатывает Бейсик, равна 255 символам, что соответствует трем строкам экрана дисплея (80*3)
Формат строки можно условно разбить на три поля:
[номер строки или поле метки] [выражение] ['комментарий]
Номер строки или метка могут отсутствовать. Некоторые трансляторы Бейсика отсутствие номера строки воспринимают, как установку режима непосредственного счета, но таких трансляторов остается все меньше и меньше. Поэтому, если ваш транслятор Бейсика позволяет набирать программу без номера строки, то советую так и делать, чтобы в дальнейшем не испытывать проблем с перенумерацией строк во время вставки новых выражений и поиском по всей программе операторов перехода и их переадресовкой.
Операторы записываются в свободном формате. Как уже упоминалось, операторы могут записываться как прописными, так и строчными буквами, но только латинского алфавита. Но это допустимо, если вы работаете непосредственно в среде языка Бейсик. Если же вы набираете программу в каком-то текстовом редакторе, имея намерение в будущем обработать эту набранную программу в Бейсике, то для большей читабельности я рекомендовал бы набирать операторы все-таки прописными буквами. Пробелы между лексическими единицами допускаются и желательны, хотя если их нет, Бейсик их сам вставит или заставит вас это сделать. Пробелы недопустимы внутри операторов.
— Если в одной строке вместе с программным выражением пишется комментарий, что настоятельно рекомендую, то он начинается одиночным апострофом ('). Комментарий — это поясняющий текст на русском языке (если вы русскоязычный программист), который может включать любые символы. Комментарии относятся к невыполняемым операторам языка. Комментарий может присутствовать в любом месте строки, но не может находиться внутри выражения и вместе с оператором DATA. В одной строке разрешается записывать несколько выражений, которые друг от друга должны в этом случае отделяться знаком двоеточия (:).
14 |
|
Языки Бейсик |
Примеры записи программной строки: |
|
|
(1) |
065 DIM BOOK$(1253) |
'определяем массив для |
(2) |
|
'словаря |
(3)INPUT “введите число”, chislo% ' нач. ввода чисел
(4)а =24: b=17:c=(a*sin(b))/.5 'вычисляем результат
Âстроке (1) 065-номер строки, DIM-невыполняемый оператор определения переменной, BOOK$(1253) — имя индексированной переменной, 'определяем массив для — комментарий.
Âстроке (2) 'словаря-комментарий.
Âстроке (3) INPUT-оператор ввода, “введите число” — символьная константа, chislo% — целочисленная переменная, ' нач.ввода чисел — комментарий.
Âстроке (4) три арифметических выражения присваивания: переменной à присваивается значение 24, переменной b присваивается значение 17, а переменой ñ присваивается значение частного от деления произведения 24 и sin(17) на 0.5.
Глава III. Данные |
15 |
Глава III. Данные
3.1. Оператор присваивания LET
Оператор LET (присвоить) присваивает переменной определенное значение.
Формат записи оператора LET.
[LET] имя_переменной={константа, имя_переменной}
[{знак-операции}{константа, имя переменной}[...]]
Переменной, имя которой указано в левой части выражения, присваивается значение правой части выражения. Если в левой части выражения переменная числовая, то в правой части тоже должно быть число, которое в зависимости от точности переменной в левой части, будет или округлено или дополнено нулями. При записи оператора LET необходимо соблюдать следующие правила:
—если слева стоит числовая переменная, то справа должна быть или числовая константа, или числовая переменная, или арифметическое выражение;
—если слева стоит символьная переменная, то справа должна быть или символьная переменная, или символьная константа. В противном случае система выдает сообщение об ошибке 1
Несоответствие типов
Сам оператор LET не обязателен, поэтому его обычно не употребляют.
Пример
A%=67 'целочисленной переменной A% 'присвоить значение 67
A$=“Рада приветствовать Вас!” 'символьной
'переменной A$ присвоить значение 'Рада приветствовать Вас!
A=.3628 'вещественной переменной A
'присвоить значение 0,3628
3.2. Оператор обмена SWAP
В VISUAL Basiс’е отсутствует.
Оператор SWAP осуществляет обмен значениями между двумя переменными. Он оказывается полезен при составлении программ сортировки числовых и символьных массивов.
Формат записи оператора SWAP.
SWAP имя-переменной1,имя-переменной2
1 Сообщения об ошибках в большинстве случаев выдается на английском языке, но набор типовых ошибок настолько ограничен, что заглянув несколько раз в словарь при отладке своих первых двух-трех программ, пользователь без труда в дальнейшем научится понимать большинство сообщений транслятора Бейсика.
16 |
Языки Бейсик |
В результате выполнения оператора переменной1 присваивается значение переменной2, а переменной2 присваивается значение переменной1. Обе переменные должны быть одного типа, иначе выдается сообщение об ошибке: “несоответствие типов”.
Пример
а%=69:в%=78:swap a%, b% print “a =“;a%;”b =“;b% Результат а=78 b=69
3.3. Операторы вывода данных на экран монитора CLS и PRINT
Оператор CLS(CLear Screen) очищает экран
Формат записи оператора:
CLS [{0 | 1 | 2}]
CLS |
очищает либо текстовую, либо графическую области просмотра.Если |
|
была установлена графическая область просмотра (с помощью VI- |
|
EW), то очищает только графическую область просмотра. В против- |
|
ном случае очищает текстовую область просмотра или весь экран. |
CLS 0 |
полностью очищает экран, как текст, так и графику. |
CLS 1 очищает графическую область просмотра или весь экран, если графи- |
|
|
ческая область просмотра не была установлена. |
CLS 2 |
очищает текстовую область просмотра. |
Оператор PRINT(напечатать) выводит информацию на экран монитора.
Формат оператора:
PRINT [{константа, переменная}][,;пробел]...
Если в качестве разделителя используется запятая, то данные выводятся на экран в зонном формате, когда для каждого элемента списка на экране отводится 14 колонок. Если точка с запятой, то в уплотненном формате. Если в конце списка переменных стоит пробел, то следующий оператор PRINT выводит данные с новой строки. Об остальных операторах работы с экраном монитора в главе V.
3.4. Оператор DATA
Оператор DATA(данные) помещает константы в стек. Стек представляет собой область оперативной памяти, куда помещаются константы, которые могут потребоваться в процессе выполнения программы.
Формат оператора:
DATA {константа}[,]{константа}[,]...
Константы могут быть числовыми и символьными. Разделителем между константами служит запятая.
Пример
Глава III. Данные |
17 |
DATA 10.5,1,7.5E-2,”Водолей”,”22.01-22.02”
Если в программе используется несколько операторов DATA, то каждый следующий добавляет в стек данные к предыдущим.
Оператор DATA может быть записан в любом месте программы и столько раз, сколько это необходимо. Вместе с оператором DATA нельзя использовать комментарии, которые начинаются одиночным апострофом.
3.5. Оператор READ
Оператор READ(читать) выбирает данные из стека, организованного с помощью оператора DATA.
Формат оператора READ:
READ [{имя_переменной, имя_переменной,....}]
Следует учитывать позиционное соответствие констант в операторе DATA и типов переменных в операторе READ, так как в операторе READ происходит последовательное присваивание значений констант оператора DATA переменным оператора READ. Присваивание начинается с первого элемента стека и до последнего. Константы из стека выбираются последовательно в порядке появления очередного оператора READ. Если в операторах READ указать количество переменных больше, чем констант в стеке, то выдается сообщение об ошибке:
данные окончены.
Пример
'Пример использования операторов DATA и READ
DATA 0120,”козерог”,”-сатурн”,”земля”,”черный”,_
“суббота”, “8”, “свинец”, “черный янтарь”,_
“21.12-20.01,20.04-20.05,21.06-27.07,21.08-27.09”
READ k%, zodiak$, planeta$, color$, weekday$, READ num, metal$
READ kamen$,period$
Каждый следующий оператор READ выбирает данные из стека, начиная с первого неиспользованного значения, если не выполнялся оператор RESTORE.
3.6. Оператор RESTORE
Оператор RESTORE (восстановить) изменяет последовательный порядок выбора констант из стека.
Формат оператора RESTORE
RESTORE [{номер_строки_оператора_DATA, метка_оператора_DATA}]
Если операнд отсутствует, то выборка констант из стека начнется с первого элемента, иначе с того оператора DATA, номер строки или метка которого указаны в операторе RESTORE.
18 |
Языки Бейсик |
3.7. Оператор CONST
Оператор CONST описывает одну или несколько констант. Удобно использовать в случаях, когда одна и таже константа используется в нескольких местах программы.
Формат записи оператора CONST:
CONST имя_конс = выражение [,имя_конс = выражение]...
ãäå
имя_константы Имя константы. Имя может состоять из максимум 40 символов и должно начинаться с буквы. Допустимыми символами являются: A—Z, 0—9 и точка (.).
выражение Выражение, присваиваемое константе. Выражение может состоять из буквальных констант (например 1.0), других констант, любых арифметических и логических знаков операций, исключая возведение в степень (^), или одной строки литералов.
Пример
CONST PI = 3.141593
INPUT “Радиус окружности: “; r
PRINT “Площадь = “; PI * r ^ 2
3.8. Типы данных
Основным типом данных в языке Visual basic является тип variant, который используется по умолчанию с автоматической установкой требуемого формата. Этот тип данных прост в использовании и избавляет вас от раздумий относительно размера объявляемой переменной. Тем не менее, если вы хотите создать компактную и быстро исполняемую программу, у вас может возникнуть потребность в использовании более эффективных типов данных.
Если переменная в процессе работы программы всегда имеет значение одного типа данных (например — целое число), вы можете увеличить производительность работы вашей программы, объявив для переменной ее тип (integer), а не как variant, что позволит сэкономить память. Использование переменной типа integer увеличивает также скорость выполнения. Объявления типа переменной можно делать двумя способами: явно и неявно. Явно тип переменной объявляется в операторе DIM.
3.8.1. Оператор DIM
Формат оператора DIM.
DIM {имя_переменной} AS {тип_переменной}
Здесь тип переменной должен соответствовать нижеприведенной таблице. В колонке “Пример использования” указано правильное использование суффиксов языка Бейсик. (См.глава XI-раздел 11.2.)
Глава III. Данные |
|
|
19 |
||
|
|
|
|
|
|
Типы данных |
Размер ОП |
Диапазон значений |
Пример использования |
||
|
|
|
|
|
|
Integer (Целое) |
2 байта |
|
îò -32 768 |
DIM Birds% |
|
|
äî 32 767 |
Birds%=37 |
|||
|
|
|
|||
|
|
|
|
|
|
Long Integer |
4 байта |
|
îò -2 147 483 648 |
DIM Loan& |
|
(Длинное целое) |
|
äî 2 147 483 647 |
Loan&=350 000 |
||
|
|
||||
|
|
|
|
|
|
Single-precision |
|
|
|
|
|
Floating point |
|
|
îò -3.402823E38 |
DIM Price! |
|
(Обычной точности |
4 байта |
|
|||
|
äî 3.402823Å38 |
Price!=899.99 |
|||
с плавающей деся- |
|
|
|||
|
|
|
|
||
тичной точкой) |
|
|
|
|
|
|
|
|
|
|
|
Double precision |
|
|
Îò |
|
|
Floating point |
|
|
|
||
|
|
-1.797693134862232D308 |
DIM Pi# |
||
(Двойной точности |
8 байтов |
||||
äî |
Pi#=3.141592653 |
||||
с плаваюшей деся- |
|
|
|||
|
|
1.797693134862232D308 |
|
||
тичной точкой) |
|
|
|
||
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Îò |
|
|
Carrency (денеж- |
8 байтов |
-922337203685777.5808 |
DIM Debet@ |
||
ные еденицы) |
|
|
äî |
Debet@=7600300.50 |
|
|
|
|
922337203685777.5808 |
|
|
|
|
|
|
|
|
String (строка) |
1 áàéò |
|
От 0 до 65535 символов |
DIM Dog$ |
|
на символ |
Dog$=”Бульдог” |
||||
|
|
||||
|
|
|
|
|
|
Boolean |
2 байта |
|
True(истина) или |
DIM Flag AS BOOLEAN |
|
(логический) |
|
False(ëîæü) |
Flag=TRUE |
||
|
|
||||
|
|
|
|
|
|
|
|
|
Îò January |
|
|
Date(Äàòà) |
8 байтов |
(Января) 1,100 |
DIM Birthday AS DATE |
||
Äî December |
Birthday=#3-1-1950 |
||||
|
|
|
|||
|
|
|
(декабря) 31,9999 |
|
|
|
|
|
|
||
|
16 áàéò äëÿ |
|
|
||
Variant |
чисел; |
22 |
|
|
|
байта+1 |
|
DIM Total |
|||
(Вариант) — толь- |
Для всех типов данных |
||||
áàéò íà ñèì- |
Total=289.13 |
||||
êî â Visual Basic |
âîë |
(äëÿ |
|
|
|
|
|
|
|||
|
строки) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.8.1.1. Массивы (индексированные переменные)
См. также главу 2.2.2.-переменная
Массивы данных представляют собой последовательность однотипных простых переменных. Каждая отдельно взятая переменная называется элементом массива. Каждому элементу массива может быть присвоено одно числовое или символьное значение, поэтому различаются массивы числовые и символьные. Кроме того, массивы могут быть одномерными и многомерными.
Одномерный массив можно представить как строку или столбец переменных, а двумерный массив — как таблицу или матрицу, в которой переменные расположены в m строках и n столбцах.
20 |
Языки Бейсик |
Определение массивов. Массивы в программе должны быть определены в операторе DIM с указанием их размерности.
DIM имя_массива(размерность_1[,размерность_2])
ãäå |
|
имя_массива |
имя переменной, определяемое по общим пра- |
|
вилам записи переменой, возможно с указани- |
|
ем типа хранимых данных(суффикса). |
Размерность_1 и размерность_2 индексы массива – целые положительные числа. Индекс массива определяет число элементов массива в одном измерении.
Пример
DIM A$(2,2)
определяет двумерный массив, состоящий из четырех символьных переменных:
A$(0,0) A$(0,1) — первая строка
A$(1,0) A$(1,1) — вторая строка
èëè
A$(0,0) A$(1,0) — первый столбец
A$(0,1) A$(1,1) — второй столбец
Оператор DIM по умолчанию присваивает всем числовым переменным нулевые значения, а символьным переменным — значение текстового пробела. Другой формат записи оператора DIM позволяет определять индексы массива с произвольного числа.
Формат оператора
DIM имя_переменной(нач.зн.TO кон.зн.[,нач.зн.TO кон.зн])
ãäå
нач.зн. — начальное значение индекса;
кон.зн. — конечное значение индекса.
Этот формат удобен, когда есть желание придать больше смысла выражениям программы. Например, необходимо программно обработать данные работников в зависимости от года и месяца рождения. Тогда есть смысл определить массив следующим образом
DIM piopl$(1910 to 1980, 1 to 12).
Тогда при обработке элемента массива piopl$(1950,1) не трудно догадаться, что речь идет о работнике, который родился в январе 1950 года.
Размерность массива может быть записана в виде арифметического выражения, значение которого должно быть положительным числом или равно нулю. Если арифметическое выражение имеет дробное значение, то оно округляется и целая часть определяет размерность массива.
