Имя
переменной
|
Коэффициент
|
Пояснения
|
A
|
a
|
Коэффициент
функции
|
B
|
b
|
Коэффициент
функции
|
C
|
c
|
Коэффициент
функции
|
A1
|
a1
|
Коэффициент
квадратного уравнения
|
B1
|
b1
|
Коэффициент
квадратного уравнения
|
C1
|
c1
|
Коэффициент
квадратного уравнения
|
g
|
g
|
Корень
нелинейного уравнения
|
d
|
d
|
Сумма
корней квадратного уравнения
|
Листинг программы
SUB Delay (Time!)FUNCTION BaseF!
(K!)FUNCTION Range! (K!, Range!)SUB Scale (A!, B!, C!, MaxT!, Tkv!)SUB Grid
()SUB MessageBox (Message$)SUB MainRef (MenuItem!)SUB Text ()SUB StData ()SUB
Main ()SUB DataOut ()SUB DataIn ()SUB Outro ()SUB Work (Time!)FUNCTION RootSum!
(A!, B!, C!)FUNCTION Iteration! (XBeg!, XEnd!, Eps!)SUB iNTRO ()
'
=======================================
' Curs_Task;
' N23
'
=======================================
' ==============Constants================TConst
= 2500: 'Depends from the machine
' ==============Shared
Vars==============SHARED DataFlag= 0
' =============Main
Screen===============Main
'
==================END==================BaseF (K)
'Base functionA, B, C, d, g= ABS(A *
K ^ 3 + B * K ^ 2 + C * K + d + g)FUNCTIONDataIn
'Task conditions inputingTBeg, TEnd,
Tkv, XBeg, XEnd, Eps, A, B, C, A1, B1, C1, d, g, DataFlagRootsFlag= 112"Введение начальных значений:""tнач.
"; TBeg"tкон.
"; TEnd"tквант.
"; Tkv"Xнач.
"; XBeg"Xкон.
"; XEnd"Точность
"; Eps"A "; A"B "; B"C "; C"A1 ";
A1"B1 "; B1"C1 "; C1= RootSum(A1, B1, C1)WHILE RootsFlag =
0= Iteration(XBeg, XEnd, Eps)"Нажмите любую клавишу."INKEY$
= ""= 1MainRef(1)SUBDataOut
'Table & Task conditionsTBeg,
TEnd, Tkv, XBeg, XEnd, Eps, A, B, C, A1, B1, C1, d, g, DataFlag12(0, 0)-(240,
464), 7, BI = 0 TO 13(32, I * 32 + 8)-(232, (I + 1) * 32 + 8), 7, B(112,
8)-(112, 14 * 32 + 8), 77, 2: PRINT "П"8, 2:
PRINT "А"9,
2: PRINT "Р"10,
2: PRINT "А"11,
2: PRINT "М"12,
2: PRINT "Е"13,
2: PRINT "Т"14,
2: PRINT "Р"15,
2: PRINT "Ы"16,
2: PRINT " "17, 2: PRINT "З"18, 2:
PRINT "А"19,
2: PRINT "Д"20,
2: PRINT "А"21,
2: PRINT "Ч"22,
2: PRINT "И"2,
6: PRINT "Tнач.":
LOCATE 2, 16: PRINT TBeg4, 6: PRINT "Tкон.":
LOCATE 4, 16: PRINT TEnd6, 6: PRINT "Tквант.":
LOCATE 6, 16: PRINT Tkv8, 6: PRINT "Xнач.":
LOCATE 8, 16: PRINT XBeg10, 6: PRINT "Xкон.":
LOCATE 10, 16: PRINT XEnd12, 6: PRINT "Точность":
LOCATE 12, 16: PRINT Eps14, 6: PRINT "A": LOCATE 14, 16: PRINT A16,
6: PRINT "B": LOCATE 16, 16: PRINT B18, 6: PRINT "C":
LOCATE 18, 16: PRINT C20, 6: PRINT "A1": LOCATE 20, 16: PRINT A122,
6: PRINT "B1": LOCATE 22, 16: PRINT B124, 6: PRINT "C1":
LOCATE 24, 16: PRINT C126, 6: PRINT "d": LOCATE 26, 16: PRINT d28, 6:
PRINT "g": LOCATE 28, 16: PRINT gSUBDelay (Time)
'Timer BlockI = 1 TO TConst * Time=
A + EXP(1)SUBGridScX, ScY
'Draws scaled coordinate gridI = 0
TO 640 STEP 10(I, 0)-(I, 480), 8I = 0 TO 480 STEP 10(0, I)-(640, I), 8(100,
0)-(100, 480), 9(0, 400)-(640, 400), 9(100, 0)-(103, 3), 9(100, 0)-(97, 3),
9(640, 400)-(637, 403), 9(640, 400)-(637, 397), 91, 11: PRINT "Y"27,
80: PRINT "t"27, 11: PRINT "0"(97, 300)-(106, 300), 919, 3:
PRINT Range(100 * ScY, 2)(97, 200)-(106, 200), 913, 3: PRINT Range(200 * ScY,
2)(97, 100)-(106, 100), 97, 3: PRINT Range(300 * ScY, 2)(200, 397)-(200, 403),
927, 25: PRINT Range(100 * ScX, 2)(300, 397)-(300, 403), 927, 37: PRINT
Range(200 * ScX, 2)(400, 397)-(400, 403), 927, 50: PRINT Range(300 * ScX,
2)(500, 397)-(500, 403), 927, 62: PRINT Range(400 * ScX, 2)SUBiNTRO
'Intro screen12(0, 0)-(639, 479), 7,
B(3, 3)-(636, 476), 7, B(80, 128)-(566, 206), 7, B(84, 132)-(562, 202), 7,
B(84, 132)-(80, 128)(566, 206)-(562, 202)(566, 128)-(562, 132)(84, 202)-(80,
206)2, 38"БГПА"4,
38"ФИТР"10,
32"Курсовой проект."
LOCATE
12, 13"Программирование вычислительных процессов на языке BASIC."18,
40"Выполнил студент гр.107110 Орел О.О."20, 40"Проверил
Москаленко А.А."
LOCATE 22, 40"Дата
21.12.2001 г."28,
30"Нажмите любую клавишу."INKEY$
= ""SUBIteration (XBeg, XEnd, Eps)
'Simple iteration method= (XBeg +
XEnd) / 2= X0= -COS(EXP(.52 * LOG(X1)) + 2)ABS(X2 - X1) > Eps= X2=
-COS(EXP(.52 * LOG(X1)) + 2)= X2FUNCTIONMain
'Main MenuTkvDataOut(248, 0)-(630,
464), 7, B2, 37: PRINT "------------ОСНОВНОЕ МЕНЮ------------"6,
52: PRINT "УСЛОВИЕ"10,
48: PRINT "ЗАДАТЬ ПАРАМЕТРЫ"
LOCATE
14, 46: PRINT "ПАРАМЕТРЫ ПО УСЛОВИЮ"18, 44: PRINT "ГРАФИК В
РЕАЛЬНОМ ВРЕМЕНИ"22, 44: PRINT "ГРАФИК В МАШИННОМ ВРЕМЕНИ"
LOCATE 26, 53: PRINT "ВЫХОД"(304,
72)-(576, 104), 3, BMI: MI = 1: 'First menu item1$ = INKEY$(Key$ = CHR$(0) +
"P") AND (MI < 6) THEN(304, 72 + (MI - 1) * 64)-(576, 104 + (MI -
1) * 64), 0, B= MI + 12000, 2(304, 72 + (MI - 1) * 64)-(576, 104 + (MI - 1) *
64), 3, BIF(Key$ = CHR$(0) + "H") AND (MI > 1) THEN(304, 424 - (6
- MI) * 64)-(576, 392 - (6 - MI) * 64), 0, B= MI - 12000, 2(304, 424 - (6 - MI)
* 64)-(576, 392 - (6 - MI) * 64), 3, BIFKey$ = CHR$(13) THEN1000, 2CASE
MI1Text2DataIn3StData4Work(Tkv)5Work(0)6OutroSELECTIFSUBMainRef (MenuItem)
'Refreshing of Main MenuDataOut(248,
0)-(630, 464), 7, B2, 37: PRINT "------------ОСНОВНОЕ МЕНЮ------------"6,
52: PRINT "УСЛОВИЕ"10,
48: PRINT "ЗАДАТЬ ПАРАМЕТРЫ"
LOCATE
14, 46: PRINT "ПАРАМЕТРЫ ПО УСЛОВИЮ"18, 44: PRINT "ГРАФИК В
РЕАЛЬНОМ ВРЕМЕНИ"22, 44: PRINT "ГРАФИК В МАШИННОМ ВРЕМЕНИ"
LOCATE 26, 53: PRINT "ВЫХОД"(304,
72 + (MenuItem - 1) * 64)-(576, 104 + (MenuItem - 1) * 64), 0, B= MenuItem +
12000, 2(304, 72 + (MenuItem - 1) * 64)-(576, 104 + (MenuItem - 1) * 64), 3,
BSUBMessageBox (Message$)
'Drops message box=
LEN(Message$)(300 - Length * 8, 190)-(340 + Length * 8, 290), 0, BF(300 -
Length * 8, 190)-(340 + Length * 8, 290), 7, B15, 41 - Length / 2: PRINT
Message$INKEY$ <> CHR$(13)SUBOutro
'Outro Message12(0, 0)-(639, 479),
7, B(3, 3)-(636, 476), 7, B
CALL
MessageBox("Программа завершила свою работу.")
STOPSUBRange (N, Range)
'Value Precision= INT(N)= INT((N -
IntN) * 10 ^ Range)= IntN + RealN / 10 ^ RangeFUNCTIONRootSum (A, B, C)
'Equation Roots SumRootsFlag(B * B -
4 * A * C) >= 0 THEN= ((SQR(B * B - 4 * A * C) - B) / 2 * A) + ((-SQR(B * B
- 4 * A * C) - B) / 2 * A): RootsFlag = 1CALL MessageBox("Ошибка в вычислении корней."):
CLS : RootsFlag = 0IFFUNCTIONScale (A, B, C, MaxT, Tkv)
'Axes Scalingd, g, ScX, ScY= INT(A *
MaxT ^ 3 + B * MaxT ^ 2 + C * MaxT + d + g)= MaxT= MaxX / 530: 'X-Resolution=
MaxY / 390: 'Y-ResolutionSUBStData
'Standart task conditionsTBeg, TEnd,
Tkv, XBeg, XEnd, Eps, A, B, C, A1, B1, C1, d, g, DataFlag= 0= 7= .25= .5= 1=
.001= 2.7= 1.5= 4.2= 2= 5= -2= 1= RootSum(A1, B1, C1)= Iteration(XBeg, XEnd,
Eps)MainRef(2)SUBText
'Task conditions12DataOut(248,
0)-(630, 464), 7, B2, 38: PRINT "--------------УСЛОВИЕ--------------"
LOCATE
4, 51: PRINT "ВАРИАНТ 23."6, 34: PRINT "Составить схему
алгоритма и программу для "7, 35: PRINT "построения графика временной
функции, ра-"8, 35: PRINT "ботающую как в машинном, так и в
реальном"9, 35: PRINT "ботающую как в машинном, так и в
реальном"10, 35: PRINT "времени. Реальное время в диапазоне "11,
35: PRINT "(t0-tкон.) формируется таймером в виде про-"12, 35: PRINT
"граммного модуля с метками Тквант., называ-"13, 35: PRINT
"емыми временем квантования. При вычислении"14, 35: PRINT
"функции использовать алгоритм Горнера."
LOCATE 16, 38: PRINT
"-------------ПАРАМЕТРЫ-------------"418,
38: PRINT "F(t) = |At^3 + Bt^2 + Ct + d + g|"219, 35: PRINT "tквант.=0.25
с;
t0=0 с;
tкон.=7
с."
LOCATE
21, 34: PRINT "g-корень нелинейного ур-я: x+cos(x^0.52+2)=0,"22, 34:
PRINT "которое надо решить методом простых итераций."
LOCATE 24, 36: PRINT "Точность-0.001;
Xнач.=0.5;
Xкон.=1."26,
34: PRINT "d-сумма корней квадр-го ур-я:
A1z^2+B1z+C1=0"27, 45: PRINT "При A1=2; B1=5;
C1=-2."28, 40: PRINT "Коэффициенты: A=2.7;
B=1.5; C=A+B."15INKEY$ <> CHR$(13)MainRef(0)SUBWork (Time)
'Working moduleTBeg, TEnd, Tkv,
XBeg, XEnd, Eps, A, B, C, A1, B1, C1, d, g, ScX, ScYMI
'Data checkingDataFlag = 0 THEN
CALL
MessageBox("Не заданы параметры задачи!")
MainRef (MI - 1)SUBIF(TBeg >=
TEnd) OR (TBeg < 0) OR (Tkv <= 0) THEN
CALL
MessageBox("Временные коэффициенты заданы неверно.")
MainRef (MI - 1)SUBIF(A > 5) OR
(B > 10) OR (C > 10) THEN
CALL
MessageBox("Один из коэффициентов A,B,C слишком велик.")
MainRef (MI - 1)SUBIFd > 50
THENMessageBox("Коэффициенты
A1,B1,C1 превышают допустимые значения.")(MI
- 1)SUBIF= (TEnd - TBeg) / Tkv(Points > 30) THEN
CALL
MessageBox("Слишком много точек.Уменьшите время квантования.")
MainRef (MI - 1)SUBIF
IF
g > 20 THENMessageBox("g превышает допустимое значение.")
MainRef (MI - 1)SUBIF
'Draw scaled gridScale(A, B, C,
TEnd, Tkv)Grid
'Gorner schemeArray(3)YBlock(Points
+ 1)(3) = A(2) = B(1) = C(0) = d + gX = 0 TO Points= Array(3)I = 3 TO 1 STEP
-1(X) = Array(I - 1) + P * (X + TBeg / Tkv) * Tkv= YBlock(X)(X) =
ABS(YBlock(X))
'Points contro(Points + 1) = 0Points
<> CINT(Points) THEN YBlock(Points + 1) = -BaseF(TEnd)
'GraphicsK = TBeg / ScX TO TEnd /
ScX - 2(100 + K, 400 - BaseF(K * ScX) / ScY), 1, 14(100 + K, 400 - BaseF(K *
ScX) / ScY), 14K = TBeg / Tkv TO TEnd / Tkv(100 + K * Tkv / ScX, 400 - YBlock(K
- TBeg / Tkv) / ScY), 2, 4(100 + K * Tkv / ScX, 400 - YBlock(K - TBeg / Tkv) /
ScY), 4Time <> 0 THEN CALL Delay(Time * 100)YBlock(Points + 1) < 0
THEN(100 + TEnd / ScX, 400 + YBlock(Points + 1) / ScY), 2, 3(100 + TEnd / ScX,
400 + YBlock(Points + 1) / ScY), 3IFINKEY$ <> CHR$(13)
'TableI = 0 TO 13(32, I * 32 +
8)-(232, (I + 1) * 32 + 8), 7, B(0, 0)-(240, 464), 7, B7, 2: PRINT "Р"8,
2: PRINT "А"9,
2: PRINT "С"10,
2: PRINT "Ч"11,
2: PRINT "Ё"12,
2: PRINT "Т"13,
2: PRINT "Н"14,
2: PRINT "А"15,
2: PRINT "Я"16,
2: PRINT " "17, 2: PRINT "Т"18, 2:
PRINT "А"19,
2: PRINT "Б"20,
2: PRINT "Л"21,
2: PRINT "И"22,
2: PRINT "Ц"23,
2: PRINT "А"(248,
0)-(630, 464), 7, B2, 38: PRINT "-----ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ-----"7,
50: PRINT "Коэффициенты:"910,
53: PRINT "A ="; A12, 53: PRINT "B ="; B14, 53: PRINT
"C ="; C15(112, 8)-(112, 14 * 32 + 8), 72, 9: PRINT "t"2,
20: PRINT "Y(t)"= 4= 0K <= PointsI > 28 THENINKEY$ <>
CHR$(13)I = 0 TO 13(32, I * 32 + 8)-(232, (I + 1) * 32 + 8), 7, B(112, 8)-(112,
14 * 32 + 8), 7(0, 0)-(240, 464), 7, B7, 2: PRINT "Р"8,
2: PRINT "А"9,
2: PRINT "С"10,
2: PRINT "Ч"11,
2: PRINT "Ё"12,
2: PRINT "Т"13,
2: PRINT "Н"14,
2: PRINT "А"15,
2: PRINT "Я"16,
2: PRINT " "17, 2: PRINT "Т"18, 2:
PRINT "А"19,
2: PRINT "Б"20,
2: PRINT "Л"21,
2: PRINT "И"22,
2: PRINT "Ц"23,
2: PRINT "А"
LINE
(248, 0)-(630, 464), 7, B2, 38: PRINT "-----ДОПОЛНИТЕЛЬНАЯ
ИНФОРМАЦИЯ-----"
LOCATE 7, 50: PRINT "Коэффициенты:"910,
53: PRINT "A ="; A12, 53: PRINT "B ="; B14, 53: PRINT
"C ="; C152, 9: PRINT "t"2, 20: PRINT "Y(t)"=
4IFI, 6: PRINT Range(K * Tkv, 3)I, 16: PRINT Range(YBlock(K), 3)= I + 2= K +
1INKEY$ <> CHR$(13)(MI-1)SUB
Пояснения
При
задании параметров задачи нужно учитывать что во избежание некорректной работы
программы переменные программы могут принимать следующие значения:
Параметры , и должны быть
выбраны таким образом, что .
Процедуры и функции:
SUB Delay (Time!) - временная
задержка. В процедуре используется временная константа TConst, объявленная в
основной программе. Параметр Time - время в секундах.
BaseF! (K!) - временная функция.
Используется для построения линии графика. Параметр K - значение аргумента.
Возвращает значение функции для аргумента K.
FUNCTION Range! (K!, Range!) -
возвращает K, отбрасывая все знаки после запятой, начиная с Range.
SUB Scale
(A!, B!, C!, MaxT!, Tkv!) - масштабирование графика.
Параметры:
A, B, C - коэффициенты функции, MaxT - наибольшее возможное значение времени,
Tkv - время квантования. Вычисляет коэффициенты масштабирования ScX, ScY.Grid
() - рисование координатной сетки с нанесенными значениями.MessageBox
(Message$) - вывод сообщения. Параметр - текстовая переменная, содержащая
сообщение.MainRef (MenuItem!) - обновление основного меню. Параметр - номер
элемента меню.Text () - вывод текстового сообщения, содержащего условие
задачи.StData () - задание параметров задачи по условию.Main () - основная
процедура, содержащая механизм меню.DataOut () - вывод окна с таблицей
параметров задачи. DataIn () - задание параметров задачи.Outro () - вывод
сообщения о завершении программы.Work (Time!) - процедура вычисления значений
функции в основных точках и рисования графика в машинном или реальном времени.
Параметр - время в секундах.
FUNCTION RootSum! (A!, B!, C!) -
возвращает сумму корней квадратного уравнения. Параметры - коэффициенты
квадратного уравнения. Iteration! (XBeg!, XEnd!, Eps!) - возвращает корень
нелинейного уравнения, лежащий в диапазоне [XBeg;XEnd], вычисленный методом
простых итераций с точностью Eps.
SUB Intro () - вывод титульного
листа.
График временной функции
программа вычислительный функция
Заключение
Мировой и отечественный опыт
подготовки специалистов в области компьютерной науки и компьютерной инженерии
подтверждает целесо-образность и эффективность понимания основ программирования
на более простых и базирующих языках программирования, одним из которых
является Basic. На примере данной программы, написанной на языке Basic, показан
несложный вычислительный процесс, позволяющий обеспечить построение графика
временной функции, работающий как в машинном, так и в реальном времени.
Примечание: электронный вариант
программы находится на приложенной к пояснительной записке дискете под именем
KURS.bas, а электронный вариант пояснительной записки - под именем Zap.doc.
Список использованной литературы
.
Дьяконов В. П. “Компьютер в быту”. - С.:Русич, 2006 г.
1.