Программирование циклических алгоритмов вывод

Тема 4.5. Программирование алгоритмов регулярных циклических структур

Напомним, что циклическими называются структуры, в которых предусмотрена возможность многократного повторения выполнения участка алгоритма.Этот участок называетсятелом цикла. Различают циклические структуры двух видов: с заранее известным и с заранее неизвестным числом повторений цикла.

Циклические структуры, в которых число повторений цикла заранее известно или может быть определено до начала цикла, называются регулярными циклическими структурами(см.рис. 2.3.2-6Темы 2.3дисциплины Информатики).

В блоке организации цикла используется специальная пере­менная, которая предназначена для определения условия останова цикла – i. Эта переменная называетсяпараметром цикла. Блоки, следующие за заголовком цикла, составляюттело цикла. Тело цикла выполняется для всех значений параметра циклаi, начинаю­щегося со значенияm1 и изменяющегося с шагомh до значенияm2.

Циклическая структура, в которой число повторений цикла заранее неизвестно, а определяется только в процессе выполнения алгоритма, называется итеративной циклической структурой. В зависимости от места расположения условия продолжения цикла (или выхода из цикла) итеративные циклические алгоритмы подразделяются на два вида: с предусловием и с постусловием

Таким образом, алгоритмы регулярной циклической структуры характеризуются заданным известным числом повторений: иногда это число за­дается явно, иногда его предварительно вычисляют. К базовым ал­горитмам, использующихрегулярные циклические структуры относятся:алгоритмы вычисления значений функций одной или нескольких переменных, где аргументы изменяются в известном диапазоне и с заданным шагом изме­нения; алгоритмывычисления конечных сумм и произведенийи многие дру­гие. Программирование такой алгоритмической структуры на языкеVB осуществляется при помощи оператораFor. Next.

Если из условия задачи следует, что число повторений циклаза­ранее не определено, а вычисляется в процессе выполнения алгоритма, тоусловие выхода из цикладолжно быть определено в процессе его вы­полнения. При этом важно, чтобы в условие выхода из цикла входила перемен­ная, значение которой изменялось бы в теле цикла, иначе выполнение цикла будет бесконечным. Выход из регулярного цикла по условию осуществляется операторомExit For.

Читайте также:  Разработка мобильных приложений конференция

Оператор For. Nextимеет следующий формат:

For параметр = выражение_1 To выражение_2 [Step выражение_3]

Здесь параметр цикла – это переменная, для которой значение вычисленноговыражение_1 является начальным значением; значение вычисленноговыражение_2 – конечным значением; а значение вычисленноговыражение3 – шаг изменения параметра цикла. Причемшаг изменения параметраможет быть как положительным, так и отрицательным. По умолчанию значение шага равно1. Блок Операторов, находящихся между конструкциямиForиNext,называетсятелом цикла, количество повторений которого опре­деляется числом возможных значений параметра цикла. Перед каждым повторением цикла, в том числе первым входом в цикл, текущее значениепараметрацикла сравнивается со значениемвыражение_2(конечным значением). После каждого выполнения операторовтела циклак переменной (параметруцикла) прибавляется значениевыражение_3 (шаг) и снова производится сравнение параметра с конечным значением.Телоцикла перестает выполняться, когда значениепараметрастанет больше конечного значения (шаг положителен) или меньше конеч­ного значения (шаг отрицателен). Если условие выхода из цикла выполняется при начальном значении параметра, то тело цикла пропускается, и управление сразу же передается оператору, следующему заNext.Для выхода из цикла до его завершения мо­жно использовать операторExit For.

При организации вложенных циклов (цикл в цикле) используются пары операторов For…Next, которые не должны “пересекаться” друг с другом. Другими словами, каждой конструкцииFor должна соответствовать конструкцияNext. При этом конструкцияNext для внут­реннего цикла должна предшествовать конструкцииNextвнешнего цикла. Для преждевременного выхода из каждого цикла по условию можно использовать операторExit For.

Пример 4.5.1-1. Примеры реализации регулярных циклических алгоритмов. В приведенных ниже примерах реализующих различные варианты организации регулярных циклических алгоритмов, число повторений цикла –nможет быть определено через граничные значения и шаг изменения параметра следующим обра­зом:,

где m1иm2, соответственно, нижняя и верхняя граница изменения параметра цикла, аh– шаг изменения параметра. Квадратные скобки здесь обозначают — получение целой части от ре­зультата деления.

