- •Оглавление
- •2.6. Модульное программирование
- •2.8. Численные методы анализа
- •2.1. Элементы языка
- •Мантисса e порядок
- •2.2. Операторы языка
- •Input [приглашение ;/,] список_вводимых_переменных
- •Операторы управления
- •If логическое_условие then оператор
- •If логическое_условие goto метка_оператора
- •If логическое_условие then оператор else оператор
- •I f логическое_условие then
- •2.3. Организация ветвлений
- •Input “Укажите х”, X
- •15 ? “Неверно”
- •2.4. Организация циклов
- •Программа к задаче 9
- •Input "Введите числа X и y", X, y
- •2.5. Работа с массивами
- •Input "Введите число вкладчиков и процент ",n,p
- •2.6. Модульное программирование
- •2.7. ОбРаботка Символьных данных
- •Пример. ?instr(”Саша”,”а”),instr(3,”Саша”,”а”) Результат: 2,4
- •2.8. Численные методы анализа
- •Input “Введите левую и правую границы a и в ”, a, b,
- •Input “Введите допустимую погрешность e ”, e
- •2.9. Выявление нажатия клавиш
- •2.10. Работа с графикой
- •2.11. Работа с дисковыми файлами
- •Тесты по курсу
- •Литература
2.6. Модульное программирование
Обычно, в реальной программе имеются некоторые участки, к которым происходит обращение из разных ее мест. Такие фрагменты программы удобно вынести в отдельные подпрограммы (модули), что значительно улучшает обозримость программы и сокращает ее размер. В Бейсике имеется два вида процедур – процедура-функция и просто процедура.
ПРОЦЕДУРА-ФУНКЦИЯ организуется следующей конструкцией
FUNCTION имя_функции [(список_параметров)]
операторы
имя функции=выражение
операторы
END FUNCTION
Здесь:
имя функции – произвольно задаваемое по правилам языка имя.
список параметров – перечень переменных, которые передаются в функцию для обработки.
имя функции=выражение – этим оператором функции присваивается результат, который и передается в вызывающую часть программы.
Результатом процедуры-функции является только одно значение. К процедуре-функции можно обратиться в точности так же, как и к обычной функции, включив его в текст любого оператора.
Для осуществления возможности обращения к процедуре-функции в старшей по отношению к ней программе (программе, из которой происходит вызов функции) должен присутствовать оператор объявления функции
DECLARE FUNCTION имя_функции ([аргументы])
Здесь аргументы – список переменных и констант, которые передаются из главной программы в функцию. По типу и числу список аргументов должен совпадать со списком параметров в самой функции, однако сами имена могут быть разными.
Пример. Организуем функцию вычисления факториала fakt(). Факториалом числа Х! называется произведение всех целых чисел от 1 до самого числа Х, например, 4!=1*2*3*4.
DECLARE FUNCTION fakt (y) 'главная программа
PRINT fakt(3)
END
FUNCTION fakt (m) 'функция вычисления факториала
k = 1
FOR i = 1 TO m: k=k*i: NEXT
fakt = k 'присвоение значения функции
END FUNCTION
Здесь в функцию передается аргумент – число 3, которое в функции получает имя M. Результат вычислений факториала формируется оператором fakt = k, который и печатается в главной программе (PRINT fakt(3)).
ПРОЦЕДУРА является более мощным средством и организуется структурой
SUB имя_процедуры [(список_параметров)]
операторы
END SUB
Здесь перечисленные параметры имеют тот же смысл, что и в процедуре-функции, однако, в отличие от последней, она может возвращать несколько значений в вызывающую программу через список параметров. Вызов процедуры осуществляется специальным оператором
CALL имя_процедуры [(список_параметров)]
Передаваемые параметры являются как аргументами процедуры, так и, возможно, ее результатами.
В программе, из которой происходит вызов функции, следует объявить процедуру оператором
DECLARE SUB имя_процедуры [(аргументы)]
Пример. Пусть по известным высоте (h=4) и ширине (l=5) прямоугольника нужно найти и напечатать его периметр (perimetr) и площадь (plosh). В операторе вызова этим аргументам соответствуют значения – 4, 5, x, y, а в процедуре – a, b, c, d.
DECLARE SUB pr(h, l, perimetr, plosh) 'главная программа
CALL pr(4, 5, x, y) 'вызов процедуры
PRINT “Периметр=”;x,“Площадь=”;y 'печать результатов
END
SUB pr (a,b,c,d) 'процедура вычисления элементов прямоугольника
c=2*(a+b)
d=a*b
END SUB
Для процедур-функций и процедур имеются свои операторы выхода:
EXIT FUNCTION
EXIT SUB
Оператор EXIT SUB возвращает управление на оператор, следующий после оператора CALL.