Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Языки Бейсик

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
622 Кб
Скачать

Глава III. Данные

21

Если размерность массива не определена, то есть массив не определен в операторе DIM, (что также допускается в Бейсике), то по умолчанию определяется массив в десять элементов.

Если не определено дополнительно, то минимальное значение индекса массива равно нулю.

Пример 3.8.1.1.1.

DIM a$(2,2) 'определение символьного массива

'из четырех элементов a$(0,0)=“сегодня “: a$(0,1)=“в школе “ a$(1,0)=“4 “: a$(1,1)=“урока”

PRINT a$(0,0);a$(0,1);a$(1,0);a(1,1) Результат сегодня в школе 4 урока

Оператор DIM описывает либо статические, либо динамические массивы. Если область хранения массива не была описана в операторах STATIC, DYNAMIC или COMMON, массивы, размер которых был задан в числах, являются статиче- скими, а массивы, размер которых был задан в переменных — динамическими.

Область хранения статического массива выделяется при запуске программы и остается постоянной. Область хранения динамического массива выделяется при работе программы.

3.8.2. Оператор REDIM

Оператор REDIM описывает или изменяет размер динамического массива, стирая все предыдущие значения.

Формат оператора REDIM:

REDIM [SHARED] переменная(индекс) [AS тип]

[,переменная(индекс) [AS тип]]...

ãäå

 

SHARED

Указывает, что переменные используются совместно всеми про-

 

цедурами SUB или FUNCTION в модуле.

Переменная Имя переменной массива.

Индекс

Размеры массива в следующем виде:

 

[íèç TO] âåðõ [,[íèç TO] âåðõ]...

ãäå

 

Íèç

Нижняя граница индекса массива. По умолчанию нижняя грани-

 

ца равна нулю.

Âåðõ

Верхняя граница.

AS òèï

Описывает тип данных массива или переменной (INTEGER,

 

LONG, SINGLE, DOUBLE, STRING или тип данных, описан-

 

ный пользователем).

Оператор REDIM всегда описывает динамические массивы.

22

Языки Бейсик

Пример

 

' $DYNAMIC

 

DIM A(49, 49)

 

REDIM A(19, 14)

 

3.8.3.Оператор ERASE

Оператор ERASE заново инициализирует элементы массива или освобождает область хранения динамического массива.

Формат оператора ERASE:

ERASE имя_массива [,имя_массива]...

ãäå

имя_массива Имя массива.

Для статических массивов, ERASE устанавливает каждый элемент числового массива в ноль, а каждый элемент строкового массива в строку нулевой длины.

Для динамических массивов, ERASE освобождает память, используемую массивом. Вам придется заново описать размеры массива в REDIM или DIM прежде, чем использовать его.

Пример

DIM a%(0) a%(0) = 6

PRINT “Äî : “; a%(0)

ERASE a%

PRINT “После: “; a%(0)

3.8.4. Оператор OPTION BASE

Оператор OPTION BASE (оптимальная база) устанавливает минимальное значение индексов в массиве. В процессе использования массивов в программе сталкиваешься с неудобством, связанное с тем, что размерность массива не совпадает с максимальным значением индексов массивов. Например, массив с размерностью (100) имеет сто элементов, но максимальное значение индекса равно 99, а минимальное нуль. В то же время стало уже привычным нумеровать какие либо элементы с 1 до 100. Оператор OPTION BASE устанавливает иное минимальное значение индексов в массиве.

Формат оператора OPTION BASE:

OPTION BASE n

где n равно 0 или 1 и устанавливает нижнюю границу всех массивов в данной программе.

3.8.5. Тип данных, определенный пользователем

Пользовательский тип данных (в Коболе и PL/1 он назывался структурой) позволяет организовывать данные таким образом, что сразу к нескольким дан-

Глава III. Данные

23

ным можно обращаться, как к одному; формировать запись файла из нескольких переменных таким образом, чтобы работать в программе с этими переменными, возложив всю работу по позиционированию данных в записи на систему. Этот тип данных хорошо зарекомендовал себя в программировании экономических задач, и нет никаких оснований отказываться от такого удобного типа данных, пусть даже он и называется теперь пользовательским, хотя автору и кажется название “структура” более соответствующим сути.

Оператор TYPE

Оператор TYPE определяет тип данных, содержащий один или несколько элементов.

Формат Оператора TYPE:

TYPE тип-пользов

Имя-элемента AS тип

[имя-элемента AS тип]

....

....

....

END TYPE

ãäå

Тип-пользов — имя определяемого типа данных. Имя может быть длиной до 40 символов и должно начинаться с буквы. Допустимые символы: A-Z, 0-9 и точка (.).

Имя-элемента— элемент типа данных, определенного пользователем.

Тип — тип элемента (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип данных, определенный пользователем).

В приведенном ниже примере определен тип пользователя Card, состоящий из двух переменных: символьной Suit и целочисленной Value. Далее массив Deck, состоящий из 52 элементов, определяется как тип Card, и в дальнейшем каждый элемент массива имеет по два подэлемента-Deck(i).Suit и Deck(i).Value.

Пример

TYPE Card

Suit AS STRING * 9

Value AS INTEGER

END TYPE

DIM Deck(1 TO 52) AS Card

Deck(1).Suit = “Êëóá”

Deck(1).Value = 2

PRINT Deck(1).Suit, Deck(1).Value

24

Языки Бейсик

Глава IV. Ввод информации

Ввод-вывод информации обеспечивается достаточно большим набором программных средств. В этой главе мы ограничимся рассмотрением простейших вариантов работы операторов ввода-вывода PRINT и INPUT, которые позволяют вводить информацию с клавиатуры и выводить информацию на экран монитора.

4.1. Ввод данных с клавиатуры во время выполнения программы

Эта необходимость возникает в тех случаях, когда исходные данные на этапе написания программы неизвестны и определяются только во время диалога, либо часто изменяются. Для этих целей используются операторы INPUT, LINE INPUT и функции INPUT$, INKEY$.

4.1.1. Оператор INPUT

Оператор INPUT (ВВОД) позволяет присвоить значение переменным с клавиатуры во время выполнения программы.

Формат записи оператора INPUT:

INPUT[;][“приглашение”]{,;}[список_переменных]

ãäå

 

“Приглашение”

символьная константа, которая выводится на экран

 

для пояснения того, что будет вводиться;

Список_переменных — составляется из переменных, которым с клавиатуры должны быть присвоены определенные значения. Переменные в списке разделяются запятыми или точ- кой с запятой.

Когда в программе встречается оператор INPUT, выполнение программы приостанавливается, так как она ждет ввода с клавиатуры значения переменных, перечисленных в списке переменных оператора INPUT. На экране появляется текст приглашения, если он был указан в операторе, и знак вопроса, если после приглашения стоит точка с запятой. Если приглашение отсутствует, то на экран выводится знак вопроса. При вводе значений должно соблюдаться позиционное соответствие между переменными, указанными в списке переменных и значениями переменных, вводимых с клавиатуры. Данные вводятся в виде констант, разделенных запятыми. Тип вводимых данных должен соответствовать типу переменных в списке переменных, иначе выдается сообщение “Redo from start”-(повторите ввод) и необходимо повторить ввод.

Значения переменных вводятся с места, определенного мигающим курсором. Курсор можно сдвинуть на несколько позиций вправо клавишей ПРОБЕЛ, но эти пробелы в значение переменной не попадут. Позиция курсора устанавливается сразу после текста приглашения, если после него стоит запятая, или по-

Глава IV. Ввод информации

25

сле текста приглашения, знака вопроса и пробела, если после текста приглашения стоит точка с запятой.

Значение вводимых переменных не должно превышать 253 символов. Оператор INPUT заканчивает свою работу при нажатии клавиши ВВОДА(Enter). Если количество введенных переменных равно количеству переменных в операторе INPUT, то после нажатия клавиши ВВОД программа продолжает свою работу с оператора, следующего за оператором INPUT.

Пример 4.1.1.1

INPUT “Введите значения X,Y,Z”;x,y,z$ print x;y;z$

End

Результат

Введите значения X,Y,Z? 2.45,-278.0007,Ввод 2.45 — 278.0007 Ввод

Если в операторе INPUT после приглашения поставить запятую, то знака вопроса и пробела не появится.

Пример 4.1.1.2

INPUT “Введите значения X,Y,Z”,x%,y%,z$ print x%;y%;z$

end

Результат

Введите значения X,Y,Z2.45,-278.0007,Ввод

2 — 278 Ââîä

Если количество введенных значений меньше или больше, чем указано в операторе INPUT, то после ввода данных на следующей строке экрана дисплея появится сообщение

Redo from start(повторите ввод)

Если в операторе INPUT указана только одна переменная, и данные не вводятся, а сразу нажата клавиша ВВОД, то числовой переменной будет присвоено нулевое значение, а символьной — пробел.

Значение символьной переменной, если она не содержит первых пробелов и запятых, можно вводить без двойных кавычек.

4.1.2. Оператор LINE INPUT

Оператор LINE INPUT (ввод строки) позволяет ввести с клавиатуры строку символов длиной до 254 символов, включающую любые( в том числе и управляющие) знаки во время выполнения программы.

Формат записи оператора LINE INPUT:

LINE INPUT[;][“приглашение”]{,;}символьная_переменная

ãäå

26

