Basic CP/M-80 от Orion Soft 1996 г. Орион-128,  основы программирования, уроки языка

Как научиться владеть языком Basic V2.0 в Орион-128 и Орион-ПРО.

Продаю платы и наборы микросхем, куплю микросхемы Платы и комплектующие на ПК Орион-128

01.04.2023 обновление информации

Е:01.11.96 (С) 1996г. Орионсофт

БЕЙСИК  страница 9

Образы диска являются загрузочными работают под CP/M-80 V3.61,  V3.62, V3.63 и выше

Скачать образ диска для Готека в формате *.hfe

Скачать образ в формате *.odi

Это описание BAS9.TXT скачать

Двойной точности".

Пример: 80 FIELD 1,2 AS Z$, 30 AS B$
85 GET 1
90 A%=CVI(Z$)

17. Работа с символьными строками на языке Бейсик.

Помимо матаматических (числовых) функций в языке бейсик имеется целый ряд инструкций и функций, которые можно использовать для обработки и переработки символьных строк.

17.1. Функция CHR$.

Функция CHR преобразует значение какого-либо целочисленного выражения в соответствующие символы ASCII.
Формат: /<переменная типа символьной строки>=/ CHR$(<аргумент>) <аргумент> может быть целым выражением, целой переменной или целой константой. Он может принимать значения между 0 и 127 включительно.
Функция имеет тип "символьная строка".

Пример: 10 PRINT CHR(65)
RUN
A
OK

17.2. Функция ASC

Функция ASC поставляет десятичное значение, соответствующее коду ASCII первого символа передаваемого выражения из символьных строк.
Формат: /<INTEGER-переменная>=/ASC (<аргумент>) <аргумент> может быть выражением из символьных строк, переменной типа символьной строки или константой типа символьной строки.

Пример: 10 а="BASIC"
20 PRINT ASC(A$)
RUN
66
OK

17.3. Функция STR$.

Функция STR$ преобразует значение какого-либо числового выражения в  символьную строку.
Формат: /<переменная типа символьной строки>=/ STR$(<аргумент>) <аргумент> может быть числовым выражением, которое может принимать  каждый из допустимых числовых типов.
Функция имеет тип "символьная строка".

Пример: 40 А%=40
50 PRINT STR$(A%);A%
RUN
40 40
OK

17.4. Функция VAL

Функция VAL поставляет числовое значение какого-либо представления числового значения в виде символьной строки.
Формат: /<числовая переменная>=/ VAL(<аргумент>) <аргумент> может быть выражением из символьных строк, переменной типа символьной строки или константой типа символьной строки. Если аргумент представляет собой представление числового выражения в виде символьной строки, то происходит преобразование в числовое представление в машинном формате. Если <аргумент> не является представлением числового значения в виде символьной строки, то функция принимает нулевое значение.

Функция имеет числовой тип.
Пример: 30 PRINT VAL("-3.4")
RUN
-3.4
OK
10 PRINT VAL("ABC")
RUN
0
OK

17.5. Функция HEX$

Функция HEX$ преобразует какое-либо десятичное значение в шестнадцатеричное число и передает его в виде символьной строки. Формат: /<переменная типа символьной строки>=/ HEX$(<аргумент>) <аргумент> может быть целым выражением,целой переменной или целой константой.

Функция имеет тип "символьная строка".
Пример: 30 X%=62
40 PRINT HEX$(X%)
RUN
3E
OK

17.6. Функция OCT$.

Функция OCT$ преобразует какое-либо десятичное число в восьмеричное
число и передает его в виде символьной строки.
Формат: /<переменная в виде символьной строки>=OCT$(<аргумент>).
<Аргумент> может быть целым выражением, целой переменной или целой
константой.
Функция имеет тип "символьная строка".

Пример: 50 PRINT OCT$(40)
RUN
50
OK

17.7. Функция RIGHT$.

