Використання кольорового графічного режиму побудови графіків

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Інші

Частина тексту файла (без зображень, графіків і формул):

Лабораторна робота № 9 Використання кольорового графічного режиму побудови графіків 1. Порядок виконання роботи 1.1. Скласти алгоритмічною мовою Фортран програму чисельного диференціювання табличної функції та використати для зображення функції і її похідних на моніторі кольоровий графічний режим. 1.2. Відлагодити на комп’ютері складену програму. 1.3. Ввести числові дані та отримати результат. 1.4. Скласти звіт про роботу й захистити його. 2. Вказівки до виконання роботи 2.1. Чисельне диференціювання табличної функцій При розв’язуванні ряду інженерних задач виникає необхідність диференціювання функцій, заданих у вигляді таблиці (табличних функцій): № вузла 1 2 … n … N  x   …  …      …  …    У цих випадках виконують чисельне диференціювання, яке полягає у наближеному знаходженні похідної у вузлах за спеціальними формулами. Найпростішою є формула для обчислення похідної функції як відношення скінченого приросту функції до відповідного приросту аргументу. Так, похідну у n-му вузлі таблиці, якою задана функція, наближено можна обчислити за формулою  де  – крок аргументу. Вона отримана за рахунок заміни функції в околі точки n інтерполяційним поліномом першого степеня. Очевидно, що чим менша величина кроку, тим вища точність обчислення похідної. Точніші формули для обчислення похідної при заданому h (тут і далі будемо вважати, що вузли рівновіддалені, тобто h = const) отримують, замінивши функцію  інтерполяційним поліномом степеня, більшого від першого. Так, на відміну від наведеної вище двоточкової формули чисельного диференціювання отримують три-, чотири-, п’ятиточкові і т.д. формули. У цьому випадку для обчислення похідної необхідно у відповідний вираз підставляти значення функції не у двох, а у трьох, чотирьох, п’яти і т.д. сусідніх вузлах. Такі формули відповідно називають три-, чотири- і п’ятиточковими. В інженерних задачах найчастіше використовують триточкові формули:  Очевидно, що при необхідності чисельного диференціювання функції, заданої аналітично, потрібно спочатку протабулювати функцію (як це робилося в лабораторній роботі № 3), а потім, використовуючи формули чисельного диференціювання, обчислити значення похідної в усіх її вузлах. Приклад. Для заданої функції  скласти програму її чисельного диференціювання в діапазоні від a до b при заданій у цьому діапазоні кількості N рівновіддалених вузлів. Порівняти наближені значення похідної з їх точними значеннями. Результати обчислень вивести до файла у вигляді таблиці, яка би містила порядковий номер вузла, значення аргументу х, значення функції у, наближене значення похідної  та її точне значення. Вивести на екран монітора кольорове графічне зображення функції та точне і наближене значення її похідної. Задана функція диференціюється аналітично. Формула, за якою обчислюється точне значення похідної, має вигляд:  Один із можливих варіантів програми наведений далі. Він передбачає виведення на екран монітора у кольоровому графічному режимі протабульованої функції y(x) та наближеного і точного значень її похідної  Для використання цієї можливості в основну програму слід вставити два оператори (у тексті програми ці оператори виділені жирним шрифтом). Перший з них INCLUDE ‘FGRAPH.FI’ підключає графічну бібліотеку, а другий CALL GRAF(X, Y, Y1, Y1T, N) – це звернення до підпрограми GRAF побудови графіків функції та наближеного і точного значень її похідної у вузлах. У процесі роботи підпрограми GRAF використовуються ще чотири інших підпрограми: підпрограма VID обчислення максимальних за модулем значення функції й значення похідних функції у вузлах та формування значень функції й значень похідних функції “у відносних одиницях”, підпрограма PRMM визначення максимального і мінімального значень функції чи похідних у вузлах, підпрограма CR_REAL перетворення дійсного числа в ASCII код. та підпрограма CR_REAL перетворення цілого числа в ASCII код. Для виконання поставленого завдання студентові необхідно скласти лише основну програму. Підпрограми GRAF, VID, PRMM і CR_REAL складені викладачами кафедри “Електричні машини та апарати” НУ “Львівська політехніка” і містяться у програмному забезпеченні даної дисципліни. Для використання кольорового графічного режиму в оболонці Microsoft Developer Studio слід створити спеціальний проект. Послідовність створення проекту та запуску програми є такою: 1. У верхньому меню знаходимо опцію File, а далі підопцію New, у якій вибираємо зі списку графу Project Workspace, як показано на рис. 19, та натискаємо ОК.   Рис. 19. Оболонка Microsoft Developer Studio 2. Послідовно вказуємо назву, місце розташування та тип проекту, як показано на рис. 20.  Рис. 20. Послідовність створення та вибір типу проекту ПАМ'ЯТАЙТЕ!!! Попередньо у робочій папці (у прикладі це папка Lab8, що записана за адресою D:\Students\EM-11\ ) слід записати набрану основну програму (LAB8.FOR) та файл GRAF.FOR з програмного забезпечення даної дисципліни, де містяться підпрограми GRAF, VID, PRMM, CR_REAL і CR_INT. 3. У верхньому меню знаходимо опцію Insert та підопцію Files into Project. У вікні, яке появиться, слід вибрати файли, що ввійдуть до проекту (відповідно до прикладу це LAB8.FOR та GRAF. FOR) та натиснути ОК або Add. У результаті цієї операції зліва з’явиться віконце з деревом проекту, як показано на рис. 21. 4. Компілюємо файли LAB8.FOR та GRAF. FOR. У результаті виконання такої операції у робочій папці автоматично створиться папка DEBUG, у якій будуть знаходитися файли з розширенням *.obj. 5. Будуємо проект та створюємо файл lab8.ехе. 6. Закриваємо Microsoft Developer Studio. 7. Налаштовуємо відеорежим. Оскільки графічна бібліотека Microsoft Developer Studio використовує 256 кольорів, то для налаштування переключення біжучого відеорежиму у режим 256 кольорів слід виконати наступні операції: знайти файл з іменем проекту і розширенням *.ехе (відповідно до прикладу, файл міститься за адресою: D:\Students\EM-11\lab8\debug); навести мишку на файл, натиснути її праву кнопку та вибрати опцію меню Властивості (англ. Properties); у віконечку знайти закладку Сумісність та вибрати параметри екрану (поставити значок ( навпроти тексту „256 кольорів”), як показано на рис. 22; натиснути ОК. 8. Запускаємо програму (файл lab8.exe) на виконання.  Рис. 21. Вигляд вікна з деревом проекту та файлами, що складають проект  Рис. 22. Вибір параметрів екрану С С С С С C Лабораторна робота № 9 Чисельне диференціювання таблично заданої функції Виконав ст. гр. ЕМ–11 Вдалий Б. Підключення графічної бібліотеки    INCLUDE ‘FGRAPH.FI’  C Оголошення розміру масивів.  С C C C Тут: X Y Y1 Y1T – масив значень аргументу функції у вузлах; – масив значень функції у вузлах; – масив наближених значень похідної функції у вузлах; – масив точних значень похідної функції у вузлах.  C C Кількість вузлів таблично заданої функції не може перевищувати 100, в іншому випадку розміри масивів слід змінити!    DIMENSION X(100), Y(100), Y1(100), Y1T(100)  C Введення вхідних даних у діалоговому режимі. Границі інтервалу    1 2 WRITE (*, 1) FORMAT (2X, ‘A=’,$) READ (*, *) A WRITE (*, 2) FORMAT (2X, ‘B=’,$) READ (*, *) B  C Кількість вузлів    3 WRITE (*, 3) FORMAT (2X, ‘N=’,$) READ (*, *) N  C Обчислення величини кроку    H = (B–A)/(N–1)  C C Обчислення значень аргументу та відповідних їм значень функції у вузлах (табулювання функції)    4 DO 4 I = 1, N X(I) = A + H*(I–1) Y(I) = EXP(–X(I))*SIN(X(I))  C C Чисельне диференціювання функції у вузлах. Обчислення наближеного значення похідної функції у 1-му вузлі    Y1(1) = (–3.*Y(1) + 4.*Y(2) – Y(3))/(2.*H)  C Обчислення наближених значень похідної функції у вузлах від 2-го до (N–1)-го    5 DO 5 I = 2, N–1 Y1(I) = (Y(I + 1) – Y(I – 1))/( 2.*H)  C Обчислення наближеного значення похідної функції у N-му вузлі    Y1(N) = (Y(N – 2) – 4.*Y(N – 1) + 3.*Y(N))/(2.*H)  C Обчислення точних значень похідної функції у всіх вузлах    6 DO 6 I = 1, N Y1T(I) = EXP(–X(I))*(COS(X(I)) – SIN(X(I)))  C Відкривання файла вихідної інформації    OPEN (1, FILE = ‘REZ.DAT’, STATUS = ‘UNKNOWN’)  C Друкування заголовку таблиці    7  * * * WRITE (1, 7) FORMAT (2X, 61(‘–’)/ 2X, ‘| n | Аргумент х | Функція y |’, ‘Похідна (наб.)|Похідна (точ.)|’/ 2X, 61(‘–’))  С C C Друкування номеру вузла, значення аргументу, значення функції, наближеного значення похідної та її точного значення у файл вихідної інформації    8  * WRITE (1, 8) (I, X(I), Y(I), Y1(I), Y1T(I), I = 1, N) FORMAT ( 2X, ‘|’, I3, ‘ | ’, E10.3, ‘ | ’, E10.3, ‘ | ’, E12.5, ‘ | ’, E12.5 ,‘ |’)  C Друкування закінчення таблиці    9 WRITE (1, 9) FORMAT (2X, 61(‘─’))  С Закривання файла вихідної інформації    CLOSE (1)  С C Звернення до підпрограми побудови графіків функції та наближеного і точного значень її похідної у вузлах    CALL GRAF(X, Y, Y1, Y1T, N)  C Закінчення роботи програми    STOP END   Текст підпрограм GRAF, VID, PRMM, CR_REAL і CR_INT: С С С C Підпрограма GRAF побудови графіків функції та наближеного і точного значень її похідної у вузлах **********************************************************  C  Опис формальних параметрів.  C Вхідні величини:  C C C C C  X Y Y1 Y1T N – масив значень аргументу функції у вузлах; – масив значень функції у вузлах; – масив наближених значень похідної функції у вузлах; – масив точних значень похідної функції у вузлах; – кількість рівновіддалених вузлів на інтервалі диференціювання.  C Вихідні величини:  C  немає.  C **********************************************************    SUBROUTINE GRAF(X, Y, Y1, Y1T, N)  C Підключення графічної бібліотеки    INCLUDE ‘FGRAPH.FD’  C Оголошення розміру масивів    CHARACTER S(11)*1, SS*11 DIMENSION X(N), Y(N), Y1(N), Y1T(N)  C Оголошення використовуваних структурних змiнних    RECORD /VIDEOCONFIG/ VC RECORD /WXYCOORD/ WXY REAL*8 NL, ARG, XR, YR, YMAX, YMIN, DY, XMAX, XMIN, X1, XN DATA NL /0.0/  C C C C C Звернення до підпрограми VID обчислення максимальних за модулем значення YM функції й значення YM1 похідних функції у вузлах та формування значень Y функції й значень Y1, Y1T похідних функції "у відносних одиницях"    CALL VID(Y, Y1, Y1T, N, YM, YM1)  C C C Звернення до підпрограми PRMM визначення максимального YMAX і мінімального YMIN значень функції чи похідних у вузлах    CALL PRMM(Y, Y1, Y1T, N, YMAX, YMIN)  C C Установлення графiчного вiдеорежиму та перевiряння правильностi виконання цiєї функцiї    * IF(SETVIDEOMODE($XRES256COLOR) .EQ. 0) STOP ‘ Помилка встановлення графiчного режиму !’  C Зчитування встановленої (бiжучої) вiдеоконфiгурацiї    CALL GETVIDEOCONFIG(VC)  C Визначення максимальних значень координат для бiжучого вiдеорежиму    MAXX = VC.NUMXPIXELS – 1 MAXY = VC.NUMYPIXELS – 1  C Змiна кольору    STAT = SETCOLOR(11)  C Рисування прямокутника, який обмежує поле графiчного виведення    STAT = RECTANGLE($GBORDER, 0, MAXY, MAXX, 0)  C Установка координат “порта перегляду”    CALL SETVIEWPORT(0, MAXY, MAXX, 0)  C Визначення діапазону зміни аргументу     X1 = X(1) XN = X(N) IF (X1 .GT. 0.0) GOTO 1 IF (XN .LT. 0.0) GOTO 2    1 2  XMIN = X1 XMAX = XN GOTO 3 XMIN = 0.0 XMAX = XN GOTO 3 XMIN = X1 XMAX = 0.0   3  ARG = XMAX – XMIN  С Визначення діапазону зміни функції     DY = YMAX – YMIN IF (YMIN .GT. 0.0) DY = YMAX IF (YMAX .LT. 0.0) DY = –YMIN  C C C C Установлення "вiконних" координат. Використовуються попередньо визначенi максимальне й мiнiмальне значення функцiї, дiапазон змiни аргументу. Врахований запас (приблизно 10-20%) для пiдписiв графiка та координатних осей    * STAT=SETWINDOW(.TRUE.,DFLOAT(XMIN-0.2*ARG),YMAX+0.25*DY, DFLOAT(XMAX+0.05*ARG),YMIN-0.05*DY)  С Змiна кольору    STAT = SETCOLOR(15)  С Рисування координатних осей    CALL MOVETO_W(XMIN, NL, WXY) STAT = LINETO_W(XMAX, NL) CALL MOVETO_W(NL, YMIN, WXY) STAT = LINETO_W(NL, YMAX) CALL MOVETO_W(XMIN-0.1*ARG, YMIN, WXY) STAT = LINETO_W(XMIN-0.1*ARG, YMAX)  С Рисування рисочок на координатних осях    CALL MOVETO_W(XMIN–0.105*ARG, YMAX, WXY) STAT = LINETO_W(XMIN–0.095*ARG, YMAX) CALL MOVETO_W(XMIN–0.105*ARG, NL, WXY) STAT = LINETO_W(XMIN–0.095*ARG, NL) CALL MOVETO_W(XMIN–0.105*ARG, YMIN, WXY) STAT = LINETO_W(XMIN–0.095*ARG, YMIN) CALL MOVETO_W(–0.005*ARG, YMAX, WXY) STAT = LINETO_W(0.005*ARG, YMAX) CALL MOVETO_W(–0.005*ARG, NL, WXY) STAT = LINETO_W(0.000*ARG, NL) CALL MOVETO_W(–0.005*ARG, YMIN, WXY) STAT = LINETO_W(0.005*ARG, YMIN) CALL MOVETO_W(X1, –0.01*DY, WXY) STAT = LINETO_W(X1, 0.01*DY) CALL MOVETO_W(XN, –0.01*DY, WXY) STAT = LINETO_W(XN, 0.01*DY)  С Змiна кольору    STAT = SETCOLOR(11)  С Рисування графiка функцiї Y    XR = X1 YR = Y(1) CALL MOVETO_W(XR, YR, WXY) DO I = 2, N STAT = LINETO_W(X(I), Y(I)) END DO  С Змiна кольору    STAT = SETCOLOR(12)  С Рисування графiка функцiї Y1    XR = X1 YR = Y1(1) CALL MOVETO_W(XR, YR, WXY) DO I = 2, N STAT=LINETO_W(X(I), Y1(I)) END DO  С Змiна кольору    STAT = SETCOLOR(10)  С Змiна типу лiнiї на пунктирну    CALL SETLINESTYLE(#1111)  С Рисування графiка функцiї Y1T    XR = X1 YR = Y1T(1) CALL MOVETO_W(XR, YR, WXY) DO I = 2, N STAT=LINETO_W(X(I), Y1T(I)) END DO  С Змiна типу лiнiї на суцiльну    CALL SETLINESTYLE(–1)  С Реєстрацiя шрифта    numfonts = INITIALIZEFONTS ( )  С Змiна кольору    STAT = SETCOLOR(7)  С Вибiр бiжучого шрифта та його характеристик    fontnum = SETFONT (‘t’‘Arial Cyr’‘h24w10i’)  С Друкування тексту    CALL MOVETO_W(DFLOAT(XMIN), YMAX+0.25*DY, WXY) CALL OUTGTEXT(‘Чисельне диференціювання табличної функції’)  С Вибiр бiжучого шрифта та його характеристик    fontnum = SETFONT (‘t’‘Arial Cyr’‘h18w9i’)  С Змiна кольору    STAT = SETCOLOR(11)  С Друкування тексту    CALL MOVETO_W(DFLOAT(XMIN–0.07*ARG), YMAX+0.21*DY, WXY) CALL OUTGTEXT(‘Синій колір – значення функції;’)  С Змiна кольору    STAT = SETCOLOR(12)  С Друкування тексту    * CALL MOVETO_W(DFLOAT(XMIN–0.07*ARG), YMAX+0.18*DY, WXY) CALL OUTGTEXT (‘червоний колір – наближене значення похідної функції;’)  С Змiна кольору    STAT = SETCOLOR(10)  С Друкування тексту    * CALL MOVETO_W(DFLOAT(XMIN–0.07*ARG), YMAX+0.15*DY, WXY) CALL OUTGTEXT *(‘зелений колір (пунктирна) – точне значення похідної функції.’)  С Вибiр бiжучого шрифта та його характеристик    fontnum = SETFONT (‘t’‘Arial Cyr’‘h16w7i’)  С C Друкування тексту Змiна кольору    STAT = SETCOLOR(11) CALL MOVETO_W(0.01*ARG, YMAX+0.02*DY, WXY) CALL OUTGTEXT(‘Y=F(X)’)  С Змiна кольору    STAT = SETCOLOR(12) CALL MOVETO_W(XMIN–0.09*ARG, YMAX+0.04*DY, WXY) CALL OUTGTEXT(‘Y1(X)’)  С Змiна кольору    STAT = SETCOLOR(10) CALL MOVETO_W(XMIN–0.09*ARG, YMAX+0.01*DY, WXY) CALL OUTGTEXT(‘Y1T(X)’)  С Змiна кольору    STAT = SETCOLOR(7) CALL MOVETO_W(XN+0.005*ARG, 0.03*DY, WXY) CALL OUTGTEXT(‘X’)  С Друкування підписів до осей    KZ = 1  С До осі ордират для функції    CN = YMAX*YM CALL CR_REAL(CN, S, KZ)  С Друкування числа за форматом F11.1  C  SS = S(1)//S(2)//S(3)//S(4)//S(5)//S(6)//S(7)//S(8)//S(9)//  C * S(10)//S(11)  С Друкування числа за форматом F4.1    SS = S(7)//S(8)//S(9)//S(10)//S(11) CALL MOVETO_W(–0.045*ARG, YMAX+0.02*DY, WXY) CALL OUTGTEXT(SS) CALL MOVETO_W(–0.035*ARG, 0.03*DY, WXY) CALL OUTGTEXT(‘0.0’) CN = YMIN*YM CALL CR_REAL(CN, S, KZ) SS = S(7)//S(8)//S(9)//S(10)//S(11) CALL MOVETO_W(–0.045*ARG, YMIN+0.02*DY, WXY) CALL OUTGTEXT(SS)  С До осі ордират для похідних функції    CN = YMAX*YM1 CALL CR_REAL(CN, S, KZ) SS = S(7)//S(8)//S(9)//S(10)//S(11) CALL MOVETO_W(XMIN–0.145*ARG, YMAX+0.02*DY, WXY) CALL OUTGTEXT(SS) CALL MOVETO_W(XMIN–0.135*ARG, 0.015*DY, WXY) CALL OUTGTEXT(‘0.0’) CN = YMIN*YM1 CALL CR_REAL(CN, S, KZ) SS = S(7)//S(8)//S(9)//S(10)//S(11) CALL MOVETO_W(XMIN–0.145*ARG, YMIN+0.02*DY, WXY) CALL OUTGTEXT(SS)  С До осі абсцис    CN = X1 CALL CR_REAL(CN, S, KZ) SS = S(7)//S(8)//S(9)//S(10)//S(11) CALL MOVETO_W(X1–0.025*ARG, –0.02*DY, WXY) CALL OUTGTEXT(SS) CN = XN CALL CR_REAL(CN, S, KZ) SS = S(7)//S(8)//S(9)//S(10)//S(11) CALL MOVETO_W(XN–0.025*ARG, –0.02*DY, WXY) CALL OUTGTEXT(SS)  С Затримка зображення на екранi    READ (*, *)  С Вiдновлення попереднього вiдеорежиму    STAT = SETVIDEOMODE($DEFAULTMODE)  C Закінчення роботи підпрограми    RETURN END     С C C C C Підпрограма VID обчислення максимальних за модулем значення YM функції й значення YM1 похідних функції у вузлах та формування значень Y функції й значень Y1, Y1T похідних функції “у відносних одиницях”    SUBROUTINE VID(Y, Y1, Y1T, N, YM, YM1)  С **********************************************************  C  Опис формальних параметрів.  С Вхідні величини:  C C C C  Y Y1 Y1T N – масив значень функції у вузлах; – масив наближених значень похідної функції у вузлах; – масив точних значень похідної функції у вузлах; – кількість рівновіддалених вузлів на інтервалі диференціювання.  С Вихідні величини:  C C C C C  Y Y1 Y1T YM YM1 – масив значень функції у вузлах “у відносних одиницях”; – масив наближених значень похідної функції у вузлах “у відносних одиницях”; – Y1T - масив точних значень похідної функції у вузлах “у відносних одиницях”; – максимальне за модулем значення функції у вузлах; – максимальне за модулем значення похідних функцій у вузлах.  С C ********************************************************** Оголошення розміру масивів    DIMENSION Y(N), Y1(N), Y1T(N)  С Обчислення максимального за модулем значення функції у вузлах    1 YM = ABS(Y(1)) DO 1 I=2, N IF (YM .LT. ABS(Y(I))) YM = ABS(Y(I)) CONTINUE  С Обчислення максимального за модулем значення похідних функцій у вузлах    2 3 YM1 = ABS(Y1(1)) DO 2 I=2, N IF (YM1 .LT. ABS(Y1(I))) YM1 = ABS(Y1(I)) CONTINUE DO 3 I=1, N IF (YM1 .LT. ABS(Y1T(I))) YM1 = ABS(Y1T(I)) CONTINUE  С Формування значень функції “у відносних одиницях”    4 DO 4 I=1, N Y(I) = Y(I)/YM  С Формування наближених значень похідних функції “у відносних одиницях”    5 DO 5 I=1, N Y1(I) = Y1(I)/YM1  С Формування точних значень похідних функції “у відносних одиницях”    6 DO 6 I=1, N Y1T(I) = Y1T(I)/YM1  C Закінчення роботи підпрограми    RETURN END     C C C Підпрограма PRMM визначення максимального YMAX і мінімального YMIN значень функції чи похідних у вузлах    SUBROUTINE PRMM(Y, Y1, Y1T, N, YMAX, YMIN)  C **********************************************************  C Вхідні величини:  C C C C  Y Y1 Y1T N – масив значень функції у вузлах; – масив наближених значень похідної функції у вузлах; – масив точних значень похідної функції у вузлах; – кількість рівновіддалених вузлів на інтервалі диференціювання.  C Вихідні величини:    YMAX YMIN – максимальне значення функції чи похідних у вузлах; – мінімальне значення функції чи похідних у вузлах.  C ********************************************************** Оголошення розміру масивів    DIMENSION Y(N), Y1(N), Y1T(N) REAL*8 Y1MAX, Y1MIN, YMAX, YMIN  C C Припускаємо, що перший елемент масиву Y1 є максимальним і перший елемент масиву Y1 є мінімальним    Y1MAX = Y1(1) Y1MIN = Y1(1)  C Початок циклу для Y1    DO 1 I = 2, N  C Перевіряння умови Y1MAX > Y1(i)    IF (Y1MAX .GT. Y1(I)) GOTO 2 Y1MAX = Y1(I)  C Перевіряння умови Y1MIN < Y1(i)   2 IF (Y1MIN .LT. Y1(I)) GOTO 1 Y1MIN = Y1(I)  C Закінчення циклу   1 CONTINUE  C Початок циклу для Y1T    DO 3 I = 1, N  C Перевіряння умови Y1MAX > Y1T(i)    IF (Y1MAX .GT. Y1T(I)) GOTO 4 Y1MAX = Y1T(I)  C Перевіряння умови Y1MIN < Y1T(i)   4 IF (Y1MIN .LT. Y1T(I)) GOTO 3 Y1MIN = Y1T(I)  C Закінчення циклу   3 CONTINUE  C C Припускаємо, що перший елемент масиву Y є максимальним і перший елемент масиву Y є мінімальним    YMAX = Y(1) YMIN = Y(1)  C Початок циклу для Y    DO 5 I = 2, N  C Перевіряння умови YMAX > Y(i)    IF (YMAX .GT. Y(I)) GOTO 6 YMAX = Y(I)  C Перевіряння умови YMIN < Y(i)   6 IF (YMIN .LT. Y(I)) GOTO 5 YMIN = Y(I)  C Закінчення циклу   5 CONTINUE  C Обчислення максимального значення    IF (Y1MAX . GT. YMAX) YMAX = Y1MAX  C Обчислення мінімального значення    IF (Y1MIN . LT. YMIN) YMIN = Y1MIN  C Закінчення роботи підпрограми    RETURN END     C C Підпрограма CR_REAL перетворення дійсного числа в ASCII код. Тип даних: REAL    SUBROUTINE CR_REAL(CN, S, KZ)  C **********************************************************  C Вхідні величини:  C C  CN KZ – число, яке перетворюється; – керуюча змінна (0 – E11.4, 1 – F9.1).  C Вихідні величини:    S – масив типу CHARACTER*1 S(11), IR=8.  C **********************************************************    10 15 20 30 40 50 70 80 60 CHARACTER S(11)*1,SI(8)*1 A = ABS(CN) IF (A .EQ. 0.) GOTO 15 DO 10 I = 0, 1000 TEN = 10**I IF (A .LT. 1.) THEN LL = 1 B = A*TEN ELSE IF (A. GE. 1.) THEN LL = –1 B = A/TEN END IF IF (B .LE. 1.0 .AND. B .GE. 0.1) GOTO 20 CONTINUE WRITE (*, *) ‘ ПОМИЛКА’ B = 0. LL = 0 I = 0 MM = B*10000000 IF (KZ .EQ. 0) THEN IOS = MOD(MM, 100) IF (IOS .GT. 50) MM = MM+100 CALL CR_INT(MM, SI) S(1) = ‘ ’ S(3) = ‘.’ S(8) = ‘E’ S(9) = ‘+’ IF (A .LT. 1.0) S(9) = ‘–’ IF (CN .LT. 0.0) S(1) = ‘–’ DO 30 J=1,8 IF (SI(J) .EQ. ‘ ’) GOTO 30 S(2) = SI(J) GOTO 40 CONTINUE CONTINUE DO 50 J1 = 1, 4 IF (J+J1 .GT. 8) THEN S(J1+3) = ‘0’ GOTO 50 END IF S(J1+3) = SI(J+J1) CONTINUE CALL CR_INT(I+LL, SI) S(10) = SI(7) IF (SI(7) .EQ. ‘ ’) S(10) = ‘0’ S(11) = SI(8) ELSE IF(KZ .EQ. 1) THEN S(9) = ‘*’ S(10) = ‘.’ S(11) = ‘*’ DO 70 J = 1, 8 S(J) = ‘ ’ CONTINUE IF (A .GT. 999999.9) GOTO 60 AA = MM/(10.**(6+LL*I))+0.5 MM = AA IF (CN .LT. 0.0) MM = –MM CALL CR_INT(MM, SI) S(11) = SI(8) DO 80 J = 1, 7 S(2+J) = SI(J) CONTINUE CONTINUE END IF  
Антиботан аватар за замовчуванням

09.05.2013 00:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!