Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QBasic_metodichka.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
349.7 Кб
Скачать

4.2.2. Оператор while-wend-итерационный цикл 1

Операторы WHILE(покa)-WEND (конец) используются для многократного выполнения заданной последовательности операторов, заключенных в этом блоке, если количество циклов заранее не известно.

Формат записи оператора WHILE-WEND:

WHILE условие

…………………

тело цикла

WEND

где

Условие — это выражение Бейсика, которое может быть оценено как истинное или ложное. Операторы тела цикла выполняются до тех пор, пока условие истинно (не равно нулю). Выход из блока следует, если условие ложно (равно нулю).

Если условие является условием равенства, например А=В, то при выполнения цикла WHILE-WEND сначала проверяется условие, а затем в зависимости от результата проверки выполняется или не выполняется тело цикла.

Если условие является условием неравенства, например А<>В, то при выполнении цикла WHILE-WEND сначала выполняется тело цикла, а затем проверяется уcловие, заданное в операторе WHILE.

После выхода из цикла выполняется оператор, следующий за оператором WEND.

Если в блоке не указаны операторы WHILE или WEND, то система выдает сообщение об ошибке

WHILE без WEND или WEND без WHILE

Пример. Определить количество итераций, при котором будет выполняться равенство с точностью до 0,001:

S = 0 'Присвоить начальное значение S

N = 0 'Присвоить начальное значение N

WHILE ABS(2 - S) >= .001 'Начало итерационного цикла

S = S + (1 / 2 ^ N) 'Вычисление очередного приближения

N = N + 1 'Изменение переменной N

WEND 'Конец цикла

PRINT "S="; S 'Вывод результата на экран

PRINT "N="; N '

END

4.2.3. Оператор do-while (until) lоор-итерационный цикл 2

Оператор DO-WHILE(UNTIL)-LOOP повторяет блок операторов, пока условие верно, или до тех пор, пока условие не станет верным.

Формат оператора DO-WHILE(UNTIL)-LOOP:

DO [{WHILE,UNTIL} условие] [блок_операторов]

LOOP

или

DO [блок_операторов]

LOOP [{WHILE,UNTIL} условие]

где

Условие любое выражение Бейсика, которое может быть оценено, как истинное (не ноль) или ложное (ноль)

Блок_операторов одна или несколько строк операторов Бейсика. Если несколько операторов записаны в одной строке, то они должны быть разделены двоеточием.

Если в операторе применяется ключевое слово WHILE, то цикл выполняется до тех пор, пока условие истинно.

Если в операторе применяется ключевое слово UNTIL, то цикл выполняется до тех пор, пока условие не станет истинным.

После того, как условие будет удовлетворено, управление будет передано оператору, следующему за LOOP.

Цикл с условием завершения выглядит так:

DO WHILE X<10

X=X+1

LOOP

Он продолжает выполняться до тех пор, пока значение переменной остается меньше 10. Поскольку Х не присваивалось конкретного значения, цикл будет выполняться 10 раз. Вместо ключевого слова WHILE можно воспользоваться ключевым словом UNTIL, но тогда вместо условия продолжения вычислений формулируется условие завершения. Наш фрагмент эквивалентен следующему:

DO UNTIL X=10

X=X+1

LOOP

Пример 1.

'программа, вычисляющая сумму первых n членов ряда 1+1/2+1/3+....1/n.

CLS 'очистка экрана дисплея

INPUT "введите число членов ряда"; n

S=1: j=1 'S-сумма ряда; j-переменная цикла

DO WHILE j <= n 'начало цикла, делать, пока J <= n

S=S+1/(j+1) 'накапливаем сумму ряда

j=j+1 'изменяем переменную цикла

LOOP 'конец цикла

PRINT "сумма ряда равна "; S 'печать результата

END

Пример 2. Определить сумму членов арифметической прогрессии:

формулу не использовать.

CLS 'очистка экрана дисплея

S=0'S-сумма ряда

J=1 'j-переменная цикла

INPUT "N,D,A"; N, D, A 'Ввод переменных N, D, A

DO WHILE J <= N 'начало цикла, делать, пока J <= N

S = S + (A + (J - 1) * D) 'накапливаем сумму ряда

J = J + 1'изменяем переменную цикла

LOOP'конец цикла

PRINT "S="; S'печать результата

END

Условие выполнения цикла DO-WHILE(UNTIL)-LOOP проверяется перед выполнением блока_операторов. Очевидно, что внутри цикла переменные, присутствующие в записи условия, должны меняться, иначе произойдет зацикливание программы. Также очевидно, что в случае, если условие цикла перед входом в цикл ложно, то блок операторов не выполняется ни разу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]