Функция RIGHT$ формирует подстройку из символов какой-либо символьной
строки, начиная справа.
Формат: /<переменная типа символьной строки>=/RIGHT$
(<аргумент>,<количество>).
<Аргумент> может быть выражением из символьных строк, переменной типа
симвлоьной строки или константой типа символьной строки.
<Количество> символов значения <аргумент>, начиная справа, образуют
новую символьную строку. <Количество> может быть целым выражением, целой
переменной или целой константой, его значение должно лежать между 0 и 255
включительно.
Функция имеет тип "символьная строка".

Пример: 10 A$="STRING"
20 Z$=RIGHT$(A$,3)
30 PRINT Z$
RUN
ING
OK

17.8. Функция LEFT$.

Функция LEFT$ формирует подстроку из символов какой-либо символьной
строки, начиная слева.
Формат: /<переменная типа символьной строки>=/
LEFT$(<аргумент>,<количество>).
<Аргумент> может быть выражением из символьных строк, переменной типа
символьной строки или константой типа символьной строки.
Первые символы <количество> значения <аргумент>, начиная слева,
составляют первую строку. <Количество> может быть целым выражением, целой
переменной или целой константой, его значение должно лежать между 0 и 255
включительно.
Функция имеет тип "символьная строка".

Пример: 10 A$="STRING"
20 Z$=LEFT$(A$,3)
30 PRINT Z$
RUN
STR
OK

17.9. Функция SPACE$.

Функция SPACE$ позволяет сформировать какую-либо символьную строку,
состоящую из пробелов.
Формат: /<переменная типа символьной строки">=/
SPACE$(<аргумент>).
<Аргумент> может быть целым выражением, целой переменной или целой
константой, который может принимать значения между 0 и 255 включительно.
Функция имеет тип "символьная строка".
Пример: 10 FOR I%=1 TO 4
20 Z$=SPACE$(I%)
30 PRINT Z$;I%
40 NEXT
RUN
1
2
3
4
OK

17.10. Функция STRING$.

Функция STRING$ формирует строку из какого-либо предварительно
заданного символа, который добавляется раз.
Формат: /<переменная типа символьной строки>=/
STRING$(<количество>, <символ>).
Размножаемый <символ> может быть задан либо как числовое значение в
коде ASCII, либо как символ. Кодовое значение может быть описано как
числовое выражение, числовая переменная или числовая константа, причем
значение должно лежать между 0 и 127 включительно. <Символ> является первым
символом значения символьной строки или константы типа символьной строки.
Параметр <количество> указывает количество повторений символов в
формируемой символьной строке. <Количество> может быть целым выражением,
целой переменной или целой константой, его значение может лежать между 0 и
255 включительно.
Функция имеет тип "символьная строка".

Пример: 10 G$=STRING$(10,42)
20 PRINT G$
RUN
**********
OK

17.11. Функция INSTR.

Функция INSTR осуществляет поиск в какой-либо предварительно заданной
символьной строке другую заданную символьную строку и определяет, с какой
позиции вторая символьная строка содержится в качестве подстройки в первой
символьной строке.
Формат: /<INTEGER-переменная>=/ INSTR(<стартовая позиция>,
<аргумент>,<поисковое выражение>)
Параметр <стартовая позиция> задает номер первого символа в <аргумент>,
начиная с которого начинается поиск поиского выражения. <Стартовая позиция>
может быть целым выражением<целой переменной или целой константой, ее
значение должно лежать между 1 и 255 включительно. Если этот параметр не
задан, то поиск начинается с первого символа.
Параметр <аргумент> и <поисковое выражение> могут быть выражением из
символьных строк, переменной типа символьной строки или константой типа
символьной строки.
Функция принимает значение 0, если поисковое выражение не было найдено,
в противном случае передается номер первого символа <поискового выражения> в
<аргументе>.
Функция имеет тип INTEGER.
Пример: 50 A$="MATHEMATIK"
60 B$="MA"
70 PRINT INSTR(A$,B$)
80 PRINT INSTR(3,A$,B$)
RUN
1
6
OK

17.12. Функция MID$ для формирования подстрок символов.

