Полная версия

Главная arrow Информатика arrow Базовые средства программирования на Visual Basic в среде VisualStudio. Net

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>

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

Средства программирования регулярных циклических структур

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

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

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

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

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

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

Синтаксис оператора For

Рис. 5.1-1. Синтаксис оператора For

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

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

Пример 5.1-1. Примеры реализации регулярных циклических алгоритмов.

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

где Ш1 и Ш2, соответственно, - нижняя и верхняя границы изменения параметра цикла, ah- шаг изменения параметра. Квадратные скобки здесь обозначают получение целой части от результата деления.

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

Пример вложенных операторов For

Рис. 5.1-2. Пример вложенных операторов For

В примере на рис. 5.1-3 тело цикла будет выполняться 5 раз.

Пример оператора For с отрицательными значениями параметров цикла

Рис. 5.1-3. Пример оператора For с отрицательными значениями параметров цикла

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

Пример оператора For с шагом 1

Рис. 5.1-4. Пример оператора For с шагом 1

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

Пример оператора For с шагом -1

Рис. 5.1-5. Пример оператора For с шагом -1

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

Пример оператора For с Exit For

Рис. 5.1-6. Пример оператора For с Exit For

Пример оператора For для реализации пустого цикла

Рис. 5.1-7. Пример оператора For для реализации пустого цикла

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

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

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

Появится окно Редактор кода.

8) В это окно добавить процедуру Cykl( ) и ее вызов из процедуры события Buttonl_Click( ) , приведенные на рис. 5.1-8. Программный код проекта Пример 5.1-2

Рис. 5.1-8. Программный код проекта Пример 5.1-2

  • 9) После объявления переменной используется цикл For. . .Next, который десять раз отображает в объекте текстового поля строку Linei, где i - текущее значение переменной-счетчика (другими словами, от Line 1 до Line 10). Символы конкатенации строк (&) в текстовом поле объединяют воедино части каждой строки. Вначале в объект добавляется все значения текстового поля, которое хранится в свойстве Text, так что предыдущие строки при добавлении новых строк не удаляются. Затем для отображения новой строки и перевода курсора к левой границе и на следующую строку объединяются строка "Line", текущий номер строки и символ перевода строки vbCrLf. Оператор Next завершает цикл.
  • 10) Обратите внимание, что при вводе начала цикла For VS автоматически добавляет в конец цикла оператор Next.
  • 11) Чтобы сохранить изменения, необходимо щелкнуть на кнопке Сохранить все на стандартной панели инструментов.
  • 12) Щелкнуть на кнопке Начать отладку на панели инструментов.
  • 13) Щелкнуть на кнопке Цикл формы. Цикл For. . . Next отобразит в текстовом поле 180 строк, как показано на рис. 5.1-9.
Результат работы проекта Пример 5.1-2

Рис. 5.1-9. Результат работы проекта Пример 5.1-2

  • 14) Снова щелкните на кнопке Цикл формы.
  • 15) Цикл For. . .Next отобразит на форме еще 180 строк. Чтобы увидеть все строки, можно воспользоваться вертикальной полосой прокрутки. При каждом повторении цикла в объект текстового поля добавляется 180 новых строк.
  • 16) Необходимо обратить внимание, что в объекте текстового поля не останется места. Даже если отображается всего несколько строк текста, на это потребуется время. А многострочный объект имеет практическое ограничение на размер текста в 32 Кб. Если требуется вывести текст большего размера или получить дополнительные опции форматирования, используйте элемент управления RichTextBox из окна Элементы управления - похожий, но более мощный элемент управления для отображения и обработки текста.

Пример 5.1-3. Написать процедуры ввода/вывода, которые могут использоваться в алгоритмах циклических структур.

vvodDbll( ) и vivodDbll( ) - процедуры ввода и вывода данных типа Double в текстовые поля,

vvodSng3( ) и vivodSng3( ) - процедуры ввода и вывода данных типа Single в текстовые поля,

vvodInt4( ) и vivodInt4( ) - процедуры ввода и вывода данных типа Integer в текстовые поля,

vvodLng5( ) и vivodLng5( ) - процедуры ввода и вывода данных типа Long в текстовые поля,

vivodDblFx6( ) и vivodLngFx7( )- процедуры форматного вывода значения одной переменной типа Double и Long,

vivodDblFxy8( ) - процедуры форматного вывода значения двух переменных типа Double.

Процедуры vvodDbll( ), vivodDbll( ), vvodSng3( ), vivodSng3( ), vvodIDbl2( )nvivodDbl2( ) приведены в теме 4.3, процедуры vvodInt4( ) и vivodInt4( ) приведены в теме 4.4, а процедуры vvodLng5( ), vivodLng5( ), vivodDblFx6( ), vivodLngFx7( ), vivodSngFxy8( ),vvodInt9( ), vivodInt9( ) представлены на рис. 5.1-10 и 5.1-16.

Процедура vvodLng5 ( ) ввода данных типа Long из Text Box Примера 5.1-3

Рис. 5.1-10. Процедура vvodLng5 ( ) ввода данных типа Long из Text Box Примера 5.1-3

Процедура vivodLng5() вывода данных типа Long в Text Box Примера 5.1-3

Рис. 5.1-11. Процедура vivodLng5() вывода данных типа Long в Text Box Примера 5.1-3

Программный код процедуры vivodDblFx6() форматного вывода данных типа Double в TextBox Примера 5.1-3

Рис. 5.1-12. Программный код процедуры vivodDblFx6() форматного вывода данных типа Double в TextBox Примера 5.1-3

Программный код процедуры vivodLngFx7() форматного вывода данных типа Long в TextBox Примера 5.1-3

Рис. 5.1-13. Программный код процедуры vivodLngFx7() форматного вывода данных типа Long в TextBox Примера 5.1-3

Программный код процедуры vivodSngFxy8( )

Рис. 5.1-14. Программный код процедуры vivodSngFxy8( )

Форматного вывода значений 2 переменных типа Single в TextBox Примера 5.1-3

Программный код процедуры vvodInt9( ) ввода данных типа Integer из функции InputBox( ) Примера 5.1-3

Рис. 5.1-15. Программный код процедуры vvodInt9( ) ввода данных типа Integer из функции InputBox( ) Примера 5.1-3

Программный код процедуры vivodInt9() вывода данных типа Integer функцией MsgBox()

Рис. 5.1-16. Программный код процедуры vivodInt9() вывода данных типа Integer функцией MsgBox()

Примера 5.1-3

В вышеприведенных примерах для организации вывод данных, используется форматированный вывод данных с использованием функции Format ( ), возможные аргументы которой и их описание приведены в

таблице 2.4-2.

 
<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>