Практически во всех серьезных программах используют подпрограммы. В Бейсике существуют подпрограммы двух типов: FUNCTION и SUB.
Подпрограммы взаимодействуют с вызывающими их программными единицами (которые могут быть основными программами или, в свою очередь, являться подпрограммами) посредством обмена параметрами (аргументами). Подпрограммы-функции (FUNCTION), в отличие от подпрограмм типа SUB, возвращают также в своем имени некоторое значение. 

Объявляется подпрограмма FUNCTION так: 
FUNCTION <имя функции>(<список аргументов с указанием их типов>)
<тело подпрограммы- функции>
<имя функции> =<возвращаемое значение>
END FUNCTION
А в начале основной программы после ключевого слова DECLARE пишется имя подпрограммы с указанием ее типа и, в скобках - имена и типы параметров. В MS QBasic'е это происходит автоматически, причем типы функции и ее параметров обозначаются знаками, стоящими после имен функции и параметров, например строка:
DECLARE FUNCTION fu! (n!) 
сообщает о том, что будет использоваться функция fu, имеющая параметр(аргумент) n, а стоящие за ними восклицательные знаки означают, что fu и n - вещественного типа.
Приведем пример подпрограммы-функции, вычисляющей n-факториал(n!): 

DECLARE FUNCTION fu! (n!) ' Эта строка "написана" самим QBasic'ом, не нами!
INPUT " n="; n                           '  считываем вводимое пользователем значение n
PRINT n; "!="; fu(n)                   '  пишем возвращаемое функцией fu(n) значение n-факториала
FUNCTION fu (n)                        '  начало функции "fu", а в скобках - имя параметра "n" 
f = 1
FOR i = 1 TO n
                            '   в цикле вычисляем факториал, f
f = f * i
NEXT i
fu = f                                               
'   функция возвращает значение факториала
END FUNCTION                           '  конец функции

Подпрограмма SUB определяется следующим образом: 
SUB <имя подпрограммы>(<список аргументов с указанием их типов>)
<тело подпрограммы>
END SUB
В начале основной программы после ключевого слова DECLARE, как и при использовании FUNCTION, пишется имя подпрограммы.
Приведем пример подпрограммы SUB, вычисляющей n-факториал(n!): 

DECLARE SUB fu (n!, f!) ' Эта строка "написана" самим QBasic'ом, не нами!
INPUT " n="; n                 'считываем вводимое пользователем значение n
CALL fu(n, f)                       ' !!! обращение к процедуре fu !!!
PRINT n; "!="; f               ' пишем результат
SUB fu (n, f)                        ' начало SUB fu, а в скобках - имена параметров (n,f) 
f = 1
FOR i = 1 TO n
f = f * i
NEXT i
END SUB                          
' конец подпрограммы

В Бейсике разрешена рекурсия- прием программирования, когда в подпрограмме встречается вызов этой же подпрограммы. Приведем пример вычисления факториала в подпрограмме, использующей рекурсивный вызов: 

DECLARE FUNCTION fu! (n!)
INPUT " n="; n
PRINT n; "!="; fu(n)
FUNCTION fu (n)                 
' рекурсивная функция fu
IF n = 1 THEN fu = 1
IF n > 1 THEN fu = n * fu(n - 1)
END FUNCTION

                    <<ранее             к оглавлению        далее>>

                      то же на Fortran                        то же на C                 то же на Pascal

                аналог на JavaScript
Используются технологии uCoz