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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    31,47 Кб
  • Опубликовано:
    2012-10-08
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Содержание

Введение

Задание

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

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

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

Пояснения

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

Заключение

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

Введение

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

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

Задание

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

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

Функция:

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

.

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

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

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

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

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

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

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

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

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

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

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

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

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

NEXT IY

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

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

Имя переменной

Коэффициент

Пояснения

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.      

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!