Оператор 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 проверяется перед выполнениемблока_операторов. Очевидно, что внутри цикла переменные, присутствующие в записи условия, должны меняться, иначе произойдет зацикливание программы. Также очевидно, что в случае, если условие цикла перед входом в цикл ложно, то блок операторов не выполняется ни разу.
|