Управляющие конструкции QBasic
1. Оператор безусловного перехода GOTO N, где N-метка. В качестве N можно взять любое число, не обязательно совпадающее с номером строки, так как в QBasic 4.5 строки можно не нумеровать. Но двух одинаковых меток в одной программе не должно быть. Исполнение программы будет продолжено с той её части, которая начинается с указанной метки.
Пример: ....... GOTO 10 ....... 10 PRINT "Текст" ....... 2. Условный оператор IF...THEN...ELSE (Если...Тогда...Иначе):
IF <условие> THEN <список операторов> ELSE <список операторов> Если заданное условие истинно, выполняется список операторов, стоящий после THEN, в противном случае выполняется список операторов, стоящий после ELSE. Слово ELSE может и отсутствовать. Тогда происходит переход к строке, следующей за оператором IF...THEN. Условия представляют собой логические соотношения: равенства или неравенства = равно, <> неравно, > больше, < меньше, >= больше или равно, <= меньше или равно. При использовании сложных условий (объединении двух и более условий) применяют слова AND (И) и OR (ИЛИ): Условие1 AND (или OR) Условие2... Условный оператор позволяет реализовать алгоритм с ветвлением.
Пример 1: CLS INPUT "Введите год основания Москвы: M="; M IF M = 1147 THEN PRINT "Вы правы!" ELSE PRINT "Вы ошиблись!"
Пример 2: CLS PRINT "Вычислите y=1/(x-2) для всех x" INPUT "Введите x=", x IF x = 2 THEN PRINT "При x=2 функция не определена!": END y = 1 / (x - 2) PRINT "y="; y Применяется также частный случай условного оператора - оператор условного перехода: IF <условие> GOTO N ELSE <список операторов> Число N - метка. Если условие выполняется, то происходит переход по метке N, а иначе выполняется список операторов, стоящих после ELSE. Слово ELSE может и отсутствовать. Тогда происходит переход к строке, следующей за оператором IF...GOTO.
Пример 3: CLS INPUT "Если хочешь каникулы, вводи 1. Если нет, любое число. n=", n IF n = 1 THEN GOTO 10 ELSE GOTO 20 10 PRINT "Хочу каникулы!": END 20 PRINT "Хочу учиться!"
3. Оператор цикла FOR...TO...NEXT... позволяет реализовать циклический алгоритм, когда часть программы может быть выполнена много раз подряд. FOR...TO... - начало цикла, NEXT... - конец цикла. То, что стоит между началом и концом цикла, называется телом цикла. Иногда также применяются вложенные циклы, то есть циклы могут быть вложенными один в другой. FOR X=A TO B STEP H ................... NEXT X Здесь X - переменная, A - начальное значение переменной, B - конечное значение переменной, H - шаг, с которым меняется переменная. Если шаг STEP H отсутствует, то по умолчанию шаг H=1. При этом переменная X называется счётчиком цикла. Повторение участка программы с шагом H происходит до тех пор, пока X<B. Число повторений цикла равно (B-A)/H. При X=B цикл заканчивается и выполняется оператор, следующий за оператором конца цикла NEXT. Возможно, что шаг H<0, но тогда A>B.
Пример 1: Напечатать на экране текст 20 раз. CLS FOR X=1 TO 20 PRINT "С Новым Годом!" NEXT X
Пример 2: Вычислить сумму n первых членов ряда S=1+1/4+1/9+...+1/n^2 CLS INPUT "Введите число членов ряда: n=", n FOR i = 1 TO n S = S + 1 / i ^ 2 NEXT i PRINT "Сумма n первых членов ряда равна: S=", S Пример 3: Нарисуйте 15 разноцветных концентрических окружностей. SCREEN 7 FOR i = 1 TO 15 CIRCLE (160, 100), i * 6, i NEXT i
Пример 4: Разлинуйте экран в клеточку. SCREEN 7 FOR i = 1 TO 32 LINE (0, 10 * i)-(320, 10 * i), 15 LINE (10 * i, 0)-(10 * i, 200), 15 NEXT i Примеры 5,6: Одновременное использование циклического и условного операторов. Вычисление функций, имеющих ограничения в области определения. Примечание: Оператор IF...THEN...ELSE в QBasic должен быть записан в одну строку!
Пример 5. CLS REM Вычислить функцию y=1/(x^2-5*x-6) FOR x = -10 TO 10 IF x ^ 2 - 5 * x - 6 = 0 THEN PRINT "При x=-1, x=6 функция не определена!" ELSE y = 1 / (x ^ 2 - 5 * x - 6) PRINT "x="; x, " y="; y NEXT x
Пример 6. CLS REM Вычислить функцию y=1/SQR(x^2-3*x+2) FOR x = -5 TO 5 IF x >= 1 AND x <= 2 THEN PRINT "При 1<=x=<2 функция не определена!" ELSE y = 1 / SQR(x ^ 2 - 3 * x + 2) PRINT "x="; x, " y="; y NEXT x Для работы с целыми числами в языке Basic служат следующие операторы: 1) Оператор Y = INT(X) округляет до целого дробное число X или результат деления A/B Y = INT(A/B). Тоже самое действие выполняет деление \ X = A \ B Например, INT(3.5) = 3 X = INT(8/3) = 2 X = 8 \ 3 = 2 2) Оператор MOD делит одно число на другое и возвращает только остаток деления: A MOD B. Он вычисляет остаток от деления, например: 1. 14 MOD 5 = 4 2. 11 MOD 4 = 3 3. 17 MOD 3 = 2 4. 15 MOD 2 = 1
Пример 1: Определение чётности или нечётности числа. CLS INPUT "Введите число N=", N IF N MOD 2 THEN PRINT "Число нечётное" ELSE PRINT "Число чётное" END
Пример 2: Разработать программу нахождения и вывода на экран всех чисел, оканчивающихся на 5, и делящихся на 3, из диапазона чисел от 5 до 1000. CLS FOR i = 5 TO 1000 STEP 5 x = i MOD 3 IF x = 0 THEN PRINT i; NEXT i END
Пример 3: Определите, является ли число простым, или нет. Натуральное число N называется простым, если его делителями являются только два числа: 1 и N. CLS INPUT "Введите число N=", N IF N <= 3 THEN GOTO 10 d = 2 IF N MOD 2 = 0 THEN GOTO 20 d = 3 FOR i = 1 TO N d = d + 2 IF N MOD d = 0 THEN GOTO 20 IF N <= d * d THEN GOTO 10 NEXT i 10 PRINT "Число N-простое." INPUT "Для продолжения - Enter.", z END 20 PRINT "Число N-составное. Оно делится на"; d INPUT "Для продолжения - Enter.", w END
Некоторые полезные команды QBasic.
Оператор LOCATE a, b - указывает позицию экрана (a-строка, b-столбец), начиная с которой будет печататься текст или число. Обычно используется перед оператором PRINT. Пример: LOCATE 4, 10: PRINT "Здравствуй, мир!"
Оператор SWAP X1, X2 - заставляет переменные X1 и X2 обменяться своими значениями. Пример: X = 3 Y = 5 SWAP X, Y Директива FILES выдает список подкаталогов и файлов в текущем каталоге. Кроме того, выдается свободная память на жестком диске. Директива SHELL осуществляет сеанс связи с MS-DOS. Возвращение обратно из DOS в QBasic - команда EXIT. Кроме того, директива SHELL "name" позволяет запускать программу name.exe или name.com, указанную в кавычках. Эта программа должна находиться в текущем каталоге, там же, где и *.bas файл. Расширение exe или com можно не указывать.
|