Урок 3. Условные операторы, метки и булева переменная
Начнём с теории. Если кто хочет, может пролистать её и переходить к
практике сразу, возвращаясь к теории когда та будет требоваться.
Крайне часто в программах применяются условные операторы, для выбора
одного из вариантов действий. Метки используются для перехода к ним в
определённом случае. Булевой переменной называется переменная типа Boolean. Такая переменная может принимать всего два возможных значения: True - истина; False - лож.
Описывается следующим образом: Dim B As Boolean
Где B это имя переменной(само
собой, имя можно задать любое из допустимых для переменных имён, тоесть
буквенное, или буквенно-числовое, начинающееся с буквы). Основные условия, это IF и CASE. Они имеют следующую структуру:
Сначала рассмотрим условия IF:
Однострочные условия: If [Условие] Then [Действие]
Если [Условие] истинно, то выполняется одно [Действие].
Многострочные условия: If [Условие] Then
[Действие]
...
End If
Если [Условие] истинно, то выполняется ряд [Действий].
Условия с двумя возможными вариантами: If [Условие] Then
[Действие1]
Else
[Действие2]
End If
Если [Условие] истинно, то выполняется [Действие1](или ряд действий), иначе выполняется [Действие2](или ряд действий).
Условия с любым колличеством вариантов: If [Условие1] Then
[Действие1]
ElseIf [Условие2] Then
[Действие2]
Else
[Действие3]
End If
Если [Условие1] истинно, то выполняется [Действие1](или ряд действий), иначе если [Условие2] истинно, то выполняется [Действие2](или ряд действий), в иначе выполняется [Действие2](или ряд действий).
При этом действие
Else не является обязательным.
Под истинностью условия понимается например равенство. Если у нас имеется следующее условие If A=B Then
то оно считается истинным когда A=B, в иных ситуациях оно считается ложным.
Или вот другой пример: If B Then
Если B булева это булева переменная, то условие будет считаться истинным когда переменная принимает значение True. Теперь рассмотрим условия CASE, они бывают всего одного типа: Select Case [Значение]
Case [Значение1]
[Действие1]
Case [Значение2]
[Действие2]
....
Case [ЗначениеN]
[ДействиеN]
Case Else
[ДействиеE]
End Select
Под значением понимается переменная либо константа любого из типов
существующих в Visual Basic .NET 2005 либо созданных программистом.
Если к примеру совпадут [Значение] и [Значение2] то в таком случае будет выполнено [Действие2], затем программа перейдёт к строке End Select.
Такое условие, подобно последнему рассмотренному условию IF, может
иметь практически бесконечное колличество вариантов, но при этом
значительно короче в написании, хотя и менее универсально.
Использование
Case Else не является обязательным. Рассмотрим работу с метками: Метка описывается следующим образом: M: Где M это имя метки(меткам имена задаются по тому же принципу что и переменным). Чтобы перейти к строке содержащей метку, следует использовать оператор GoTo, выглядит это следующим образом: GoTo M Например напишем программу, которая будет в одном случае выдавать нам время, в другом случае выключаться.
Итак, создаём проект Console Application, текст данной программы должен быть следующий: Module Module1
Sub Main()
Console.WriteLine("Нажмите Enter чтобы узнать дату и время, или другую клавишу чтобы выйти")
G:
If Console.ReadKey.Key = ConsoleKey.Enter Then
Console.WriteLine(Now)
GoTo G
Else
End
End If
End Sub
End Module
Запустим программу. После нажатия в программе клавиши Enter нам
выдаются системные время и дата, если же нажать какую либо другую
клавишу, программа закрывается.
Для примера теперь напишем программу с использованием оператора CASE,
так же как и в прошлом примере, работа с клавишами, но только теперь
сделаем выбор пошире. Например между тем, какую информацию нам показать.
В общем, следующий текст программы:
Module Module1
Sub Main()
Dim K As String
Console.WriteLine("1. Вывести дату и время")
Console.WriteLine("2. Вывести час")
Console.WriteLine("3. Вывести минуту")
Console.WriteLine("4. Вывести секунду")
Console.WriteLine("5. Вывести милисекунду")
Console.WriteLine("6. Выйти из программы")
H: K = Console.ReadKey.KeyChar
Console.CursorLeft = 0
Select Case K
Case "1"
Console.WriteLine(Now)
Case "2"
Console.WriteLine(Now.Hour)
Case "3"
Console.WriteLine(Now.Minute)
Case "4"
Console.WriteLine(Now.Second)
Case "5"
Console.WriteLine(Now.Millisecond)
Case "6"
End
End Select
GoTo H
End Sub
End Module
Запустите программу и проверьте, в зависимости от того какую цифру мы нажмём, мы получим соответствующее действие:
Такс, ну и в дополнение, я тут как видите использовал кое что, значение
чего прежне не объяснял(ну, это информация не базовая, а частная,
подобная будет встречаться и позже, но оглашаться особо не будет,
тоесть подобные вещи если сейчас не понимаете, то вскоре должны бы
начать понимать). А именно: Console.CursorLeft = 0
Как уже можно понять из названия, это позиция курсора относительно
левого края экрана, например если мы выдали строку, и нам надо её
заменить. В данном случае мы переводим курсор в начало строки, чтобы
стереть введённую нами цифру.
А так же вместо уже упомянутого выше Console.ReadKey.Key мы использовали другое значение, Console.ReadKey.KeyChar. Разница следующая: при считывании значения Key, мы считываем числовое значение, обозначающее код клавишы, а при считывании KeyChar
мы считываем текстовое значение нажатой клавиши. В разных ситуациях
разный код более удобен, в данной ситуации я решил использовать данный
код, чтобы ввод можно было осуществлять как с нумпада, так и с основной
клавиатуры, в то время как через Key мы смогли бы считать либо один из вариантов, либо объединив их оператором or, который будет рассмотрен позже. В любом случае, код бы получился более грамозкий и менее удобный.