Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 1:

Введение в Visual Basic

Лекция 1: 1234567 || Лекция 2 >
Практическая работа 3. Функции Val(string), Str(number)
  1. Создать на форме 2 объекта текстового поля; свойствам Name присвоить значения txtOper1 и txtOper2 соответственно, создать объекты CommandButton и TextBox (Name = txtAdd),
  2. очистить свойства Text текстовых полей,
  3. ввести код процедуры 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)
  4. стартовать проект,
  5. ввести числа в первое и второе текстовые поля, сделать щелчок на командной кнопке, результаты выводятся в 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.

  1. Создать на форме:
    • 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),
  2. ввести код, данный ниже:
    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
  3. 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% исходного значения.

Типы данных; ошибка вычислений (Long, Single, Currency); результаты

Рис. 1.8. Типы данных; ошибка вычислений (Long, Single, Currency); результаты
Практическая работа 6. Метод Move

Cинтаксис метода: object.Move left, top, width, hight,

  1. Создать на форме 3 элемента управления Image (при вставке рисунков (используется свойство Picture) использовать файлы Bfly1 и Bfly2, см. табл. 1.5), 2 объекта CommandButton и объект Timer, рис. 1.9,
  2. установить значения свойств элементов управления, табл. 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 Палитра \to белый цвет
    (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
  3. стартовать проект, сделать щелчок на кнопке Сommand2 - скорость движения увеличивается; сделать повторный щелчок на этой кнопке.
Метод Move

Рис. 1.9. Метод Move
Операторы

Рассматриваются операторы - арифметические, сравнения, логические, конкатенации.

Арифметические операторы представлены в табл. 1.6:

Таблица 1.6. Арифметические операторы
Название Символ Приоритет
Сложение + 9
Вычитание - 9
Умножение * 12
Деление / 11
Целочисленное деление \
Остаток целого деления Mod 10
Отрицание - 13
Возведение в степень ^ 14

Пояснения: приоритет указывает порядок выполнения операторов. Сначала выполняются операторы с более высоким приоритетом. Если два и более оператора имеют одинаковый приоритет, то сначала выполняется стоящий первым в выражении. Используется 3 оператора деления

Оператор отрицания изменяет знак операнда на противоположный

Операторы сравнения, табл. 1.7, позволяют сравнить 2 значения и возвращают значения True или False

Таблица 1.7. Операторы сравнения
Название Символ Использование Приоритет
Меньше чем < 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.

Таблица 1.8. Логические операторы
Название Обозначение Использование Приоритет
НЕ NOT NOT a 6
И AND a AND b 5
ИЛИ OR a Or b 4
Исключающее ИЛИ XOR a XOR b 3
Эквивалентность EQV a EQV b 2
Включение IMP a IMP b 1

Результат действия оператора 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.

Таблица 1.9. Операторы конкатенации
Название Обозначение Использование Приоритет
Конкатенация & a & b 8
Конкатенация + a + b 8

При работе операторы распознаются и вокруг них расставляются пробелы, однако для оператора конкатенации при использовании символа & это не выполняется и пробелы вокруг & нужно расставлять вручную.

Лекция 1: 1234567 || Лекция 2 >
Константин Новков
Константин Новков
Как подключить библиотеку DLL ?
антонина квасова
антонина квасова
Что реализует инструкция Open - Open "a:\t.txt" For Output As #1
Светлана Ведяева
Светлана Ведяева
Россия, Саратов
Оксана Пагина
Оксана Пагина
Россия, Москва