PRINT USING 1формат 0; 1список вывода
Формат задается в виде символьной строки (заключенной в ка-
вычки), задающей форму вывода каждого элемента списка по следую-
щим правилам для чисел : # - для каждой цифры, ^^^^ - для вывода
в показательной форме. Остальные символы обозначают сами себя.
- 10 -
Например 1,
##.## - будет выведено 2 цифры в качестве целой части и две
- дробной. Если целая часть содержит более двух цифр, то перед
числом будет напечатан знак % .
#.## ^^^^ - вывод будет осуществляться в показательной фор-
ме.
Для символьных строк :
"\ 1 0 \" - (два пробела) - будет выведено четыре символа
"\" 1 0- (без пробела) - будет выведено два символа
Вообще количество выведенных символов будет равно числу пробелов
между двумя наклонными линиями + 2.
"!" 1 0- будет выведен один символ
"&" 1 0- будут выведены все 1 0символы
Например,
A$= "КОТ" : GA= 6.5
B$= "СОБАКА" : GB= 15.3
PRINT USING "& ВЕСИТ #.#,\ \ ВЕСИТ ##.# КГ";A$,GA,B$,GB
При выполнении этого оператора на экране появится
КОТ ВЕСИТ 6.5, СОБАКА ВЕСИТ 15.3 КГ
_Оператор определения положения курсора
LOCATE i,j
устанавливает координаты (номер строки i и номер столбца j), в ко-
торые начнется вывод данных оператором PRINT.
1.7. Операторы цикла
1. FOR i=i 4нач 0 to i 4кон 0 [STEP ih]
NEXT i
i, i 4нач 0, i 4кон 0, ih - соответственно, управляющая переменная
цикла, ее начальное, конечное значения и шаг изменения. Если
ih=1, то шаг можно опустить. Например,
FOR i=1 to 10
....
NEXT i
FOR i=1 to 10
FOR j=1 to 20
....
NEXT j: NEXT i
- 11 -
или
FOR i=1 to 10
FOR j=1 to 20
....
NEXT j,i
2. DO WHILE 1условие
LOOP
или
WHILE 1условие
1операторы
WEND
(операторы выполняются 1, 0 пока выполняется условие)
3. DO UNTIL 1условие
1операторы
LOOP
(операторы выполняются до тех пор, пока не будет выполнено усло-
вие. Как только условие будет выполнено, осуществляется выход из
цикла).
4. DO
1операторы
LOOP
Выход из цикла в этом случае осуществляется оператором EXIT.
_Оператор EXIT . 1( 0выход) используется с SELECT, DEF, FOR, IF,
LOOP, SUB, WHILE. Например,
EXIT FOR осуществляет выход из цикла, организованного опера-
торами FOR/NEXT до его завершения
EXIT IF - выход из любого места IF блока
EXIT LOOP - выход из цикла, заканчивающегося оператором LOOP
или WEND.
Остальные случаи использования EXIT будут рассмотрены вместе с
соответствующими операторами.
_Операторы выбора . ON/GOTO и ON/GOSUB
ON n GOTO 1метка 0 [, 1метка 0...]
n может принимать значения от 0 до 255. Переход осуществляется на
метку, определяемую значением n. Например, при n = 2 переход осу-
ществляется на вторую метку в списке. Если n = 0 или n больше ко-
личества меток в списке, то выполняется следующий по порядку опе-
- 12 -
ратор.
ON n GOSUB 1метка 0 [, 1 метка 0...]
n принимает значения от 0 до 255. Переход осуществляется к одной
из возможных подпрограмм (см.ниже), определяемых метками в спис-
ке, в зависимости от значения n.
После выполнения подпрограммы возврат осуществляется к опе-
ратору, следующему за ON/GOSUB.
1.8. Подпрограммы, функции и процедуры
_Подпрограмма . - помеченная последовательность операторов, за-
канчивающаяся оператором RETURN. Выполняется, когда достигнут
GOSUB.
....
GOSUB aa
....
END
aa:
1операторы
RETURN
Оператор RETURN осуществляет возврат к оператору, непосредственно
следующему за GOSUB.
_Функция . может быть определена одной строкой (оператор-функ-
ция) или несколькими строками (подпрограмма-функция).
DEF FN 1имя 0 [( 1список параметров 0)] = 1выражение
(это определение оператора-функции) 1.
Здесь список параметров может включать 1 0не более 16 параметров.
DEF FN 1имя 0 [( 1список параметров 0)]
1описание переменных
1операторы
[EXIT DEF]
....
[FN 1имя 0 = 1выражение 0]
END DEF
(это определение подпрограммы-функции) 1.
Обращение к функции записывается там, где нужно получить ее зна-
чение. При этом параметры заменяются их фактическими значениями.
Например 1,
DEF FNF (x,y) = x * x + y * y
- 13 -
a = 3 : b = 4
P = FNF (a,b)
или
P = FNF (3,4)
Функция возвращает одно значение, тип которого определяется име-
нем функции. Определение функции может располагаться в любом месте
программы (обычно в начале или в конце). Например,
F = FNa (1.5)
PRINT F
DEF FNa (x)
FNa = x*x
END DEF
END
или
F = FNa (1.5)
PRINT F
END
DEF FNa (x)
FNa = x*x
END DEF
В результате будет напечатано 2.25.
Список параметров оператора-функции может включать только
имена переменных.
_Процедура . - это последовательность строк программы, располо-
женная между операторами SUB и END SUB и выполняемая при обраще-
нии к ней при помощи оператора CALL.
SUB 1имя 0 [( 1список параметров 0)]
1описание переменных
1операторы
[EXIT SUB]
END SUB
Имя может содержать до 31 символа. Список параметров (не более
16) может включать имена переменных и массивов. Для массивов в
скобках указывается размерность. Например, 1 - для одномерного
массива, 2 - для двухмерного и т.д.
В обращении к процедуре за именем фактического массива сле-
дуют пустые скобки. Например,
SUB SUM (x (1), n, S)
S = 0
- 14 -
FOR I=1 to n
S = S + x (I)
NEXT I
END SUB
DIM A (3)
A (1) = 1 : A (2) = 2 : A (3) = 4
CALL SUM ( A (), 3, S)
S = S/3
PRINT S
END
Эта программа вычисляет среднее значение элементов массива A,
процедура SUM суммирует элементы массива.
Основные отличия процедуры от подпрограммы-функции :
1 - процедура не обязана возвращать значение, она не имеет типа;
2 - вызывается оператором CALL, а не из выражения.
Отдельные переменные, используемые в процедуре (или подпрог-
рамме-функции), могут быть объявлены локальными, т.е. действующи-
ми только в данной подпрограмме (оператор LOCAL), общими, т.е.
действующими как в подпрограмме, так и в основной программе (опе-
ратор SHARED) и статическими, т.е. действующими в данной подпрог-
рамме как LOCAL, но сохраняющими полученные значения до следующе-
го обращения (оператор STATIC). По умолчанию в подпрограмме-функ-
ции переменная является SHARED, а в процедуре STATIC.
DEF FNF1
LOCAL i, S
FOR i =1 to 10
S = S + i
NEXT i
FNF1 = S
END DEF
После выхода из подпрограммы-функции переменные i и S теряют свои
значения (при входе в подпрограмму всегда S = 0). Эти же имена
могут использоваться в программе для обозначения других величин.
DEF FNF2
LOCAL i
SHARED S
FOR i = 1 to 10
S = S + i
NEXT i
- 15 -
FNF2 = S
END DEF
В этом случае S сохраняет значение после выхода из подпрограммы и
имеет один и тот же смысл во всех частях программы.
DEF FNF3
LOCAL i
STATIC S
FOR i = 1 to 10
S = S + i
NEXT i
FNF3 = S
END DEF
В этом случае S сохраняет значение после выхода из подпрограммы
до следующего обращения к ней, т.е. после первого обращения зна-
чение функции FNF3 будет 55, после второго - 110 и т.д. (S нельзя
изменять в основной программе).
- 16 -
2. ЦВЕТ И ГРАФИКА
В графическом режиме экран рассматривается как решетка, точ-
ки в узлах которой могут быть включены (белым или другим возмож-
ным цветом) или выключены. Точка идентифицируется координатами x,
y; x - номер позиции по горизонтали (от 0 до 319 или до 639 в за-
висимости от режима), y - номер позиции по вертикали (от 0 до 199
или до 349 в зависимости от режима). Точка с координатами 0,0 на-
ходится в верхнем левом углу экрана.
Графический режим устанавливается (или отменяется) _операто-
_ром SCREEN ..
SCREEN i[,j]
i = 0, j = 0 черно-белый текстовый режим
i = 0, j = 1 цветной текстовый режим
i = 1, j = 0 цветная графика при средней разрешающей способнос-
ти (320 позиций по горизонтали, 200 по вертикали)
i = 1, j = 1 черно-белая графика при средней разрешающей спосо-
бности
i = 2 черно-белая графика при высокой разрешающей спосо-
бности (640 позиций по горизонтали, 350 по верти-
кали)
После выполнения оператора SCREEN точка устанавливается в
середину экрана.
_Оператор COLOR . 2 0устанавливает цвет фона экрана и палитру (из
трех цветов) для окрашивания точек (для текстового режима - еще и
цвет рамки).
Существует две палитры цветов: 0 и 1, следующего состава:
_Палитра 0 . _Палитра 1
1 - зеленый 1 - голубой
2 - красный 2 - сиреневый
3 - желтый 3 - белый
Для фона можно выбрать один из 16 цветов (0 - черный, 1 - синий,
2 - зеленый, 3 - бирюзовый, 4 - красный, 5 - лиловый, 6 - корич-
невый, 7 - белый, 8 - серый, 9 - голубой, 10 - ярко-зеленый, 11 -
ярко-бирюзовый, 12 - ярко-красный, 13 - ярко-лиловый, 14 - жел-
тый, 15 - ярко-белый)
Оператор COLOR 2 0имеет вид
COLOR 2 0i, 2 0j[,k]
- 17 -
где i - цвет фона, j - номер палитры, k - цвет рамки.
Например, операторы
SCREEN 1,0
COLOR 9,0
устанавливают цветной графический режим при средней разрешающей
способности; цвет фона - голубой; последующие операторы должны
использовать цвета из 0-й палитры.
В графическом режиме (для получения на экране неподвижных
изображений) могут использоваться следующие операторы:
PSET 2 0(PRESET) - включает (или выключает) точку; LINE 2 0- чер-
тит линию; CIRCLE 2 0- чертит окружность или ее часть; PAINT 2 0- зак-
рашивает указанную часть экрана.
Более сложные операторы для получения движущихся изображений
(DRAW, GET, PUT) рассматриваются в п.4.
Оператор
PSET (x, y)
включает точку с координатами x,y.
Оператор
PSET STEP (x, y)
включает точку, отстоящую на x позиций по горизонтали и на y по-
зиций по вертикали от текущей точки. Например, если в предыдущем
положении точка имеет координаты (60, 75), то оператор
PSET (10, 20) определяет точку с координатами (10, 20), а
оператор
PSET STEP (10, 20) определяет точку с координатами (70, 95).
Операторы
PSET (x, y), 0
или
PRESET 2 0(x, y)
стирают точку (x, y) с экрана.
Оператор LINE 2 0позволяет начертить отрезок прямой, указав его
начало (x1, y1), конец (x2, y2) и цвет k
LINE 2 0[(x1, y1)] 2 0- 2 0(x2, y2), 2 0k
Если начальная точка отсутствует, то линия будет прочерчена, на-
чиная с точки, в которой остановился предыдущий оператор.