Пример 4.5.1-2. Создать проект, демонстрирующий реализацию регулярных циклических структур.
Тема 4.5
Программирование алгоритмов
регулярных циклических структур
И циклических структур цикл в цикле
Средства программирования регулярных циклических структур
Напомним, что циклическими называются структуры, в которых предусмотрена возможность многократного повторения выполнения участка алгоритма. Этот участок алгоритма называется телом цикла. Различают циклические структуры двух видов: с заранее известным и с заранее неизвестным числом повторений цикла.
Циклические структуры, в которых число повторений цикла заранее известно или может быть определено до начала выполнения цикла, называются регулярными (рис. 4.В.3-9)
В блоке организации цикла используется специальная переменная, которая предназначена для определения условия останова цикла – i. Эта переменная называется параметром цикла. Блоки, следующие за заголовком цикла, составляют тело цикла. Тело цикла выполняется для всех значений параметра цикла i, начинающегося со значения m1и изменяющегося с шагом hдо значения m2.
Циклическая структура, в которой число повторений цикла заранее неизвестно, а определяется только в процессе выполнения алгоритма, называется итеративной циклической структурой. В зависимости от места расположения условия продолжения цикла (или выхода из цикла) итеративные циклические алгоритмы подразделяются на два вида: с предусловием и с постусловием
|
|
Таким образом, алгоритмы регулярной циклической структуры характеризуются известным числом повторений: иногда это число задается явно, иногда его предварительно вычисляют.
К базовымалгоритмам, использующих регулярные циклические структуры относятся: алгоритмы вычисления значений функций одной или нескольких переменных, где аргументы изменяются в известном диапазоне и с заданным шагом изменения; алгоритмы вычисления конечных сумм и произведений и многие другие. Программирование такой алгоритмической структуры на языке VBосуществляется операторам For...Next(Рис. 4.5.1-1).
Здесь параметрцикла – это переменная, для которой значение вычисленного выражение1является начальным значением; значение вычисленного выражение2– конечным значением; а значение вычисленного выражение3– шаг изменения параметра цикла. Причем шаг изменения параметра может быть, как положительным, так и отрицательным. По умолчанию значение шага равно 1. Блок Операторов, находящихся между конструкциями For и Next, называется телом цикла, количество повторений которого определяется числом возможных значений параметра цикла. Перед каждым повторением цикла, в том числе первым входом в цикл, текущее значение параметра цикла сравнивается со значением выражение2 (конечным значением). После каждого выполнения операторов тела цикла к переменной (параметру цикла) прибавляется значение выражение3(шаг) и снова производится сравнение параметра с конечным значением. Тело цикла перестает выполняться, когда значение параметра станет больше конечного значения (шаг положителен) или меньше конечного значения (шаг отрицателен). Если условие выхода из цикла выполняется при начальном значении параметра, то тело цикла пропускается, и управление сразу же передается оператору, следующему за Next. Для выхода из цикла до его завершения можно использовать оператор ExitFor.
|
|
Forпараметр = выражение1 Toвыражение2 [Step выражение3] Блок Операторов [ExitFor] … Next параметр |
Рис. 4.5.1-1. Синтаксис опрератор For...Next
При организации вложенных циклов (цикл в цикле) используются пары операторов For…Next, которые не должны «пересекаться» друг с другом. Другими словами, каждой конструкции Forдолжна соответствовать конструкция Next. При этом конструкция Nextдля внутреннего цикла должна предшествовать конструкции Next внешнего цикла.
Для преждевременного выхода из каждого цикла по условию можно использовать оператор ExitFor.
|
|
Пример 4.5.1-1. Примеры реализации регулярных циклических алгоритмов.
В приведенных ниже примерах, реализующих различные варианты организации регулярных циклических алгоритмов, число повторений цикла – n может быть определено через граничные значения и шаг изменения параметра следующим образом: , где m1 и m2, соответственно, нижняя и верхняя граница изменения параметра цикла, а h – шаг изменения параметра. Квадратные скобки здесь обозначают получение целой части.
В примере на рис. 4.5.1-2 тело цикла будет выполняться 10 х 2=20 раз, при условии что переменная g не будет равна 2, в примере на рис. 4.5.1-3 тело цикла будет выполняться 5 раз.
For i = 1 To 10 For j = 1 To 2 'тело внутреннего цикла If g=2 Then Exit For Next j Next i |
Рис. 4.5.1-2. Фрагмент использования вложенных операторов For...Next
Примера 4.5.1-1
For a = -5 To -7 Step -0.5 m = СStr(Sin(a)) MsgBox("m="& m) Next a |
Рис. 4.5.1-3. Фрагмент использования оператора For...Nextс отрицательными параметрамиПримера 4.5.1-1
Впримеренарис. 4.5.1-4 тело цикла будет выполняться три раза, так как шаг по умолчанию равен единице; первая итерация: i=1, А=3; вторая итерация: i=2, А=6; третья итерация: i=3, А=18.
|
|
Dim i, A As Integer A = 3 For i = 1 To 3 A = A * i Next i |
Рис. 4.5.1-4Фрагмент использования оператора For...Next
для нахожденияпроизведения с шагом 1Примера 4.5.1-1
Dim i, A As Integer A = 3 For i = 3 To 1 Step -1 A = A * i Next i |
Рис. 4.5.1-5. Фрагмент использования оператора For...Next
для нахождения произведения с шагом -1Примера 4.5.1-1
На рис. 4.5.1-5 тело цикла будет выполняться три раза: первая итерация: i=3, А=9;вторая итерация: i=2, А=18; третья итерация: i=1, A=18.
Изначально цикл на рис. 4.5.1-6 должен выполнить 100 итераций, но, поскольку при значении счетчика, равном 50, выполняется оператор ExitFor, будет произведено всего 50 итераций.
Dim i As Integer For i=1 To 100 If i = 50 Then Exit For Next i |
Рис. 4.5.1-6.Фрагмент использования оператора For...Next
с оператором ExitForПримера 4.5.1-1
Dim i As Integer For i = 1 To 1000 Nexti ' Пустой цикл может использоваться для задержки времени |
Рис. 4.5.1-7. Пример использования оператора For...Next
для реализации пустого циклаПримера 4.5.1-1
До сих пор мы использовали элемент управления TextBoxдля ввода или вывода одной строки, а для вывода нескольких строк текста использовали элемент управления ListBox. Однако в элемент управления TextBoxможно выводить и несколько строк текста. Для вывода нескольких строк в элемент управления TextBoxнадо установить свойство Multilineэлемента управления TextBoxв значенииTrue, а свойство ScrollBars– в значение Vertical. При использовании этих простых настроек объект однострочного текстового поля становится объектом многострочного текстового поля с полосами прокрутки, облегчающими доступ к нему.
Пример 4.5.1-2. Создать проект, демонстрирующий реализацию регулярных циклических структур.
1)Запустить VS и создать новый проект с именем Пример 5.1-2, а на появившейся форме двойным щелчком мышью создать элемент управления Button в верхний левый угол формы. В случае с элементом управления Button, а также и со многими другими, двойной щелчок мышью является быстрым способом создания на форме объекта со стандартными размерами. Теперь этот объект перетащить туда, куда его требуется поместить, и настроить егосвойства.перетащить туда, куда его требуется поместить, и настроить его свойства.
2)Перетащить объект кнопки вправо и поместить его в центре верхней части формы.
3)Открыть окно Свойства, а затем установить свойство Textкнопки в значении Цикл.
4)Дважды щелкнуть мышью в окне Элементы управленияна элементе управления TextBox. VS создаст на форме небольшой объект текстового поля.
5)Установить свойство Multiline этого объекта текстового поля в значении True, а затем установить его свойство ScrollBarsв значении Vertical. Эти настройки подготавливают текстовое поле к отображению нескольких строк.
6)Переместить текстовое поле так, чтобы оно располагалось ниже кнопки, и увеличить его так, чтобы оно заняло примерно треть формы.
7)Дважды щелкнуть мышью на форме.
Появится окно Редактор кода.
8)В это окно добавить процедуру Cykl() и ее вызов из процедуры события Button1_Click(), приведенные на рис. 4.5.1-8.
Public Class Form1 Sub Cykl(ByVal Line As String) Dim i As Integer For i = 1 To 10 TextBox1.Text = TextBox1.Text & Line & i &vbCrLf Next i End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim Line As String = "Line " Cykl(Line) End Sub End Class |
Рис. 4.5.1-8. Программный код проекта Пример 5.1-2
9)После объявления переменной, используется цикл For...Next, который десять раз отображает в объекте текстового поля строку
Linei, где i – текущее значение переменной-счетчика (другими словами, от Line 1 до Line 10). Символы конкатенации строк (&) в текстовом поле объединяют воедино части каждой строки. Вначале в объект добавляется все значение текстового поля, которое хранится в свойстве Text, так, что предыдущие строки при добавлении новых строк не удаляются. Затем для отображения новой строки и перевода курсора к левой границе и на следующую строку, объединяются строка Line, текущий номер строки и символ перевода строки vbCrLf. Оператор Nextзавершает цикл.
10)Обратить внимание, что при вводе начала цикла ForVS автоматически добавляет в конец цикла оператор Next.
11)Чтобы сохранить изменения, необходимо щелкнуть на кнопке
Сохранить все на стандартной панели инструментов.
12)Щелкнуть на кнопке Начать отладку на панели инструментов.
13)Щелкнуть на кнопке Цикл формы.
Цикл For...Nextотобразит в текстовом поле 10 строк, как показано на рис. 4.5.1-9.
Рис. 4.5.1-9. Результат работы проекта Пример 5.1-2
14)Снова щелкнуть на кнопке Цикл формы.
15)Цикл For...Next отобразит на форме еще 10 строк. Чтобы увидеть все строки, можно воспользоваться вертикальной полосой прокрутки. При каждом повторении цикла в объект текстового поля добавляется 10 новых строк.
16)Необходимо обратить внимание, что в объекте текстового поля не останется места. Даже если отображается всего несколько строк текста, на это потребуется время. Многострочный объект имеет практическое ограничение на размер текста в 32 Кб. Если требуется вывести текст большего размера или получить дополнительные опции форматирования, используйте элемент управления RichTextBoxиз окна Элементы управления – похожий, но более мощный элемент управления для отображения и обработки текста.
Дата добавления: 2018-05-09; просмотров: 384; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!