Функция MID$ выбирает подстроку символов из какой-либо символьной
строки.
Формат: /<переменная типа символьной строки>=/
MID$(<аргумент>,<позиция>,<длина>).
И<аргумент> может быть выражением из символьных строк, переменной типа
символьной строки или константой типа символьной строки, из его значения
выбирается подстрока символов.
Значение <позиция> определяет символ в <аргументе>, начиная с которого
должна формироваться строка. Данное значение должно лежать между 0 и 255
включительно.
Параметр <длина> определяет длину выбираемой подстройки символов. Он
также должен лежать между 0 и 255 включительно. Если этот параметр не задан,
то в подстроку символов переносятся все символы до конца символьной строки
<аргумент>.
Параметры <позиция> и <длина> могут быть целыми выражениями, целыми
переменными или целыми константами.
Функция имеет тип "символьная строка".

Примечание:
Если у символьной строки <аргумент> справа от указанного параметром
<позиция> меньше символов, чем определено параметром <длина> или параметр
<длина> не задан, то в подстройку символов переносятся все символы. Если
указанное параметром <позиция> место находится вне заданной символьной
строки, то формируется пустая символьная строка.

Пример: 10 P$=MID$("символьная строка",8,4)
20 PRINT P$
30 P$=MID$("символьная строка",8)
40 PRINT P$
50 P$=MID$("символьная строка",13)
60 PRINT "<";P$;">"
RUN
KETT
KETTE
OK

17.13. Инструкция MID$ для замещения подстрок символов в символьной строке.

Функция, оперирующая с символьными строками, MID$ используется в левой
стороне оперетора присваивания, позволяет размещать какую-либо символьную
строку в любой другой символьной строке, начиная с предварительно заданной
позиции символа.
Формат: MID$(<символьная строка 1>,<позиция>/,<длина>/)=
<символьная строка 2>
<символьная строка 1> может быть переменной типа символьной строки или
константой типа символьной строки. В ней производится замена символов
символами <символьной строки 2>, начиная с <позиции>. При этом параметр
<длина> определяет максимальное количество заменяемых символов.
Параметры <позиция> и <длина> могут быть целыми выражениями, целыми
переменными или целыми константами, их значения могут лежать между 1 и 255.
Если задан параметр <длина>, то заносится столько символов <символьной
строки 2>, сколько позволяет длина символьной строки 1, если <символьная
строка 2> содержит столько символов, в противном случае только столько
символов, сколько позволяет <символьная строка 2>. Если задан параметр
<позиция>, то лежащий вне <символьной строки 1>, то происходит сообщение об
ошибке.
Примечание:
Максиммально замещаются столько символов, чтобы не изменялась длина
<символьной строки 1>.

Пример: 10 SI="DAS IST ELNE ZEICHENKETTE"
20 MID$(SI$,9,4)="LENE"
30 PRINT SI$
RUN
DAS IST LENE ZEICHENKETTE
OK

17.14. Функция LEN.

Функция LEN указывает длину, т.е. количество символов какой-либо
символьной строки.
Формат: /<INTEGER-переменная>/ LEN(<аргумент>)
<аргумент> может быть любым выражением из символьных строк, переменной
типа символьной строки или константой типа символьной строки.
Функция имеет тип INTEGER.

Пример: 30 A="BASIC"
40 PRINT LEN(A$)
RUN
5
OK

18. Стандартные числовые функции в языке Бейсик.

Общий формат этих функций имеет вид:
[<числовая переменная>=]<ключевое слово>(<аргумент>)
В качестве <аргумента> может задаваться выражение, переменная или
константа. В общем случае функция указывается справа от знака присвоения,
или она является составной частью выражения или она содержится в списке
операторов вывода. Если <аргумент> функции должен иметь целый тип, а
задается <аргумент> вещественного типа, то перед обработкой производится
округление.
При использовании функций в условиях Бейсик-интерпретатора,
возвращаемые значения имеют целый тип или вещественный обычной точности.

18.1. Функция ABS

