GOSUB номер строки или метка
Подпрограммы
Подпрограммой называется участок программы, оформленный определенным образом, к которому можно обращаться из разных точек программы любое число раз. При этом подпрограмма может решать каждый раз одну и ту же задачу с разными значениями исходных данных. Использование подпрограмм позволяет существенно уменьшить объем рабочей программы. Деление программы на подпрограммы делает программу более понятной.
Обращение к подпрограмме осуществляется с помощью команды
По этой команде управление передается подпрограмме - блоку команд, первая из которых помечена номером строки или меткой. Последней выполняемой командой подпрограммы является RETURN. По этой команде управление передается в основную программу на оператор, стоящий за оператором GOSUB.
Если нарушено согласование операторов RETURN и GOSUB, то выводится сообщение об ошибке “RETURN without GOSUB”.
Подпрограммы располагаются в конце основной программы и отделяются от основной программы оператором END.
Пример 1. Написать подпрограмму вывода подчеркивания информации. Длина черты переменная.
N=5
GOSUB A ‘вызов подпрограммы для вывода знака подчеркивания 5 раз
N=30
GOSUB A ‘вызов подпрограммы для вывода знака подчеркивания 30 раз
END
A: FOR I=1 TO N ‘подпрограмма вывода знака подчеркивания
PRINT ”_“;
NEXT I
RETURN ‘оператор возврата в основную программу
Пример 2. Вычислить функцию: C = m!n!/(m-n)!
1 INPUT “Введите m>n”;m,n
IF M<=N THEN 1 ‘проверка входных данных
R=M
GOSUB A ‘вызов подпрограммы для вычисления m!
R1=F: R=N
GOSUB A ‘вызов подпрограммы для вычисления n!
R2=F: R=M-N
GOSUB A ‘вызов подпрограммы для вычисления (m-n)!
C=(R1+R2)/F: PRINT “C=”;C
END
A: F=1 ‘подпрограмма вычисления факториала
FOR I=2 TO R
F=F*I
NEXT I
RETURN ‘оператор возврата в основную программу
Для самостоятельного решения
Составить программу расчета заработной платы по формуле: оклад * количество дней * 1.4-подоходный налог. Расчет заработной платы оформить в подпрограмме.
Помимо стандартных числовых функций (sin, cos и т.д.) или символьных функций пользователь может определить и свои собственные. Иногда при решении задач возникает необходимость вычисления одного и того же выражения при различных значениях величин, входящих в это выражение. Вот тогда и применяются функции, определяемые пользователем.
Формат:
DEF FN <имя функции>(<список формальных параметров>)=<выражение>
Обращение к функции пользователя осуществляется
FN <имя функции>(<список фактических параметров>)
Имя определяемой функции должно быть уникально: оно не может повторять имя другой процедуры, переменной или функции.
Формальные параметры резервируют место в памяти для фактических параметров, которые должны быть определены к моменту выполнения функции. Параметры могут быть любого типа. Примеры определения функции:
DEF FNKT(X)=COS(X)/SIN(X)
DEF FNP(A,B)=A/B*100
X,A,B – формальные параметры
Между формальными и фактическими параметрами и их типами существует однозначное позиционное соответствие слева направо. Примеры обращения:
FNKT(X)
FNP(C,D)
X,C,D - фактические параметры
Имена формальных и фактических параметров могут не совпадать.
С помощью оператора DEF FN можно описать более сложную функцию, занимающую несколько строк
Формат:
DEF FN <имя функции>(<список аргументов>)
<блок команд>
FN<имя функции>=<выражение>