UCOZ Реклама

Урок N 15

Основы программирования на QBasic

Среда программирования QBasic.

Бейсик (Basic) - диалоговый учебный язык программирования для персональных компьютеров. На современных компьютерах используется следующие версии Basic: GWBasic, QBasic 4.5, Turbo Basic для DOS, Visual Basic 3.0-6.0 для Windows. Здесь мы рассмотрим QBasic 4.5.

Интерфейс QBasic

QBasic входит в состав операционной системы MS-DOS 6.0-6.22. Есть русифицированная версия QBasic.

Для запуска QBasic надо или найти файл qbasic.exe и Enter, или ввести в командную строку qbasic и Enter. Меню - Alt.

Запуск программы Shift-F5.

Получение помощи Shift-F1.

Создать файл: Меню Файл, Сохранить Как, выбрать каталог, задать имя файла, ОК. Файл получит расширение bas.

Сохранить файл: Меню Файл, Сохранить.

Открыть файл, то есть считать его с диска: Меню Файл, Открыть.

Выход из QBasic: Меню Файл, Выход.

Копирование выделенного фрагмента программы в буфер (Edit,Copy) - Ctrl-Insert,

Вставка фрагмента из буфера (Edit,Paste) - Shift-Insert,

Вырезать (Edit,Cut) - Shift-Delete.

Удобно выделять и делать все указанные операции с помощью мыши. Можно выделенный фрагмент программы вставить в другой файл, если после выделения открыть его.

В QBasic 4.5 можно откомпилировать текстовый bas-файл, превратив его в двоичный exe-файл, который можно использовать отдельно, то есть без среды программирования QBasic.

Переменная в программе

Переменная - это область в памяти компьютера, где хранится некоторое значение. Каждая переменная имеет имя, значение и тип.

Имя переменной обозначается английской буквой, после которой может быть цифра, причем первой стоит буква, например: x, y, z, A1, B2. Имя переменной служит для обозначения некоторой величины в программе, которая при выполнении программы может иметь какое-либо значение, но может быть и не определена. Пример задания часто употребляемой константы: pi=3.14159.

Типы переменых: целая, вещественная, логическая, символьная, строковая и др. Если в переменной хранится число, то это числовая переменная, если в переменной хранится слово или фраза, то это строковая (символьная) переменная. В QBasic строковая переменная обозначается a$, b$ (в конце имени стоит знак доллара $). Содержимое хранится в переменной, до тех пор, пока оно не будет специально изменено.

Операция предачи новых данных в переменную называется присваиванием и обозначается в QBasic знаком "=", например, x=10.

Некоторые основные директивы QBasic

Директива REM или апостроф ' - обозначает комментарий к программе или команде. Вся строка (как правило, это поясняющий текст), что идёт после знака комментария, не исполняется. Этот знак используется при отладке программ.

Оператор CLS-оператор очистки экрана. С него часто начинаются программы, работающие в текстовом режиме.

Директива END означает конец программы. Применение этой команды в конце программы не является обязательным.

Все формулы в QBasic записываются в строку, при этом используются следующие математические знаки:

"+" и "-" - сложение и вычитание;

"*" и "/" - умножение и деление;

"^" - возведение в любую степень;

(x+3.14)/(a+b) - используются только круглые скобки и десятичная точка вместо запятой.

Пример: 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 X - вывод на экран значения числа X.

PRINT "Скорость тела равна: V="; V; "м/с" - выводимый на экран текст указывается в кавычках. Вместо знака ";" можно ставить знак ",".

Просто оператор PRINT без текста и знаков даёт пустую строку на экране.

Если при работе в среде QBasic 4.5 вместо слова PRINT ставить знак вопроса "?", а затем нажать Enter, то слово 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

Пример 2 (с использованием строковых переменных). Напечатайте на экране введённые с клавиатуры фамилию, имя и класс ученика.

CLS

INPUT "Введите свою фамилию: ", f$

INPUT "Введите своё имя: ", i$

INPUT "Введите свой класс: ", k$

PRINT

PRINT f$; " "; i$; ", "; k$

END

Управляющие конструкции 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 можно не указывать.

Графические операторы в QBasic.

1. SCREEN N - этот оператор очищает экран и задает графический режим, где N определяет тип графического режима: N=1,7,8,9,12.

При N=12 в операторе COLOR цвет фона не задается. При N=7 режим экрана 320x200 пикселей и 16 цветов. Режим SCREEN 7 используется весьма часто.

Если задан оператор SCREEN N, то оператор CLS можно не использовать.

2. COLOR C1, C2. COLOR - оператор, задающий цвет текста и фона, где C1 задаёт цвет текста, а C2 - цвет фона. C1, C2=0-15.

Пример использования этого оператора - COLOR 14, 1

3. Рисование точки: PSET (X, Y), C, где X,Y - координаты точки, C - цвет точки. C=0-15. X=160, Y=100 - координаты центра экрана для режима SCREEN 7.

Пример: PSET (160, 100), 10

4. Оператор стирания точки: PRESET (X, Y)

5. Рисование линии: LINE (X1,Y1)-(X2,Y2), C. Здесь X1,Y1 и X2, Y2 - координаты концов линии, C-цвет. Пример: LINE (30, 100)-(120, 150), 10

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. Рисование закрашенной окружности:

CIRCLE (X, Y), R, C

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

Установка цветов в операторе COLOR QBasic:

Число Цвет

0 Черный

1 Синий

2 Зеленый

3 Голубой

4 Красный

5 Фиолетовый

6 Коричневый

7 Серый

8 Темно-серый

9 Светло-синий

10 Светло-зеленый

11 Светло-голубой

12 Светло-красный

13 Светло-фиолетовый

14 Желтый

15 Белый

Некоторые сочетания цветов в операторе COLOR QBasic:

1) 14, 8 - желтый на темно-сером фоне;

2) 1, 7 - синий на светло-сером фоне;

3) 5, 14 - фиолетовый на желтом фоне;

4) 4, 11 - красный на голубом фоне;

5) 5, 10 - фиолетовый на светло-зеленом фоне;

6) 15, 5 - белый на фиолетовом фоне;

7) 14, 1 - желтый на синем фоне;

8) 15, 1 - белый на синем фоне;

9) 8, 11 - темно-серый на голубом фоне;

10) 1, 15 - синий на белом фоне.

Вопросы (к урокам 10 и 15)

1. Что такое математическая модель?

2. Какие бывают виды моделей? Приведите примеры физических моделей.

3. Что представляет собой процесс решения задачи на ЭВМ?

4. Что такое программирование и программа?

5. Какие требования предъявляются к программе и какие у неё свойства?

6. Что такое язык программирования и какие языки программирования Вы знаете?

7. Что такое алгоритм и какие он имеет свойства?

8. Какие алгоритмы Вы знаете?

9. Что такое исполнители алгоритмов?

10. Что такое ветвление и цикл? Что такое переменная? Какие бывают типы переменных?

11. Что такое метод последовательной детализации?

12. Что такое транслятор, компилятор и интерпретатор?

Задачи (к урокам 10 и 15)

1. Нарисуйте блок-схему линейного алгоритма. Приведите пример программы с линейным алгоритмом на языке QBasic.

2. Нарисуйте блок-схему разветвляющегося алгоритма. Приведите пример программы на QBasic с разветвляющимся алгоритмом.

3. Нарисуйте блок-схему циклического алгоритма. Приведите пример программы на QBasic с циклическим алгоритмом. Вычислите сумму первых n членов арифметической прогрессии.

4. Используя графические операторы QBasic, создайте простейшие изображения геометрических фигур.

Язык BASIC для ПЭВМ

Учебник по QBasic 4.5

Урок 28. Массивы

Возврат в оглавление

Hosted by uCoz