Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Процедуры и функции





Процедура - это набор операторов языка Бейсик, существующих в виде блока. Есть два типа процедур SUB (подпрограмма) и FUNCTION (функция). Процедуры помогают организовывать многократное использование блока операторов. Вместо того чтобы заново вводить каждую строку в нескольких местах программы для выполнения одних и тех же задач, можно создать одну процедуру и вызывать ее из нескольких мест программы. Это не только сократит объем вводимого текста, но и гарантирует одинаковую работу процедуры при каждом вызове.

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

SUB имя[(параметры)] [STATIC]

[блок__операторов]

END SUB

где

имя имя процедуры SUB, длиной до 40, без суффикса типа данных.

параметры одна или несколько переменных, указывающих параметры, которые передаются в процедуру SUB при ее вызове в виде:

перемен[()] [AS тип] [, перемен[()] [AS тип]]...

где

перемен имя переменной Basic.

тип тип данных переменной (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип данных, определенный пользователем).

STATIC указывает, что значения локальных переменных процедуры SUB сохраняются между вызовами функции.

Следующий фрагмент является примером простой подпрограммы:

SUB PROBA

PRINT "Разработка не завершена"

END SUB

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

CALL PROBA

Пример 1. Вычислить

DECLARE SUB pr (x%, f%)

DIM N AS INTEGER, M AS INTEGER, Y AS INTEGER

INPUT "N=, M="; N, M

CALL pr(N, R%)

CALL pr(M, V%)

Y = R% + V%

PRINT "Y="; Y

 

SUB pr (x AS INTEGER, f AS INTEGER)

f = 1

FOR i = 1 TO x

f = f * i

NEXT i

END SUB

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

Синтаксис функции такой:

FUNCTION имя [(параметры)] [STATIC]

[блок операторов]

имя = выражение

[блок операторов]

END FUNCTION

где

имя имя функции и возвращаемый ею тип данных,указанный суффикс типа данных (%, &,!, # или $).

параметры одна или несколько переменных, указывающих параметры, которые передаются в функцию при ее вызове: в виде:

перемен[()] [AS тип] [, перем[()] [AS тип]]...

где

переменная имя переменной Basic.

тип тип данных переменной (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип данных, определенный пользователем).

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

выражение возвращаемое значение функции.

Ниже приведенный фрагмент является примером функции с именем PROBA, назначение которой – вернуть число, определенное внутри самой функции

kk% = proba%

PRINT kk%

 

FUNCTION proba%

a% = 7

b% = 12

c% = a% + b%

proba% = c%

END FUNCTION

При сохранении программы Basic автоматически добавляет оператор DECLARE. Оператор DECLARE описывает процедуру FUNCTION или SUB и выполняет проверку аргументов на соответствие типу данных, он также необходим при вызове процедур SUB без использования CALL.

Синтаксис оператора DECLARE:

DECLARE (FUNCTION | SUB) имя [([параметры])]

где

имя имя процедуры.

параметры одна или несколько переменных, указывающих параметры, которые передаются в процедуру при ее вызове в виде:

перемен[()] [AS тип] [, перемен[()] [AS тип]].

где

перемен имя переменной Basic.

тип тип данных переменной (INTEGER, LONG, SINGLE, DOUBLE, STRING или тип, определенный пользователем). ANY допускает использование любого типа данных.

Возможности подпрограмм и функций можно расширить, передавая им значения с помощью параметров. Параметры – это переменные, играющие роль замещающих символов для значений, которые будут переданы в подпрограмму или функцию. Параметры помещают в скобки в операторе объявления подпрограммы или функции. Ниже приведен пример объявления функции ААА, которая имеет два аргумента, один типа Integer (целый), второй – типа String (строковый).

Function AAA%(n%, m$)

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

Если при вызове процедуры указывается то значение параметра, которое нам нужно, - то оно называется фактическим значением параметра (пример 2), а если вместо числового значения используется буквенный параметр (n), то такие значения параметров называются формальными (пример 3).

 

Пример 2 Пример 3
DECLARE FUNCTION gg% (x AS INTEGER) c% = gg%(3) PRINT c%   FUNCTION gg% (x AS INTEGER) gg% = x + 2 END FUNCTION DECLARE FUNCTION gg% (x AS INTEGER) INPUT "Введите n"; n% c% = gg%(n%) PRINT c%   FUNCTION gg% (x AS INTEGER) gg% = x + 2 END FUNCTION
При n=4 Ответ 5 При n=4 Ответ 6

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

Пример 4 Пример 5
DECLARE FUNCTION proc% (V AS INTEGER) DIM M AS INTEGER, W AS INTEGER INPUT "ВВЕДИТЕ M"; M W% = proc%((M)) PRINT "M="; M PRINT "W="; W   FUNCTION proc% (V AS INTEGER) V = V + 2 proc% = SQR(V ^ 3) END FUNCTION DECLARE FUNCTION proc% (V AS INTEGER) DIM M AS INTEGER, W AS INTEGER INPUT "ВВЕДИТЕ M"; M W% = proc%(M) PRINT "M="; M PRINT "W="; W   FUNCTION proc% (V AS INTEGER) V = V + 2 proc% = SQR(V ^ 3) END FUNCTION
При М=5 Ответ: М=5, W=19 При М=5 Ответ: М=7, W=19

Пример 6. Составить программу для нахождения функции вычисления кубического корня.

DECLARE FUNCTION cube! (x!)

INPUT "Введите Х"; x!

a! = cube!

PRINT a!

 

FUNCTION cube!(x!)

IF x = 0 THEN

c! = 0

EXIT FUNCTION

END IF

c! = 10 ^ ((LOG(ABS(x!)) / LOG(10)) / 3)

IF x < 0 THEN

c! = -c!

END IF

cube! = c!

END FUNCTION

Пример 7. Вычислить Y=n!/m!-k!

DECLARE FUNCTION fact& (n%)

INPUT "N=", n%

INPUT "M=", m%

INPUT "K=", k%

y = fact&(n%) / fact&(m%) - fact&(k%)

PRINT n%, m%, k%

PRINT "Y="; y

FUNCTION fact& (x%)

f& = 1

FOR i% = 1 TO x%

f& = f& * i%

NEXT

fact& = f&

END FUNCTION







Дата добавления: 2015-09-06; просмотров: 388. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

Studopedia.info - Студопедия - 2014-2025 год . (0.008 сек.) русская версия | украинская версия