Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел2-QB-лр1-8.doc
Скачиваний:
52
Добавлен:
22.05.2015
Размер:
1.19 Mб
Скачать

3 Процедуры. Операторы sub и end sub

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

107

выражений - перевод градусной меры углов в радианную, чисел из одной системы счисления в другую, вычисление факториала и т.д. Процедура предназначена для выполнения какой-либо служебной последовательности операторов - рисование рамки таблицы, вызов программы на Ассемблере и др,, хотя своими операторами также может вычислять функции, как и подпрограмма или функция пользователя.

Формат процедуры:

[метка] SUB имя (список формальных параметров)

операторы

[метка] END SUB

или

SUB имя (список формальных параметров)

(LOCAL список переменных)

(STATIC список переменных)

(SHARED список переменных)

операторы

(EXIT SUB)

END SUB

Для описания локальных переменных в процедуре применяется оператор LOCAL, например оператор LOCAL A%,B# формирует 2 локальные переменные: А% - целочисленная и B# - двойной точности.

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

Глобальные переменные описываются с помощью оператора SHARED. Они могут применяться в основной программе. Статистические переменные, описанные оператором STATIC, не теряют свое значение при выходе из процедуры, но не могут применяться в программе.

Оператор EXIT SUB аналогичен END SUB, но может применяться в любом месте процедуры. Оператор END SUB должен быть последним оператором процедуры.

Если в процедуру нужно включить программу на Ассемблере, то

используется оператор: SUB progname INLINE.

Для вызова такой процедуры используется оператор:

CALL progname INLINE

108

Внутри процедуры нельзя применять операторы GOTO, GOSUB, RETURN, передающие управление за ее пределы. Описания процедур и функций не могут быть вложенными. Но внутри процедуры можно обращаться к другим процедурам и функциям.

Для вызова процедуры служит оператор CALL.

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

CALL имя (список фактических параметров)

Оператор CALL пересылает фактические параметры в процедуру

по ссылке или по значению. Возврат в основную программу выполняется автоматически в место вызова процедуры (специального оператора, как RETURN в подпрограмме пользователя не требуется).

Пример 5:

SUB WW(A,M,N,MAX)

IF A>M THEN MAX=A ELSE MAX=M

IF MAX>N THEN MAX=N

END SUB

……………………………………………..

CALL WW(18,3,6,MAX)

PRINT"MAX="MAX:END

В процедуре будет вычислено значение MAX=18.

Задача 2 Составить программу вычисления функции из задачи 1, используя процедуру пользователя.

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

Программа

CLS

REM программа с процедурой

INPUT "a=";a, "b=";b, "x=";x

IF a=b THEN m1

IF a>b THEN m2

REM Вычисление при b>a

n=b

CALL F(i)

Z=x*SIN(x)/F : GOTO m3

m1:REM Вычисление при a=b

n=a*x+2

109

CALL F(i)

Z=F : GOTO m3

m2: REM Вычисление при a>b

n=a

CALL F(i)

Z=F*b*x^2/(a^2+b^2)

m3: PRINT"Z="Z,"F="F

STOP

REM Процедура вычисления факториала

SUB F(i)

F=1

FOR i=2 TO n

F=F*i

NEXT i

END SUB

END

Контрольные вопросы

1 В каких случаях целесообразно вводить функции, подпрограммы и процедуры пользователя ?

2 Что такое формальные и фактические параметры ?

3 Что такое подпрограмма ?

4 Какие операторы используются при обращении к подпрограмме

5 Что называется процедурой?

6 Какие операторы образуют формат процедуры?

7 Как выполняется возврат из подпрограммы и из процедуры в основную программу?

8 Что означают опции LOCAL, STATIC, SHARED в формате процедуры?

Задание

Составить три программы вычисления функции с использованием:

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

  • подпрограммы пользователя;

  • процедуры пользователя

при х = 0, 45

В первой программе вся функция задания или её элементы должна быть представлена как функция пользователя, во второй – как подпрограмма пользователя и в третьей – как процедура

110

№ вар

Функция

1

2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

111

1

2

16

17

18

19

20

Содержание отчета

1 Название, цель, содержание работы

2 Задание для своего варианта.

3 Три программа расчёта – с функцией, подпрограммой и процедурой.

4 Результаты расчётов в среде QB.

5 Письменные ответы на контрольные вопросы.

6 Выводы по работе