Языки Бейсик

“Приглашение”

символьная константа, которая выводится на эк-

 

ран для пояснения того, что будет вводиться;

Символьная_переменная

имя символьной переменной, которой с клавиа-

 

туры должно быть присвоено определенное зна-

 

чение.

Когда в программе встречается оператор LINE INPUT, выполнение программы приостанавливается, так как она ждет ввода с клавиатуры значения переменной, указанной в операторе LINE INPUT. На экране появляется текст приглашения, если он был указан в операторе.

Значение переменной вводится с места, определенного мигающим курсором. Курсор можно сдвинуть на несколько позиций вправо клавишей ПРОБЕЛ, но эти пробелы в значение переменной не попадут. Позиция курсора устанавливается сразу после текста приглашения, если оно есть, или с начала новой строки, если оно отсутствует. Заканчивается ввод нажатием клавиши ВВОД. После этого выполнение программы продолжается с оператора, следующего за оператором LINE INPUT.

4.1.3. Функция INPUT$(n)

Функция INPUT$(n) позволяет ввести с клавиатуры символьную информацию, которая при ее вводе не отображается на экране дисплея.

Формат записи функции INPUT$(n):

INPUT$(n)

ãäå

n — числовое выражение, которое определяет число символов, вводимых с клавиатуры.

Эту функцию удобно использовать при вводе пароля или при организации пауз при выполнении программы. Когда встречается функция INPUT$, то выполнение программы приостанавливается. Вводить можно все символы(функция реагирует на все клавиши клавиатуры, кроме TAB, Caps Lock, Shift, Ctrl, Alt).

Пример 4.1.3.1

PRINT “введите пароль”

'пароль должен быть из трех символов a1: FOR i = 1 TO 3

c$ = INPUT$(1)

PRINT “*”; 'печать * вместо введенного символа parol$ = parol$ + c$

NEXT i

'сравнение введенных символов с установленным паролем IF parol$ <> “zxc” THEN DO

PRINT “пароль неверен.попробуйте еще раз” parol$ = ““

GOTO a1: LOOP

ELSE PRINT “есть доступ” END IF

Глава IV. Ввод информации

27

Пример 4.1.3.2

print “для продолжения нажмите любую клавишу” с$=INPUT$(1)

Прекратить выполнение функции INPUT$(n) можно одновременным нажатием клавиш CTRL и Page Down.

4.1.4. Функция INKEY$

Функция INKEY$ позволяет программным путем остановить выполнение программы до тех пор, пока не будет нажата какая-либо клавиша. Нажатая клавиша на экране не отображается. Функция INKEY$ анализирует некоторую переменную, которой перед обращением к этой функции всегда присваивается значение пробела, а во время обращения этой переменной присваивается код нажатой клавиши.

Пример 4.1.4.1

PRINT “Для продолжения нажмите любую клавишу”

DO

LOOP while INKEY$=““

èëè

print “для продолжения нажмите клавишу “п” do while inkey$<>“п”

loop

28

Языки Бейсик

Глава V. Вывод данных на экран монитора

Помимо приведенных в главе 3.3 операторов PRINT и CLS используются еще несколько операторов вывода данных на экран дисплея.

5.1. Оператор LOCATE

Оператор LOCATE устанавливает курсор в нужное место на экране дисплея и позволяет управлять параметрами самого курсора.

Формат записи оператора LOCATE:

LOCATE [номер_строки][,[номер_колонки]][{,0,1}]

[,[начало_курсора][,конец_курсора]]

ãäå

Номер_строки — задает место, куда помещается курсор. Значение Номер_колонки — числового выражения, задающее номер_строки, находит-

ся в пределах от 1 до 25; значение числового выражения, задающего номер_колонки задается в пределах от 1 до 40 или 80 в зависимости от установленной длины строки экрана дисплея.

Если третий позиционный параметр равен 0, то курсор будет невидим на экране во время выполнения программы; 1-видим. По умолчанию этот параметр равен 1.

Параметры – начало_курсора (верхняя линия) и конец_курсора (нижняя линия) задают количество линий сканирующего луча, которые формируют толщину курсора. Значения этих параметров лежат в пределах от 0 до 31. Линии нумеруются сверху вниз от 0 до 13 для алфавитно-цифрового и от 0 до 7 для графического дисплеев.

В результате выполнения оператора LOCATE курсор будет установлен в указанную строку и колонку с заданной видимостью и толщиной. Толщиной курсора можно управлять только в текстовом режиме. Если какой-то операнд опущен, то будет использоваться значение, которое установлено по умолча- нию или предыдущим оператором LOCATE.

5.2. Работа с графической информацией

Программные средства языка Бейсик позволяют работать не только с текстовой, но и с графической информацией.

Элементарным изобразительным средством графического экрана является черно-белая или цветная точка разной степени свечения. Координаты точки определяются прямоугольной системой координат и разрешающей способностью экрана дисплея. Разрешающая способность экрана задается оператором SCREEN.

Глава V. Вывод данных на экран монитора

29

5.2.1. Оператор SCREEN

Оператор SCREEN устанавливает режим и параметры работы экрана дисплея.

Формат записи оператора SCREEN:

SCREEN {1,2}[,[cl][,[активная_страница][,отобр_стр]]]

ãäå

первый операнд, равный 1, устанавливает графический режим с разрешающей способностью 320 точек по горизонтали и 200 точек по вертикали. Число 2 устанавливает графический режим с разрешающей способностью 640х200. Изображение на экране может быть черно-белым или цветным в зависимости от операнда cl. Если cl=0, то изображение цветное

При разрешающей способности 320х200 горизонтальная строка содержит 320 точек, которые нумеруются слева направо от х=0 до х=319 и вертикально можно расположить 200 точек, которые нумеруются сверху вниз от у=0 до у=199.

Местоположение каждой точки задается ее координатами. Существуют два способа задания координаты точки: абсолютная и относительная.

Абсолютная форма задания координаты точки имеет вид (х,у). Координата точки, которая находится в левом верхнем углу экрана, равна (0,0); координаты точки в правом верхнем углу экрана при SCREEN 1 равны (319,0) и (639,0) при SCREEN 2; координата точки в нижнем левом углу при любом SCREEN равна (0,199).

Относительная форма предполагает задание координат очередной точки относительно последней выведенной точки, осуществляемое с помощью оператора STEP (х1,у1), где х1 и у1 — значения, которые прибавляются к координатам последней выведенной точки.

5.2.2. Оператор PSET

Оператор PSET (Point SET-установить точку) позволяет изобразить точку в указанной позиции экрана дисплея заданного цвета.

Формат записи оператора PSET:

PSET (õ,ó) [,öâåò]

ãäå

х и у — координаты точек в абсолютной или относительной форме; цвет — целое число от 1 до 31, которое определяет цвет и насыщенность точки:

0-черный

1-голубой

2-зеленый

 

 

 

3-бирюзовый

4-красный

5-малиновый

 

 

 

6-коричневый

7-белый

8-серый

 

 

 

9-светло-голубой

10-светло-зеленый

11-светло-бирюзовый

 

 

 

12-светло-красный

13-светло-малиновый

14-желтый

 

 

 

 

 

 

30

Языки Бейсик

 

 

 

15-белый насыщенный

16 и выше-вариации белого

 

 

 

 

 

 

 

5.2.3. Оператор PRESET

Оператор PRESET (Point RESET-изменить яркость точки) позволяет изобразить точку в указанной позиции экрана дисплея заданного цвета.

Формат записи оператора PRESET:

PRESET (õ,ó) [,öâåò]

ãäå

õ è ó — координаты точек в абсолютной или относительной форме; öâåò — целое число от 1 до 31, которое определяет цвет и насыщенность точки:

Операторы PSET и PRESET отличаются тем, что в первом операторе цвет соответствует цвету переднего плана, а во втором операторе параметр цвет соответствует цвету фона, то есть, если в операторе PRESET цвет не указан, то он гасит точку, изображенную на этом месте оператором PSET.

В случае ошибочного задания координат эти операторы не выполняются. Сообщения об ошибке не выдаются.

5.2.4. Оператор LINE

Оператор LINE позволяет начертить отрезок (линию) или прямоугольник.

Формат записи оператора LINE:

LINE [(x1,y1)]-(x2,y2)[,[öâåò][,B[F]][,маска]]]

ãäå (õ1,ó1) è (õ2,ó2) — координаты начала и конца отрезка, заданные в абсолютной или относительной форме. Если параметры В и F опущены, то в результате выполнения оператора LINE начальная и конечная точки соединяются прямой линией. Если операнд (х1,у1) отсутствует, то в каче- стве начальной точки используются координаты точки, которая последней участвовала в обработке. После выполнения оператора LINE система запоминает координаты точки (х2,у2).

параметр öâåò определяет цвет линии, если до этого оператором SCREEN был установлен соответствующий режим экрана.

если указан параметр Â, то система строит прямоугольник. В этом случае параметры (õ1,ó1) è (õ2,ó2) задают координаты противоположных вершин прямоугольника.

Параметр F окрашивает внутреннюю область прямоугольника в указанный цвет. В этом случае параметр цвет на цвет линии не действует.

Пример 5.2.4(1) Построение прямоугольника.

'Построение прямоугольника с помощью четырех линий

CLS

'очистка экрана

SCREEN 12

'установка параметров экрана

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]