Пример 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!