русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Оператор циклу Do…Loop


Дата додавання: 2013-12-24; переглядів: 2189.


Оператор циклу While…Wend

Синтаксис:

While<умова>

<Група операторів>

Wend

де умова – логічний вираз, який оцінюється як істина (1), або хибність (0).

Дія: Оператор призначений для організації циклу з передумовою, у якому вказана група операторів виконується циклічно до того часу, поки вказана умова не стане хибною. Змінна, що входить в умову, змінюється в тілі циклу. Для дострокового виходу із циклу в разі виконання деякої додаткової умови вживається оператор Exit While.

Допускається використання вкладених циклів. При цьому кількість операторів While і відповідних їм Wend повинна збігатись.

Приклад.Обчислити:

Створимо форму без жодного постійного елемента керування. Подія для програмування – завантаження форми.

Private Sub Form_Load()

Dim I%, n%, S!

N=InputBox(“n=”)

I=1: S=0

While I <=n

S=S+cos(i)/(I+1)^3

I=I+1

Wend

MsgBox (“S=”+Str(S))

End

End Sub

 

Поряд з операторами For…Next та While…Wend застосовується більш сучасний оператор циклу Do…Loop, що має два можливих формати: з верхнім і нижнім закінченням.

Першому формату відповідає наступний синтаксис:

Do {While/Until}<умова>

<група операторів >

[Exit Do]

Loop

Конструкція {While/Until} означає, що використовується тільке одне з ключових слів: або While (Поки),або Until (До).

При такій формі запису спочатку здійснюється перевірка умови повторення циклу і якщо вона не виконується, то цикл ні разу не виконується. Фрагменти While/Until мають умови, що визначають вихід з циклу чи його повторення. В конструкції While записується умова, хибність якої визначає вихід з циклу – перехід до оператора, що йде за оператором циклу, тобто після слова Loop. Хибність логічного виразу (умови) в конструкції Until визначає повторення циклу, яке здійснюється до її виконання, після чого відбувається вихід з циклу.

Другому формату відповідає синтаксис

Do

<група операторів>

[Exit Do]

Loop {While/ Until} <умова>

де <умова> – логічний вираз, який може приймати два значення: істина (не 0), або хибність (0);

While – виконання циклу, поки умова істина;

Until – виконання циклу, поки умова хибна:

Дія: У цій формі запису спочатку виконується група операторів (тіло циклу), після чого виконується перевірка умови повторення циклу. Таким чином, цей цикл завжди виконується хоча б один раз.

Цикл з нижнім закінченням вживається тоді, коли оператори тіла циклу повинні виконуватися хоча б один раз, а з верхнім – навіть жодного.

Серед операторів тіла циклу може бути оператор Exit Do,що забезпечує негайний вихід з циклу (до досягнення ключового слова Loop)

Приклад. Обчислити суму спадного ряду, використовуючи усі можливі варіанти використання оператора Do…Loop.

з точністю ε=10-5

Наведемо 4 варіанти реалізації циклу Dо Loop для обчислення суми ряду.

Варіант 1

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

s=0: k=1: e=0.00001

Do

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop While Abs(h) >e

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Варіант 2

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

s=0: k=1: e=0.00001:h=1

Do While Abs(h) > e

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Варіант 3

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

s=0: k=1: e=0.00001

Do

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop Until Abs(h) >e

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Варіант 4

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

S=0: k=1: e=0.00001:h=1

Do Until Abs(h) < e

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Приклад. Розглянемо задачу економічного характеру.

При відвідуванні магазину покупець робить покупки в процесі знайомства з товаром, тобто заздалегідь не відомо, які товари будуть куплені. Потрібно визначити вартість усіх покупок. Передбачити випадок, коли немає жодної покупки.

