Программирование вычислительных процессов на языке BASIC

 

Содержание


Введение

Задание

Выбор и обоснование методов решения

Переменные программы

Листинг программы

Пояснения

График временной функции

Заключение

Список использованной литературы


Введение


С развитием промышленности возникает необходимость в автоматизации технологических процессов и производств. На данном этапе развития техники широкое применение находят роботы и робототехнические системы. Для управления производственными процессами в 70-е, 80-е годы стало возможным применение микропроцессорной техники. Развитие различных языков программирования (Fortran, Basic, Assembler, Pascal, C и т.д.) дает возможность разработки и внедрения объемных пакетов прикладных программ для управления сложными технологическими процессами и производствами. Пакеты прикладных программ дают возможность дистанционного управления и контроля сложных процессов с невозможным прямым вмешательством человека. Управляющая система намного быстрее и точнее выполняет поставленные задачи, не требуя при этом времени на отдых. Применение программного управления значительно увеличивает производительность труда. Первоначальные затраты материальных средств на установку и наладку микропроцессорного оборудования в процессе работы быстро окупаются. Это делает выгодным применение систем такого рода в производстве.

Для написания программного обеспечения к микропроцессорному оборудованию подходит язык программирования Basic. Программы, написанные на нем, обладают высокой работоспособностью и не требуют от управляющей машины высоких аппаратных качеств. Они позволяют провести расчет параметров системы, как в машинном, так и в реальном времени.


Задание


Составить схему алгоритма и программу для построения графика временной функции, работающую как в машинном, так и в реальном времени. Реальное время в диапазоне () формируется таймером в виде программного модуля с метками , называемыми временем квантования.

При вычислении функции использовать алгоритм Горнера.

Функция:


, где время изменяется от до .

.


- корень нелинейного уравнения , которое надо ре-шить методом простых итераций с точностью , при начальном зна-чении корня лежащем в диапазоне .

- сумма корней квадратного уравнения , при .


Коэффициенты:


Выбор и обоснование методов решения


В соответствии с заданием выбираем методы решения задач.

Для нахождения корня нелинейного уравнения используем метод простых итераций.

Этот метод основан на основе попадания в -окрестность модуля разности двух последовательно приближенно вычисленных корней и . Подробнее см. листинг программы. В этом случае нелинейное уравнение считают решенным с заданной степенью точности.

Для вычисления функции используем алгоритм Горнера (схему Горнера).

Схема Горнера применяется для вычисления степенных рядов. Схема Горнера представляет собой рекуррентную формулу, по которой вычисляется значение функции в каждый момент времени.

Пример вычисления степенного ряда с помощью схемы Горнера.

Вычислим функцию в точке при помощи схемы Горнера.

Для этого составим следующую программу на языке Basic:


T=2=1I=1 TO 4=Y*T+a(I)

NEXT IY


В результате работы данной программы будет вычислена функция в точке , а результат будет выведен на экран.


Переменные программы


Имя переменнойКоэффициентПоясненияAaКоэффициент функцииBbКоэффициент функцииCcКоэффициент функцииA1a1Коэффициент квадратного уравненияB1b1Коэффициент квадратного уравненияC1c1Коэффициент квадратного уравненияggКорень нелинейного уравненияddСумма корней квадратного уравнения

Листинг программы

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

' ===============Intro===================iNTRO

' =============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.


Содержание Введение Задание Выбор и обоснование методов решения Переменные программы Листинг программы Пояснения График временной функц

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