Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
23.02.2016
Размер:
4.02 Mб
Скачать

3.6.4 Оператори циклів

Цикли з невизначеною кількістю повторень розрізняються на цикли з передумовою, в яких перевірку кінця циклу здійснюють перед операторами тіла циклу тацикли з постумовою, в яких ця операція виконується після виконання операторів тіла. В обох випадках умову кінця циклу можна перевіряти оператором If. Але в мові VB додатково є можливість виконувати таку перевірку з допомогою структури DO.

<Початкове значення змінної циклу>

DO While <умова>

<Оператори

тіла

циклу>

Loop

При виконанні цього циклу VB спочатку перевіряє <умову> і якщо вона істинна, виконує оператори тіла циклу. В середині тіла циклу потрібно передбачити зміну змінної циклу, нове значення якої знову перевіряється на предмет закінчення циклу. Цикл закінчується при хибному значенні <умови> і наступний оператор буде записаний після оператора Loop.

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

<Початкове значення умови кінця циклу>

DO

<Оператори

тіла

циклу>

Loop While <умова>

Замість службового слова While в цих програмних фрагментах можна проставити слово Repeat. В цьому випадку цикл буде продовжуватися не при істинному (True) значенні умови, а при хибному (False).

Приклад.Запрограмуємо алгоритм знаходження першого числа, факторіал якого більший числа Z (рис. 4).

Варіант 1

Z=InputBox(“Введіть число Z”, “Факторіал”, 1)

I=0: F=1

Do While F<Z

I=I+1: F=F*I

Loop

Print I; “!=”; F; “> числа ”; Z

Варіант 2

Z=InputBox(“Введіть число Z”, “Факторіал”, 1)

I=0: F=1

Do

I=I+1: F=F*I

Loop While F<Z

Print I; “!=”; F; “> числа ”; Z

Варіант 3

Z=InputBox(“Введіть число Z”, “Факторіал”, 1)

I=0: F=1

Do Until F>Z

I=I+1: F=F*I

Loop

Print I; “!=”; F; “> числа ”; Z

Варіант 4

Z=InputBox(“Введіть число Z”, “Факторіал”, 1)

I=0: F=1

Do

I=I+1: F=F*I

Loop Until F>Z

Print I; “!=”; F; “> числа ”; Z

Для реалізації циклічних алгоритмів з визначеною кількістю повторень (рис. 5) застосовують оператор For, що має такий синтаксис:

For <змінна циклу> = nпTo nк[<Step кр>]

<Оператори

тіла

циклу>

Next

Якщо параметр <Step кр> відсутній, крок переадресації вважається рівним 1.

Приклад.Запрограмуємо знаходження найбільшого по модулю елемента в одновимірному масиві (рис. 6).

‘ Найбільший по модулю елемент вектора

T = ABS(A(1)): R = 1

For i=2 To N

If T < ABS(A(i)) Then T = ABS(A(i)): R = i

Next

Print “Найбільший елемент масиву ”; A(R)

Print “Він знаходиться на ”; R; “- тому рівні масиву”

Зрозуміло, що для успішної роботи такого програмного фрагменту, потрібно спочатку ввести масив в пам’ять комп’ютера:

N = InputBox(“Введіть розмірність масиву ”, “масив”,1)

For i=1 to n

A(i)=InputBox(“Введіть А(”+Str(i)+”) елемент масиву”, “Введення”, 0)

Next

Для програмування алгоритмів обробки елементів числових таблиць (матриць) застосовуються вкладені оператори For, що працюють аналогічно алгоритмічним фрагментам рис. 7.

Розглянемо програмування алгоритму знаходження добутку додатніх елементів в стовпцях матриці (рис. 8), прив’язавши його до кнопки 2:

Sub Command2_Click()

n%=InputBox(“Скільки рядків в матриці?”, “Рядки”, 1)

m%=InputBox(“Скільки стовпців має матриця?”, “Стовпці”, 1)

For i%=1 To n%: For j%=1 To m%

InputBox(“Введіть А(”+Str(i%)+“,”+Str(j%) + ”):”, “Матриця”, 0)

Next j%, i%

Print “Знаходження добутку елементів матриці”

Print: Print “Робота студента групи У-41 Яцківа А.Я.”

Print: Print “ Початкова матриця:”

For i%=1 To n%: For j%=1 To m%

Print A(i%,j%);

Next j%: Print: Next i%

Print: Print “ Результати роботи програми:”

For i%=1 To n%: For j%=1 To m%

If A(i%,j%)>0 Then D=D*A(i%,j%)

Next i%

Print “В ”; j%; “- тому стовпці добуток додатніх елементів = ”; D

Next j%

Print: Print Tab(15); “Кінець програми”

EndSub

Соседние файлы в папке Студентам заочникам ФЕФ