Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
02.05.2014
Размер:
928.77 Кб
Скачать

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

Цикл с параметром: 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

Соседние файлы в папке Платов А.Ю. Введение в информатику