Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. Можно ли переносить на другую строку константы, разрывая их?

  2. Верно ли написано имя переменной “План”?

  3. Что повышает наглядность вложенных операторов?

  4. В чем состоит отличие переменной от константы?

  5. Каково назначение встроенных констант?

  6. Почему рекомендуется явно объявлять все переменные?

Контрольные вопросы

  1. Какие типы данных хранятся в переменной типа Variant?

  2. Какие формы объявлений переменных можно использовать?

  3. Должна ли переменная быть объявлена до ее использования?

  4. Допускается ли массив записей?

  5. В чем разница между обычными и статическими переменными?

  6. Могут ли быть в программе одноименные глобальные и локальные переменные?

  7. Что указывается в качестве уточнителя поля?

2.2. Переопределение массивов

2.2.1. Инициализация массива ‑ Erase

Команда имеет вид: Erase <имя массива>[,<имя массива>]... .

Массив заполняется соответственно нулями или пустыми строками.

2.2.2. Переопределение массивов ‑ Redim

Команда имеет вид:

Redim [Preserve]<имя переменной>[(<индексы>)] [As <тип>]

[,<имя переменной>[(<индексы>)] [As <тип>]]...

Команда аналогична команде Dim. Используется при формировании динамических массивов, когда число элементов меняется в процессе вы­пол­нения программы. В этом случае, например, объявляется массив (X) без указания размерности (Dim X() as integer), а затем определяют раз­мер­ность (n) и массив, повторно объявляется (Redim Preserve X(n)). Параметр Pre­serve задает режим сохранения текущих значений элементов массива X.

2.2.3. Изменение начала отсчета индексов ‑ Option Base

Командой Option Base {0|1}установливается отсчет элементов в массиве с 0 или с 1. Команда ука­зы­ва­ет­ся перед командами объявления массивов. ВVisualBasicэта команда указывается на уровне модуля.

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. Каким образом указывается элемент в массиве?

  2. Можно ли сохранить “старые” значения при переопределении массива командой ReDim?

Контрольные вопросы

  1. Как изменить размер массива?

  2. Что может делать оператор ReDim, но не может оператор Dim.

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

Внутренняя подпрограмма находится вместе с текстом основной программы, начинается с метки и закачивается командой 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?

2.4. Организация вычислений

2.4.1. Операции

Операция присвоения имеет вид:

<переменная, свойство объекта>=<выражение>

Выражение ‑ последовательность переменных, полей, элементов мас­­­сивов, констант, функций, объектов, методов и свойств соединенных зна­ка­ми операций и круг­лы­­ми скобками.

Арифметические операции:

^‑ возведение в степень;+‑ сложение; ‑ ‑ вычитание;*‑ умножение;

/‑ деление;\‑ целочисленное деление с округлением до целого;Mod- получение остатка от деления.

Операнды в арифметических выражениях должны быть любого числового или универсального типа. Для проверки наличия числового зна­чения в переменной можно воспользоваться функцией IsNumeric (п. 3.5). При вычислении результат может округляться.

Строковая операция:

+‑ объединение двух строк;

&- объединение в строку данных любого типа.

Операции сравнения:

>‑ больше;>=‑ больше или равно;<‑ меньше;<=‑ меньше или равно;

=‑ равно;<>‑ неравно. Сравнивать можно однотипные данные: чис­­ла с числами, строки со строками и т.п. При сравнении строк сравни­ва­ют­­ся коды символов как числа в порядке слева направо с учетом регистр­ов.

В VisualBasicимеются еще три операции сравнения.

<объект 1> Is <объект 2>‑ проверяет, ссылаются ли две переменные на один и тот же объект (п.14.6).

<строка> Like “<образец>”‑ сравнение строки с образцом. Образец может содержать символы: обычные для сравнения,?(любой символ),*(строку из любых символов),#(любая цифра),[А-Я](любой символ, например отAдо Я),[!А-Я](любой символ, кроме символов отAдо Я).

Пример.Print “Иванов“ Like “Иван* ‘выведется True

AddressOf<имя процедуры или функции> ‑ возвращает адрес функции или процедуры, который используется некоторыми функциямиWindowsAPIдля непосредственного обращения к этим функциям или процедурам.

Логические операции:

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), на что уходит машинное время. Поэтому рекомендуется использовать один тип для всех операндов. Тогда “паразитных” преобразований не будет.