Подпрограммы
Иногда в определенных местах программы приходится выполнять практически одни и те же последовательности действий с разными исходными данными. Такие последовательности действий можно оформить в виде так называемых подпрограмм (от англ. "subroutine"). Подпрограммы сокращают текст программы, существенно уменьшают время их исполнения, облегчают жизнь программистам, которые могут создавать программы модульно, т. е. собирая сложную программу из законченных кусочков более простых составляющих. Это позволяет создавать большие программы группой программистов, разрабатывать и реализовать группе школьников какие-либо глобальные проекты.
Для примера использования процедуры приведем программу вычисления следующего выражения:
Z=N!/M!*(N-M)!
Переменные N и М, а также выражение (N-М) снабжены восклицательным знаком, который в математике означает не что иное, как факториал (например, N-факториал). Факториал – это произведение натуральных чисел от 1 до N включительно. Например, 3!=1х2хЗ=6, а, например, 6! – это уже 1x2x3x4x5x6=720.
В выражении нам три раза придется вычислять факториал, производя при этом одни и те же действия с разными числами. Нам облегчит работу подпрограмма, которую мы разместим в конце основной программы и назовем, например, fact. В подпрограмме мы опишем, как вычислить факториал вообще, а затем из основной программы обратимся к подпрограмме три раза с различными параметрами. Вот как будет выглядеть программа:
CLS 1: INPUT "Введите значения N и М"; N, М K=N GOSUB FACT Х1=Р К=М GOSUB FACT Х2=Р K=(N-M) GOSUB FACT Z=X1/(X2*P) PRINT "Искомое выражение равно"; Z PRINT "Еще одно выражение?(Y/N): INPUT а$ IF UCASE$(a$)="Y" THEN 1 ELSE PRINT "До новых встреч у монитора…" END ' Описание подпрограммы FACT для вычисления факториала FACT: Р=1 FOR i=l TO К P=P*i NEXT i RETURN
Рассмотрим работу программы. Начало стандартное: очистка экрана, запрос с клавиатуры исходных данных. Самое интересное начинается потом. Подпрограмма fact описана после слова end основной программы, что обусловлено простым желанием, чтобы программа все же не зациклилась, а когда-нибудь все-таки завершилась. Параметром подпрограммы является переменная к, для которой и вычисляется факториал.
В основной программе мы присваиваем переменной к значение переменной n, для которой мы хотим вычислить первый факториал из трех. После чего необходимо обратиться к подпрограмме. Для этого существует специальное слово gosub, после которого указывается имя подпрограммы (в нашем случае fact). Управление переходит на первый оператор, содержащийся в подпрограмме, затем выполняются все операторы подпрограммы, вплоть до ключевого слова return. Это означает, что подпрограмма закончилась, и управление передается в основную программу.
Предупреждение
Ключевое слово RETURN передает управление в основную программу на оператор, следующий за обращением к подпрограмме GOSUB.