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

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

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





Процедура - это набор операторов языка Бейсик, существующих в виде блока. Есть два типа процедур 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 кг мяса...


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


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


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

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

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

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

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Классификация и основные элементы конструкций теплового оборудования Многообразие способов тепловой обработки продуктов предопределяет широкую номенклатуру тепловых аппаратов...

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