Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа №17(алгор).doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
95.23 Кб
Скачать

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

Такие алгоритмические конструкции используются для выполнения в программе повторяющихся действий (эти повторяющиеся действия называют телом цикла). Использование циклов позволяет сократить число команд в программном коде проекта, облегчает чтение и отладку программ. Рассмотрим два основных типа циклов.

  1. Цикл со счетчиком (for … next)

Такой цикл применяют, когда заранее известно, сколько раз должно выполняться тело цикла. В данном цикле вводится переменная-счетчик (обозначим ее I), которая определяет число повторений цикла. Для счетчика задаются значения параметров: начальное значение (N) – присваивается переменной-счетчику перед первым выполнением цикла; конечное значение (K); величина шага изменения счетчика (H) - на эту величину увеличивается значение счетчика после каждого прохода цикла. Перед каждым выполнением цикла значение счетчика сравнивается с конечным значением: если I  K при H > 0 (I  K при H < 0), то выполняются команды тела цикла. В противном случае цикл завершается, и управление передаются следующему после NEXT оператору.

FOR счетчик = нач. значение TO кон. значение STEP шаг

Тело цикла

Next счетчик

Ключевое слово Step можно опустить. Тогда значение шага будет равно единице.

Особенно часто циклы со счетчиком используются при работе с массивами.

Пример: вычислить сумму первых ста натуральных чисел.

Программный код:

Sub Command1_Click()

For I = 1 TO 100

S = S + I

Next I

Label1.Caption = S

End Sub

С применением цикла со счетчиком кодируются рассмотренные в работе проекты «Авангард», «Порядок символов», «Меньше 10».

  1. Условный цикл (do while … loop)

Используется, когда число повторений цикла зависит от некоторого условия.

С

Тело цикла выполняется до тех пор, пока выполняется условие цикла.

ловесная форма записи:

Пока условие выполняется, повторять:

Действия (тело цикла)

Конец цикла.

  1. Условие в начале цикла (цикл с предусловием):

Do while условие

операторы тела цикла

Loop

  1. У

    Do

    операторы тела цикла

    Loop while условие

    словие в конце цикла (цикл с постусловием):

Иногда бывает необходимо прервать выполнение цикла. Тогда внутри тела цикла используют оператор EXIT FOR для цикла со счетчиком (EXIT DO для условного цикла).

Пример №1

Брокер получает процент от суммы сделки. Для сделок, сумма которых составляет меньше 150т.р. вознаграждение брокера составит 5%, если сумма договора составляет от 150 т.р. до 500 т.р. – 4,5%, а для сделок, сумма которых составляет больше 500 т.р. – 3,5%. Составить программу для расчёта вознаграждения брокера.

Таблица 2.

Элемент управления

Свойства

Значения

UserForm

Caption

Программирование ветвлений

Label1

Caption

Вычисление вознаграждения брокера

Label2

Caption

Сумма сделки

Label3

Caption

Вознаграждение

TextBox1

Name

txtSummaSdelki

TextBox2

Name

txtNagrada

CommadButton1

Name

cmdRun

Caption

Расчёт

CommadButton2

Name

cmdClear

Caption

Очистка

    • Код программы:

Private Sub cmdRun_Click()

Dim S As Single

Dim P As Single

S=Val(txtSummaSdelki.Text)

If S<= 150000 Then

P=S*0.05

ElseIf S>= 500000 Then

P=S*0.03

Else

P=S*0.04

End If

txtNagrada.Text = Str(P)

End Sub

В приведённой выше части кода программы использовалась функция InputBox. Данная функция предназначена для ввода данных в программу. Она имеет следующий синтаксис:

InputBox (Запрос [, Заголовок] [, По_умолчанию] [, Xpos] [ Ypos] [, Справка, Раздел])

Пример №2: по введенному числу определить день недели

Select Case x

Case 1

MsgBox ("Пон-ник")

Case 2

MsgBox ("Вторник")

Case 3

MsgBox ("Среда")

Case 4

MsgBox ("Четверг")

Case 5

MsgBox ("Пятница")

Case 6

MsgBox ("Суббота")

Case 7

MsgBox ("Воскресенье")

Case Else

MsgBox ("Такого дня не существует")

End Select

Пример №3: на форме строятся разноцветные окружности, произвольно расположенные, разного радиуса (от 50 до 150) до тех пор, пока значение радиуса не станет равно 100. Количество таких окружностей подсчитывается и выводится на экран.

Программный код:

Private Sub Command1_Click()

Dim r As Byte

Dim i As Integer ‘счетчик количества построенных окружностей

Randomize

Do

r = Rnd * 100 + 50

Circle (Rnd * Form1.Width, Rnd * Form1.Height), r, RGB(Rnd * 255, Rnd * 255, Rnd * 255)

i = i + 1

Loop While r <> 100 ‘цикл повторяется, пока радиус отличен от 100

Label1.Visible = True

Label1.Caption = i

End Sub

Пример №4

Найдите значения функции у=sin(x) на интервале [a;b].

    • К од программы:

Private Sub cmdSinus­_Click()

а!=Val(txtA)

b!=Val(txtB)

For i%=a To b

y!=Sin(i)

txtSin = txtSin +”x=” + Str(i)+ “, y=”+Str(y) + vbCrlf

Next i

End Sub

Private Sub cmdCleaR_Click()

txtA = ""

txtB = ""

txtSin = ""

End Sub

    • Сделайте расчёты для разных а и b. Внимание a<b!!!

    • Добавьте в код программы строку в которой бы шла проверка на сравнение а и b. И если a>b, то программа завершала бы работу.