Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Введение в Visual Basic
Практическая работа 3. Функции Val(string), Str(number)
- Создать на форме 2 объекта текстового поля; свойствам Name присвоить значения txtOper1 и txtOper2 соответственно, создать объекты CommandButton и TextBox (Name = txtAdd),
- очистить свойства Text текстовых полей,
- ввести код процедуры Command1_Сlick():
Dim Oper1 As Single, Oper2 As Single, Result As Single Oper1=Val(txtOper1.Text): Oper2=Val(txtOper2.Text) Result=Oper1+Oper2 txtAdd.Text=Str(Result)
- стартовать проект,
- ввести числа в первое и второе текстовые поля, сделать щелчок на командной кнопке, результаты выводятся в 3-е текстовое поле.
Практическая работа 4. Типы данных; тип Boolean
- Создать на форме объекты CommandButton, Label, TextBox,
- ввести код процедуры Command1_Click():
Dim x As Boolean x=Val(txt1.Text) lbl1.Caption=x
- стартовать проект, ввести последовательно числа 1, -2, 0, нажимая после ввода командную кнопку, наблюдать результат. Значению 0 соответствует False, все другие интерпретируются как True.
Практическая работа 5. Типы данных (Long, Single, Currency); ошибка вычислений
Проводятся расчеты ошибок вычислений ( DelLong, DelSing ) при расчетах с использованием данных типа Long, Single, вычисляется итоговая ошибка. Далее проводятся аналогичные расчeты для данных типов Long и Currency.
- Создать на форме:
- 2 вертикальных ряда по 5 объектов-меток с надписями, см. свойство Caption, рис. 1.8. слева и в центре (на рисунке цвет - черный),
- текстовое поле txt1 для ввода значений переменной J в средине формы (см.: 999999),
- две командные кнопки слева и справа от текстового поля (Caption = Long-Single, Caption = Long-Currency),
- 2 метки вверху в центре:
- с надписью Zahl::,
- со списком значений переменной J, которые следует вводить после старта проекта,
- два массива из 4-х элементов текстовых полей: txt10(0), txt11(0) - слева вверху, txt10(1), txt11(1) - слева ниже. Остальные 4: txt10(2), txt11(2) - справа вверху, txt10(3), txt11(3) - справа ниже,
- два вертикальных ряда по 5 меток (напротив предыдущего ряда меток) для вывода результатов вычислений (lbl2(0), lbl22(0), lbl4(0) lbl44(0), lbl6(0), lbl2(1), lbl22(1), lbl4(1) lbl44(1), lbl6(1)),
- командную кнопку для процедуры завершения выполнения программы (Command3),
- ввести код, данный ниже:
Private Sub Command1_Click() Rem описание переменных для блока Long-Single Dim Xlong As Long, Xl As Long, Dx As Single, Xsingle As Single Dim Xs As Single Rem переменная, определяющая число циклов Dim J As Long Dim I As Long, DelLong As Long Dim DelSing As Single J = CLng(txt1.Text) Rem организовать блок для работы с данными типа Long Xlong = 2000000000: txt10(0).Text = Xlong Xlong = CLng(Xlong / J) txt11(0).Text = Xlong & " " & CLng(Xlong * J) Rem Xl образуется суммированием Xlong For I = 1 To J Xl = CLng(Xl + Xlong) Next I Rem в поле элемента управления Label выводятся Rem результаты - значение Xl и ошибки вычислений lbl2(0).Caption = Xl: DelLong = CLng(2000000000 - Xl) lbl22(0).Caption = DelLong Rem организовать аналогичный блок для работой с данными Rem типа Single Xsingle = 2000000000: txt10(1).Text = Xsingle Xsingle = CSng(Xsingle / J) txt11(1).Text = Xsingle & " " & CSng(Xsingle * J) For I = 1 To J Xs = CSng(Xs + Xsingle) Next I lbl4(0).Caption = Xs: DelSing = CSng(2000000000 - Xs) lbl44(0).Caption = DelSing Rem проведение вычислений и вывод в левую нижню метку Rem итоговой ошибки вычислений Dx = CSng(Xl - Xs): lbl6(0).Caption = Dx End Sub Rem код поцедуры Command2_Click() аналогичен коду проце- Rem дуры Command1_Click(); здесь проводится вычисление Rem ошибки вычислений при работе с данными типа Long Rem и Currency Private Sub Command2_Click() Dim Xlong As Long, Xl2 As Long, Dx2 As Currency Dim Xcurrency As Currency, Xc As Currency, J As Long Dim I As Long, DelLong2 As Long, DelCurrency As Currency Print "Warten Sie mal !" ' нужно подождать ! J = CLng(txt1.Text): Xlong2 = 2000000000 txt10(2).Text = Xlong2: Xlong2 = CLng(Xlong2 / J) txt11(2).Text = Xlong2 & " " & CLng(Xlong2 * J) For I = 1 To J Xl2 = CLng(Xl2 + Xlong2) Next I lbl2(1).Caption = Xl2 DelLong2 = CLng(2000000000 - Xl2) lbl22(1).Caption = DelLong2 Xcurrency = 2000000000: txt10(3).Text = Xcurrency Xcurrency = CCur(Xcurrency / J) txt11(3).Text = Xcurrency & " " & CCur(Xcurrency * J) For I = 1 To J Xc = CCur(Xc + Xcurrency) Next I lbl4(1).Caption = Xc DelCurrency = CCur(2000000000 - Xc) lbl44(1).Caption = DelCurrency Dx2 = CCur(Xl2 - Xc): lbl6(1).Caption = Dx2 Rem удалить предыдущую запись и напечатать "Готово !!!" Me.Cls: Print "Fertig !!!" End Sub Private Sub Сommand3_Click() End End Sub
- cтартовать проект, вводить последовательно значения J, данные вверху формы, рис. 1.8.: 3, 11:9999999, делать щелчки на кнопках Long-Single, Long - Currency после каждого ввода J, наблюдать разницу результатов, рис. 1.8.
В примере последовательно используются данные разного типа и над ними выполняются одинаковые операции сложения и деления. Xlong и Xl - это целые типа Long, первое из них равно 2 млрд., а 2-ое приблизительно такое же, но полученное в результате вычислений. Исходное число 2 млрд. делится на J и затем с использованием цикла For : Next проводится сложение J раз. Из-за ошибок вычислений полученный результат отличается от исходного числа. Аналогичные вычисления проводятся для другой пары типов данных - Long - Currency. Значения J, используемые в примере, даны в таблице, см. рис. 1.8. Для значения J порядка 10 млн. величина ошибки может составить около 10% исходного значения.
Практическая работа 6. Метод Move
Cинтаксис метода: object.Move left, top, width, hight,
- Создать на форме 3 элемента управления Image (при вставке рисунков (используется свойство Picture) использовать файлы Bfly1 и Bfly2, см. табл. 1.5), 2 объекта CommandButton и объект Timer, рис. 1.9,
- установить значения свойств элементов управления, табл. 1.5; ввести код, данный ниже.
Таблица 1.5. Свойства используемых объектов Объект, свойство Значение свойства Image1 (на рисунке в центре) img1 Stretch True Visible False Picture (Bitmap) - бабочка со сложенными крыльями Image2 (на рисунке вверху) Name Img2 Stretch True Visible False Picture (Bitmap) - бабочка с раскрытыми крыльями Image3 (на рисунке внизу) Name Img3 Stretch True Visible True Picture (Bitmap) - бабочка с раскрытыми крыльями Command1 Caption End Command2 Caption Geschwindigkeit Timer1 Interval 200 Form1 BackColor Палитра белый цвет (General) (Declarations) Dim pr As Boolean, i As Boolean Private Sub Form_Load() ' переменным типа Boolean присвоить значение True i= True pr = True End Sub Private Sub Timer1_Timer() ' использовать метод Move img3.Move img3.Left + 50, img3.Top - 10 ' если i истино, то использовать объект - бабочка с ' раскрытыми крыльями If i Then img3.Picture = img2.Picture ' иначе использовать объект - бабочка со сложенными ' крыльями Else img3.Picture = img1.Picture img3.Move img3.Left + 50, img3.Top - 10 End If 'логический оператор Not изменяет знак своего операнда ' на противоположный i = Not i End Sub ' изменить скорость движения объекта Private Sub Command2_Click() If pr = True Then Timer1.Interval = 100 pr = False Command2.Caption = "Schnell" Else: Timer1.Interval = 0 pr = True Command2.Caption = "Langsam" End If End Sub Private Sub Сommand1_Click() End End Sub
- стартовать проект, сделать щелчок на кнопке Сommand2 - скорость движения увеличивается; сделать повторный щелчок на этой кнопке.
Операторы
Рассматриваются операторы - арифметические, сравнения, логические, конкатенации.
Арифметические операторы представлены в табл. 1.6:
Пояснения: приоритет указывает порядок выполнения операторов. Сначала выполняются операторы с более высоким приоритетом. Если два и более оператора имеют одинаковый приоритет, то сначала выполняется стоящий первым в выражении. Используется 3 оператора деления
Оператор отрицания изменяет знак операнда на противоположный
Операторы сравнения, табл. 1.7, позволяют сравнить 2 значения и возвращают значения True или False
Название | Символ | Использование | Приоритет |
Меньше чем | < | a < b | 7 |
Меньше или равно | <= | a <= b | 7 |
Больше чем | > | a > b | 7 |
Больше или равно | >= | a > b | 7 |
Равно | = | a = b | 7 |
Не равно | <> | a <> b | 7 |
Похож (соответствует ли) | Like | a Like b | 7 |
Первые 6 операторов используются для сравнения чисел и данных типа String, Like используется для сравнения данных типа String. При использовании операторов сравнения строк нужно учитывать отличие кодировок строчных и прописных букв; лишь при использовании опции "Option Compare Text" это отличие будет игнорироваться.
Оператор Like проверяет, соответствует ли некоторая строка шаблону. Операнд слева от Like - это строка, операнд справа - это шаблон. Приведeм некоторые правила построения шаблонов
- Символ "?" указывает, что в этой позиции может быть любой одиночный символ, пример: "bc" Like "???". Результат -True.
- Символ * указывает, что в этой позиции может быть любое количество символов, пример: "klm" Like "k*". Результат - True.
- Символ # указывает, что в этой позиции может быть только любая цифра, пример: "kl12" Like "??##". Результат - True.
- Конкретный символ указывает, что в этой позиции может быть только этот символ, пример: "abc" Like "ab?". Результат - True.
- Список символов в квадратных скобках означает, что можно использовать один из них, пример: "ab3" Like "ab[123]". Результат - True.
- Если список в скобках начинается с символа "!", то для сравнения используется символ, не входящий в список, пример: "a2" Like "[abc][!123]". Результат - False.
- Наличие символа диапазона - внутри скобок означает, что для сравнения берется любой символ из этого диапазона, пример: "bc" Like "[a-d]". Результат - True.
- Дефис (-) в начале или в конце выражения в скобках обозначает просто символ "-".
- Шаблон "[]" трактуется как пустой и игнорируется.
Имеется ещe несколько правил формирования шаблонов (речь идeт о специальных символах), однако их рассмотрение выходит за рамки данного учебного пособия.
Логические операторы, табл. 1.8, дают возможность создать составное условие; пример: с использованием логического оператора AND можно уменьшить число сравнений: Student = Age > 15 AND < 60 - результат имеет значение True только в том случае, если оба составляющих условия есть True.
Результат действия оператора Not противоположен значению его операнда; пример: если переменная типа Boolean "kk" имеет значение True, то Not kk возвращает False.
Оператор AND возвращает True только, если оба операнда есть True.
Оператор OR возвращает True, если хотя бы один из операндов еcть True
Оператор EQV проверяет будут ли 2 операнда различны, возвращается значение True, если они оба True или оба False. Оператор XOR (исключающее ИЛИ); возвращает False, если оба операнда True
Оператор IMP (Включение) позволяет проверить, включает ли первое условие второе. Первое всегда включает второе, за исключением случая, когда первое есть True, а второе - False.
Конкатенация (табл. 1.9) - соединение строк, пример: ma & scha даст результат mascha; здесь символ амперсанд - символ оператора конкатенации. Используются 2 символа: & и +, табл. 1.9.
Название | Обозначение | Использование | Приоритет |
Конкатенация | & | a & b | 8 |
Конкатенация | + | a + b | 8 |
При работе операторы распознаются и вокруг них расставляются пробелы, однако для оператора конкатенации при использовании символа & это не выполняется и пробелы вокруг & нужно расставлять вручную.