Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_VB.doc
Скачиваний:
7
Добавлен:
24.12.2018
Размер:
851.97 Кб
Скачать

Циклы с параметром

Цикл с параметром: For To Next применяется, когда известно количество проходов.

Цикл «Делать пока»: Do ... Loop с вариациями – цикл с постусловием и цикл с предусловием. Используют, когда число проходов зависит от условия.

Синтаксис For To Next

For Счетчик = Начальное_значение To Конечное_значение [Step Шаг]

Тело цикла

Next [Счетчик]

В начале выполнения цикла значение Счетчик устанавливается в Начальное_значение. При каждом проходе переменная Счетчик увеличивается на 1 или на величину Шаг. Если Счетчик достигает или становится больше Конечное_значение, то цикл завершается, и выполняются следующие за циклом операторы.

Разные конструкции оператора:

For i = 1 To 10

Print i * 100

Next i

For L = 100 To 5 Step -0.5

x = y * L

Next

For i = 1 To 5

For j = 10 To 20

Print i + j

Next j

Next i ‘ Или Next j, i

Для безусловного выхода из цикла используется оператор Exit For.

Пример 1. Напечатать 10 чисел ряда Фибоначчи (каждое последующее число равно сумме двух предыдущих), начиная с 11 числа.

Private Sub Command1_Click()

Dim f1, f2 As Integer

Dim i As Byte

f1 = 1: f2 = 1

For i = 1 To 20

If i > 10 Then Print f1

f2 = f1 + f2

f1 = f2 - f1

Next i

End Sub

Пример 2. Вычислить произведение

Private Sub Command1_Click()

n = Slider1.Value

m = Slider2.Value

p = 1

For i = 1 To n

For j = 1 To m

p = p * i / (1 + j ^ 2)

Next j

Next i

Text1.Text = Str(p)

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

Иногда для ввода данных удобно пользоваться элементом управления Slider (ползунок), его свойство Value отвечает за перемещение указателя ползунка во время работы программы, свойства min и max задают диапазон значений ползунка (по умолчанию min=0, max =10).

Пример 3. Протабулировать функцию sin(x) на отрезке [–π, π] с шагом 0,1.

Private Sub Command1_Click()

Const pi = 3.1415926

Dim n As Integer: Dim h As Single

Dim x As Single: Dim y As Single

Dim sa As String: Dim sf As String

h = Val(Text1.Text)

n = Int(2 * pi / h) + 1

x = -pi: sa = "": sf = ""

For i = 1 To n

y = Sin(x)

sa = sa + Format(x, "0.000") + Chr(13) + Chr(10)

sf = sf + Format(y, "0.000") + Chr(13) + Chr(10)

x = x + h

Next

Text2.Text = sa: Text3.Text = sf

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

При проектировании данного проекта необходимо для TextBox –ов, предназначенных для вывода, установить следующие свойства Multiline = true и Scrollbars=Vertical

Циклы «Делать пока»

Синтаксис Do ... Loop

Do While <условие>

<операторы>

Loop

Условие проверяется до того, как выполняется группа операторов, образующих тело цикла.

Цикл продолжает свою работу, пока это условие остается истинным.

Do

<операторы>

Loop While <условие>

Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы 1 раз.

Цикл работает, пока это условие остается истинным.

Do Until <условие>

<операторы>

Loop

Условие проверяется до того, как выполняется группа операторов, образующих тело цикла.

Цикл продолжает свою работу до тех пор, пока это условие не выполнится (то есть до тех пор, пока условие является ложным)

Do <операторы>

Loop Until <условие>

Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы один раз.

Цикл работает до тех пор, пока это условие не выполнится (то есть до тех пор, пока условие является ложным).

Для безусловного выхода из цикла используется оператор Exit Do.

Пример 1. Определить количество цифр в целом числе N. Для этого нужно делить число N на 10 до тех пор, пока в целой части числа не будет 0. Число делений равно числу цифр. K– число делений или цифр, INT – выделение целой части числа.

Private Sub Command1_Click()

n = Val(Text1.Text) : k = 0

Do

n = Int(n / 10) : k = k + 1

Loop While n > 0

Text2.Text = Str(k)

Text2.Visible = True : Label2.Visible = True

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

Private Sub Form_Load()

Text1.Text = "" : Label2.Visible = False

Text2.Text = "" : Text2.Visible = False

End Sub

ЗАМЕЧАНИЕ. Иногда возникает необходимость переделать цикл типа For…Next на цикл Do…Loop (наоборот не всегда получается).

For…Next

Do…Loop с предусловием

Do…Loop с постусловием

For I = text1 to text2

<тело цикла>

Next

I = text1

Do While I <= text2

<тело цикла>

I=I+1

Loop

I=text1

Do

<тело цикла>

I=I+1

Loop Until I > text2