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

11.3Приклад алгоритму обчислення детермінанту.

При обчисленні визначника матриці методом Гауса достатньо обчислювати нові значення елементів головної діагоналі та елементів, що будуть використовуватись в наступному циклі перетворень. Тобто для деякого k достатньо обчислити нові значення елементів з індексами i>k та j>k. Це зручно реалізувати за допомогою вкладених циклів з параметром: за k, i та j. Одночасно з обчисленням елементів головної діагоналі трикутної матриці доцільно (для зменшення кількості операцій) виконувати їх перемножування та накопичення. Оскільки перетворення виконується n–1 разів, то після завершення циклу необхідно домножити змінну-накопичувач на останній елемент головної діагоналі. Приклад блок-схеми алгоритму обчислення визначника наведено на Рис. 11 .2.

В розділі “Розробка алгоритму” звіту з лабораторної роботи студент повинен навести розробку повної блок-схеми алгоритму програми. Оскільки визначник необхідно обчислити два рази, є доцільним виділення відповідного алгоритму у підпрограму.

Рис. 11.2. Блок-схема обчислення визначника матриці за методом Гауса.

Розділ V. Методи комп’ютерної графіки

12.Лабораторна робота №12.

Побудова графічних позначень елементів радіоелектронних схем

Мета роботи - засвоїти методику та виробити практичні навики застосування засобів графічного виводу інформації на прикладі побудови графічних позначень елементів радіоелектронних схем.

12.1Теоретична частина

12.1.1Відомості з програмування.

Графічне та текстове виведення інформації на екран IBM-сумістимих ЕОМ передбачає різні режими роботи апаратури, що має бути в явному вигляді вказано програмістом. Для реалізації графічного виводу при програмуванні на мовою PASCAL застосовують процедури і функції що містяться в модулі GRAPH (файл GRAPH.TPU). Перед використанням цих процедур і функцій необхідно завантажити і проініціалізувати графічний драйвер. Підтримку моніторів IBM EGA та VGA забезпечує драйвер EGAVGA.BGI.

Наступний фрагмент програми забезпечує ініціалізацію графічного режиму з автодетектуванням – автоматичним вибором графічного драйвера та його режиму такими, що забезпечуватиме графічний вивід з найбільшою якістю.

Program LabGraph;

Uses Graph; { Використовує модуль GRAPH }

Var GraphDriver,GraphMode,ErrorCode:Integer;

{ Змінні, необхідні для реалізації графічного режиму }

Begin { Виконувана частина програми }

GraphDriver:=Detect;{Визначаємо тип драйвера}

InitGraph(GraphDriver,GraphMode,'D:\TP7\BGI');{Шлях до драйвера}

ErrorCode:=GraphResult;

if ErrorCode<> grOK then begin

Writeln('Графічна помилка:',GraphErrorMsg(ErrorCode));

Writeln('Виконання програми припиняється ...'); Halt(1)

end;

{ Текст програми з використанням графічного виводу }

CloseGraph;

end.

Замість використаного в наведеному фрагменті режиму автодетектування (змінній GraphDriver присвоєно константу Detect) можна при виклику процедури ініціалізації графічного драйверу InitGraph явно задати код графічного драйвера і режиму (змінна GraphMode).

В наведеному фрагменті використані також функція повернення коду завершення графічної операції GraphResult:Integer i процедура CloseGraph, яка розвантажує графічний драйвер. Для тимчасового переходу в режим текстового виводу треба застосовувати виклик процедури RestoreCrtMode. Повернення в режим графічного виводу забезпечує виклик процедури SetGraphMode(GraphMode:Integer). При зміні режиму втрачаються зображення (текстові і графічні) і, при необхідності, програміст повинен передбачити їх збереження.

Вибраний графічний драйвер і режим визначають координатну систему графічного екрану. В режимі EGAHi (640x350 точок, 16 кольорів, 2 сторінки) екранні координати матимуть поданий на Рис. 12 .A вигляд. Точки графічного зображення часто називають пікселами ( від англійського Picture Element).

Рис. 12.A. Координатна система графічного екрану для режиму EGAHI.

Максімальну кількість пікселів по X та Y для встановленого режиму можна визначити за допомогою функцій GetMaxX,GetMaxY.

Процедура PutPixel(X, Y: Integer; Pixel: Word) виводить на екран точку заданного значенням змінної Pixel кольору.

Функція GetPixel(X,Y: Integer): Word повертає значення кольру заданої координатами X,Y точки екрану.

Ряд процедур і функцій працюють із наперед визначеними кольором переднього плану і фону, які встановлюються за допомогою процедур SetColor(Color: Word) i SetBkColor(ColorNum: Word) відповідно. Функції GetColor:Word і GetBkColor:Word дозволяють прочитати поточні значення кольору переднього плану і фону. Процедура ClearDevice очищає екран (заливає його кольором фону).

Відрізок прямої лінії будує процедура Line(x1, y1, x2, y2: Integer). Процедура Rectangle(x1, y1, x2, y2: Integer) будує незамальваний прямокутник. Замальований кольором переднього плану прямокутник будує процедура Bar(x1, y1, x2, y2: Integer). Коло із заданими центром і радіусом будує процедура Circle(X,Y: Integer; Radius: Word), дугу кола – процедура Arc(X,Y: Integer; StAngle, EndAngle, Radius: Word). Побудову дуги еліпса здійснює процедура Ellipse(X,Y:Integer; StAngle, EndAngle:Word; Xradius, YRadius:Word).

Залитий кольором переднього плану еліпс будує процедура FillEllipse(X,Y: Integer; XRadius, YRadius: Word).

Ряд процедур і функцій використовують поточний вказівник СР(Current Pointer), який функціонально подібний до курсора текстового режиму, але, на відміну від останнього, – невидимий. Функції GetX: Integer, GetY: Integer повертають значення координат СР. Встановити координати СР дозволяє процедура MoveTo(X, Y: Integer). Процедура MoveRel(Dx, Dy: Integer) змінює координати СР на Dx,Dy. Процедура LineTo(X, Y: Integer) з’єднує лінією СР з точкою (X,Y), при цьому значення X i Y заміщують попередні значення координат СР. Процедура LineRel(Dx, Dy: Integer) з’єднує лінією точку на яку вказує СР з точкою, координати якої на Dx і Dy відрізняються від СР.

Вивід текстової інформації в графічному режимі здійснюється за допомогою процедур OutText і OutTextXY. В процедурі OutTextXY(X,Y:Integer; TextString: string) положення тексту, що виводиться задається явно. Процедура OutText(TextString: string) виводить текст починаючи з позиції на яку вказує СР. Номер шрифта, орієнтація тексту і розмір символів задаються при виклику процедури SetTextStyle(Font, Direction: Word; CharSize: Word).