| Уроки, Туториалы, Мануалы со всего света! https://lessons.forumenko.com/ |
|
| Учебник 1. Урок № 13. Управляющие структуры. https://lessons.forumenko.com/topic97.html |
Страница 1 из 1 |
| Автор: | Turbo-Dizel [ 05-02, 18:04 ] |
| Заголовок сообщения: | Учебник 1. Урок № 13. Управляющие структуры. |
Этот раздел посвящён операторам, которые предназначены для управления процессом выполнения всех остальных исполняемых операторов Visual Basic. Такие классические структуры, как условные операторы и операторы цикла, имеются во всех процедурных языках программирования, имеются они и в Visual Basic. Примечание: Здесь бы хотелось заметить, что управляющие структуры мы тоже будем называть операторами. Операторы, рассмотренные на предыдущем уроке используются в выражениях. А операторы рассматриваемые в этом уроке предназначаются для управления вычислением этих выражений (в документациях такие операторы называются - Statement). Важно понимать различие между этими операторами. Условный оператор If...End If Этот оператор вы уже встречали в восьмом уроке. Он необходим для принятия решений, нужно ли выполнять то или иное действие или нет. Другими словами если Логическое_выражение истинно, то Оператор выполнится. Если ложно, то выполнение не произойдёт. If Логическое_выражение Then Оператор или сложнее If Логическое_выражение Then Группа_операторов End If В первом случает оператор может быть только один. Во втором сколько угодно (в том числе и один). Пример: If (a = b) And (c <> d) Then b = d a = 20 End If Скобки здесь не обязательны, но они повышают читабельность кода. Условный оператор If...Else...ElseIf...End If Такая конструкция используется для более сложных ветвлений: If Логическое_выражение 1 Then Группа_операторов ElseIf Логическое_выражение 2 Then Группа_операторов ... Else Группа_операторов End If Эта схема может быть и в укороченном виде If...Then...Else...End If. При этом операторы после Else выполняются только в том случае, если ни одно из условий не выполнено. Пример: If (a = b) Or (c <> d) Then b = d a = 20 Else c = d End If Выражение c=d будет выполнено только в том случае, если a<>b или c=d. Условный оператор Select Case...End Select Конструкция Select Case "принимает решение" на основе анализа значения одного выражения. При этот это выражение указывается в строке Select Case: Select Case Анализируемое_выражение Case Значение№1 Группа операторов Case Значение№2 Группа операторов ... Case Значение№N Группа операторов Case Else Группа операторов End Select Конечно, анализируемое выражение должно возвращать значение типа, совместимого с типом значений в строка Case. Пример: В зависимости от значения переменной iTest, строковой переменной strResult присваиваются различные значения Select Case iTest Case 1 strResult = "iTest = 1" Case 2, 3, 4 strResult = "iTest = 2, 3 или 4" Case 5 To 9 strResult = "iTest находится в диапазоне от 5 до 9" Case iTest <0> 9 strResult = "iTest больше 9" Case Else strResult = "iTest равно 0" End Select Оператор цикла For...Next Этот цикл используют в том случае, когда заранее известно стартовое и конечное значение счётчика. Синтаксис выглядит следующим образом: For Счётчик_цикла = Старт To Стоп Step Шаг Группа операторов Next [Счётчик_цикла] Роль счётчика цикла может играть только ранее объявленная переменная целочисленного типа. Шаг задаёт приращение счётчика цикла при каждом проходе. Умолчательно значение шага равно 1. После слова Next счётчик можно опустить. Пример: В этом примере всем элементам массива iArray присваивается значение 5. Dim c As Integer Dim iArray(10) As Integer For c = 0 To 10 iArray(c) = 5 Next c Оператор цикла For Each...Next Эта специфическая форма цикла For предназначена для выполнения некоторой операции с каждым объектом, входящим в состав некоторой коллекции объектов (такой операцией, например, может быть вызов метода или присваивание значения свойству). Синтаксис оператора: For Each ИмяОбъекта In ИмяКоллекции Операции над объектами Next ИмяОбъекта Пример: В этом примере показано, как изменить свойство BackColor у всех этикеток (Label), лежащих на форме Dim x As Object For Each x In Me.Controls If TypeName(x) = "Label" Then x.BackColor = 0 End If Next x Me здесь - текущая форма. Т.е. не обязательно использовать полное имя формы для доступа к её свойствам. Например, для закрытия текущей формы, можно написать Me.Hide. (или Unload Me). Оператор цикла Do While...Loop / Do...Loop While Эти две разновидности цикла тесно взаимосвязаны, и их часто рассматривают как один из базовых видов цикла. Как уже отмечалось, циклы For применяют в тех случаях, когда количество проходов и диапазон изменения счётчика цикла заранее известны. Циклы While предназначены для ситуаций, когда количество проходов цикла заранее не известно, но зато известно условие выхода из цикла. Синтаксис цикла While: Do While Условие_выхода Группа операторов Loop Do Группа операторов Loop While Условие_выхода Отличие между ними заключается в том, что условие выхода проверяется в одном случае перед очередным проходом, а в другом случае - после выхода. Если в цикле опустить условие выхода или это условие всегда выполняется, то получится бесконечный цикл. Например вот такой Do While 2 > 1 Degub.Print "Вечный цикл" Loop Если у вас случаянно получился такой цикл, то выйти из него можно при нажатии Ctrl+Break. Но это работает только в среде разработки. Пример: Dim n As Integer n = 100 Do While n >= 0 n = n - 1 Debug.Print n Loop Оператор цикла Do Until...Loop / Do...Loop Until По своей логике цикл Until подобен циклу While с той лишь разницей, что проходы цикла выполняются до тех пор, пока условие выхода не выполняется. Пример: Dim n As Integer n = 100 Do n = n - 1 Debug.Print n Loop Until n <11> 1 n = n - 1 Debug.Print n If n = 5 Then Exit Do ' Если счётчик = 5, то 'выходим из цикла Loop Итак, управляющие структуры - очень важное и далеко не слабое звено в программировании на Visual Basic (да и не только на Visual Basic). Без таких использования таких структур не получится написать даже самую маленькую программу. Даже если и получится, то программа не будет представлять никакого практического интереса. Но есть ещё более важное звено программы - функция. Вот как раз функциями мы сейчас и займёмся! Рассмотрев функции, мы уже сможем написать какую-нибудь полезную в хозяйстве програмку. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|