- •Тема: «Разработка приложений с циклическими алгоритмами»
- •1. Циклические алгоритмические структуры
- •1.1. Оператор цикла For...Next
- •1.2. Оператор цикла While...Wend
- •1.3. Оператор цикла Do...Loop
- •1.4. Выход из цикла Exit For / Exit Do
- •2. Упражнения
- •2. Разработайте программу для вычисления суммы ряда.
- •3. Задания для самостоятельного выполнения
- •1. Используя цикл For...Next, выполните следующие задания:
- •3. Составить программу для обработки данных во время ввода.
- •4. Разработайте программу для решения следующих задач:
- •5. Разработайте программу для решения следующих задач:
1.3. Оператор цикла Do...Loop
Оператор Do…Loop повторяет выполнение набора инструкций, пока Условие имеет значение True (случай While) или пока оно не примет значение True (случай Until).
Синтаксис:
1) Do While Условие
[Инструкции]
Loop
Условие проверяется до входа в цикл. Если результатом проверки условия является значение Истина, то выполняются Инструкции, и вновь проверяется условие. Если результатом проверки условия является значение Ложь, то происходит выход из цикла и переход на оператор, расположенный после служебного слова Loop.
Возможна ситуация, при которой Инструкции не выполняются ни разу. Она возникает в том случае, если при первой проверке условия оно оказывается ложным.
2) Do
[Инструкции]
Loop While Условие
При использовании этой формы оператора Инструкции выполняются хотя бы один раз, после чего осуществляется проверка заданного условия. Если результатом проверки условия является значение Истина, то вновь выполняются операторы цикла и проверяется условие. Если результатом проверки условия является значение Ложь, то происходит выход из цикла.
3) Do Until Условие
[Инструкции]
Loop
4) Do
[Инструкции]
Loop Until Условие
Эти две разновидности конструкции цикла Do...Loop аналогичны рассмотренным ранее, но отличаются тем, что цикл выполняется до тех пор, пока условие ложно, а не истинно.
Примеры использования конструкций приведены ниже.
Пример. Вычислить сумму бесконечного
ряда
,
пока члены ряда больше eps >0.
Dim k As Integer, y As Single, S As Single, eps As Single
eps = InputBox ("Введите число eps>0")
S = 0
k = 1
Do While k / (3 * k ^ 2 + 5) > eps
S = S + k / (3 * k ^ 2 + 5)
k = k+1
Loop
MsgBox "Сумма ряда равна " & CStr(S)
Пример. Следующий код обеспечивает повторение цикла до тех пор, пока в поле ввода диалогового окна не будет введен пароль Привет.
Dim Password As String
Do
Password = InputBox ("Введите пароль")
Loop Until Password = "Привет"
1.4. Выход из цикла Exit For / Exit Do
С помощью операторов Exit... можно осуществить досрочный выход из цикла вне зависимости от значения, которое имеет в данный момент условие выхода.
Пример.
Dim n As Integer
n = 10
Do While n > 1
Print n
n = n – 1
If n = 5 Then Exit Do ' Если счётчик = 5, то выходим из цикла Loop
2. Упражнения
Упражнение 1
Создадим программу, которая выводит все двузначные натуральные числа, кратные пяти.
Реализация проекта
1. Создайте новый проект.
2. Поместите на форму надпись, текстовое поле и две кнопки.
3. Установите следующие значения свойств объектов:
-
Класс объектов
Обозначение объекта по умолчанию
Свойство
Значение
Form
Form1
Caption
Числа, кратные пяти
Label
Label1
Caption
Двузначные числа, кратные пяти
TextBox
Text1
Name
TxtChisla
Text
MultiLine
True
CommandButton
Command1
Name
CmdShow
Caption
Вывести числа
Command2
Name
CmdExit
Caption
Выход
Замечание.
По умолчанию предполагается, что текстовое поле служит для ввода/вывода одной строки текста. Свойство MultiLine элемента управления TextBox позволяет настроить объект таким образом, что он будет использоваться для ввода/вывода нескольких строк. При установленном значении True текст автоматически переносится по словам на несколько строк. При вводе информации в поле для перехода на новую строку необходимо использовать клавишу Enter.
Ваша форма примет вид (рис. 6.1):
Рис. 6.1
4. В окне редактора кода введите следующие процедуры обработки событий для кнопок:
5. Сохраните и протестируйте проект (рис. 6.2).
Рис. 6.2
Упражнение 2
Создадим приложение, которое выводит все делители введенного натурального числа.
Реализация проекта
1. Создайте новый проект.
2. Поместите на форму две надписи, два текстовых поля и две кнопки.
3. Установите следующие значения свойств объектов:
-
Класс объектов
Обозначение объекта по умолчанию
Свойство
Значение
Form
Form1
Caption
Делители числа
Label
Label1
Caption
Натуральное число
Label2
Caption
Его делители
TextBox
Text1
Name
TxtChislo
Text
Text2
Name
TxtDeliteli
Text
MultiLine
True
ScrollBars
2 - Vertical
CommandButton
Command1
Name
CmdShow
Caption
Найти делители
Command2
Name
CmdExit
Caption
Выход
Замечание.
Cвойство ScrollBars элемента управления TextBox используется, если свойство MultiLine имеет значение True и размер поля не позволяет отобразить заданный в свойстве Text текст. Свойство может принимать одно из следующих значений: 0-None – полоса прокрутки отсутствует, 1-Horizontal – горизонтальная полоса прокрутки, 2-Vertical – вертикальная полоса прокрутки, 3-Both – горизонтальная и вертикальная полосы прокрутки.
Ваша форма примет вид (рис. 6.3):
Рис. 6.3
4. В окне редактора кода введите следующие процедуры обработки событий для кнопок:
5. Сохраните и протестируйте проект (рис. 6.4).
Рис. 6.4
6. Модифицируйте программу так, чтобы дополнительно определялось количество делителей.
7. Сохраните и протестируйте проект.
Упражнение 3
Создадим программу табулирования функции y = sin x на отрезке [a, b] с шагом h.
Реализация проекта
1. Создайте новый проект.
2. Поместите на форму четыре надписи, четыре текстовых поля и две кнопки (рис. 6.5):
Рис. 6.5
3. Установите следующие значения свойств объектов:
Класс объектов |
Обозначение объекта по умолчанию |
Свойство |
Значение
|
Form |
Form1 |
Caption |
Табулирование функции |
Label |
Label1 |
Caption |
Табулирование функции y=sin x на отрезке [a, b] с шагом h |
Alignment |
2 - Center |
||
Label2 |
Caption |
a |
|
Label3 |
Caption |
b |
|
Label4 |
Caption |
h |
|
TextBox |
Text1 |
Name |
TxtA |
Text |
|
||
Text2 |
Name |
TxtB |
|
Text |
|
||
Text3 |
Name |
TxtH |
|
Text |
|
||
Text4 |
Name |
TxtTab |
|
Text |
|
||
MultiLine |
True |
||
ScrollBars |
2 - Vertical |
||
CommandButton |
Command1 |
Name |
CmdShow |
Caption |
Выполнить |
||
Command2 |
Name |
CmdExit |
|
Caption |
Выход |
4. В окне редактора кода введите следующий код:
5. Сохраните и протестируйте проект (рис. 6.6).
Рис. 6.6
Упражнение 4
Создадим программу, которая определяет количество цифр введенного натурального числа.
Реализация проекта
1. Создайте новый проект.
2. Поместите на форму две надписи, два текстовых поля и две кнопки.
3. Установите следующие значения свойств объектов:
-
Класс объектов
Обозначение объекта по умолчанию
Свойство
Значение
Form
Form1
Caption
Количество цифр числа
Label
Label1
Caption
Натуральное число
Label2
Caption
Количество цифр числа
TextBox
Text1
Name
TxtChislo
Text
Text2
Name
TxtKol
Text
Locked
True
CommandButton
Command1
Name
CmdKol
Caption
Определить количество цифр
Command2
Name
CmdExit
Caption
Выход
В
аша
форма примет вид (рис. 6.7):
Рис. 6.7
4. Подсчет количества цифр начнем с последней цифры числа. На очередном шаге цикла счетчик цифр увеличим на единицу, а число уменьшим в 10 раз (тем самым мы избавляемся от последней цифры числа). Далее с получившимся числом проделаем ту же последовательность действий и т.д., пока число не станет равным нулю.
В окне редактора кода введите следующие процедуры обработки событий для кнопок:
5. Рассмотрим выполнение этой программы при нажатии на кнопку в пошаговом режиме для числа 847954:
-
n
k
847954
0
84795
1
8479
2
847
3
84
4
8
5
0
6
6
. Сохраните
и протестируйте проект (рис. 6.8).
Рис. 6.8
7. Модифицируйте программу так, чтобы определялась:
а) сумма цифр числа;
б) первая цифра числа; например, для числа 7265 это цифра 7;
в) количество четных цифр числа;
г) наибольшая цифра числа;
д) сколько раз данная цифра встречается в числе;
е) перевертыш данного числа; например, для числа 7265 это число 5627.
8. Сохраните и протестируйте проект.
Упражнение 5
Создадим программу, которая определяет, является число простым или составным.
Реализация проекта
1. Создайте новый проект.
2. Поместите на форму две надписи, текстовое поле и кнопку.
3. Установите следующие значения свойств объектов:
-
Класс объектов
Обозначение объекта по умолчанию
Свойство
Значение
Form
Form1
Caption
Простое или составное
Label
Label1
Caption
Введи натуральное число, большее 1
Label2
Caption
TextBox
Text1
Name
TxtChislo
Text
CommandButton
Command1
Name
CmdCount
Caption
Определить
Ваша форма примет вид (рис. 6.9):
Рис. 6.9
4. В окне редактора кода введите следующий код:
5
. Сохраните
и протестируйте проект (рис. 6.10, 6.11).
Рис. 6.10 Рис. 6.11
Упражнение 6
Разработаем программу нахождения наибольшего общего делителя двух неотрицательных чисел.
Алгоритм Евклида
Алгоритм Евклида – это алгоритм нахождения наибольшего общего делителя (НОД) двух целых неотрицательных чисел.
Пусть x и y – одновременно не равные нулю целые неотрицательные числа, и пусть x ≥ y. Если y = 0, то НОД(x, y) = x, а если y ≠ 0, то для чисел x, y и r, где r – остаток от деления x на y, выполняется равенство НОД(x, y) = НОД(y, r).
Например, пусть x = 48, а y = 18.
НОД(48, 18) = НОД(18, 12) = НОД(12,6) = НОД(6, 0) = 6.
Реализация проекта
1. Создайте новый проект.
2. Поместите на форму три надписи, три текстовых поля и две кнопки (рис. 6.12).
Рис. 6.12
3. Установите следующие значения свойств объектов:
-
Класс объектов
Обозначение объекта по умолчанию
Свойство
Значение
Form
Form1
Caption
Наибольший общий делитель
Label
Label1
Caption
Первое число
Label2
Caption
Второе число
Label3
Caption
Наибольший общий делитель
TextBox
Text1
Name
TxtChislo1
Text
Text2
Name
TxtChislo2
Text
Text3
Name
TxtNOD
Text
Locked
True
CommandButton
Command1
Name
CmdCount
Caption
Вычислить
Command2
Name
CmdExit
Caption
Выход
4. В окне редактора кода введите следующие процедуры обработки событий для кнопок:
5. Сохраните и протестируйте проект (рис. 6.13).
Рис. 6.13
