Слайд 1Лекция 3
Кафедра Прикладной математики
М-703, тел. 362-79-62
К.т.н., профессор Глаголев Виктор Борисович,
комн. Ж-405б,
тел. 362-73-28
http://glagvik.narod2.ru/index.htm
Программирование циклов
Инструкция For … Next
Пример «Вклад»
Демонстрация работы проекта
Пример «Вклад 2»
Инструкция Do While … Loop
Пример «Алгоритм Эвклида»
Инструкция Do Until … Loop
Слайд 2Инструкция цикла For… Next
Инструкции цикла предназначены для программирования циклической структуры алгоритмов.
Они представляют собой предписание, указывающее, какой набор инструкций (этот набор инструкций называется телом цикла) нужно выполнять многократно и каково правило окончания повторений.
Синтаксис инструкции цикла:
For ПЦ = НЗПЦ To КЗПЦ [Step ШИПЦ] Тело цикла (инструкции)
Next [ПЦ]
Слайд 3Этот цикл управляется параметром, который при повторении выполнения тела цикла изменяет
свое значение с заданным шагом от заданного начального значения до заданного конечного значения. Такой цикл используют в случае, когда заранее известно, сколько раз необходимо совершить повторение выполнения тела цикла.
Слайд 4Слова For (для), To (до), Step (шаг), Next (затем) являются зарезервированными.
Применены обозначения:
ПЦ – параметр цикла (переменная любого числового типа);
НЗПЦ – начальное значение параметра цикла (выражение любого числового типа), которое параметр цикла будет иметь при первом выполнении тела цикла;
КЗПЦ – конечное значение параметра цикла (выражение любого числового типа);
ШИПЦ – шаг изменения параметра цикла (выражение любого числового типа) – необязательная часть инструкции цикла.
Слайд 5Числовые значения НЗПЦ и КЗПЦ задают интервал, в котором будет изменяться
параметр цикла. Необязательный параметр ШИПЦ задает шаг изменения параметра цикла на каждом проходе. По умолчанию, если он отсутствует, то принимается равным 1. Наконец, после инструкций, составляющих тело цикла, следует команда Next, обозначающая границу тела цикла. В случае вложенных циклов (в тело цикла входит инструкция цикла) можно указывать, к какому из них относится команда Next. Это достигается добавлением после слова Next имени параметра цикла.
Слайд 6Процесс выполнения инструкции For… Next для положительного шага иллюстрирует рисунок.
For
ПЦ = НЗПЦ To КЗПЦ [Step ШИПЦ]
Слайд 7Пример 1
Сумма = 0
For i = 1 To 100 Step 2
Сумма = Сумма + i
Next
В этом примере вычисляется сумма всех целых нечетных чисел от 1 до 100.
Слайд 8Пример 2
For n = 100 To 60 Step –10
TextBox1.AppendText(n & vbCrLf)
Next n
В этом примере продемонстрированы две возможности: явно заданный шаг цикла и отсчет в обратном направлении. Последнее достигается заданием отрицательного шага и тем, что начальное значение параметра цикла больше, чем конечное.
Слайд 9
Этот код выведет в текстовом поле TextBox1:
100
90
80
70
60
Слайд 10Инструкцию For...Next можно завершить досрочно с помощью инструкции Exit For.
Если при
выполнении тела цикла встречается инструкция Exit For, то происходит досрочный выход из цикла (следующей будет выполняться инструкция, находящаяся после Next).
Слайд 11Пример «Вклад»
В банк сделан денежный вклад размера v рублей с
процентной ставкой p процентов ежегодно.
Каким станет размер вклада через n лет?
Слайд 13Блок-схема алгоритма
Начало
Конец
Ввод v, p, n
Вывод i, v
i = i + 1
i
<= n
v = v+ v * p / 100
i = 1
Нет
Да
Слайд 14
Интерфейс проекта
На форме находится кнопка, нажатие на которую запускает вычисления,
а также текстовое поле, в котором отображаются значения данных.
Слайд 15 Код
К заготовке кода (показана ниже), которую составила система VB.NET при
создании проекта перед заключительной строкой End Class класса Form1 следует вставить код подпрограммы Button1_Click, который выполняется, когда с кнопкой Button1 происходит событие Click (нажатие на кнопку Button1).
Слайд 19Пример «Вклад 2»
В банк сделан денежный вклад размера v рублей
с процентной ставкой p процентов ежегодно.
Через сколько лет размер вклада увеличится в k раз?
Слайд 23 Инструкция цикла
Do While … Loop или
Do … Loop While
Здесь
While (пока) и Loop (цикл) зарезервированные слова. Циклы типа While называют итерационными. Они применяются, когда количество повторений тела цикла (итераций) заранее неизвестно. Имеются две разновидности цикла While.
Вот синтаксис первой из них:
Do While УсловиеПовторения
Группа инструкций
Loop
Слайд 24Здесь УсловиеПовторения – это выражение логического типа, которое принимает либо значение
True, либо значение False.
Выполнение этой инструкции происходит так. Сначала вычисляется значение логического выражения УсловиеПовторения.
Слайд 25Если УсловиеПовторения имеет значение True, то выполняются инструкции, помещенные между строками
Do While и Loop. Затем все повторяется с начала.
Если же логическое выражение имеет значение False, то происходит выход из цикла. Следующей будет выполнена инструкция, помещенная ниже строки Loop.
Слайд 26Работу первого варианта цикла While поясняет блок-схема:
Do While УсловиеПовторения
Инструкции
Loop
Слайд 27Вот синтаксис второй разновидности цикла While:
Do
Инструкции
Loop While УсловиеПовторения
Работу второго варианта цикла
While поясняет расположенная справа блок-схема.
Инструкцию Do...Loop можно завершить досрочно с помощью инструкции Exit Do.
Слайд 28Пример 1.
Счетчик = 0
Номер = 20
Do While Номер > 10
Номер =
Номер - 1
Счетчик = Счетчик + 1
Loop
MsgBox ("Выполнено " & _
Счетчик & " итераций цикла.")
При выполнении этого участка программы в окне функции MsgBox будет выведено:
Выполнено 10 итераций цикла.
Слайд 29Пример 2
В следующей программе инструкции внутри цикла выполняются только один раз
до того, как условие не будет выполнено:
Счетчик = 0
Номер = 9
Do
Номер = Номер - 1
Счетчик = Счетчик + 1
Loop While Номер > 10
MsgBox ("В цикле выполнено " & _
Счетчик & " итераций.")
При выполнении этого участка программы в окне функции MsgBox будет выведено:
Выполнено 1 итераций цикла.
Слайд 30
Пример. Алгоритм Эвклида
Ранее была разработана блок – схема алгоритма определения наибольшего
общего делителя двух целых положительных чисел (алгоритм Эвклида). Продолжим разработку соответствующего проекта. Далее приведен код, который запускается нажатием на кнопку Button1 и приводит к получению наибольшего общего делителя чисел n1 и n2.
Слайд 32Тело подпрограммы Button1_Click
Dim n1, n2 As Integer
n1 = InputBox("Первое число = ?")
n2 = InputBox("Второе число = ?")
Слайд 33 Do While n1 n2
5:
If n1 < n2 Then
n2 = n2 - n1
Else
n1 = n1 - n2
End If
10: Loop
MsgBox( _
“Наибольший общий делитель = “ & n1)
Слайд 35Здесь показаны два возможных варианта реализации цикла в проекте «Вклад»:
Вариант 1
Вариант
2
Слайд 36Вариант 1 – это вариант, реализованный ранее в проекте «Вклад» с
помощью цикла For.
Вариант 2 – это возможное решение этой же задачи с помощью цикла While.
Следует заметить, что применение цикла While вместо цикла For требует явного задания начального значения параметра цикла, а также явного изменения значения параметра цикла в теле цикла.
Слайд 37Здесь показаны два возможных варианта реализации цикла в проекте «Вклад 2»:
Вариант
1
Слайд 39Вариант 1 – это вариант, реализованный ранее в проекте «Вклад 2»
с помощью цикла For.
Вариант 2 – это возможное более простое решение этой же задачи с помощью цикла While.
Слайд 40Инструкция цикла
Do Until … Loop или
Do … Loop Until
Until (до) –
зарезервированное слово. По своей логике цикл Until подобен циклу While с той лишь разницей, что выполнение условия означает необходимость выхода из цикла. Как и в случае цикла While, проверка условия выхода в цикле Until может осуществляться перед очередным проходом или после него.
Слайд 41Вот синтаксис этих двух вариантов.
Первый вариант:
Do Until УсловиеВыхода
Группа инструкций
Loop
Второй вариант:
Do
Группа
инструкций
Loop Until УсловиеВыхода
Слайд 42Работу первого варианта цикла Until
поясняет находящаяся справа блок-схема:
Слайд 43Второй вариант:
Do
Группа инструкций
Loop Until УсловиеВыхода
Блок-схема реализуемого алгоритма приведена справа.
Инструкцию Do...Loop
можно завершить досрочно с помощью инструкции Exit Do.
Слайд 44Пример
Рассмотрим действие участка программы:
Счетчик = 0
Номер = 20
Do Until Номер =
10
Номер = Номер - 1
Счетчик = Счетчик + 1
Loop
Переменная Счетчик получит значение 10.
Слайд 45Еще один пример:
Счетчик = 0
Номер = 1
Do
Номер = Номер +
1
Счетчик = Счетчик + 1
Loop Until Номер = 10
Переменная Счетчик получит значение 9.
Слайд 46В примере «Алгоритм Эвклида» вместо цикла Do Wile можно применить цикл
Do Until:
Do Until n1 = n2
5: If n1 < n2 Then
n2 = n2 - n1
Else
n1 = n1 - n2
End If
10: Loop