В Бейсике предусмотрена работа с подпрограммами, если необходимо использовать многократно сходные действия, или для блочно-структ\рпрованного построения программы. Для организации подпрограмм используют две команды: GOSUB <номер строки> - перейти на подпрограмм: RETURN - возврат.
Во многих версиях Бейсика предусмотрен переключатель подпрограмм ON k GOSUB 100,200,300. Здесь k может принимать значения 1.2.3, что соответствует обращению к одной из трех подпрограмм, начинающихся с номеров 100. 200, 300.
Начнем с примера, аналогичного одному из тех, которые сопровождали рассказ о процедурах Паскаля выше.
Программа 72 (см. программу 17).
10 ' ****** квадратные корни и логарифмы*********************
15 CLS / 20 " а » 35: с$ = "-"
30 GOSUB 1000 40 PRINT : PRINT "Таблица квадратных корней"
50 GOSUB 1000
55 PRINT
60 FOR x = 1 TO 10
70 PRINT USING "x = ##» sqr(x) = t».#»#<"; x; SQR(x) :
80 NEXT x
90 GOSUB 1000
100 PRINT : PRINT "Таблица логарифмов" ;
110 GOSUB 1000 120 PRINT
130 FOR x = 1 TO 5 140 PRINT USING "x = ««» log(x) = »».»»»»"; X; LOG(x)
150 NEXT x
:60 с$ = "*" 170 GOSUB 1000 180 END
1000 FOR i = 1 TO a : PRINT c$ : NEXT i
1010 RETURN
Обратим внимание на существенно иной механизм передачи параметров в подпрограмму на Бейсике, нежели в паскалевскую процедуру. Формирование входных параметров производится с помощью присваиваний до обращения к процедуре. Это гораздо менее удобно, чем использование формальных и фактических параметров в Паскале.
Приведем еще несколько примеров работы с подпрограммами.
Программа 73
'*********** меню графиков функций ***********
10 CLS : PRINT : PRINT
20 PRINT " ГРАФИКИ ФУНКЦИЙ"
30 PRINT
40 PRINT ". Синус"
50 PRINT ". Косинус"
60 PRINT ". Тангенс"
70 PRINT : PRINT
80 INPUT "введи номер"; j
90 SCREEN 2
100 LINE (200, 0) - -(200, 200) : LINE (0, 100) - (400, 100)
110 PSET (0, 0), 4
120 FOR x = - 4 TO 4 STEP 1/32