Программирование на visual basic
Скачать 1.19 Mb.
|
1.2.2.2. Описание типов переменных Описать переменную – значит заранее сообщить программе имя пере- менной и ее тип. Для объявления переменной используется оператор Dim (от слова Dimension – размер): Dim имя_переменной_1 [As тип], имя_переменной_2 [As тип],… Если при объявлении переменной не указан тип, то автоматически создается переменная типа Variant. Эта переменная занимает 16 байт и ведет себя как хамелеон. Она способна хранить все типы данных. Однако время обработки данных увеличивается и возможны некоторые нестыковки. Поэтому лучше явно описывать по возможности все типы переменных, используемых в программе. В VB можно описывать типы переменных по первой букве имени пе- ременной. Для этого имеются следующие операторы описания: DefBool, DefByte, DefInt, DefLng, DefCur, DefSng, DefDbl, DefDate, DefStr, DefObj и DefVar. Вторая группа букв указывает на тип описываемых переменных. Эти операторы включаются в начале модуля. Общий вид этих операторов такой: Defтип диапазонБукв[, диапазонБукв] . . . Например: DefStr S означает, что все переменные, начинающиеся на букву s и описанные в операторе Dim без указания типа, будут переменными типа String . Другой пример. DefLng I-K, N, M : DefBool L Описывает все переменные, начинающиеся на буквы I, J, K, N и M, как переменные типа Long, а начинающиеся на L – переменные логического типа. В предыдущем примере на одной строке написаны два оператора. В этом случае их необходимо разделять двоеточием. 11 1.3. Операции и выражения Операции в Visual Basic можно разделить на три категории: арифмети- ческие, логические и текстовые. 1.3.1. Оператор присваивания Для того чтобы можно было уже начинать писать простейшие про- граммы, введем наиболее часто используемый выполняемый оператор присваивания. Общая форма оператора присваивания: A = E где A – идентификатор переменной, элемент массива, подстрока или объект; E – арифметическое, логическое или текстовое выражение. В про- стейшем случае в качестве E может быть константа, имя переменной, эле- мент массива, подстрока или имя объекта. Выполнение оператора состоит из трех этапов: 1. Вычисляется правая часть (если это необходимо). Т.е. получается зна- чение одного из типов, представленного в табл. 1.1. 2. Если тип полученного значения отличен от типа идентификатора A, то производится автоматический перевод в тип идентификатора A. 3. Окончательно полученное значение заносится в ячейки памяти, отве- денные компилятором или интерпретатором под переменную A. Теперь рассмотрим основные операции VB. 1.3.2. Арифметические операции и выражения Арифметические выражения образуются из арифметических операндов и арифметических операций. Арифметическими операндами являются константы, поименованные константы, переменные, элементы массивов, обращения к функциям, а также выражения заключенные в скобки. Суще- ствует семь основных бинарных (операций над двумя операндами) ариф- метических операций. Для их обозначения используются следующие сим- волы: 1)сложение - + ; 2) вычитание - - ; 3) умножение - * ; 4) деление - /; 5) целочисленное деление - \ ; 6) вычисление остатка от деления - Mod; 7) возведение в степень - ^. В термин "арифметическое выражение" в VB вкладывается тот же смысл, что и при обычной математической записи, но при этом можно ис- пользовать лишь символы VB и алгебраические выражения записываются в одну строку. Знак умножения “*” опускать нельзя. Порядок выполнения операций такой же, как и в математических формулах. Вместо математи- ческих переменных при этом вводятся идентификаторы переменных VB. Для первых четырех операций действуют следующие два правила: 2. Тип результата операций совпадает с наиболее точным из двух опе- рандов. 12 3. Порядок точности (от меньшей к большей точности) следующий: Byte, Integer, Long, Single, Currency и Double. Следует избегать переполнения результата при использовании типов Byte и Integer. Пример 1. Sub Пример1 () Dim a as Byte, b as Byte, c as Integer a=100: b=200 : c=a+b MsgBox ( c ) End Sub В этой программе на этапе выполнения будет выдана ошибка, т.к. происходит переполнение. Результат сложения переменных a и b, имеющих тип Byte, будет иметь также тип Byte. Однако число 300 не влезает в один байт (1байт от 0 до 255). Поэтому при выполнении оператора присваивания c=a+b произойдет ошибка переполнения. Пример 2. Sub Пример2 () Dim a as Integer, b as Integer, c as Long a=1000: b=2000 : c=a*b MsgBox ( c ) End Sub В этом примере также на этапе выполнения происходит переполнение, т.к. результат умножения переменных a и b будет иметь тип Integer, однако число 2000000 не влезает в два байта (число типа Integer имеет диапазон от –32768 до 32767). В операциях целочисленного деления (\) и вычисления остатка от деле- ния (Mod) действует следующее правило: если любой из операндов явля- ется вещественным числом, то перед операцией операнды автоматически округляются по обычным математическим правилам. Результат операции целочисленного деления всегда целое число типа Byte, Integer или Long, причем остаток отбрасывается. Например: 100 \ 99 =1; 100 \ 101 =0; 1.45 \ 1.51 = 0; 3.51 \ 1.49 =4. Операция Mod возвращает остаток от деления двух чисел. 19 Mod 6.51 =5; 19 Mod 6.5 =1; 19.4 Mod 6.99=5; 10 Mod 5 =0; 10 Mod 3 =1. Для операции возведения в степень (^) действуют следующие правила. При возведении в степень x y показатель степени у может быть числом либо целого типа, либо вещественного. В первом случае возведение в сте- пень осуществляется при помощи произведения y сомножителей, равных числу x. При показателе вещественного типа вычисление производится по фор- муле x y y e x ln = , что возможно лишь для положительных значений аргу- мента x. 13 Когда в арифметическом выражении подряд идут несколько операций возведения в степень, вычисление производится слева направо. Так, 2^3^4=4096, а 2^(3^4) =2,41785163922926E+24. Приведем несколько примеров преобразования арифметических выражений в записи на VB: cd ab y x − + α ) 1 Вместо каждой математической переменной введем идентификатор. Вместо переменных x, y, a, b, c и d в программе на VB введем идентифика- торы с именами, соответствующими математическим обозначениям. Сим- вола α на клавиатуре нет, поэтому переменной α поставим в соответствие идентификатор alpha. Запись на VB данного арифметического выражения имеет вид: x+y^alpha-a*b/(c*d); z z y x x ) 2 2 2 1 ⋅ ε + + После введения вместо математических величин идентификаторов пе- ременных, запись на VB данного арифметического выражения имеет сле- дующий вид: (x1^2+x2*y)/(z+epsilon)*z . 1.3.3. Логические операции и выражения Логические выражения составляются из логических операндов и логи- ческих операций. Логическими операндами являются логические констан- ты, имена логических констант, логические переменные, элементы логиче- ских массивов, обращения к логическим функциям, логические отноше- ния, а также логические выражения, заключенные в скобки. Существует шесть основных логических операций: Not — логическое отрицание; And — логическое умножение (конъюнкция); Or — логическое сложение (дизъюнкция); Imp — логическая импликация; Xor — логическое исключение; Eqv — логическая эквивалентность. Логическая операция Not ⎯ унарная операция (т.е. операция над одним операндом), а все остальные бинарные. Результат действия логических операций (таблица истинности) представлена ниже (табл. 1.2). 14 Таблица 1.2 Значение операнда Значение логического выражения A B Not A A And B A Or B A Imp B A Xor B A Eqv B True True False True True True False True True False False False True False True False False True True False True True True False False False True False False True False True Рассмотрим более подробно первые три наиболее часто используемые логические операции результаты, которых представлены в табл. 1.2. 1. Первая унарная операция Not принимает значение True, если един- ственный операнд равен False, и значение False, если операнд равен True. Например, логическое выражение Not x>0 будет принимать значение истина, если в момент вычисления данного логического выражение переменная x меньше либо равна нулю. 2. Вторая операция And принимает значение True, если оба операнда A и B равны True, а если хотя бы один из них равен False, то резуль- тат равен False. Например, логическое выражение x>10 And x>0 бу- дет принимать значение истина, если в момент вычисления данного логического выражение переменная x ∈(0, 10) и значение ложь в противном случае. 3. Результат логической операции Or принимает значение True, если хотя бы один из двух операндов равен значению True. Например, логическое выражение x^2+y^2<1 Or x^2+y^2>4 будет принимать значение истина, если в момент вычисления данного логического выражение точка P, с координатами (x, y), находится внутри круга радиуса 1, либо вне круга радиуса 2 (центр кругов находится в нача- ле координат). Логическим отношением называется выражение, состоящее из двух простых арифметических выражений, связанных одним из шести символов <, ≤, >, ≥, =, ≠, определяющих операции отношения. Таким образом, ло- гическое отношение имеет вид A ℜB , где A и B - арифметические операн- ды, а ℜ - любая из шести операций отношения. В VB для обозначения опе- раций отношения используются следующие символы: < ⎯ меньше; <= ⎯ не больше; > ⎯ больше; >= ⎯ не меньше = ⎯ равно; <> ⎯ не равно. Приоритет логических операций с учетом скобок: 1) обращение к функциям (высший приоритет); 2) арифметические и текстовые операции; 3) операции отношения; 4) Not; 5) And ; 6) Or; 7) Xor 8) Eqv; 9) Imp (низший приоритет). 15 Примеры. В программах на VB довольно часто используются логические выра- жения, которые принимают значения истина, если математические пере- менные x, y, z и т.д. заключены в какой-то диапазон: 1. Написать программу, которая выводит значение Истина, если введенное число x является решение неравенства 0 2 ≤ − x x и Ложь в противном случае. Решением данного неравенства является множество действи- тельных чисел x ∈[0,3]. На VB это логическое выражение записывается: x >= 0 And x <=3. Для проверки данного логического выражения можно предложить сле- дующую программу. Sub Пример1() 'Описание используемых в программе переменных Dim L As Boolean, x As Double 'Ввод значения координаты x x = 2.5 'Логическое выражение, зависящее от x L = x >= 0 And x <= 3 'Вывод значения логического выражения MsgBox L End Sub Результатом выполнением данной программы будет значение Истина. Если изменить значение x=3.5, то программа выведет значение Ложь. На VB это логическое выражение записывается: x > 0 And y <= x-y And z > x^2+y^2 And x+y+z > 1 3. x ∈(-∞,0] ∪ (1,2] ∪ (10, ∞). На VB это логическое выражение записывается: (x <= 0) Or (x > 1 And x <= 2) Or (x > 10) Скобки в данном логическом выражении необязательны, т.к. приоритет And выше, чем Or. Здесь скобки используются только для наглядности. 1.3.4. Битовые операции В случае если в логических выражениях оба операнда являются числовыми значениями, логические операции выполняют логические действия над битами. В табл. 1.3 представлены значения всех побитовых операций. ⎪ ⎩ ⎪ ⎨ ⎧ > + + + > − ≤ > 1 z y x y x z y x y 0 x 2 2 2 16 Таблица 1.3 Значение операнда Значение битовой операции A B Not A A And B A Or B A Imp B A Xor B A Eqv B 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 Примеры побитовых операций удобнее рассматривать для чисел типа Byte в шестнадцатеричной системе счисления. В шестнадцатеричной сис- теме каждой цифре соответствует четырехзначное двоичное число. Число типа Byte находится в диапазоне от 0 до 255. В табл. 1.4 представлены двоичные коды шестнадцатеричных цифр. Таблица 1.4 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 8 9 A B C D E F 1000 1001 1010 1011 1100 1101 1110 1111 Sub ПримерНаБитовыеОперации() Dim a As Byte, b As Byte a = &HC7: b = &H9E Debug.Print "a= "; a; Tab(20); "b= "; b Debug.Print "Not a= "; Tab(12); Hex(Not a); Tab(20); Not a Debug.Print "a And b= "; Tab(12); Hex(a And b); Tab(20); a And b Debug.Print "a Or b= "; Tab(12); Hex(a Or b); Tab(20); a Or b Debug.Print "a Imp b= "; Tab(12); Hex(a Imp b); Tab(20); a Imp b Debug.Print "a Xor b= "; Tab(12); Hex(a Xor b); Tab(20); a Xor b Debug.Print "a Eqv b= "; Tab(12); Hex(a Eqv b); Tab(20); a Eqv b End Sub В приведенной программе результаты работы программы выводятся в окно отладки Debug. Для просмотра результатов необходимо открыть окно отладки командой Ctrl+G. В программе используются две незнакомые функции Tab и Hex. Первая функция подводит начало вывода к указанной позиции в строке вывода. Вторая функция переводит число в шестнадца- теричное представление. В программе выводятся значения чисел a и b, а так же значения различных побитовых операций в шестнадцатеричной и десятичной системах счисления. Ниже представлены результаты работы программы, при этом добавлены значения результатов в двоичном пред- ставлении. Результат Значения операндов Операция Hex Dec Bin a b Not a = 38 56 00111000 11000111 17 a And b 86 134 10000110 11000111 10011110 a Or b DF 223 11011111 11000111 10011110 a Imp b BE 190 10111110 11000111 10011110 a Xor b 59 89 01011001 11000111 10011110 a Eqv b A6 166 10100110 11000111 10011110 1.3.5. Текстовые выражения Существует всего лишь две текстовые операции: конкатенацией или сцеплением текстовых строк и операция сравнения строк. 1.3.5.1. Конкатенация строк Эта операция записывается в виде: A+B или A & B, где A и B - текстовые операнды, которые могут быть константой, име- нем константы, переменной, элементом массива, подстрокой, обращением к функции или выражением, заключенным в скобки; + , &- операция конкатенации или сцепления. Значением текстового выражения является строка символов, получен- ная последовательным дописыванием к значению операнда A значения операнда B. Длина результата равна сумме длин значений операндов. Пример. Sub Пример1НаТекстовоеВыражение() Dim Фамилия As String, Имя As String, Отчество As String Dim ПолноеИмя As String Фамилия = "Петров" Имя = "Иван" Отчество = "Леонидович" ПолноеИмя = Фамилия + " " + Имя + " " + Отчество MsgBox (ПолноеИмя) End Sub В приведенной программе, имеющей имя При- мер1НаТекстовоеВыражение, при помощи операторов присваивания трем переменным — Фамилия, Имя и Отчество присваиваются соответствую- щие значения. Затем при помощи операции конкатенации они записыва- ются в одну переменную с идентификатором ПолноеИмя. Между словами ставиться пробел. Таким образом, программа напечатает текст Петров Иван Леонидович. При конкатенации текстовой и числовой переменных при помощи опе- рации +, необходимо числовую переменную при помощи функции Str пе- ревести в текстовую переменную, а затем сделать операцию конкатенации строк. Sub Пример2НаТекстовыеВыражения() Dim s As String s = "Величина числа e равна " + Str(Exp(1)) 18 MsgBox s End Sub При использовании операции конкатенации &, компилятор самостоя- тельно произведет преобразования числовых переменных к строковым пе- ременным. Sub Пример3НаТекстовыеВыражения() Dim s As String: s = "Значение sin(1.5708) = " & Sin(1.57) Debug.Print s: End Sub 1.3.5.2. Операция сравнения строк Общий вид этой операции: A Like B где A и B текстовые выражения. Если строка совпадает с образцом, то результатом этой операции будет логическая константа True, а в против- ном случае – False. При сравнении строк используется типичный порядок сортировки символов. Коды символов как в латинском, так и в русском алфавитах расположены по возрастанию. При этом сразу идут все заглав- ные буквы, а потом прописные. Т.е. AОперанды можно задавать в виде шаблонов с использованием следую- щих обозначений: знак вопроса в шаблоне означает один произвольный символ; символ * – ноль или более произвольных символов; # – любая цифра (0 - 9); [список_символов] – любой отдельный символ из списка, за- ключенного в квадратные скобки; [!список_символов] – любой отдельный символ, не входящий в список символов, заключенных в квадратные скоб- ки. В квадратных скобках можно указывать интервалы подряд стоящих символов через дефис [A-Z] – все заглавные латинские буквы). Примеры . “a Привет” Like “a*т” – возвращает True. “X” Like “[A-Z]” – возвращает True. “X” Like “[!A-Z]” – возвращает False. “H3K” Like “H#K” – возвращает True. “AM5r” Like “A[L-P]#[!a-o]” – возвращает True. Учитывая, что коды всех букв латинского и русского алфавита распо- ложены в алфавитном порядке, можно сравнивать две текстовые перемен- ные, точно так же, как и числовые переменные. Например, программа, приведенная ниже, выводит результат равный Истина. Sub СравнениеТекстовыхПеременных() MsgBox ("Иванов" < "Петров") End Sub 19 1.4. Встроенные функции В VB существует стандартный набор (библиотека) встроенных функ- ций. Встроенные функции составляют часть языка VB. Компилятор распо- знает их имена и автоматически вставляет их объектный код в выполняе- мую программу. Все встроенные функции разобьем на 6 типов: функции преобразования типов данных, функции округления данных, математиче- ские функции, символьные функции, битовые функции и встроенные под- программы. В данной работе приводятся только основные (по мнению ав- тора) встроенные функции. Полный набор функций можно получить, ис- пользуя очень удобную и полную справочную информацию. Находясь в модуле, вызвать помощь по использованию любой функции можно, просто написав имя интересующей функции и нажав на функциональную клави- шу F1. 1> |