Текст пособия Бейсик (Basic) - диалоговый учебный язык программирования для персональных компьютеров. На современных компьютерах используются следующие версии Basic: GWBasic, QBasic 4.5, Turbo Basic для DOS, Visual Basic 3.0-6.0 для Windows. Здесь мы рассмотрим QBasic 4.5.
Понятие переменной
Переменная - это область в памяти компьютера, где хранится некоторое значение. Каждая переменная имеет имя, значение и тип, хотя в языке программирования Basic тип переменной можно и не указывать явно.
Имя переменной обозначается английской буквой, после которой может быть цифра, причем первой стоит буква, например: x, y, z, A1, B2. Имя переменной служит для обозначения некоторой величины в программе, которая при выполнении программы может иметь какое-либо значение, но может быть и не определена. Пример задания часто употребляемой константы: pi=3.14159.
Типы переменных: целая, вещественная, логическая, символьная, строковая и др. Если в переменной хранится число, то это числовая переменная, если в переменной хранится слово или фраза, то это строковая (символьная) переменная. В QBasic строковая переменная обозначается a$, b$ (в конце имени стоит знак доллара $). Вносимое содержимое хранится в переменной до тех пор, пока оно не будет специально изменено.
С понятием переменной связана операция передачи новых данных в переменную, которая называется присваиванием и обозначается в QBasic знаком "=". Например, x=10, читается следующим образом «переменной с названием x присвоить значение равное 10». Некоторые основные команды и операторы QBasic
Под командой языка программирования будем понимать некоторое слово (или последовательность символов), при встрече которого в программе интерпретатор (или компилятор) языка будет производить определенное действие.
Команда REM (или апостроф ') – обозначает комментарий к программе или команде. Вся строка (как правило, это поясняющий текст), что идёт после знака комментария, не исполняется. Этот знак используется при отладке программ и для повышения читабельности программ.
Оператор CLS – оператор очистки экрана. С него часто начинаются программы, работающие в текстовом режиме.
Команда END означает конец программы. Применение этой команды в конце программы не является обязательным.
Правила написания формул Все формулы в языке Basic записываются в строку, при этом используются следующие математические знаки:
+ и – - сложение и вычитание;
* и / - умножение и деление;
^ - возведение в любую степень;
В записи формул можно использовать круглые скобки, а в записи чисел десятичную точку вместо запятой.
Пример: S=Vo*t+g*t^2/2
Некоторые из математических функций встроены в QBasic. Некоторые функции и их назначение приведены в следующей таблице. Функция | Назначение | SQR(X)
| извлечение квадратного корня;
| ABS(X)
| модуль (абсолютная величина) числа;
| SIN(X);COS(X);
TAN(X)
| тригонометрические функции синус, косинус и тангенс угла в радианах;
| ATN(X)
| арктангенс числа в радианах;
| INT(X)
| округление числа (дробная часть числа отбрасывается);
| RND(X)
| случайное число;
| z = y MOD x
| целый остаток от деления y на x.
| LOG(X)
| логарифмическая функция (натуральный логарифм по основанию e=2.71828);
| EXP(X)
| показательная (экспоненциальная) функция.
| Операции ввода-вывода информации
Обычно в программе требуется запросить информацию от пользователя или вывести на экран некоторое сообщение. Для этих целей существуют операторы ввода-вывода информации.
Для вывода (печати) информации на экран применяется оператор PRINT (или знак вопроса, который автоматически заменяется на оператор PRINT). Пример:
PRINT X – вывод на экран значения числа X.
PRINT "Скорость тела равна: V="; V; "м/с"
Выводимый на экран текст указывается в кавычках. Вместо знака ";" можно ставить знак ",".
Оператор PRINT без текста и знаков выдаёт пустую строку на экране.
Ввод данных с клавиатуры осуществляется с помощью оператора INPUT. Пример:
INPUT X – ввод числа X. При выполнении этой команды на экране появится знак вопроса, и компьютер будет ждать ввода переменной Х.
Можно ввести в кавычках подсказку для пользователя, которая будет выводиться на экран.
Пример:
INPUT "Введите число Х="; X
Здесь «Введите число Х=» – текст подсказки. После текста подсказки можно ставить знак "," вместо знака ";", но тогда знака вопроса "?" на экране не будет, а вместо него в качестве приглашения будет мигать курсор.
Пример 1: Вычислить площадь треугольника по формуле Герона.
CLS
'Определите площадь треугольника по формуле Герона.
INPUT "Введите величину стороны a: a=", a
INPUT "Введите величину стороны b: b=", b
INPUT "Введите величину стороны c: c=", c
p = (a + b + c) / 2
S = SQR(p * (p - a) * (p - b) * (p - c))
PRINT "Ответ: площадь треугольника равна: S="; S
Графические операторы в Qbasic
QBasic дает возможность работать в двух режимах экрана: текстовом и графическом. По умолчанию используется текстовый режим вывода. В этом разделе мы рассмотрим операторы, связанные с графическим режимом.
1. Оператор SCREEN.
Для того, чтобы задать графический экран, необходимо воспользоваться оператором SCREEN N, где N определяет тип графического режима: N=1,7,8,9,12. От типа режима зависит разрешение экрана и количество цветов, доступных пользователю.
Если задан оператор SCREEN N, то оператор CLS можно не использовать, т.к. при переходе из одного режима в другой очистка экрана производится автоматически.
2. Оператор COLOR.
COLOR C1, C2 – оператор, задающий цвет текста и фона, где C1 задаёт цвет текста, а C2 - цвет фона. C1 и C2 – числа, лежащие в промежутке от 0 до 15.
3. Оператор PSET.
Предназначен для рисования точки на экране. Используется в виде: PSET (X, Y), C, где X, Y - координаты точки на экране, а C - цвет точки.
Замечание: Начало координат в QBasic находятся в верхнем левом углу экрана.
4. PRESET (X, Y) – оператор стирания точки. Действует аналогично предыдущему, с той лишь разницей, что он закрашивает точку в цвет фона.
5. Рисование линии: LINE (X1,Y1)-(X2,Y2), C. Здесь X1,Y1 – координаты начала линии, а X2, Y2 - координаты конца линии, C-цвет линии.
6. Рисование прямоугольной рамки:
LINE (X1,Y1)-(X2,Y2),C,B. Здесь X1,Y1 и X2,Y2 - координаты концов диагонали прямоугольника, а C – цвет рамки.
Пример: LINE (90, 110)-(140, 170), 10, B
7. Рисование закрашенного прямоугольника:
LINE (X1,Y1)-(X2,Y2), C, BF. Здесь X1,Y1 и X2,Y2-кординаты концов диагонали, C – цвет прямоугольника. Пример: LINE (90, 110)-(140, 170), 12, BF
8. Рисование окружности: CIRCLE (X, Y), R, C
Здесь X,Y - координаты центра, R - радиус, C - цвет.
Пример: CIRCLE (160, 110), 60, 13
9. Закрашивание произвольной области:
PAINT (X, Y), C1, C2. Здесь PAINT - оператор закрашивания. X,Y - координаты точки внутри закрашиваемой области, C1 - цвет закрашивания, C2 - цвет линии границы.
Пример: Нарисовать закрашенную окружность.
CIRCLE (160, 130), 50, 13
PAINT (160, 110), 11, 13
10. Рисование дуги и сектора: CIRCLE (X, Y), R, C, Ф1, Ф2
Здесь Ф1, Ф2 начальный и конечный углы дуги в радианах (углы считаются от горизонтальной линии против часовой стрелки). У сектора перед Ф1 и Ф2 стоит знак минус: CIRCLE (X, Y), R, C, -Ф1, -Ф2.
Пример
(pi=3.14159):
CIRCLE (160, 140), 70, 11, pi / 4, 3 * pi / 4
CIRCLE (160, 140), 60, 10, -pi / 4, -3 * pi / 4
11. Рисование эллипса: CIRCLE (X, Y), R, C, , , K
Здесь K – эксцентриситет эллипса. При K<1 – эллипс вытянут вдоль большой оси. При K>1 – эллипс вытянут вдоль малой оси.
Пример: CIRCLE (160, 100), 70, 15, , , 0.5
Пример использования графических операторов в Qbasic. Нарисовать квадрат, три концентрические окружности и точку. Программа имеет вид:
SCREEN 7
COLOR 14, 8
PRINT "Пример графики в QBasic:"
LINE (100, 50)-(220, 150), 13, B
CIRCLE (160, 100), 20, 11
CIRCLE (160, 100), 30, 12
CIRCLE (160, 100), 40, 14
PSET (160, 100), 15
END
Для установки цветов в операторах Qbasic можно пользоваться таблицей: Число
| Цвет | Число | Цвет
| 0
| Черный
| 8
| Темно-серый
| 1
| Синий
| 9
| Светло-синий
| 2
| Зеленый
| 10
| Светло-зеленый
| 3
| Голубой
| 11
| Светло-голубой
| 4
| Красный
| 12
| Светло-красный
| 5
| Фиолетовый
| 13
| Светло-фиолетовый
| 6
| Коричневый
| 14
| Желтый
| 7
| Серый
| 15
| Белый
|
Управляющие конструкции 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 происходит до тех пор, пока XB.
Пример 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
Контрольные задания
Нарисуйте блок-схему линейного алгоритма. Приведите пример программы с линейным алгоритмом на языке QBasic.
Нарисуйте блок-схему разветвляющегося алгоритма. Приведите пример программы на QBasic с разветвляющимся алгоритмом.
Нарисуйте блок-схему циклического алгоритма. Приведите пример программы на QBasic с циклическим алгоритмом. Вычислите сумму первых n членов арифметической прогрессии.
Используя графические операторы QBasic, создайте простейшие изображения геометрических фигур.
2>1> |