Для визначення загальної вартості покупок необхідно врахувати вартість кожного виду товару відібраного покупцем, для чого потріно знати його ціну і кількість. Продавці звичайно ведуть облік проданих товарів, тому крім ціни і кількості передбачимо введення назви товару (або його коду). Кодом може слугувати порядковий номер товару в спискові товарів цього магазину чи відділу. Отримані відомості бажано зберегти на дискові в файлі послідовного чи безпосереднього доступу. Маючи це на увазі, розмістимо на формі три елементи ListBox (Списки), в які будемо заносити дані про покупки.

В Список1 запишемо коди, в Список2 – Ціни (Грн.), в Список3 –кількість. Над списками розмістимо відповідні мітки. Вводити дані будемо за допомогою функції InputBox, запитання до покупця і підсумок будемо виводити за допомогою функції MsgBox. Розмістимо на формі ще командну кнопку, яку перейменуємо на Обчислити, змінивши відповідно надпис на ній. За подію для програмування виберемо щиглик на кнопці Обчислити. Оскільки Ціна і Вартість S повинні подаватися в горшових одиницях, то оголошуємо їх As Currency, кількість оголошуємо числом одинарної точності (As Single), код товару відображується цілим числом (As Integer).

Код процедури має вигляд:

Private Sub Обчислити_Click()

Dim Код As Integer, Ціна As Currency, S As Single, i As Integer

S=0: ‘ Загальна вартість

i=0 ‘ номер покупки

Do While MsgBox(“Будуть ще покупки?”, vbQuestion + _ vbYesNo, “Покупки”)=vbYes

i=i+1

Код=Val(InputBox(“Введіть ціну”, i & “ –го товару”))

Ціна=CCur(InputBox(“Введіть ціну”, i & “ –го товару”))

Кількість=Val(InputBox(“Введіть ціну”, i & “ –го товару”))

Список1. AddItem Код

Список2. AddItem Ціна

Список3. AddItem Кількість

S=S+Ціна*Кількість

Loop

MsgBox “Вартість всіх покупок “ & Format( S, “0.00”) & “Грн.”

End Sub

 

Рисунок 3.10. Результат дії додатку Покупки


4.4. ОПЕРАТОР ЦИКЛУ FOR...NEXT

Синтаксис:

For х=х0 То xn [ Step h ]

<Група операторів>

[Exit For]

Next x,

де х – параметр циклу;

xo, xn, h – арифметичні вирази, значення яких визначають:

x0 – початкове значення параметра циклу;

xn – кінцеве значення параметра циклу;

h – крок, з яким змінюється параметр циклу. Якщо h=1,то Step h не пишеться. Exit For використовується в разіі необхідності дострокового виходу з циклу.

Дія оператора. При виконанні оператора циклу For...Next в першу чергу обчислюється (якщо це необхідно) і запам'ятовується початкове значення (x0), кінцеве значення (хn) та крок зміни (h) параметра циклу. Параметру циклу присвоюється початкове значення (х=х0) і перевіряється умова, чи перевищує значення параметра циклу х значення xn. Якщо значення параметру циклу знаходиться в інтервалі між початковим та кінцевим значенням, виконуються оператори, що знаходяться між операторами For та Next (тіло циклу). Далі оператор циклу збільшується на величину h. Дії повторюються до того часу, поки параметр циклу х не стане більшим за xn. В такому випадку управління передається на виконання оператора, що стоїть в програмі після оператора Next x.

При виході з циклу достроково (наявність оператора Exit For) значення параметра циклу дорівнює останньому значенню в середині циклу.

При виході з циклу через оператор Next значення параметру дорівнює останньому його значенню плюс величина кроку зміни параметру.

Дозволяється використання циклу в циклі ( вкладених циклів ). В цьому випадку внутрішній цикл повинен повністю знаходитися в тілі зовнішнього циклу.

Приклад. Скласти схеми та програми для варіантів (а) та (б) обчислення значень а, р та у. Результати отримати у вигляді таблиці значень.

a) х={1; 1,5; 2, ... 5}, b) x={1,5; 4,9; 8,36; -0,87 }

Параметри початкового (х0=1.5), кінцевого (хn=5) значень та кроку (h==0.5) визначаються із вказанної послідовності значень змінної х (варіант (а)).

