double arrow

Функции, определяемые пользователем. GOSUB номер строки или метка


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

PRINT

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<имя функции>=<выражение>







Сейчас читают про: