Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii / 8Подпрограммы.ppt
Скачиваний:
43
Добавлен:
17.03.2015
Размер:
76.29 Кб
Скачать

Подпрограммы

и функции пользователя

Определение

подпрограммы

Подпрограммой называется отдельный участок программы, представляющий собой логически законченный блок.

• Подпрограмма может вызываться несколько раз в различных местах основной программы и применяется для того, чтобы

избежать повторения записи одной и той же группы операторов.

• Чтобы подпрограмма при обращении к ней выполнялась каждый раз с новыми данными, ее нужно составить в общем виде, а

исходные данные передавать переменным подпрограммы перед

обращением к ней.

Операторы организации подпрограмм

Оператор GOSUB-RETURN

Формат:

GOSUB номер_строки

RETURN номер_строки

• Оператор GOSUB передает управление из основной программы в подпрограмму на первый оператор указанной в нем строки. Затем подпрограмма

выполняется в естественном порядке до оператора RETURN. Если в операторе RETURN параметр "номер строки" не указан, то управление передается на оператор, следующий за оператором GOSUB. Если параметр "номер строки" указан, то оператор GOSUB выполняет возврат из подпрограммы на

указанную строку

Операторы организации подпрограмм

Оператор ON GOSUB – RETURN

Вычисляемый переход к подпрограмме

Формат оператора:

ON выражение GOSUB номер_строки[, номер_строки…]

RETURN

ПРИМЕР:

ON A GOSUB 10, 20, 30

RETURN

Если A=1, то GOSUB 10 Если А=2, то GOSUB 20 Если А=3, то GOSUB 30 Иначе ничего не происходит

Подпрограмма: вычисление факториала

Задача: рассчитать число сочетаний по формуле

Cmn m!/(n!*(m n)!)

Три раза используется вычисление факториала: n!, m! и (m - n)!

Поэтому целесообразно расчет факториала оформить в виде подпрограммы.

ПРОГРАММА

 

Переменные:

 

n, m – фактические переменные

CLS

 

 

L – формальная переменная

INPUT «Введите n»; n

P – факториал

INPUT «Введите m»; m

С1 – результат вычисления

L=n

 

факториала n!

GOSUB 10

 

С2 – результат вычисления

 

факториала m!

C1= P

 

 

С3 – результат вычисления

L= m

 

 

факториала (m-n)!

GOSUB 10

 

 

С – число сочетаний

C2= P

 

 

 

L= m-n

10 REM Начало подпрограммы

 

GOSUB 10

Р=1

 

 

C3= P

FOR i=1 TO L

 

C= C1/ (C2*C3)

P= P*i

 

 

PRINT “C=“;C

NEXT i

 

 

END

RETURN

 

 

 

 

 

 

 

Блок-схема

 

начало

1

Блок-схема

Ввод

 

C2=P

подпрограммы

n,m

 

вход

L = n

L = m-n

P = 1

 

 

10

10

i = 1,L

 

 

C1=P

C3=P

P=P*i

 

 

C=(C1*C2)/C3

L = m

 

 

 

10

Вывод

выход

С

 

1

конец

 

 

 

Рекомендации по

организации подпрограмм

• Четко обозначить начало и конец каждой подпрограммы с помощью оператора REM.

• Каждую подпрограмму нужно рассматривать как независимый логически завершенный модуль.

• Не использовать оператор GOTO для входа и выхода из подпрограмм.

• Недопустимо изменять в подпрограмме

переменные – счетчики циклов вызывающей программы.

• Используйте в подпрограмме переменные отличные от переменных вызывающей программы.

• Подпрограммы записывать после оператора END, завершающего вызывающую программу.

Функции пользователя

• Однострочная функция пользователя

• Блочная функция пользователя

Если в программе имеются повторяющиеся

действия, которые можно выразить в виде одного выражения, то для их выполнения можно определить однострочную

функцию пользователя

Однострочная функция пользователя

Определение функции пользователя – в начале программы оператором DEF FN

Формат оператора:

DEF FNимя_функции(формальная_переменная, формальная_переменная…) = =выражение

Вызов функции пользователя внутри программы с помощью

FNимя_функции(фактическая_переменная, фактическая_переменная…)