|
Basic CP/M-80 от
Orion Soft 1996 г. Орион-128,
основы программирования, уроки языка
Как научиться владеть языком
Basic V2.0 в Орион-128 и Орион-ПРО.
01.04.2023
обновление информации
Е:01.11.96 (С) 1996г. Орионсофт
БЕЙСИК страница 4
Образы диска являются загрузочными работают под
CP/M-80 V3.61,
V3.62, V3.63
и выше
Скачать образ
диска для Готека в формате *.hfe
Скачать образ в
формате *.odi
Это описание
BAS4.TXT скачать
Таблицы могу съезжать (правка будет позже), смотрите в текстовом
файле
8. Символы операций в языке бейсик
В языке Бейсик различают следующие операции:
- арифметические операции
- операции сравнения
- логические операции
- операции со строками знаков
Арифметические операции представлены в следующей таблице:
Символ операции I Значение I Пример
----------------------I-----------------I--------------
I I
+ I Сложение I A%+B%
I I
- I Вычитание I A%-B%
I I
* I Умножение I A%*B%
I I
/ I Деление I A%/B%
I I
\ I Целочисленное I A%\B%
I деление I
I I
^ I Возведение в I A%^2
I степень I
I I
- I Знак минус I -A%
I I
MOD I Вычисление I A! MOD B! Дает целочисленный
I модуля I остаток
Результат арифметической операции приводится в соответствие с типом
параметра результата.
Пример: 10 а%=19/8
20 PRINT A%
RUN
2
OK
Примечания.
При целочисленном делении операнды преобразуются в INTEGER-числа и по
этой причине могут быть только из диапазона от -32768 до 32767.
Результат INTEGER-деления является целочисленной частью частного обеих
операндов.
Примеры: 10\4=2
36.99\6.99=6
Операция вычисления модуля в качестве результата дает INTEGER-число,
которое соответствует остатку целочисленного деления.
Примеры: 10 MOD4=2
36.99 MOD 6.=0
Операторы сравнения представлены в следующей таблице:
Символ операции I Значение I Пример
------------------------I----------------------I-----------------
I I
= I Равно I A%=B%
I I
<> I Не равно I A%<>B%
I I
< I Меньше I A%<B%
I I
> I Больше I A%>B%
I I
<= I Меньше или равно I A%<=B%
I I
>= I Больше или равно I A%>=B%
Если операция выполнена, вырабатывается -1, в противном случае 0.
Численные значения, возникающие при операциях сравнения, могут быть
интересно использованы. Это видно из следующего примера, в котором
определяется какое число из двух переменных больше или меньше.
10Z!=5.1
20 X!=3.5
30 MINWERT!=-(Z! > X!)*X!-(Z! <= X!)*Z!
40 MAXWERT!=-(Z! < X!)*X!-(Z! >= X!)*Z!
50 PRINT MINWERT!; MAXWERT!
60 END
RUN
3.5 5.1
Логические операции представлены в следующей таблице:
Символ операции I Значение I Пример
-------------------------I---------------------------I-------------------
I I
NOT I Отрицание I NOT A
I I
AND I Логическое умножение I A AND B
I I
OR I Логическое сложение I A OR B
I I
XOR I Исключающее или I A XOR B
I I
IMP I Импликация I A IMP B
I I
EQV I Эквивалентность I A EQV B
Значение логической функции "истина" представляется набором битов, не
равных нулю, а значение логической функции "ложь"- нулем.
Пример: 20 IF NOT EOF(I) GOTO 80
90 IF BE% > 70 AND HA! < 80 GOTO 100
Логические операции могут производится с двухбайтными величинами
(INTEGER-значения в двоичном представлении), при этом производится
побитная обработка. Это происходит по следующим правилам:
Операция I 1 операнд I 2 операнд I Результат
----------------I---------------I---------------I-------------
I 1 I 1 I 1
END I 1 I 0 I 0
I 0 I 1 I 0
I 0 I 0 I 0
----------------I---------------I---------------I-------------
I 1 I 1 I 1
OR I 1 I 0 I 1
I 0 I 1 I 1
I 0 I 0 I 0
----------------I---------------I---------------I-------------
I 1 I 1 I 0
XOR I 1 I 0 I 1
I 0 I 1 I 1
I 0 I 0 I 0
----------------I---------------I---------------I-------------
I 1 I 1 I 1
IMP I 1 I 0 I 0
I 0 I 1 I 1
I 0 I 0 I 1
----------------I---------------I---------------I-------------
I 1 I 1 I 1
EQV I 1 I 0 I 0
I 0 I 1 I 0
I 0 I 0 I 1
----------------I---------------I---------------I-------------
NOT I 1 I I 0
I 0 I I 1
----------------I---------------I---------------I-------------
Пример: A%=63 AND 16
A% равно 16 т.к.
63 В двоичном представлении: 111111
16 В двоичном представлении: 010000
-------
A% В двоичном представлении: 010000
А%=4 OR 2
A% равно 6 т.К.
4 В двоичном представлении: 0100
2 В двоичном представлении: 0010
------
A% В двоичном представлении 0110
Вариант использования показан в следующем примере, в котором
INTEGER-число в побитном представлении ( 1: бит установлен, 0: бит не
установлен) подготовлено в виде строки знаков.
10 BF$=" "
20 INPUT "INTEGERZAHL"; IZ%
30 FOR I%=15 TO 0 STEP -1
40 BF$=BF$+STR$(ABS((IZ% AND 2^I%) -2^I%))
50 NEXT I%
60 PRINT BF$
70 END
RUN
INTEGERZAHL:? (EINGEGEBEN WIRD 143) *
0000000010001111 * вводится 143
Для строковых переменных действительна операция конкатенации т.е.
соединения строк знаков. Она обозначается знаком операции "+".
Сформированная таким образом строка знаков не должна быть длинее 255
знаков.
Пример: 10 А$="об'единение "
20 B$="строк "
30 C$="символов"
40 D$=A$+B$+C$
50 PRINT D$
RUN
Об'единение строк символов
ОК
Для строк знаков действительны также операции сравнения. Сравнение
происходит позначно, на базе представления в коде ASCII.
Примеры: "AA" меньше, чем "AB"
"строка" равна "строке"
"DB" больше, чем "CB"
"PS" больше, чем "P#"
9. Массивы (ARRAY) в языке Бейсик
9.1. Оператор описания DIM для массивов
С помощью оператора описания DIM описываются массивы, имеющие одно или
несколько измерений.
Формат: DIM <обозначение переменной массива" (<верхние границы индекса>)
[,<обозначение переменной массива> (<верхние границы индекса>)]...
Могут описываться массивы различных типов, соответственно выбранному
обозначению переменной. Число различных индексов может составлять
максимум 255, т.е. теоретически могут быть описаны максимум
255-размерные массивы. Наименьший индекс каждого диапазона индексов по
умолчанию равен нулю. С помощью варианта BASE1 (см. раздел 9.2.) Нижняя
граница индекса может быть установлена равной 1.
Пример: 10 DIM SI$(12), A%(5,5)
20 DIM X5#(5,3,3,5)
Примечание:
в языке Бейсик имеется возможность использовать массивы любой
размерности с диапазоном индексов от 0 до 9 без этого неявного описания
массива, т.к. оно приводит к трудночитаемым программам и противоречит
современной методике программирования. Описание размерности массива
должно происходить перед первым обращением к любому элементу массива.
При этом, можно задавать верхнюю границу с помощью арифметического
выражения, которое вычисляется к моменту описания массива. При работе
Бейсик-компилятора, в качестве верхних границ нельзя использовать
переменные или выражения. Это могут быть только константы.
9.2 Оператор OPTION BASE для произвольного задания нижней границы
индекса при описании массива.
С помощью оператора OPTION BASE нижняя граница индекса при определении
размерности массива может быть задана равной 0 или 1.
Формат: OPTION BASE N величина N может принимать значения 0 или 1.
Пример: 10 FOR I%=0 TO 4
20 A(I%)=2*I%
30 PRINT A(I%)
40 NEXT
RUN
0 2 4 6 8
OK
5 OPTION BASE 1
10 FOR I%=0 TO 4
20 A(I%)=2*I%
30 PRINT A(I%)
40 NEXT
RUN
SUBSCRIPT OUT OF RANGE IN 20
OK
Примечание:
По умолчанию OPTION BASE устанавливается равной 0. Этот оператор прежде
всего служит для упрощенного перемещения Бейсик-программ, т.к. для
других
Бейсик-интерпретаторов (более старых) в качестве нижней границы
индексной
области по умолчанию задавалась 1.
9.3. Оператор ERASE для стирания областей памяти, занятых массивами.
С помощью оператора ERASE могут быть изменены характеристики массива
или очищена память, занятая уже ненужным массивом.
Формат: ERASE <обозначение переменной массива>
[,<обозначение переменной массива>]...
Пример: 10 DIM A! (20,20,20)
.
.
.
80 ERASE A!
.
.
100 DIM A!(40,5)
Указание: в Бейсик-компиляторе этот оператор не выполняется.
10. Операторы цикла в языке Бейсик
10.1. Операторы FOR, TO, STEP и NEXT для образования цикла с
фиксированным
числом прохождений.
С помощью операторов FOR, TO, STEP и NEXT программируются циклы с
фиксированным числом прохождений.
Формат: FOR <индекс цикла>=<начальное значение> TO <конечное значение>
[<STEP <шаг>]
.
. <Операторы>
.
NEXT [<индекс цикла>] [,<индекс цикла>]...
<Индекс цикла> это простая числовая переменная типа INTEGER или REAL с
простой
точностью.
<Начальное значение>,<конечное значение> и <шаг> могут быть числовой
константой, числовой переменной или значением числового выражения типа
INTEGER или REAL с простой точностью. Если шаг не задан, то по умолчанию
используется значение 1. Все величины перед выполнением цикла
вычисляются и
во время выполнения цикла больше не могут быть изменены. Следствием
этого
является то, что нельзя осуществлять переход в тело цикла (тело цикла -
последовательность операторов, которая начинается с первого оператора,
идущего после оператора FOR и заканчивается оператором NEXT, имеющим тот
же
индекс цикла, что и FOR). Конец последовательности операторов тела цикла
обозначается с помощью оператора NEXT.
Могут встречаться циклы, вложенные друг в друга. При этом должно
соблюдаться следующее условие: внутренний цикл должен полностью
укладываться
в границы внешнего цикла. Несколько вложенных друг в друга циклов могут
заканчиваться, если это необходимо, одним оператором NEXT. В этом случае
индексы цикла в операторе NEXT должны стоять в определенной
последовательности, а именно, первым должен стоять индекс самого
внутреннего
цикла, а последним - самого внешнего.
Выполнение тела цикла происходит таким образом, что все операторы
внутри цикла обрабатываются несколько раз, для каждого допустимого
значения
индекса цикла. Первый проход происходит с начальным значением индекса
цикла.
Затем значение индекса цикла изменяется на величину шага. При
положительном
шаге индекс цикла увеличивается на величину шага, при отрицательном шаге
-
соответственно уменьшается. Следующий проход цикла происходит в том
случае,
если новое значение цикла еще не превысило (при положительном шаге), или
не
стало меньше (при отрицательном шаге) конечного значения.
Пример: 10 FOR I%=10 TO 0 STEP -1
20 PRINT I%
30 NEXT
40 NED
RUN
10 9 8 7 6 5 4 3 2 1 0
OK
10 J%=6
20 FOR I%=1 TO J%+4
30 PRINT I%
40 NEXT
50 END
RUN
1 2 3 4 5 6 7 8 9 10
OK
Примечания:
Следует стремиться к тому, чтобы всегда описывать переменные цикла как
INTEGER-переменные. За счет этого существенно ускоряется выполнение
программы. Также следует избегать преждевременного выхода из тела цикла
с
помощью оператора перехода, т.к. из-за этого цикл остается активным и
блокирует дополнительное место в памяти. Частое обращение к циклу может
в
этом случае привести к недостатку места в памяти и к прерыванию
программы по
ошибке. В этом случае, если FOR-NEXT-цикл должен быть обязательно
преждевременно покинут, в зависимости от условия преждевременного
прерывания
индекс цикла должен быть изменен таким образом, чтобы за счет этого цикл
планомерно закончился.
Например, если из файла должны быть считаны не более 100 блоков.
Фрагмент программы в этом случае может выглядеть так:
.
.
.
110 OPEN "I", 1, "BEISPIEL"
120 FOR I%=1 TO 100
130 INPUT# 1, Z%, X1%, Y2!
140 IF EOF(1) THEN I%=101
.
.
.
180 NEXT I%
.
.
Указание:
При использовании переменных цикла и числовых выражений с
нецелочисленными значениями, следует обращать внимание на точность
округления, которая может привести к досрочному прерыванию цикла
(условие
окончания из-за погрешности округления не будет опознано). При
использовании
компилятора языка Бейсик, в качестве индекса цикла допустимы также
переменные типа REAL с двойной точностью.
10.2. Операторы WHILE и WEND для образования циклов с переменным числом
прохождений (итерационные циклы).
С помощью операторов WHILE и WEND программируются циклы с переменным
числом прохождений.
Формат: WHILE <выражение>
.
.<Операторы>
.
WEND
Цикл длится до тех пор, пока <выражение>, представляющее собой числовое
выражеие, отличается от 0, или является "истиной" в качестве логического
выражения. Цикл заканчивается, если <выражение> соответственно равно 0
или
является "ложью". Операторы WHILE и WEND внутри программы могут
встречаться
только в виде пары. Внутри WHILE-цикла могут встречаться только
выполняемые
операторы, в частности, может быть вновь запрограммирован WHILE-цикл.
Пример: 5 REM EINFACHSTES SORTIEREN
10 DBL%=9
Продолжение дальше....
Осваиваем микрокомпьютер интересная книга в 2-х томах по
программированию на бэйсике от А до Я
Осваиваем микрокомпьютер К-1 Б.Р.Смит 1989 скачать часть 1-я
Осваиваем микрокомпьютер К-1 Б.Р.Смит 1989 скачать часть 2-я
Программирование
микропроцессорных комплектов i8080, 580вм80, z80, i8085, 1810, 1824
Орион-128
описание команд микропроцессора к580вм80 (Орион-Софт)
Язык Ассемблера для Ориона
Язык Си для Ориона
Язык Паскаль для Ориона
Язык Форт для Ориона
Купить платы, наборы микросхем на Орион-128, КР565РУ5В,
КР565ру7В, к565ру5г AU, к565ру7г Au
в позолоте, куплю микросхемы
Полезные и интересные статьи
На предыдущую страницу
На главную страницу На следующую
страницу
|
|