Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Топ:
Оснащения врачебно-сестринской бригады.
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2022-10-29 | 19 |
5.00
из
|
Заказать работу |
|
|
Внутренняя подпрограмма находится вместе с текстом основной программы, начинается с метки и закачивается командой Return. Повторяющиеся фрагменты программы или фрагменты обработки ошибок оформляют в виде подпрограммы.
Метка ‑ это идентификатор, который указывается перед оператором и отделяется от него двоеточием. Метка используется в командах передачи управления.
2.3.1. Переход к внутренней подпрограмме ‑ Gosub
Командой Gosub <метка> передается управление на внутреннюю подпрограмму с указанной меткой. Ошибочным будет переход командой безусловного перехода в подпрограмму или путем последовательного перехода, когда следующий выполняемый оператор является первым в подпрограмме. В этом случае выполнение оператора выхода из подпрограммы Return закончится аварийно (сообщение компилятора, что Return без GoSub).
Пример
FOR i% = 1 TO 20: GOSUB Square: NEXT ‘цикл из 20 повторений
Square: PRINT i%, i% * i%: RETURN
2.3.2. Возврат из внутренней подпрограммы ‑ Return
Команда Return [<метка>] заканчивает работу подпрограммы и передает управление на указанную метку или следующему оператору после вызова подпрограммы, если метка не указана.
Вопросы для самопроверки и контроля
Вопросы для самопроверки
1. Что произойдет, если следующей выполняемой командой будет первая команда внутренней подпрограммы?
2. В каких случаях используют подпрограммы?
Контрольные вопросы
1. Можно ли передавать управление в подпрограмму командой безусловного перехода?
2. Будет ли ошибкой использование команды выхода из внутренней подпрограммы Return, если переход в подпрограмму был произведен не командой GoSub?
Организация вычислений
Операции
|
Операция присвоения имеет вид:
<переменная, свойство объекта>=<выражение>
Выражение ‑ последовательность переменных, полей, элементов массивов, констант, функций, объектов, методов и свойств соединенных знаками операций и круглыми скобками.
Арифметические операции:
^ ‑ возведение в степень; + ‑ сложение; ‑ ‑ вычитание; * ‑ умножение;
/ ‑ деление; \ ‑ целочисленное деление с округлением до целого; Mod - получение остатка от деления.
Операнды в арифметических выражениях должны быть любого числового или универсального типа. Для проверки наличия числового значения в переменной можно воспользоваться функцией Is Numeric (п. 3.5). При вычислении результат может округляться.
Строковая операция:
+ ‑ объединение двух строк;
& - объединение в строку данных любого типа.
Операции сравнения:
> ‑ больше; >= ‑ больше или равно; < ‑ меньше; <= ‑ меньше или равно;
= ‑ равно; <> ‑ неравно. Сравнивать можно однотипные данные: числа с числами, строки со строками и т.п. При сравнении строк сравниваются коды символов как числа в порядке слева направо с учетом регистров.
В Visual Basic имеются еще три операции сравнения.
<объект 1> Is <объект 2> ‑ проверяет, ссылаются ли две переменные на один и тот же объект (п.14.6).
<строка> Like “<образец>” ‑ сравнение строки с образцом. Образец может содержать символы: обычные для сравнения,? (любой символ), * (строку из любых символов), # (любая цифра), [ А - Я ] (любой символ, например от A до Я), [! А - Я ] (любой символ, кроме символов от A до Я).
Пример. Print “Иванов“ Like “Иван* ‘выведется True
AddressOf <имя процедуры или функции> ‑ возвращает адрес функции или процедуры, который используется некоторыми функциями Windows API для непосредственного обращения к этим функциям или процедурам.
Логические операции:
Or ‑ логическое “Или” (ложь, если оба аргумента ложны, иначе - истина);
And ‑ логическое “И” (истина, если оба аргумента истинны, иначе - ложь);
|
Not ‑ логическое отрицание (истина ‑ отрицание лжи, ложь ‑ отрицание истины). Результатом логической операции или операции сравнения в QB является число: минус один - истина, ноль ‑ ложь;
Eqv ‑ эквивалентность. Результат равен числу, которое получено в после побитового сравнения двоичного представления операндов;
Imp ‑ импликация. Результат ложный, если правый операнд False;
Xor ‑ исключающее ИЛИ. Результат равен True, когда операнды различны.
Для VB результатом логической операции или операции сравнения являются в числовом выражении: минус один - истина, ноль ‑ ложь, а в логическом ‑ логические константы: True-истина, False-ложь.
Пример. a=(6>5)+3 равно ‑1+3=2; a=(6>5) равно True.
Внимание! В сложных логических выражениях Basic до конца вычисляет выражение, если даже оставшаяся часть выражения уже не влияет на его результат. Это замедляет вычисление логических выражений, и может привести к ошибкам.
Пример условия, которое может привести к ошибке (не соответствие типов), если значение поля Text1 содержит не числовую строку
If Not IsNumeric(Text1.Text) Or (A+B)<>Text1.Text Then...
Операции с датами и временем в VB. Если к дате прибавить или отнять число дней, то получится новая дата. Разность дает число дней между датами. Количество секунд, минут, часов, дней, недель, месяцев, кварталов и годов между датами определяется функцией DateDiff (п. 3.4), а новая дата ‑ функцией AddDate (п. 3.4).
Общий порядок вычислений (в порядке убывания приоритетов):
1) в скобках;
2) функции;
3) арифметические операции в последовательности: возведение в степень, одноместный минус, умножение, деление, целочисленное деление, Mod, сложение, вычитание;
4) операции сравнения слева направо;
5) логические операции Not, And, Or.
Для задания последовательности выполнения операций можно использовать круглые скобки или промежуточные переменные (делить сложное выражение на несколько простых).
Числовые операнды в выражении могут быть различного типа. В этом случае автоматически производится перевод операндов к типу с большим диапазоном изменения (например, из типа Integer в тип Long), на что уходит машинное время. Поэтому рекомендуется использовать один тип для всех операндов. Тогда “паразитных” преобразований не будет.
|
2.4.2. Безусловный переход ‑ Goto
Команда Goto <метка> передает управление на оператор, который следует за указанной меткой. Чрезмерное использование этой команды приводит к запутыванию программы ‑ спагетти, поэтому чем меньше в программе безусловных переходов, тем лучше, так как проще программа (Goto M1... M1: a = b + c 'помеченный меткой M1 оператор a=b+c)
2.4.3. Условный переход ‑ If, Iif
Имеются два вида оператора If ‑ однострочный и многострочный.
Однострочный вид оператора:
If <условие> Then [<операторы-1>] [Else <операторы-2>]
Если <условие> истинно, выполняются <операторы-1>, иначе ‑ выполняются <операторы-2>. Допускается вложенность команд If. В этом случае ближайший слева от Else оператор If относится к этому Else.
Пример. Нахождение наибольшего числа из двух чисел A, B.
IF A >= B Then Max=A Else Max=B
Пример. Вычисление знака числа X
If X> 0 Then Sign = 1 Else If X = 0 Then Sign= 0 Else Sign= ‑1
Многострочный вид оператора:
If <условие-1> Then
[<блок-1>]
[ElseIf <условие-2> Then
[<блок-2>]]
...
[Else
[<блок >]]
End If
<блок> ‑ последовательность операторов.
Пример. Вычисление знака числа X.
If x> 0 then ‘значений переменной x больше нуля
sign = 1 ‘присвоение единички
Elseif x = 0 then ‘значений переменной x равно нулю
sign= 0 ‘присвоение нулевого значения
Else ‘значений переменной x меньше нуля
sign= ‑1 ‘присвоение минус единички
End if ‘окончание команды if
При формировании одного из двух значений удобно использовать функцию Iif (<условие>,<выражение-1>,<выражение-2>).
Функция возвращает значение первого выражения, если условие истинно, иначе ‑ значение второго выражения. Ее удобно использовать в выражениях, так как устраняется необходимость в формировании промежуточных выражений (Matpom=Iif(Oklad>1000,300,Iif(Oklad>500,400,600))).
2.4.4. Выбор варианта ‑ Select
Выполняет один из нескольких блоков операторов в зависимости от значения выражения.
Select Case <тест‑выражение> ‘любое выражение
Case <список_выражений-1>
[<блок_операторов-1>]
[Case <список_выражений-2>
|
[<блок_операторов-2>]]...
[Case Else
[<блок_операторов-n>]]
End Select
<список_выражений-i> ‑ одно или несколько выражений для сравнения с тест‑выражением. В выражении ключевое слово Is должно стоять перед любым знаком отношения. Аргументы списка выражений могут принимать любую из следующих форм или их комбинацию и должны разделяться запятыми:
<выражение>[, <выражение>]... (список значений)
<выражение> To <выражение> (диапазон значений от и до)
Is <оператор сравнения > <выражение> (условие)
<выражение>-любое числовое или строковое выражение, совместимое с тест_выражением.
<оператор сравнения> - один из следующих знаков отношения:
<, <=, >, >=, <> или =.
Эта команда аналогична многостроковой команде If.
Пример
Input “Введите уровень риска (1-7) “, Total
Select Case Total
Case IS >= 6 ‘условие
PRINT “Максимальный риск”
Case 3 TO 5 ‘диапазон
PRINT “Высокий риск”
Case 1,2 ‘список значений
PRINT “Риск отсутствует”
End Select
2.4.5. Цикл ‑ For... Next
For <счетчик >=N To K [Step H] 'заголовок цикла
[<блок операторов ‑ тело цикла>]
[Exit For] ‘досрочный выход из цикла
Next 'конец тела цикла
<счетчик> ‑ переменная цикла, которая изменяет свое значение от N до K c шагом H (1). Допускается вложенность циклов. Нельзя передавать управление командой Goto извне цикла на команду внутри любого цикла. Обратно возможно. При работе с массивами, символами строк, математическими рядами обычно используется этот оператор.
Конечное значение переменной цикла (K) не может быть изменено внутри цикла.
После выполнения цикла переменная цикла сохраняет свое значение, которое она имела перед выходом из цикла. При изменении значения переменной цикла внутри цикла следует иметь в виду, что в конце повторения цикла ее значение автоматически увеличится (уменьшится) на значение шага. Неправильное использование переменной цикла внутри цикла может послужить причиной зацикливания или преждевременного выход из него (For i = 0 To 4: For j = 0 TO 99: Ur(i, j) = 0: Next: Next).
2.4.6. Цикл ‑ For Each... Next (Vb)
For Each <элемент> In <группа> ‘заголовок цикла
[<блок операторов ‑ тело цикла>]
[Exit For] ‘досрочный выход из цикла
Next ‘конец тела цикла
<элемент> ‑ переменная, которая содержит значение текущего элемента группы (п. 2.1.8).
<группа> - имя просматриваемого массива или коллекции объектов.
|
Пример. Dim a(1 To 3): a(1)=3: a(2)=2: a(3)=1: For Each i In a: Print i: Next
2.4.7. Цикл ‑ Do... Loop
Do [While <условие-1>] ‘заголовок цикла
[<блок операторов> ]
[Exit Do] ‘досрочный выход из цикла
[<блок операторов> ]
Loop [While <условие-2>] ‘конец тела цикла
Цикл выполняется пока <условие> истинно и нет преждевременного выхода из цикла командой Exit Do. Допускается использование пустого цикла, например, для определений значения переменной цикла.
Неверное задание условия может быть причиной зацикливания или преждевременного выхода из цикла.
Пример. Найти сумму ряда 1+22+32+42+52+62+72+82+92:
s:=0: i = 1: DO WHILE i < 10: s = s + i *i: i = i + 1: LOOP: Print s
2.4.8. Замещение подстроки ‑ Mid$
Команда имеет вид: Mid$(X$,N[,L])=Y$. Строка Y$ заменяет в строке X$ подстроку, которая начинается с символа под номером N и длиной L символов (если L не указана, то до конца строки). Длины подстроки и строки Y$ могут не совпадать. Этой командой можно, в частности, заменять символы строки.
Обмен значениями двух переменных- Swap (QB)
Командой Swap <переменная ‑1>, <переменная ‑2> можно переставить местами значения указанных переменных.
Вопросы для самопроверки и контроля
Вопросы для самопроверки
1. Какие три типа деления допускаются?
2. Назовите приоритеты арифметических операций.
3. Укажите два способа, гарантирующие правильную последовательность выполнения вычислений.
4. Какие операции можно использовать при работе с датами?
5. Какой тип цикла самый универсальный?
6. Какой оператор досрочно завершает выполнение цикла?
7. Назовите две причины, делающие цикл бесконечным.
8. Какое значение имеет переменная цикла после его завершения?
9. Какой используется оператор, если значения переменной цикла находятся в массиве?
10. Можно ли изменить конечное значение переменной цикла внутри цикла For?
11. Какую величину имеет шаг цикла по умолчанию?
12. Могут ли быть бесконечные циклы со счетчиком?
13. Как сделать цикл с обратным счетом?
14. Что должен содержать каждый оператор If?
15. Как выполнить группу команд по результатам проверки одного условия?
16. Как организовать проверку нескольких условий?
Контрольные вопросы
1. Какая ошибка может скрываться в логическом выражении при использовании функций?
2. Могут ли операции сравнения участвовать в арифметических выражениях?
3. Что получится в результате вычитания одной даты из другой?
4. Что получится в результате сложения числа и даты?
5. Для чего рекомендуется однотипность операндов в выражениях?
6. Какие операции позволяют совместно использовать строки и числа?
7. Можно ли сравнивать число со строкой?
8. Равны ли при сравнении строки “Иванов” и “ИВАНОВ”?
9. Можно ли изменять значение переменной цикла внутри цикла?
10. Можно ли передавать управление извне цикла командой Goto на команду внутри цикла?
11. Можно ли выйти из цикла командой Goto?
12. Как заменить в строке символы?
13. Что произойдет, если внутри цикла указать значение переменной цикла вне допустимого интервала его значений?
14. Какой оператор универсальнее ‑ многостроковый If или Select?
15. В каких случаях функция IIF удобнее, чем оператор IF?
Ввод-вывод
2.5.1. Ввод данных с клавиатуры ‑ Input (QB)
Вид команды: Input [;][<сообщение>,]<список переменных>.
; ‑ курсор остается в текущей строке после окончания ввода;
<сообщение> ‑ строковая константа или переменная с текстом сообщения пользователю, которое выводится на дисплей;
<список переменных> ‑ список имен переменных, полей или элементов массивов через запятую, в которые вводятся значения. Если вводится только одно символьное значение, которое не содержит кавычек, то заключающие кавычки можно не указывать, иначе ‑ они указываются, и значения при наборе на клавиатуре разделяются запятыми, если их несколько.
2.5.2. Ввод строки символов ‑ Line Input (QB)
Команда Line Input [;][“<сообщение>”,]<строковая переменная> аналогична команде Input, но вводит только одно символьное значение без кавычек в строковую переменную.
2.5.3. Вывод данных с символами‑разделителями на дисплей ‑ Write (QB)
Командой Write [<список выражений>] можно вывести на экран значения указанных через запятую выражений.
2.5.4. Вывод данных на дисплей ‑ Print
Команда имеет вид: {Print|?} [<список>][;]
<список> ‑ список выводимых значений выражений через запятую или через точку с запятой. Если перед выражением стоит запятая, то его значение выводится в следующей зоне (в ближайшей позиции справа, кратной 14), иначе ‑ вывод в следующей свободной позиции. Точка с запятой в конце списка оставляет курсор в текущей строке, иначе ‑ курсор переходит в начало следующей строки. Имеется одноименный метод (п. 5.3).
В списке можно указать стандартные функции:
Spc(n) - вывод в строке пробелов в количестве n перед выводом выражения, указанного в списке после функции;
Tab(n) - номер позиции (n), с которой начинается печать следующего выражения.
2.5.5. Вывод данных на дисплей в заданном формате ‑ Print Using (QB)
Вид команды: {Print|?}Using “<шаблоны>”;<список выражений>[;]
<список> ‑ список выводимых значений выражений через точку с запятой. Точка с запятой в конце списка оставляет курсор в текущей строке, иначе ‑ курсор переходит в начало следующей строки;
<шаблоны> - строка шаблонов и сообщения.
Каждое выводимое значение имеет шаблон редактирования при выводе. Существуют шаблоны для символьных и числовых значений.
Для символьных значений используют следующие символы редактирования:
! ‑ вывод первого символа;
& ‑ строка выводится без преобразований;
\ \ ‑ ширина поля вывода равна n+2 позициям (n ‑ число пробелов между косыми черточками) для выводимого значения.
Для числовых значений используют следующие основные символы редактирования:
# ‑ цифровая позиция (“#####” ‑ пять цифровых позиций);
. ‑ местоположение десятичной точки (“####.###” ‑ четыре знака до запятой и три знака после запятой);
** - заполнение начальных пробелов звездочками (“*******.###”). Обычно этот шаблон используется для защиты от приписок;
, ‑ вывод запятой, для разделения тысяч, сотен тысяч, миллионов, миллиардов и т.д. (“***,***,***,***,***.###”).
Шаблоны в строке шаблонов должны разделяться не шаблонными символами, например пробелами.
Текст, который не является шаблоном, выводится на экран без изменений (Print Using “Товар \ \ ###.# \ \ ***”; nt; kol; ed; cena).
2.5.6. Вывод данных на принтер ‑ Lprint (QB)
Команда Lprint [Using “<шаблоны>”,] <список выражений>[;] аналогична Print, но вывод выполняется не на экран (форму), а на принтер.
2.5.7. Задание числа колонок и строк на экране ‑ Width (QB)
Width <число колонок (40, 80)>[,<число строк (25, 30, 43, 50, 60)>]
Управление курсором- Locate (QB)
Командой Locate [<строка>][,<колонка>][,<курсор>] курсор устанавливается в указанную позицию на экране и гасится, если третий параметр равен 0, или зажигается, если он равен 1.
Чтение из оперативной памяти-Data, Read, Restore (QB)
Data <список констант для чтения последующими операторами Read>
Read <список переменных, в которые помещаются значения из списка>
Restore [<метка оператора Datа, формирующего список для чтения>]
<список констант> ‑ одна или несколько числовых или строковых констант, разделенных запятой, указывающих данные для чтения. Строковые константы, содержащие запятые, двоеточия, пробелы, должны быть заключены в кавычки. Операторы обычно используют для ввода данных с целью отладки программы. Операторы могут быть введены только на модульном уровне. Они не могут использоваться в процедурах.
Вопросы для самопроверки и контроля
Вопросы для самопроверки
1. Для чего используются шаблоны редактирования звездочки в команде Print Using?
2. Можно ли ввести два символьных значения одной командой Input Line?
Контрольные вопросы
1. Каково назначение оператора Data?
2. Для чего указывается фраза Using в команде Print?
3. Каково назначение функции Tab(n) в команде Print?
Работа с файлами
2.6.1. Открытие файла или устройства ‑ Open
Open <файл> [For <организация-1>]
[Access <режим доступа>] [<статус доступа>]
As [#]<номер файла (канала)> [Len=<длина записи>].
<файл> - имя файла или тип устройства;
<организация-1> ‑ тип организации файла: Output (последовательный выходной), Input (последовательный входной), Append (последовательный выходной расширяемый), Random (с прямым методом доступа), Binary (с двоичным доступом). Доступ к записи этого файла осуществляется указанием порядкового номера записи в файле;
<режим доступа>: Read (чтение), Write (запись), Read Write (все);
<статус доступа>: Lock Read Write (монопольное использование), Shared (многопользовательское использование) Lock Write (запрет записи другими программами).
Статус доступа используется в случаях, когда с файлом работают одновременно много пользователей (например, файл покупки-продажи ценных бумаг на фондовой бирже). Монопольное использование файла обычно допускается администратором файла при восстановлении или реорганизации всего файла. Обычно используется многопользовательский режим с возможностью блокировки командой Lock отдельных записей на период их корректировки и последующего снятия блокировки командой Unlock по завершению корректировки записей;
<номер файла> ‑ программный номер файла канала (1-255). Этот номер используется во всех других командах работы с файлами вместо имени файла на диске. Свободный номер канала можно получить функцией FreeFile (nk=FreeFile: open “post.txt” for input as nk);.
<длина записи> - длина записи в байтах для файла с прямым доступом. Для указания длины записи удобно использовать функцию Len (<имя переменной-записи>). Обработка файла начинается с команды Open.
2.6.2. Вывод данных с символами-разделителями в файл ‑ Write #
Команда имеет вид: Write #<номер файла>,<список выражений>
#<номер файла> ‑ номер создаваемого текстового файла, который указан в команде Open;
<список выражений> - список выражений через запятую, значения которых выводятся в файл в текстовой форме в виде строки. Выведенные значения разделяются запятыми, а символьные значения дополнительно заключаются в кавычки. Такая форма является стандартом для языка Basic и служит для передачи данных в другие системы (СУБД, редакторы, электронные таблицы,...).
Пример
Cls: Open “List” For Output As #1 ‘открытие для создания
Do ‘цикл ввод данных и записи их в файл
Input “имя?”, Name$: input “возраст?”, Age$
Write #1, Name$, Age$: Input “Добавить еще (Д/Н)”; R$
Loop While Ucase$(R$) = “Д” ‘продолжить ввод
Close #1 ‘закрытие созданного файла
Open “List” For Input As #1 'открытие входного файла
Cls: Print “Записи в файле:”: Print ‘вывод заголовка
Do While Not Eof(1) ‘цикл чтения файла
Input #1, Rec1$, Rec2$ 'считывается очередная запись из файла
Print Rec1$, Rec2$ 'выводится очередная запись на экран
Loop ‘конец тела цикла распечатки записей файла
Close #1 ‘закрытие файла List
2.6.3. Вывод данных в файл ‑ PRINT #
Команда Print #<номер файла>[Using<шаблоны>;]<выражения>[;]
аналогична Print, но вывод выполняется не на экран, а в текстовый файл с указанным номером (печать в текстовый файл). Обычно печать файла производится при формировании больших текстовых отчетов. Полученный файл можно просмотреть, проверить и при необходимости откорректировать, а затем распечатать на высокоскоростном текстовом принтере.
В VB фраза Using <шаблоны> не допускается.
2.6.4. Ввод данных из текстового файла ‑ Input #
Команда имеет вид: Input #<номер файла>,<список переменных>
<список переменных> ‑ список имен переменных, полей или элементов массивов, через запятую, в которые вводятся значения из файла.
Символы (начальные пробелы, запятые, возврат каретки, перевод строки, табуляция) игнорируются при вводе.
Внимание! Порядок следования, типы и размеры переменных при чтении файла должны строго совпадать с порядком следования, типами и размерами переменных в команде Write # при формировании файла.
Пример
Open “Post.Txt” For Input As #1 'открытие входного файла
Input #1, Kt, Dp, Kol, Ed, Cena ‘чтение очередных данных из файла
2.6.5. Ввод строки символов из файла ‑ Line Input#
Команда Line Input #<номер файла>,<строковая переменная> аналогична Input#, но вводит только одну строку в строковую переменную.
2.6.6. Закрытие файла ‑ Close
Команда Close [[#]<номер файла-1>[,[#]<номер файла‑2>]...] закрывает файлы с указанными номерами.
2.6.7. Закрытие всех файлов ‑ Reset
Все открытые файлы закрываются командой Reset.
2.6.8. Установка начальной позиции в файле ‑ Seek
Командой Seek [#] <номер файла>,<позиция> устанавливается номер байта (позиция) для последующего чтения или записи последовательного файла или номер записи файла с прямым доступом.
2.6.9. Запись и считывание данных из файла ‑ Put, Get
{Put | Get} [#]<номер файла>[,[<номер записи/байта>][,<переменная>]]
<номер записи/байта> ‑ номер записываемой (Put) или считываемой (Get) записи/байта файла с прямым/последовательным (двоичным) методом доступа.
<переменная> ‑ имя переменной, обычно записи, из которой выводится или в которую вводится запись под указанным номером. По умолчанию используется текущая запись. После выполнения команды следующая запись становится текущей. При двоичном доступе размер считываемой порции определяется размером символьной переменной, в которую помещается считываемая порция.
Внимание! Порядок следования, типы и размеры переменных при чтении файла должны строго совпадать с порядком следования, типами и размерами переменных в команде Put# при формировании файла (Put #1, kt, zstovar).
2.6.10. Захват и освобождение файла ‑ Lock, Unlock
{Lock | Unlock} [#]<номер файла>[,{<запись> | [<начало>] To <конец>}]
<начало>/<конец> ‑ номер первого/последнего блокируемого (Lock)/освобождаемого (Unlock) байта (для последовательного файла) или записи (для файла с прямым методом доступа). В многопользовательском режиме перед корректировкой записи ее блокируют командой Lock, проводят ее корректировку и после этого снимают блокировку командой Unlock.
2.6.11. Удаление файла ‑ Kill
В команде Kill <файл> можно использовать знаки “?”, “*” для задания маски для группы удаляемых файлов по правилам DOS.
2.6.12. Вывод списка имен файлов ‑ Files (QB)
В команде Files <файл> можно использовать знаки маски: “?”, “*”.
2.6.13. Изменение имени файла ‑ Name
Name <старое имя> As <новое имя>
2.6.14. Установка текущуго каталога ‑ Сhdir
Chdir <путь и имя каталога (директории, папки)>
2.6.15. Удаление каталога ‑ Rmdir
Rmdir <путь и имя, удаляемого каталога (директории, папки)>
Вопросы для самопроверки и контроля
Вопросы для самопроверки
1. С какой команды начинается работа с файлом?
2. Какой оператор используют для ввода данных, разделенных запятыми?
3. Каким способом осуществляется доступ к записи файла с прямым методом доступа?
4. Каким образом в многопользовательском режиме проводят корректировку отдельной записи?
Контрольные вопросы
1. Какой командой заканчивается работа с файлом?
2. Какие существуют способы доступа к файлам?
3. Для чего указывается длина записи файла с прямым методом доступа?
Задание состояния экрана (QB)
2.7.1. Режим вывода на экран ‑ Screen (QB)
Screen [<режим>][,[<переключатель цветности>]]
[,[<активная страница>]][,[<отображаемая страница>]]
<режим> - режим вывода: 0 ‑ текстовый, 1 ‑ графический (320x200)...;
<переключатель цветности> для режима 0/1: 0/1 ‑черно-белое, 1/0‑цветное; <активная страница> ‑ номер экранной страницы для записи графики;
<отображаемая страница> ‑ номер выводимой экранной страницы.
Обычно картинка выводится в активную страницу, затем ее номер указывается в качестве номера отображаемой страницы, и она появляется на экране, а в это время готовится новая картинка в другой активной странице, и т.д. Таким образом производится смена кадров на экране.
2.7.2. Задание палитры ‑ Palette (QB)
Palette{[<атрибут палитры>,<цвет>]|Using<имя массива>[(<индекс>)]}
<атрибут палитры> - порядковый номер изменяемого цвета в палитре(1-3);
<цвет>-номер цвета, присваиваемый атрибуту палитры: 0 (черный), 1 (синий), 2 (зеленый), 3 (голубой), 4 (красный), 5 (пурпурный), 6 (коричневый), 7 (белый), 8 (серый), 9 (светло-синий), 10 (светло-зеленый), 11 (светло-голубой), 12 (розовый), 13 (светло-пупурный), 14 (желтый), 15 (ярко-белый).
Номер цвета, увеличенный на 16, вызывает мерцание этого цвета;
<имя массива> - массив значений цвета, который присваивается текущей группе атрибутов цвета;
<индекс> - индекс первого элемента массива, который присваивается атрибуту экрана.
2.7.3. Задание цвета ‑ Color (QB)
Для Screen=0 ‑ текстовый режим:
Color [<передний план>][,[<фон>][,<окаймление>]]
<передний план> ‑ цвет выводимого текста (0-31);
<фон> ‑ цвет фона экрана (0-15);
<окаймление>-цвет окаймления экрана (0-15).
Для Screen=1 ‑ графические режимы:
Color [<фон>][,<палитра>]
<фон> - цвет фона экрана (0-15);
<палитра> - номер палитры (0-1):
0 - равносильна: Palette 1,2 Palette 2,4 Palette 3,6
1 - равносильна: Palette 1,3 Palette 2,5 Palette 3,7
Очистка экрана- Cls (QB)
Команда Cls [{ 0 |1|2}] выполняет очистку всего экрана (0), графической (1) или текстовой (2) информации.
Графические средства (QB)
2.8.1. Отображение точки ‑ Pset (QB)
Вид команды: Pset [Step] (x,y)[,<цвет>]
Step ‑ относительные координаты (смещение относительно последней выведенной точки);
(x,y) - координаты точки (колонка, строка);
<цвет> - номер атрибута палитры (номер цвета в палитре).
2.8.2. Отображение отрезка и прямоугольника ‑ Line (QB)
Line [[Step](x1,y1)]-[Step](x2,y2)[,[<цвет >][,[B[F]][,<маска >]]]
Step ‑ относительные координаты;
(x1,y1),(x2,y2) - координаты отрезка;
<цвет> ‑ номер цветовой палитры изображения отрезка;
B ‑ вывод прямоугольника с указанной диагональю;
F ‑ закрашивание прямоугольника;
<маска> - четырехзначное шестнадцатеричное число-маска: если бит равен 0, то точка не выводится. Когда просмотрен последний бит, процесс повторяется. Маска используется для вычерчивания пунктирных линий (Screen 1:Line (110,70)-(190,120),, B: Line (0, 0)-(320, 200),3,, &HFF00).
2.8.3. Изображение окружности и эллипса ‑ Circle (QB)
Circle [Step](x,y), <радиус > [, [<цвет >]
[, [<начало>] [, [<конец>] [, <сжатие>]]]]
Step ‑ относительные координаты центра (x,y);
<радиус>, <цвет> ‑ размер большой полуоси и номер цвета;
<начало>,<конец> - высвечиваемый угол в радианах;
<сжатие> ‑ параметр сжатия (5/6).
Пример. Screen 1: Pi = 3.14: Circle (160, 00), 60,, ‑Pi, Pi / 2
2.8.4. Вычерчивание произвольного изображения ‑ Draw (QB)
Команда имеет вид: Draw <строка команд>
Команды перемещения курсора:
Un ‑ вверх на N шагов, Dn ‑ вниз, Ln ‑ влево, Rn ‑ вправо,
En ‑ диагональ вверх и вправо, Fn - диагональ вниз и вправо,
Gn ‑ диагональ вниз и влево, Hn ‑ диагональ вверх и влево.
B ‑ перемещение курсора без высвечивания точек;
N ‑ перемещение с последующим возвратом в начальную точку.
M(x,y) ‑ абсолютные координаты или смещение (если указаны знаки плюс или минус перед X или Y)
Команды управления:
An ‑ установить угол поворота сформированного изображения, кратным 90n, где n=0, 1, 2, 3. Указывается перед командами вычерчивания;
Tan - установить угол поворота изображения равным n градусам;
Sn ‑ установить размер шага перемещения n (1-255);
Cn ‑ установить номер цвета в палитре;
P<цвет закраски фигуры>,<цвет границы>:
“X”+Varptr(X$) - выполнение подстроки команд из строки.
Пример. Screen 1: Draw “U20 R20 D20 L20” 'квадрат
2.8.5. Окраска изображения ‑ Paint (QB)
Вид команды: Paint [Step](x,y)[,[<трафарет>][,[<контур>][,<фон>]]]
Step - относительные координаты;
(x,y) ‑ координата любой внутренней точки закрашиваемой области;
<трафарет> - если число, то номер цвета в палитре; если строка, то заполняется этой строкой;
<контур>, <фон> ‑ номер цвета контура, строка заполнения фона.
2.8.6. Запись фрагмента экрана в массив ‑ Get(QB)
Вид команды: Get [Step](x1,y1)-[Step](x2,y2),<имя массива>
Step ‑ относительные координаты окна левого верхнего угла фрагмента (x1,y1),(x2,y2);
<имя массива> ‑ целочисленный массив, в котором запоминается окно.
2.8.7. Восстановление изображения на экране ‑ Put (QB)
Вид команды: Put [Step](x,y),<имя массива>[,<операции>]
Первые параметры аналогичны параметрам предыдущей команды.
<операция> ‑ имя операции: Pset (восстановление всех атрибутов окна), Prset (восстановление негативного изображения), And (наложение на существующий экран с сохранением одноцветных цветов), Or (наложение по логической операции “Или”), Xor (нечетное появление вызывает инвертирование фона, а четное ‑ его восстановление.).
Алгоритм движения изображения: Put c изображением; фиксация; стереть повторным выводом с Xor; Put в новом месте.
2.8.8. Копирование страниц экрана ‑ Pcopy (QB)
Вид команды: Pcopy <источник>,<приемник>
<источник>,<приемник> ‑ номера страниц источника и приемника дисплея. Обычно в качестве приемника указывается номер отображаемой страницы.
Музыкальные операторы
2.9.1. Подача звукового сигна
|
|
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!