For i = 1 To 10 For j = 1 To 2

тело внутреннего цикла

If g=2 Then Exit For Next j

В примере на рис. 4.5.1-2 тело цикла будет выполняться 10 х 2=20 раз, при условии что переменная gне будет равна 2.

For a = -5 To -7 Step -0.5

m = СStr(Sin(a))

Dim i As Integer, A As Integer

For i = 1 To 3

В примере на рис. 4.5.1-4тело цикла будет выполняться три раза, так как шаг по умолчанию равен единице; первая итерация: i=1, А=3; вторая итерация: i=2, А=6; третья итерация: i=3, А=18.

Dim i As Integer, A As Integer

For i = 3 To 1 Step -1

На рис. 4.5.1-5 тело цикла будет выполняться три раза: первая ите­рация: i=3, А=9; вторая итерация: i=2, А=18; третья итерация: i=1, A=18.

Dim i As Integer

For i=1 To 100

If i = 50 Then Exit For

Изначально цикл на рис. 4.5.1-6 должен выполнить 100 итераций, но, поскольку при значении счетчика, равном50, выполняется операторExit For,будет произведено всего50итераций.

Dim i As Integer

For i = 1 To 1000

‘ Пустой цикл может использоваться для за­держки времени.

До сих пор мы использовали элемент управления TextBox для ввода или вывода одной строки, а для вывода нескольких строк текста использовали элемент управления ListBox. Однако в элемент управления TextBox можно выводить и несколько строк текста. Для вывода нескольких строк в элемент управления TextBox надо установить свойство Multiline элемента управления TextBox в значение True, а свойство ScrollBars — в значение Vertical. При использовании этих простых настроек объект однострочного текстового полястановится объектом многострочного текстового поля с полосами прокрутки, облегчающими доступ к нему.

Пример 4.5.1-2. Создать проект, демонстрирующий реализацию регулярных циклических структур.

  1. ЗапуститьVS и создать новый проект VBWindowsApplication с именем Пример-4-5-1-2,а на появившейся форме двойным щелчком мышью создать элемент управления Button в верхний левый угол формы. В случае с элементом управления Button, а также и со многими други­ми, двойной щелчок мышью является быстрым способом создания на форме объекта со стандартными размерами. Теперь этот объект можно перетащить туда, куда его требуется поместить, и настроить его свойства.
  2. Перетащить объект кнопки вправо и поместить его в центре верхней части формы.
  3. Открыть окно Свойства (Properties), а затем установить свойство Text кнопки в значение Цикл.
  4. Дважды щелкнуть мышью в окне Элементы управления (ToolBox) на элементе управления TextBox.VSсоздаст на форме небольшой объект текстового поля.
  5. Установить свойство Multiline этого объекта текстового поля в значение True, а затем установить его свойство ScrollBarsв значение Vertical. Эти настройки подготавливают текстовое поле к отображению не­скольких строк текста.
  6. Переместить текстовое поле так, чтобы оно располагалось ниже кноп­ки, и увеличить его так, чтобы оно заняло примерно треть формы.
  7. Дважды щелкнуть мышью на форме.

Появится окноРедактор кода (Code Editor). В это окно необходимо добавить процедуру Cykl( ) и ее вызов из процедуры события Button1_Click( ), приведенные на рис. 4.5.1-8.

Public ClassForm1SubCykl(ByValLineAs String)DimiAs IntegerFori = 1To10TextBox1.Text = TextBox1.Text & Line & i & vbCrLfNextiEnd SubPrivate SubButton1_Click(ByValsenderAsSystem.Object, _ByValeAsSystem.EventArgs)HandlesButton1.ClickDimLineAsString=«Line «Cykl(Line)EndSubEndClass

Рис. 4.5.1-8 После объявления переменной, используется цикл For. Next, который десять раз отображает в объекте текстового поля строку Linei, где i — это текущее значение переменной-счетчика (другими словами, от Line1 до Line10). Символы конкатенации строк (&) в текстовом поле объединяют воедино части каждой строки. Вна­чале в объект добавляется все значение текстового поля, которое хра­нится в свойстве Text, так, что предыдущие строки при добавлении новых строк не удаляются. Затем для отображения новой строки и перево­да курсора к левой границе и на следующую строку, объединяются строка «Line», текущий номер строки и символ перевода строки vbCrLf. Оператор Next завершает цикл. Обратите внимание, что при вводе начала цикла For VS ав­томатически добавляет в конец цикла оператор Next.

  1. Чтобы сохранить изменения, необходимо щелкнуть на кнопке Сохранить все (Save All) на стан­дартной панели инструментов.
  2. Щелкнуть на кнопке Начать отладку (Start Debugging) на панели инстру­ментов.
  3. Щелкнуть на кнопке Цикл формы.

