Работа с внутренними подпрограммами — КиберПедия 

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

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

Работа с внутренними подпрограммами

2022-10-29 19
Работа с внутренними подпрограммами 0.00 из 5.00 0 оценок
Заказать работу

Внутренняя подпрограмма находится вместе с текстом основной программы, начинается с метки и закачивается командой 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.304 с.