Функция ABS возвращает абсолютную величину заданного числового
аргумента.
Формат: [<числовая переменная>=] ABS (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной и
числовой константой, имеющей тип целый, вещественный обычной точности и
вещественный удвоенной точности.
Значение функции имеет тип целый или вещественный обычной точности.

Пример: 10 PRINT ABS(8*(-3))
RUN
24
OK

18.2. Функция FIX

Функция FIX определяет целую часть значенияя заданного числового
аргумента обычной точности.
Формат: [<целая переменная>=] FIX (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой, принимающей значения обычной точности.
Значение функции имеет целый тип.

Примечание:
Функция реализует вычисление выражения
SGN(X)*TNT(ABS(X))

Пример: 10 A!=-57.85: B!=5: C!=-5.8
20 PRINT FIX(A!);FIX(B!);FIX(C!)
RUN
-57 5 -5
OK

18.3. Функция INT

Функция INT выполняет (математическое) округление.
Формат: [<целая переменная>=] INT (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой, принимающей значения обычной точности.
Значение функции имеет целый тип.

Пример: 10 Z!=88.88
20 PRINT INT(Z!)
30 PRINT INT(-Z!)
RUN
88
-89
OK

18.4. Функция SGN

Функция SGN определяет знак величины заданного числового выражения
обычной точности.
Формат: [<целая переменная>=] SGN (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой, принимающей значения обычной точности.
Значение функции имеет целый тип и принимает следующие значения:
=+1, если величина аргумента больше нуля;
= 0, если величина аргумента равна нулю;
=-1, если величина аргумента меньше нуля.

Пример: 10 INPUT "EINGABEWERT";X%
20 ON SGN(X)+2 GOTO 40,60,80
30 GOTO 100
40 PRINT "EINGABEWERT NEGATIV"
50 GOTO 10
60 PRINT "EINGABEWERT NULL"
70 GOTO10
80 PRINT "EINGABEWERT POSITIV"
90 GOTO 10
100 END

18.5. Функция SQR

Функция SQR определяет значение квадратного корня из заданного
числового выражения обычной точности.
Формат: [<числовая переменная>=] SQR(<аргумент>)
<аргумент> может быть числовой переменной, числовым выражением или
числовой константой. Величина аргумента не может быть отрицательной.
Значение функции имеет тип вещественный обычной точности.

Пример: 10 FOR I%=1 TO 5
20 PRINT I%, SQR(I%)
30 NEXT
RUN
1 1
2 1.41421
3 1.73205
4 2
.CP15 5 2.23607
18.6. Функция EXP

Функция EXP определяет значение экспоненциальной функции от заданного
числового выражения обычной точности.
Формат: [<числовая переменная>=] EXP (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой. Значение аргумента не может быть больше величины
87.3365.
Значение функции имеет тип вещественный обычной точности.

Пример: 10 Z!=10
20 PRINT EXP(Z!-7)
RUN
20.0855
OK

Примечание:
Если наибольшее допустимое значение аргумента будет превышено, то
выдается сообщение об ошибке OVERFLOW (переполнение). Функция принимает
значение, равное наибольшему представимому числу с правильным знаком.
Выполнение программы продолжается.

18.7. Функция LOG

Функция LOG вычисляет натуральный логарифм величины заданного числового
выражения обычной точности.
Формат: [<числовая переменная>=] LOG (<аргумент>)
<аргумент> может быть числовым выражением, числовой константой или
числовой переменной.
Значение функции имеет тип вещественный обычной точности.

Пример: 10 A!=77
20 B!=8
30 PRINT LOG(A!/B!)
RUN
2.26436
OK

18.8. Функция SIN

Функция SIN определяет значение синуса заданного числового выражения
обычной точности.
Формат: [<числовая переменная>=] SIN (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой, заданной в радианах.
Значение функции имеет тип вещественный обычной точности.

Пример: 10 A!=0.9
20 B!=0.7
30 PRINT SIN(A!+B!)
RUN
.999574
OK

18.9. Функция COS

Функция COS определяет значение косинуса заданного числового выражения
обычной точности.
Формат: ш<числовая переменная>=] COS(<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой, заданной в радианах.
Значение функции имеет вид вещественной обычной точности.

Пример: 10 X!=2*COS(4)
20 PRINT X!
RUN
-1.30729

18.10. Функция TAN

Функция TAN определяет значение тангенса заданного числового выражения
обычной точности.
Формат: [<числовая переменная>=] TAN (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой, заданной в радианах.
Значение функции имеет тип вещественный обычной точности.

Пример: 10 A!=1.9
20 PRINT TAN(A!/2)
RUN
1.39838
OK

18.11. Функция ATN

Функция ATN возвращает значение арктангенса заданного числового
выражения в интервале от -PI/2 до PI/2 (главное значение).
Формат: [<числовая переменная>=] ATN (<аргумент>)
<аргумент> может быть числовым выражением, числовой переменной или
числовой константой типа вещественный обычной точности.
Значение функции имеет тип вещественный обычной точности.

Пример: 10 X!=3
20 PRINT ATN(X!)
RUN
1.24905
OK

18.12. Функция RND

Функция RND возвращает псевдослучайное число в интервале от 0 до 1.
Формат: [<числовая переменная>=] RND (<аргумент>).
Имеющийся в Бейсик-интерпретаторе генератор псевдослучайных чисел может
быть использован с помощью функции RND. Возможности доступа к нему
управляются с помощью параметра <аргумент>. Аргументом может быть числовое
выражение, числовая переменная или числовая константа, принимающая
вещественные значения обычной точности. Если аргумент задает величину
меньшую нуля, то генератор псевдослучайных чисел инициализируется. Если
аргумент задает величину, равную нулю, то значением функции является
предыдущее псевдослучайное число. Если аргумент задает величину, большую
нуля, то выдается следующее псевдослучайное число.

Пример: 10 FOR I%=1 TO 3
20 PRINT RND(I%); 'аргумент > 0
30 NEXT
40 PRINT: PRINT
50 X!=RND(-6) 'аргумент < 0
60 FOR I%=1 TO 3
70 PRINT RND(I%); 'аргумент > 0
80 NEXT
90 PRINT: PRINT
100 RANDOMIZE 888 'RANDOMIZE
110 X!=RND(-6) 'аргумент < 0
120 FOR I%=1 TO 3
130 PRINT RND; 'тот же эффект,как при арг. > 0
140 NEXT
150 PRINT: PRINT
160 FOR I%=1 TO 3
170 PRINT INT(RND(0)*100)
180 NEXT
RUN
.245121 .305003 .311866
.709808 .658938 .639327
.709808 .658938 .639327
63 63 63
OK

18.13. Оператор RANDOMIZE для определения стартового значения генератора
случайных чисел

В языке Бейсик имеется в распоряжении генератор случайных чисел.
Оператор RANDOMIZE определяет случайную стартовую точку последовательности
псевдослучайных чисел.
Формат: RANDOMIZE (<аргумент>)
Аргументом может быть числовое выражение, числовая переменная или
числовая константа целого типа, определяющая стартовую точку
последовательности псевдослучайных чисел. Допустимы любые числа в диапазоне
от -32768 до 32767. Если аргумент не задан, то программа выдает сообщение
"RANDOM NUMBER SEED (задайте произвольное число) (-32768 то (до) 32767)?" И
ожидает ввода стартовой точки. Тем самым, при каждом выполнении программы
могут быть использованы желаемые стартовые точки.
Пример: 10 RANDOMIZE 3
20 FOR I%=1 TO 3
30 PRINT RND;
40 NEXT
RUN
0.88598 0.484668 0.586328 0.119426 0.709225
OK

Примечание:
Если, например, должны быть получены случайные числа в интервале от 0
до 1, то это возможно выполнить в соответствии с оператором 170 из примера в
предыдущем пункте.

19. Простые управляющие операторы и функции в языке Бейсик

19.1. Оператор LET для обозначения операторов присвоения

С помощью LET могут быть специально выделены операторы присвоения.
Формат: [LET] <идентификатор переменной>=<выражение>
Оператор LET в общем случае может отсутствовать.

Пример: Обе следующие программные строки выполняют одно и то же:

10 LET Z!=Z!%+Z!
И
10 Z!=Z!%+Z!

Примечание:
Программы, написанные на старых версиях Бейсика, обязательно содержат
оператор LET. Эти программы могут использоваться без изменений.

19.2. Оператор REM

Формат: REM <комментарий>
или
' <комментарий>
Комментарии к программе могут размещаться в любом месте внутри
программы на Бейсике. Комментарии не оказывают влияния на выполнение
программы, но выдаются вместе с текстом. На месте ключевого слова REM может
также использоваться апостроф "'". Номер строк в операторах GOTO, соотв.
GOSUB, могут также указывать на строки комментариев.

Пример: 100 GOSUB 150
. . .
150 REM подпрограмма 1
. . .
180 RETURN 'конец п/п 1
. . .
210 H3!=25*A!/B !: ZZ#=H3!*ZZ#: REM коэффициент

Примечание: Бейсик-компилятором комментарии обходятся.

19.3. Оператор END для окончания Бейсик-программы

По оператору END производится завершение Бейсик-программы.
Формат: END
При достижении оператора END закрываются все открытые файлы, очищаются
области буферов и устанавливаются в исходное состояние рабочие области
Бейсик-интерпретатора. Интерпретатор переходит в состояние ввода команд и
ожидает следующей команды. Если в Бейсик-программе оператор END отсутствует,
то стандартно исходят из того, что оператор END находится после последней
программной строки. Оператор END может находиться в любом месте программы.
Указание:
При использовании Бейсик-компилятора, по достижении этого оператора
закрываются все файлы и следует возврат в операционную систему. Если
оператора END нет, то компилятор принимает, что он находится после последней
программной строки.

19.4. Оператор STOP для вызова программного прерывания

Оператор STOP прерывает выполнение программы.
Формат: STOP
Оператор вызывает выдачу сообщения "BREAK IN (прерывание в) <номер
строки>". Текущее состояние обработки в программе сохраняется. Лишь
интерпретатор переходит в состояние команд и ожидает ввода команды.
Выполнение программы может быть продолжено с помощью команды CONT (см. Пункт
5.5.) Со строки программы, непосредственно следующей за оператором STOP.

Пример: 10 FOR I%=0 TO 4
20 FOR J%=1 TO 2
30 PRINT I%+J%
40 NEXT
50 STOP
60 NEXT
RUN
1 2
BREAK IN 50
OK
CONT
2 3
BREAK IN 50
OK

Указание:
При использовании бейсик-компилятора оператор STOP соответствует
оператору END. Однако при возврате в операционную систему выдается сообщение
о шестнадцатеричном адресе, где выполняется оператор STOP. Если
задействованы опции /D, /X или /E, то дополнительно сообщается номер строки.

19.5. Функция FRE

Функция FRE сообщает о количестве доступного места в памяти для
переменных и программы.
Формат: FRE (O)
или
FRE (X$)
При использовании первого формата функция возвращает значение об'ема
памяти, доступной для числовых переменных и программы, в то время, как при
использовании второго формата возвращается значение об'ема памяти, доступной
для строковых переменных.

Пример: 350 PRINT FRE(O); FRE (A$)

Примечание:
Если функция вызывается с использованием в качестве аргумента пустой
строки (т.е. FRE (" ")), подобный вызов обеспечивает перед определением
свободного об'ема озу выполнение так называемого "сбора мусора", что
означает реорганизацию области для запоминания строковых значений и
освобождение неиспользуемого более места в памяти. Подобная реорганизация
обычно производится лишь при переполнении области памяти для строк (так
называемого неупорядоченного массива) и может длиться до полутора минут. При
вызове FRE (" ") реорганизация производится раньше и происходит поэтому

 

 

Продолжение дальше....

 

 

Осваиваем микрокомпьютер интересная книга в 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 в позолоте, куплю микросхемы

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу