- •Глава 1 . “общие сведения о языке программирования basic”
- •§1. Происхождение языка.
- •§2. Алфавит языка.
- •§3. Величины.
- •§4. Выражения.
- •Глава 2. “Операторы языка. Линейные программы.”
- •§ 5 Оформление программ.
- •§ 6 Оператор присваивания let.
- •§ 7 Оператор print.
- •§ 7.1 Форматированный вывод чисел на печать print using.
- •§ 7.2 Управление выводом на печать locate.
- •§ 8 Ввод данных с клавиатуры input.
- •Input список ввода
- •§ 8.1 Операторы data и read .
- •§ 9. Функции символьного переменного.
- •§ 10. Операторы графики. Графический режим.
- •§10.1 Работа команды сolor.
- •§ 9.3 Операторы рисования точек.
- •§ 10.2 Абсолютные и относительные координаты.
- •§ 10.3 Рисование линий и прямоугольников.
- •§ 10.4 Рисование окружностей, элипсов и дуг.
- •§ 10.5 Решение задач.
- •Глава 3. Циклические структуры.
- •§ 11. Понятие цикла.
- •§ 11.1 Счетный цикл for...Next.
- •§ 11.2 Вложенные циклы.
- •§ 11.3 Решение задач.
- •§ 11.4 Программирование динамического элемента.
- •§ 10.4 Цикл “ пока ” — while ... Wend.
- •§ 10.5 Генератор случайных чисел.
- •Глава 4. Управляющие структуры.
- •§ 11 Ветвление.
- •§ 11.1 Оператор условного перехода.
- •§ 11.2 Простые и составные условия.
- •§ 11.3 Решение задач.
- •§ 11.4 Безусловный переход.
- •§ 12 Подпрограммы.
- •Глава 5. Массивы.
- •Массив — это набор упорядоченных по номерам переменных одного типа, с общем именем.
- •§ 13 Линейные массивы.
- •§ 13 Заполнение массива.
- •§ 13.3 Вывод массива на печать.
- •§ 13.4 Решение задач.
- •§ 13.5 Символьные массивы.
- •§ 14 Двумерные массивы (матрицы).
§ 11.4 Безусловный переход.
Бывают ситуации, когда в программе требуется пережать управление в другое место программы независимо от каких-либо условий. Это осуществляется с помощью оператора безусловного перехода GOTO.
ОБЩИЙ ВИД:
GOTO метка
где МЕТКА — это набор символов, начинающийся с буквы может содержать любое количество символов (букв и цифр) и заканчивающийся двоеточием.
Задача 1.
Выводить на экран квадраты чисел, вводимых с клавиатуры.
Примечание: Чтобы не произошло зацикливания, необходимо оговорить условие, при котором ввод чисел прекращается.
Решение.
CLS
PRINT “При вводе числа 0 программа закончит работу “
Met1:
INPUT “Введите число: “; A
IF A< >0 THEN PRINT A^2 ELSE END
GOTO Мet1
Если мы введем последовательно числа 7, -2, 0.4, 0, то получим следующий результат:
При вводе числа 0 программа закончит работу
Введите число: 7
49
Введите число: -2
4
Введите число: 0.4
0.16
Введите число: 0
ОК
Задача 2.
Выводить на экран строковую константу “QBASIC” до нажатия клавиши.
CLS
MET 1: PRINT ‘QBASIC”
IF INKEY$=“” THEN GOTO MET1
END
ПРИМЕЧАНИЕ:
Как уже было сказано выше, с помощью INKEY$ удобно создавать задержку в программе до нажатия клавиши. Например:
PRINT “Нажмите любую клавишу “
met: IF INKEY$=“” THEN GOTO met
В этом случае на экран будет выведена надпись “Нажмите любую клавишу “ и до нажатия какой-либо клавиши оператор IF “зацикливает “ сам себя, проверяя содержимое буфера клавиатуры.
С этой же целью можно использовать и цикл WHILE...WEND:
WHILE INKEY$=“”
WEND
§ 12 Подпрограммы.
В некоторых задачах возникает необходимость многократного использования одного и того же блока команд. Многократное повторение одного и того же блока команд в разных местах программы делает ее громоздкой и занимающей значительный объем памяти.
Создание программных модулей очень облегчает составление сложных программ. Очень удобно из разных точек программы обращаться к одному и тому же модулю с последующим возвратом в точку обращения.
Программный модуль, к которому происходит обращение, называют подпрограммой.
В QBASICE’е для организации подпрограмм существуют два оператора — GOSUB и RETURN.
ОБЩИЙ ВИД:
GOSUB метка
где метка — это первая строка подпрограммы.
Назначение оператора GOSUB — передача управления на выполнение подпрограммы.
В отличие от оператора GOТО, оператор GOSUB не только осуществляет безусловный переход на выполнение программной строки с меткой, но и запоминает адрес точки, из которой произошел переход, в специальном участке памяти — стеке возврата.
После выполнения подпрограммы, компьютер возвращает управление по адресу, хранящемуся в стеке возврата, и следующей будет выполняться команда, стоящая после оператора GOSUB.
Окончанием подпрограммы служит оператор
RETURN
То есть, в любой подпрограмме последней командой является оператор RETURN.
Основная программа обязательно должна заканчиваться оператором END.
В начале записывают основную программу, а потом подпрограмму. В одной программе могут быть обращения к нескольким подпрограммам.
Задача 1.
Найти значения функции Y=3X3+4X2 для X=1; -3; 5; -4.
ПРИМЕЧАНИЕ: В этом случае придется 4 раза выполнять рассчеты по одной и той же формуле и выводить результаты на печать. Поэтому эти действия рационально будет выделить в подпрограмму.
CLS Результат:
X=1: GOSUB met
Х=1 Y=7
X=-3 Y=-45
X=5 Y=475
X=-4 Y=-192
X=5: GOSUB met
X=-4: GOSUB met
END
met: REM ПОДПРОГРАММА
Y=3*X^3+4*X^2
PRINT “X=“;X, “Y=“;Y
RETURN
Задача 2.
Написать программу рисования N вишенок. N вводит пользователь.
....................
N
SCREEN 9: COLOR 2, 7: CLS
INPUT “N= “; N
WHILE N<=0
PRINT “ОШИБКА! ПОВТОРИТЕ ВВОД!”
WEND
CLS
X= 30
Y= 50
WHILE Y<300
FOR I=1 TO N STEP 1
GOSUB СHERRY
X=X+50
IF X>600 THEN Y=Y+ 50: X= 30 : REM Если х превысит 600, то переходим
END IF : REM на новую строку
NEXT I
WEND
END
CHERRY:
CIRCLE(X,Y),20,4 :REM ягода
PAINT(X,Y),4
LINE (X, Y-20)-(X,Y-40),2 :REM веточка
CIRCLE (X+10, Y-30), 10, 2,,,1/3 :REM листочек
PAINT (X+10, Y-30),2
RETURN
ПРИМЕЧАНИЕ: В начале программы стоит защита от неверного ввода. Если пользователь введет число, которое меньше или равно нулю, то программа выдаст сообщение об ошибке и попросит повторить ввод.
В цикле по номерам вишенок задается координата Х центра окружности и происходит обращение к подпрограмме CHERRY, в которой рисуется вишенка. Если координата Х превысит 600, то увеличиваем значение координаты У, а Х присваивает начальное значение. Таким образом рисование вишенок перейдет на следующую строку.
Задача 3.
Нарисовать елочку:
30
10
20
30
Пусть высота каждого фрагмента елочки будет равна 10 пикселей, а длины будут равны 20, 40, 60.
Вынесем в подпрограмму рисование одного треугольника:
x,y
x-l/2,y+h x+l/2,y+h
РЕШЕНИЕ:
SCREEN 9:cls
H=10:X=30
L=20: Y=10: GOSUB EL
L=40: Y=20: GOSUB EL
L=60: Y=30: GOSUB EL
END
EL:
LINE(X,Y)-(X+L/2,Y+H),2
LINE-(X-L/2,Y+H),2
LINE-(X,Y),2
PAINT (X, Y+2),2
RETURN
Задача 4.
Нарисовать N елочек. N - вводит пользователь с клавиатуры.
Решение:
COLOR 2, 7: CLS
VVOD:
INPUT “N= “; N
IF (N<=0) OR (N>5) THEN
PRINT “ОШИБКА! ПОВТОРИТЕ ВВОД!” : GOTO VVOD
END IF
SCREEN 9: CLS: X=30
FOR I=1 TO N STEP 1
GOSUB FOREST
X=X+70
NEXT I
END
FOREST:
H=10
L=20: Y=10: GOSUB EL
L=40: Y=20: GOSUB EL
L=60: Y=30: GOSUB EL
RETURN
EL:
LINE(X,Y)-(X+L/2,Y+H),2
LINE-(X-L/2,Y+H),2
LINE-(X,Y),2
PAINT (X, Y+2),2
RETURN
Пояснение: В защите от неправильного ввода число N ограничено от 1 до 5, так как при наших размерах елочек помещается на экран не более пяти.
Подпрограмма FOREST рисует на экране всю елочку целиком, обращаясь к подпрограмме EL для рисования отдельных треугольников.
Любая программа в разное время может служить как основной программой, так и подпрограммой.