Практическая работа № 45.
1. Краткие теоретические сведения.
В практике решения задач встречается много однотипных задач. Более того, при решении одной и той же задачи определенные совокупности действий могут повторяться несколько раз. Чтобы не делать лишнюю работу, предусмотрено оформлять такие действия в виде подпрограмм (п/п), т. е. записывать их один раз и обращаться к ним по мере надобности. Использование п/п позволяет существенно уменьшить объем рабочей программы.
Подпрограммой называется участок программы, оформленный определенным образом, к которому можно обращаться из разных точек программы любое число раз. При этом п/п может решать каждый раз одну и ту же задачу с разными значениями исходных данных. Программу, в которой используется п/п, называют рабочей. Рабочая программа обязательно должна заканчиваться оператором END.
При необходимости использования п/п возможны два случая:
1) Указанная подзадача является типовой, часто встречающейся задачей — математической, технической и т. д. Пример подобной задачи — вычисление интеграла, решение уравнения с одним неизвестным и т. д. В настоящее время для большинства подобных задач составлены программы (оформленные обычно, как п/п). Они публикуются в весьма многочисленных сборниках программ, журналах. В этом случае задача программиста — найти нужную п/п и включить ее в текст рабочей программы.
2) Для упомянутой подзадачи не существует (не удалось найти) готовой программы (п/п). В этом случае программист должен:
— составить программу решения подзадачи;
— оформить ее, как п/п;
— включить п/п в текст рабочей программы.
Перед самим обращением необходимо переменным подпрограммы присвоить те конкретные значения, над которыми должны выполняться операции подпрограммы в данный момент.
Обращение к подпрограмме в Бейсике осуществляется с помощью оператора вызова п/п: — оператор, обеспечивающий исполнение п/п. Он помещается в той точке рабочей программы, где необходимо выполнить п/п.
Оператор вызова п/п.
Общий вид оператора:
т GOSUB п
где т — номер строки; GOSUB — имя оператора (означает «перейти в п/п); п — номер строки-заголовка п/п. Пример: 50 GOSUB 200
Работа оператора: оператор запоминает номер строки программы, следующей за ним по тексту, и переходит к выполнению п/п, начиная с п-ой строки.
Оператор RETURN. Он обеспечивает возврат из п/п в рабочую программу непосредственно к строке, следующей за оператором GOSUB.
Пример 1. Определить НОД четырех натуральных чисел, используя подпрограмму нахождения НОД двух натуральных чисел.
10 REM НОДЧ
20 INPUT “Введите четыре числа ”; A,B,C,D
30 X=A: Y=B: GOSUB 80
40 Y=C: GOSUB 80
50 Y=D: GOSUB 80
60 PRINT “Наибольший общий делитель равен ”;X
70 END
80 REM Подпрограмма НОД двух чисел
90 IF X=Y THEN 120
100 IF X<>Y THEN X=X-Y ELSE Y=Y-X
110 GOTO 90
120 RETURN
Пример 2. Составить
программу вычисления площади фигуры ограниченной кривой
y=4x2 + 5x + 7 методом трапеций.
Указания: Площадь фигуры,
ограниченной кривой будет равна сумме площадей трапеций:
S = S1 + S2 + S3 .
Площадь трапеции равна .
10 REM Площадь фигуры
20 INPUT ”Введите значения начала и конца отрезка”; A,B
30 INPUT ”На сколько частей делим отрезок”;N
40 H=(B-A)/N: X=A
50 DEF FNFUNC1(X)= 4*X^2+5*X+7
60 FOR I=1 TO N
70 GOSUB 130
80 S= S + S1
90 X= X + H
100 NEXT I
110 PRINT “Площадь фигуры равна ”;S
120 END
130 REM Подпрограмма вычисления площади трапеции
140 Y1= FNFUNC1(X)
150 Y2= FNFUNC1(X+H)
160 S1=(Y1+Y2)/2*H
170 RETURN
Пояснения: В строке 50 использован оператор DEF FN… , определяющий функцию пользователя с именем FUNC1.
2. Задания.
1. Внимательно изучите теоретический материал.
2. Запустите программу c:\QBasic\qbasic.exe.
3. Наберите программу, приведенную в примере 1. Исполните программу для значений:
1. a=14 b=56 c=98 d=133
2. a=16 b=96 c=40 d=28
Результаты выполнения программы занесите в таблицу. Сохраните созданный файл под именем pr45_1.bas в папку своей группы.
4. Наберите программу, приведенную в примере 2. Вычислите площадь фигуры на отрезке [-3;4], если отрезок делится на 20 частей; 100 частей. Результаты выполнения программы запишите в отчет. В каком случае вы вычислили площадь фигуры с большей точностью?
Сохраните созданный файл под именем pr45_2.bas в папку своей группы.
5. Измените программу примера 2 таким образом, чтобы подсчитать площадь фигуры ограниченной кривой методом прямоугольника. Исполните программу для тех же условий что и в задании 4. Результаты выполнения программы запишите в отчет. Метод трапеций или метод прямоугольников дает результат с большей точностью? Сохраните созданный файл под именем pr45_3.bas в папку своей группы.
3. Оформление отчета:
1. Переписать определение подпрограммы, правила использования оператора GOSUB и RETURN, примеры 1, 2 программ из методического пособия в тетрадь.
2. Выполнить п.п. 2-5 задания.
3. Дать ответы на контрольные вопросы и объяснить их.
4. Контрольные вопросы.
1. Какой эффект дает использование подпрограммы?
2. Что произойдет если рабочая программа, в которой используется подпрограмма, не будет завершена оператором END?
3. Можно ли в одной программе использовать несколько подпрограмм?
4. Как изменится результат выполнения программы, если подпрограмму не завершать оператором RETURN?
© ООО «Знанио»
С вами с 2009 года.