Приложение:zadanie1.rar
do until_ loop1.rar
Занятие 29. Типы циклов. Организация циклов. Среда Visual Basic Net
I. Циклы в алгоритмах и в программах.
В линейных алгоритмах и в алгоритмах с ветвлением каждая команда алгоритма могла быть выполнена не более одного раза. Но для решения многих задач нужно составлять алгоритмы, команды которых могут быть выполнены более одного раза.
Фрагмент алгоритма, состоящий из команд, которые могут быть выполнены более одного раза, называется циклом. Алгоритмы, содержащие циклы, называются алгоритмами с циклами.
Рассмотрим примеры таких задач.
Задача 1. Есть бочка и ведро. Используя ведро, наполнить бочку водой из колодца.
Рассмотрим исполнителя с такой системой команд:
1. Наполнить ведро водой.
2. Вылить воду из ведра в бочку.
3. Проверить условие «Бочка неполная?».
Поскольку из условия задачи неизвестно, есть ли в бочке вода, исполнитель должен сначала проверить условие «Бочка неполная?»:
- Если результат этой проверки true, то он должен наполнить ведро водой, вылить ее из ведра в бочку и опять проверить условие «Бочка неполная?».
- И так до тех пор, пока результат проверки этого условия станет false. После этого можно закончить исполнение алгоритма.
Приведем алгоритм решения этой задачи для рассмотренного исполнителя в словесной форме и в виде блок-схемы
1. Проверить условие «Бочка неполная?». |
В приведенном алгоритме цикл состоит из трех команд: команды проверки условия и двух команд, которые образуют тело цикла.
Рассмотренный выше цикл называется циклом с предусловием, потому что условие проверяется перед началом выполнения команд тела цикла.
II. Циклы с условием.
Если количество повторений команд тела цикла до начала выполнения команды цикла неизвестно, нужно использовать команду цикла:
- с предусловием
или
- команду цикла с постусловием.
Общий вид команд цикла с условием таков:
С верхним окончанием.
Do {while | until} условие |
а ) если условие выполняется – выполняется цикл б) повторение в цикле продолжается до выполнения условия |
a) Цикл Do While . . . Loop (англ. while - пока)
Общий вид цикла с предусловием:
На языке Visual Basic.Net цикл с предусловием реализуется с помощью конструкции Do While . . . Loop
Общий вид оператора:
Do While Условие продолжения цикла |
Алгоритм выполнения оператора:
1. С помощью ключевого слова While (пока) проверяется условие продолжения цикла.
2. Если условие истинно (True), то выполняется тело цикла, алгоритм повторяется с пункта 1.
3. Если условие ложно(False) - цикл завершается.
- Особенностью этого цикла является то, что если при первой проверке условие ложно, то тело цикла не выполнится ни разу.
Преждевременный выход из цикла программист может организовать при помощи конструкции Exit Do.
Задание 1. Создание проекта суммирования чисел от единицы до некоторого , введенного пользователем, числа а.
Блок - схема проекта Интерфейс проекта
Программный код
Private Sub Button1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Button1.Click
Dim a , i, s As Short
TextBox1.Focus()
a = Val(Text1.Text)
s = 0
i = 1
Do While i <= a 'цикл с верхним условием, true - условие продолжения цикла
s = s + i
ListBox1.Items.Add("i= " & i & vbTab " s= " & s)
i = i + 1
Loop
TextBox2.Text = Str(s)
End Sub
Private Sub Button2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Button2.Click
TextBox2.Text = ""
TextBox1.Text = ""
ListBox1.Items.Clear()
TextBox1.Focus()
End Sub
b) Do Until . . . Loop ⇒повторение в цикле продолжается до выполнения условия
Do Until Условие выхода из цикла Тело цикла Loop |
Алгоритм выполнения оператора:
1. С помощью ключевого слова Until (пока, не раньше чем) проверяется условие выхода из цикла.
2. Если условие истинно (True) - цикл завершается.
3. Если условие ложно(False) - выполняется тело цикла, алгоритм повторяется с пункта 1.
- Особенностью этого цикла является то, что если при первой проверке условие истинно, то тело цикла не выполнится ни разу.
Задание 2. Создание проекта формирования числового ряда по указанной формуле пока условие ложно.
Блок - схема проекта
Интерфейс проекта
Private Sub Button1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Button1.Click
Dim k, a As Integer
k = 0
a = Val(InputBox("введите целое число", "ввод числа"))
ListBox1.Items.Add(" k= " & Str(k) & vbTab & " a= " & Str(a))
Do Until a > 150 'цикл с верхним условием, условие false - продолжение цикла
a = 2 * a + 4
k = k + 1
ListBox1.Items.Add(" k= " & Str(k) & vbTab & " a= " & Str(a))
Loop
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Clear()
End Sub
Задания.
1. Составьте блок-схему алгоритма нахождения количества положительных членов арифметической прогрессии с известным первым членом и разностью d =5. Исполните алгоритм для трех разных значений первого члена прогрессии. Подберите эти значения так, чтобы команды тела цикла выполнились несколько раз; один раз; ни разу.
2. Создайте проект для решения задачи: Человек положил в банк определенную сумму денег. Ежегодно банк добавляет к сумме заранее определенный процент от суммы, сохранившейся на счету после предыдущего года. Какая сумма будет на счету через N лет?