Для введення змінних d, с, х0, хn, h створюємо масив z (використовуємо функцію Array)

Програма до варианту а).

Private Sub Комманда1_Click()

Rem Програма до варіанту а)

Dim a!,y!,p!

Z=Array(4.7,1.854,1,5,5,0.5)

D=z(0):c=z(1): x0=z(2): xn=z(3); h=z(4)

Print Tab (10);”Таблица”

Print Tab(10); String$(14,”*”)

Print Tab(3);”x”;Tab (12);”a”;_

Tab(24);”y”;Tab (48);”p”

Print String$(52,”*”)

For x=x0 To xn Step 0.5

A=sqr(17.89)*x+(c+sin(d))/(c-cos(d))

If a>x then

Y=Atn(a+x)

Else

Y=log(ABS(cjs(y)))+exp(x)

Print x;Tab(8);a; Tab(19);y; Tab(33); p

Next x

Print string$(52,”*”)

End sub

 

Програма до варианту b)

Розглядаємо х як масив чисел, тобто x={Xi}, і=1…n (n=4)

Option Base 1

Private Sub Комманда1_Click()

Rem програма по варіанту b)

Dim a!, y!, p!

Z=Array(4.7,1.854)

D=z(1):c=z(2)

X=Array(1.5,4.9,8.36, -0.87)

n=InputBox(“n=”)

Print Tab(10);”Таблиця”

Print Tab(10);String$(14,”*”)

Print Tab(3); “x”; Tab(12); “a”;_

Tab(24); “y”; Tab(40); “p”

Print String$(53,”*”)

For I=1 To n

A=Sqr(17.89)*x(i)+(c+sin(d))/(c-cos(d))

If a>x(i) then

Y=Atn(a+x(i))

Else

Y=log(abs(a+x(i)))

End If

P=Sqr(abs(cos(y)))+exp(x(i))

Print x(i); Tab(19);y; Tab (33);p

Next I

Print String$(53,”*”)

End Sub

Приклад. Cкласти програму для обчислення Z!

Реалізуємо алгоритм блок-схема якого відображена на рис.1.7.

Розмістимо на формі лише один елемент управління – командну кнопку, ім’я якої і напис на якій змінимо з CommandButton1 на Пуск.

Запрограмуємо подію – щиглик (Click) на кнопці Пуск. Для введення Z використаємо оператор InputBox(), для виведення результату – оператор MsgBox().

Private Sub Пуск_Click()

Dim Z %, P%, i%

Z=Val(Input(“Z=?”,”Задайте Z”)

P=1

For i=1 to Z

P=P*i

Next i

MsgBox=”Z!=” & P

End Sub

 

 

Рисунок 3.9.Результат обчислення Z! для Z=7.

 


КОНТРОЛЬНІ ЗАПИТАННЯ

 

1. У яких випадках використовують розгалужені алгоритми? Наведіть приклади.

2. Яке призначення має умовний оператор?

3. Порівняйте за призначенням лінійну та блочну форми умовного оператора?

4. З якою метою можна застосовувати функцію MsgBox?

5. Придумайте три задачі з повсякденного життя, де було б використано умовний оператор.

6. Яке призначення мають оператори циклу?

7. У яких випадках використовуються оператори умовного циклу? Наведіть приклади.

8. За допомогою яких операторів можна організувати цикл?

9. Які типи циклів розрізняють?

10. Який синтаксис має оператор циклу While…Wend?

11. Який синтаксис має оператор циклу Do…Loop?

12. У чому полягає відміннісь у вживанні ключових слів While та Until? Чи можуть вони вживатись одночасно?

13. Який синтаксис має оператор циклу For…Next?

14. Яким чином організуються ітераційні цикли при програмуванні на Visual Basic? Яким чином можна використовувати вкладені цикли під час програмування?

15. Чи завжди можна замінити оператор циклу з лічильником на оператор умовного циклу і навпаки?



<== попередня лекція | наступна лекція ==>
Оператор Select Case | Лекція 6


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн