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

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

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






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



Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

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

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

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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

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