Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Подпрограммы
В Бейсике предусмотрена работа с подпрограммами, если необходимо использовать многократно сходные действия, или для блочно-структ\рпрованного построения программы. Для организации подпрограмм используют две команды: GOSUB <номер строки> - перейти на подпрограмм: RETURN - возврат. Во многих версиях Бейсика предусмотрен переключатель подпрограмм ON k GOSUB 100,200,300. Здесь k может принимать значения 1.2.3, что соответствует обращению к одной из трех подпрограмм, начинающихся с номеров 100. 200, 300. Начнем с примера, аналогичного одному из тех, которые сопровождали рассказ о процедурах Паскаля выше. Программа 72 (см. программу 17). 10 ' ****** квадратные корни и логарифмы********************* 15 CLS / 20 " а» 35: с$ = "-" 30 GOSUB 1000 40 PRINT: PRINT "Таблица квадратных корней" 50 GOSUB 1000 55 PRINT 60 FOR x = 1 TO 10 70 PRINT USING "x = ##» sqr(x) = t».#»#<"; x; SQR(x): 80 NEXT x 90 GOSUB 1000 100 PRINT: PRINT "Таблица логарифмов"; 110 GOSUB 1000 120 PRINT 130 FOR x = 1 TO 5 140 PRINT USING "x = ««» log(x) =»».»»»»"; X; LOG(x) 150 NEXT x :60 с$ = "*" 170 GOSUB 1000 180 END 1000 FOR i = 1 TO a: PRINT c$: NEXT i 1010 RETURN Обратим внимание на существенно иной механизм передачи параметров в подпрограмму на Бейсике, нежели в паскалевскую процедуру. Формирование входных параметров производится с помощью присваиваний до обращения к процедуре. Это гораздо менее удобно, чем использование формальных и фактических параметров в Паскале. Приведем еще несколько примеров работы с подпрограммами. Программа 73 '*********** меню графиков функций *********** 10 CLS: PRINT: PRINT 20 PRINT " ГРАФИКИ ФУНКЦИЙ" 30 PRINT 40 PRINT ". Синус" 50 PRINT ". Косинус" 60 PRINT ". Тангенс" 70 PRINT: PRINT 80 INPUT "введи номер"; j 90 SCREEN 2 100 LINE (200, 0) - -(200, 200): LINE (0, 100) - (400, 100) 110 PSET (0, 0), 4 120 FOR x = - 4 TO 4 STEP 1/32 130 ON j GOSUB 500, 600, 700 140 PSET (200 + 32 * x, 100 - 32 * у) 150 NEXT x 160 r$ = INPUT$(1) 170 IF r$ = "К" OR r$ = "к" THEN END ELSE SCREEN 0: GOTO 10 500 у = SIN(x): RETURN 600 у = COS(x): RETURN 700 у = TAN(x): RETURN Подпрограммы, к которым обращаются по GOSUB, сильно уступают истинным процедурам Паскаля, поскольку у них отсутствуют возможности локализации переменных, нет формальных параметров, которые можно замещать при обращении фактическими. Однако, в более поздних версиях (например в Qbasic) предусмотрены подпрограммные единицы SUB - подпрограммы-процедуры и FUNCTION - подпрограммы-функции. В следующем примере использована подпрограмма решения квадратного уравнения SUB kvur(a,b,c) со списком входных данных. В основной программе можно объявить подпрограмму оператором DECLARE, а вызвать ее с помощью команды CALL. Программа 74 5 ' ********** пример работу с подпрограммой ******** 10 DECLARE SUB kvur (а!, Ь!, с!) 20 INPUT "введи а, Ь, с"; а, Ь, с 30 CALL kvur (a, Ь, с) 40 END SUB kvur (a, b, c) 1000 d.=b*b-4*a*c 1010 IF d < 0 THEN PRINT "корней нет": GOTO 1050 1020 xl = (- b + SQR(d)) / 2 / a 1030 x2 = (- b - SQR(d)) / 2 / a 1040 PRINT ="; xl, ="; x2 1050 END SUB
Контрольные вопросы 1. В чем подпрограммы Бейсика принципиально отличаются от процедур Паскаля? Date: 2015-11-13; view: 387; Нарушение авторских прав |