Цикл For. Next отобразит в текстовом поле 10 строк, как показано на рис. 4.5.1-9. Рис. 4.5.1-9

  1. Снова щелкните на кнопке Циклформы.

Цикл For. Next отобразит на форме еще 10 строк. Чтобы увидеть все строки, можно воспользоваться вертикальной полосой про­крутки. При каждом повторении цикла в объект тек­стового поля добавляет10 новых строк. Необходимо обратить внимание, что в объекте текстового поля не останется места. Даже если отображается всего не­сколько строк текста, на это потребуется время. А многостроч­ный объект имеет практическое ограничение на размер текста в 32 Кб. Если требуется вывести текст большего размера или получить дополнительные опции форматирования, используй­те элемент управления RichTextBox из окна Элементы управления (ToolBox) –похожий, но более мощный элемент управления для отображения и обработ­ки текста. Пример 4.5.1-3.Написать процедуры ввода/вывода, которые могут использоваться в алгоритмах циклических структур. vvodDbl1( )иvivodDbl1( )- процедуры ввода и вывода данных типаDoubleв текстовые поля, vvodSng3( ) иvivodSng3( )- процедуры ввода и вывода данных типаSingleв текстовые поля, vvodInt4( )иvivodInt4( )- процедуры ввода и вывода данных типаIntegerв текстовые поля, vvodLng5( )иvivodLng5( ) — процедуры ввода и вывода данных типа Long в текстовые поля, vivodDblFx6( ) иvivodLngFx7( ) — процедуры форматного вывода значения одной переменной типаDoubleиLong, vivodDblFxy8( ) — процедуры форматного вывода значения двух переменных типаDouble. Процедуры vvodDbl1( ),vivodDbl1( ),vvodSng3( ),vivodSng3( ), vvodIDbl2( )иvivodDbl2( )приведены в теме 4.3, процедурыvvodInt4( )иvivodInt4( ) приведены в теме 4.4, а процедурыvvodLng5( ),vivodLng5( ), vivodDblFx6( ),vivodLngFx7( ),vivodSngFxy8( ), vvodInt9( ),vivodInt9( )представлены на рис. 4.5.1-10 и 4.5.1-16.

‘процедура-Function ввода данных типаLongиз текстового поля TextBoxFunctionvvodLng5(ByValTAsTextBox)As LongReturn CLng(T.Text)End Function

Рис. 4.5.1-10

‘Процедура-Subвывода данных типаLongв TextBoxSubvivodLng5(ByVallAs Long,ByValTAsTextBox)T.Text =CStr(l)End Sub

Рис. 4.5.1-11

‘Процедура-Subформатного вывода данных типа Double в TextBoxSubvivodDblFx6(ByValxAs Double, ByValTAsTextBox)T.Text = T.Text + Format(x,«0.000 «)End Sub

Рис. 4.5.1-12

‘Процедура-Subформатного вывода данных типаLongв TextBoxSubvivodLngFx7(ByValxAs Long,ByValTAsTextBox)T.Text = T.Text + Format(x,«0»)EndSub

Рис. 4.5.1-13

‘Процедура-Subформатного вывода значений двух переменныхтипаSingleвTextBoxSubvivodSngFxy8(ByValxAs Single,ByValyAs Single, ByValTAsTextBox)T.Text = T.Text + Format(x,«0.000 «) + Space(8) + _Format(y,«0.000 «) + vbCrLfEnd Sub

Рис. 4.5.1-14

‘процедура-Function ввода данных типаIntegerиз функцииInputBox( )FunctionvvodInt9(ByValpAs String,ByValTAsTextBox)As IntegerT.Text = InputBox(P)Return CInt(T.Text)End Function

Рис. 4.5.1-15

‘Процедура вывода данных типаIntegerфункциейMsgBoxSubvivodInt9(ByValIAs Integer, _ByValSAsString,ByValTAsTextBox)T.Text = MsgBox(CStr(I), S)EndSub

Рис. 4.5.1-16

Источник

Оцените статью