Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по QBasic.doc
Скачиваний:
4
Добавлен:
29.04.2019
Размер:
5.12 Mб
Скачать

Використання функцій типу def fn

Нагадаємо, що DEF FN є aльтepнaтивнoю фopмoю фyнкції, що визначається користувачем.

Пoдібнo до фyнкції типу FUNCTION, DEF FN повертає знaчeння в ocнoвнy програмy. Але вoнa, як і SubRoutіne, є нeвід’ємною чacтиною ocнoвнoї програми. Більш конкретний опис DEF FN див. у лабораторній роботі №5.

Зразок виконання завдання:

Завдання 1. Написати програму побудови графіків функцій:

Y=SQR(X*X+2)

Y=SIN(7*X)

Y =X*X*SIN(1/X)

використовуючи підпрограму-функцію.

BEGIN1:

CLS

Побудова графіка функцій

DIM Y(600)

COLOR 1, 10

PRINT: PRINT "1. Y =X*X*SIN(1/X) "

PRINT: PRINT "2. Y=SQR(X*X+2)"

PRINT: PRINT "3. Y=SIN(7*X) "

PRINT: PRINT "Вкажіть номер рівняння"

INPUT N

DEF FNA(X)

IF N = 1 THEN FNA = X * X * SIN(1 / X)

IF N = 2 THEN FNA = SQR(X * X + 2)

IF N = 3 THEN FNA = SIN(7 * Z)

END DEF

PRINT: PRINT "Введіть початкове значення Х "

INPUT A

INPUT "Введіть кінцеве значення X "; B

CLS

N1 = 500: HX = (B - A) / N1

LOCATE 5, 15

PRINT "Область змінення Х"

PRINT

PRINT " Початкове значення Х="; A

PRINT " Кінцеве значення Х="; B

PRINT "Крок HX="; HX

Обчислення області значень Y(I), YMAX, YMIN

YMAX=-1E+10: YMIN=1E+10: I = 1

FOR X = A TO B STEP HX

I = I + 1

Y(I) = FNA(X)

IF Y(I) > YMAX THEN YMAX = Y(I)

IF Y(I) < YMIN THEN YMIN = Y(I)

NEXT X

PRINT "YMIN="; YMIN, "YMAX="; YMAX

'Обчислення масштабів MX,MY, координати YO

MX = 320 / (B - A): MY = 200 / ABS(YMAX - YMIN)

IF (YMAX > 0) AND (YMIN >= 0) THEN Y0 = 200

IF (YMAX = 0) AND (YMIN < 0) THEN Y0 = 0

IF (YMAX > 0) AND (YMIN < 0) THEN Y0 = INT(MY * YMAX +.5)

LOCATE 24, 1

PRINT "Для побудови графіка функції натисніть "

LOCATE 25, 1

PRINT " довільну клавішу"

WHILE INKEY$ = "" 'Припинення виконання програми до натиснення довільної клавіші

WEND

CLS

SCREEN 7

COLOR 5, 0

I = 0 'Побудова графіка

COL = 2 'Колір графіка — зелений

X0 = 80

FOR X = A TO B STEP HX

I = I + 1

XE = INT(X * MX +.5) + X0 'Перетворення (X,Y)

YE = YO - INT(Y(I) * MY +|5) ‘в координати на екрані

PSET (80 + XE, 110 + YE), COL 'Відображення точок

NEXT X

'Закінчення і повтор програми

LOCATE 1, 2

PRINT "Якщо потрібно виконання програми натисніть (Y), інакше - (N)"

BEGIN2:

G$ = INKEY$

IF G$ <> LCASE$("Y") AND G$ <> LCASE$("N") THEN GOTO BEGIN2

IF G$ = LCASE$("Y") THEN GOTO BEGIN1

END

Завдання 2. Дане натуральне число n та число x, причому . Обчисліть, користуючись підпрограмою типу SubRoutіne:

Обчислення закінчити, коли модуль останнього просумованого доданку стане менше заданого числа E.

У цій задачі зручно (для скорочення дій в алгоритмі) організувати один передвизначений процес (підпрограму), що обчислює добуток в чисельнику та в знаменнику.

REM Використання SubRoutіne

INPUT X, N, EPS

Y=0:K=0

A:

K=K+1

PN=N : PK=N-K+1 : H=-1

GOSUB D:

C=P: PN=1:PK=K:H=1

GOSUB D:

Z=P: R=C/Z*X^K : Y=Y+R

IF ABS R>=EPS THEN GOTO A:

PRINT X,Y

END

D: ‘ Підпрограма

P=1

FOR I=PN TO PK STEP H: P=P*I: NEXT I

RETURN