- •Содержание
- •Введение
- •1. Общие сведения
- •2. Основные элементы языка Бейсик
- •2.1. Алфавит.
- •2.2. Типы данных.
- •2.3. Стандартные функции языка Бейсик
- •2.4. Арифметическое выражение
- •3. Управляющие операторы языка Бейсик
- •3.1. Оператор присваивания
- •3.2. Операторы ввода/вывода данных
- •4. Операторы управления
- •4.1. Программирование разветвлений
- •4.1.1. Логические выражения и выражения отношения
- •4.1.2. Оператор if-then-else-условный оператор
- •4.1.3. Оператор select case
- •4.2. Программирование циклов
- •4.2.1. Операторы организации циклов for-next
- •4.2.2. Оператор while-wend-итерационный цикл 1
- •4.2.3. Оператор do-while (until) lоор-итерационный цикл 2
- •4.3. Процедуры и функции
- •5. Описание и обработка массивов
- •5.1. Оператор размерности массива dimension
- •5.2. Сортировка массивов
- •5.2.1. Сортировка методом пузырька
- •5.2.2. Сортировка массива с помощью оператора обмена swap
- •5.2.3. Другие методы сортировки
- •6. Строковые выражения и функции
- •7. Файлы данных
- •8. Работа с графикой
- •Литература
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 проверяется перед выполнением блока_операторов. Очевидно, что внутри цикла переменные, присутствующие в записи условия, должны меняться, иначе произойдет зацикливание программы. Также очевидно, что в случае, если условие цикла перед входом в цикл ложно, то блок операторов не выполняется ни разу.