Процедуры и функции.
Процедуры и функции представляют собой важный инструмент QBasic, позволяющий писать хорошо структурированные программы. Процедура представляет собой отдельную часть программы, которая имеет своё имя. Процедуры и функции представляют собой относительно самостоятельные фрагменты программы или отдельные модули, оформленные определенным образом и снабженные именем. Описать программу - это значит указать ее заголовок и тело. В заголовке объявляют имя подпрограммы и формальные параметры. Для функции еще указывается тип возвращаемого ею результата. За заголовком следует тело подпрограммы, которое состоит из раздела описаний и раздела исполняемых операторов. Заголовок процедуры имеет вид: SUB <имя>[(< сп. ф. п. >)] Заголовок функции: FUNCTION<имя> [<тип>] [(< сп. ф. п.>)], где <имя> - имя подпрограммы; <сп. ф. п.> - список формальных параметров; <тип> - тип возвращаемого функцией результата, он не обязателен, так как по умолчанию система подразумевает вещественный тип; Список формальных параметров необязателен и может отсутствовать. Если же он есть, то в нем должны быть перечислены их имена и тип: SUB SB (a#, b%, c$) Операторы тела подпрограммы рассматривают список формальных параметров как своеобразное расширение раздела описаний: все переменные из этого списка могут использоваться в любых выражениях внутри подпрограммы. Вызов и выполнение осуществляется при помощи оператора процедуры: CALL <имя процедуры>(<список фактических параметров>); Между формальными и фактическими параметрами должно быть полное соответствие, т.е. должно быть одинаковое количество, порядок их следования должен быть один и тот же, тип каждого фактического параметра должен совпадать с типом соответствующего ему формального параметра. Определение формального параметра тем или иным способом только для вызывающей программы: если формальный параметр объявлен как параметр-переменная, то при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной нужного типа; если формальный параметр объявлен как параметр-значение, то при вызове ему может соответствовать произвольное выражение. Контроль над неукоснительным соблюдением этого правила осуществляется интерпретатором языка QBasic. Рассмотрим взаимодействие основной программы с процедурами и функциями.
SUB Input_number (Input_value) {данная процедура решает задачу ввода стоимости товара после предварительного запроса } Input “Ведите, велечину стоимости товара:”; Input_value End Sub SUB Calulation_cost (Cost,Value) {данная процедура позволяет вычислить величину цены,учитывая при этом величину налога} Cost=(1.0+MWSt/100.0)*Value End Sub Sub Output_result (Input_value) {данная процедура позволяет вывести на экран результаты расчетов} Print “Оператор Writeln заданный без параметров” Print ‘Переводит курсор на начало следующей строки Print “Расчетная цена с учетом”;MWSt;”% налога составляет: “;Cost;”$” End Sub Rem Основной блок программы Const MWSt = 14.0 Defsng Value, cost Input_number (Value) Calculation_cost (Cost,Value) Output_result (Cost) End На примере сложения двух чисел проиллюстрируем возможности QBasic по оформлению программ при помощи процедур и функций.
Sub Summing_up (sum, a,b) Sum:= a + b; End Sub Function Sum%(a,b) Sum = a + b End Function Rem Программа демонстрирует различия между процедурами и функциями. Cls Def int a,b,Sum_numbers a= 12 b= 15 ‘Сумма чисел с использованием процедуры Call Summing_up (Sum_numbers, a, b) Print “Сумма чисел равна:”;Sum_numbers ‘Сумма чисел с использовнием функции Sum_numbers= Sum(a, b) Print “Сумма чисел равна: “; Sum(a, b) End
|