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

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

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





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




Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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

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