Здавалка
Главная | Обратная связь

Принципи побудови графічного зображення, що рухається



Питання для вивчення:

1. Принцип створення анімації на Паскаль.

 

Існує досить багато графічних операторів за допомогою яких можна створювати цікаві малюнки в середовищі програмування Паскаль. Але набагато цікавіше створювати зображення, що переміщаються, тобто мультиплікацію. Нехай, наприклад потрібно зробити коло, що рухається. Перше, що необхідно зробити - це намалювати коло. Малює її оператор Circle. Далі дане коло необхідно намалювати в іншому місці, попередньо забравши з попереднього. Спеціальних операторів стирання в Паскалі немає, але вихід з даної ситуації програмістами давно придуманий. Якщо малювати коло, наприклад, білим кольором, то для того щоб стерти його, необхідно намалювати його кольором фону, тобто чорним. Крім цього - малювання та стирання необхідно зациклить, для того щоб дані дії відбувалися багаторазово, до виконання якої умови. Отже - малюється коло, стирається і малюється в іншому місці. Значить потрібно затримати виконання команд: намалювати окружність, затримати, стерти, намалювати в іншому місці. Для забезпечення затримки використовується процедура DELAY (затримка). У дужках, як параметр передається величина (в мілісекундах) необхідної затримки. Тепер необхідно подумати до яких пір буде продовжуватися цикл. Найкраще підходить процедура зупинки циклу після натискання будь-якої клавіші на клавіатурі. Це процедура KEYPRESSED. Обидві розглянуті процедури входять в бібліотеку CRT, і її необхідно оголосити в розділі USES.

Програма руху окружності:

Program okr;

Uses graph, crt;

Var x, y, r: integer; {параметри окружності}

dx: integer; {крок переміщення окружності}

grdriver, grmode: integer; {графічний режим}

Begin

Grdriver: = detect;

Initgraph (grdriver, grmode, '');

X: = 0;

Y: = 100;

R: = 20;

Dx: = 2;

Repeat

Setcolor (15);

Circle (x, y, r);

Delay (100);

Setcolor (0);

Circle (x, y, r);

X: = x + dx;

Until keypressed;

Readln;

Closegraph;

End.

Питання для контролю вивченого матеріалу:

1. Що необхідно змінити в програмі, для того, щоб окружність рухалася зафарбована?

2. Опрацюйте матеріал, розробіть власну програму з мультиплікацією.

Література:

Меженний О.А.Turbo Pascal: М: Издательский дом «Вильямс», 2006.-336 с., стор. 242-244

 

 

Урок № 52

(згідно робочої навчальної програми)

Модуль Graphs3D

Питання для вивчення:

1. Призначення та поняття модулів.

2. Програмні модулі Паскаля.

3. Структура модулів Паскаля.

 

Призначення модулів. Стандартний Паскаль не передбачає механізмів роздільної компіляції частин програми з подальшою їх збіркою перед виконанням. Цілком зрозуміло прагнення розробників комерційних компіляторів Паскаля включати в мову засоби, що підвищують його модульність.

Модуль Паскаля - це автономно компильована програмна одиниця, що включає в себе різні компоненти розділу описів (типи, константи, змінні, процедури і функції) і, можливо, деякі виконувані оператори яка ініціює частини. Основним принципом модульного програмування є принцип «розділяй і володарюй». Модульне програмування - це організація програми як сукупності невеликих незалежних блоків, званих модулями, структура і поведінка яких підкоряються певним правилам.

Термін «модуль» в програмуванні почав використовуватися у зв'язку з впровадженням модульних принципів при створенні програм. У 70-х роках під модулем розуміли якусь процедуру або функцію, написану у відповідності з певними правилами. Наприклад: «Модуль повинен бути простим, замкнутим (незалежним), доступним для огляду (від 50 до 100 рядків), які реалізують тільки одну функцію задачі, що має одну вхідну і одну вихідну точку».

Програмні модулі Паскаля. По своїй організації і характеру використання в програмі модулі Паскаля близькі до модулів-пакетів (PACKAGE) мови програмування Ада. Тіла процедур і функцій розташовуються у виконуваній частині модуля, яка може бути прихована від користувача. Послідовність розробки програмного проекту. Модулі являють собою прекрасний інструмент для розробки бібліотек прикладних програм і потужний засіб модульного програмування. Важлива особливість модулів полягає в тому, що компілятор розміщує їх програмний код в окремому сегменті пам'яті. Довжина сегмента не може перевищувати 64 Кбайт, однак кількість одночасно використовуваних модулів обмежується лише доступною пам'яттю, що дозволяє створювати великі програми.

Структура модулів Паскаля. Всякий модуль Паскаля має наступну структуру:

Unit <імя_модуля>;

interface <інтерфейсна частина>;

implementation <виконувана частина>;

begin

<Ініціює частина>;

end.

Тут UNIT - зарезервоване слово (одиниця); починає заголовок модуля;

<Імя_модуля> - ім'я модуля (правильний ідентифікатор);

INTERFACE - зарезервоване слово (інтерфейс); починає інтерфейсну частину модуля;

IMPLEMENTATION - зарезервоване слово (виконання); починає виконувану частину модуля;

BEGIN - зарезервоване слово; починає ініціюючу частина модуля; причому конструкція begin <ініціює частина> необов'язкова;

END - зарезервоване слово - ознака кінця модуля.

Таким чином, модуль Паскаля складається з заголовка і трьох складових частин, кожна з яких може бути порожньою.

Заголовок модуля Паскаля складається з зарезервованого слова unit і наступного за ним ім'я модуля. Для правильної роботи середовища Турбо Паскаля і можливості підключення засобів, що полегшують розробку великих програм, ім'я модуля Паскаля має збігатися з ім'ям дискового файлу, в який поміщається вихідний текст модуля. Якщо, наприклад, можна привести заголовок модуля Паскаля

Unit primer; то вихідний текст цього модуля повинен розміщуватися на диску у файлі primer. Pas. Ім'я модуля Паскаля служить для його зв'язку з іншими модулями й основною програмою. Цей зв'язок встановлюється спеціальною пропозицією:

uses <список модулів>

Тут USES - зарезервоване слово (використовує);

<Список модулів> - список модулів, з якими встановлюється зв'язок;

елементи списку - імена модулів через кому.

Якщо в Паскалі модулі використовуються, то пропозиція uses <список модулів> повинна стояти відразу після заголовка програми, тобто повинно відкривати розділ описів основної програми. У модулях Паскаля можуть використовуватися інші модулі. У модулях пропозицію uses <список модулів> може стояти відразу після слова interface або відразу після слова implementation. Допускається і дві пропозиції uses, тобто воно може стояти і там, і там.
Інтерфейсна частина. Інтерфейсна частина відкривається зарезервованим словом INTERFACE. У цій частині містяться оголошення всіх глобальних об'єктів модуля (типів, констант, змінних та підпрограм), які повинні бути доступні основній програмі і (або) іншим модулям Паскаля. При оголошенні глобальних підпрограм в інтерфейсній частині вказується тільки їхній заголовок, наприклад:

Приклад фрагмента програми

Unit complexn;

Interface Type Complex = record Re, im: real;

End;

Procedure AddC (x, y: complex, var z: complex);

Procedure MulC (x, y: complex, var z: complex);

Якщо тепер в основній програмі написати Uses complexn; то в програмі стануть доступними тип cmplex і дві процедури - AddC і MulC з модуля complexn.

Порядок появи різних розділів оголошень і їх кількість може бути довільним. Якщо в інтерфейсній частини оголошуються зовнішні підпрограми або підпрограми в машинних кодах, їх тіла (тобто зарезервоване слово EXTERNAL, в першому випадку, і машинні коди разом зі словом INLINE - у другому) повинні слідувати відразу за їх заголовками в виконуваної частини модуля (не в інтерфейсній!). В інтерфейсній частині модулів Паскаля можна використовувати випереджальнийопис.

У середовищі Турбо Паскаль є засоби, керуючі способом компіляції модулів і полегшують розробку великих програм. Визначені три режими компіляції: COMPILE, MAKE, BUILD. Режими відрізняються способом зв'язку компилируемого модуля або основної програми з іншими модулями, оголошеними в пропозиції USES.

При компіляції модуля або основної програми в режимі COMPILE все, що згадуються в пропозиції USES модулі, повинні бути попередньо відкомпільовані, і результати компіляції повинні бути поміщені в однойменні файли з розширенням TPU (від англ. Turbo Pascal Unit). Файл з розширенням TPU створюється автоматично при компіляції модуля Паскаля.

У режимі MAKE компілятор перевіряє наявність TPU-файлів для кожного оголошеного модуля. Якщо якийсь файл не знайдений, система шукає однойменний файл з розширенням PAS, тобто файл з вихідним текстом модуля Паскаля. Якщо такої файл знайдений, система приступає до його компіляції. Крім того, в цьому режимі система стежить за можливими змінами вихідного тексту будь-якого використовуваного модуля. Якщо в PAS-файл внесені зміни, то незалежно від того, чи є в каталозі відповідний TPU-файл чи ні, система відкомпілює його перед компіляцією основної програми. Більш того, якщо зміни внесені в інтерфейсну частину, то будуть відкомпільовані всі інші модулі, які звертаються до нього. Режим MAKE істотно полегшує процес розробки великих програм з безліччю модулів Паскаля: програміст позбавляється від необхідності стежити за відповідністю TPU-файлів їх початкового тексту, тому система робить це автоматично.

У режимі BUILD існуючі TPU-файли ігноруються, система намагається відшукати і відкомпілювати відповідні PAS - файли для кожного модуля Паскаля. Після компіляції можна бути впевненим, що враховані всі зроблені в текстах модулів Паскаля виправлення та зміни.

Підключення модулів Паскаля до основної програми і їх компіляція відбувається в порядку їх оголошення в пропозиції USES. При переході до чергового модулю Паскаля система попередньо шукає всі модулі, на які він посилається. Посилання модулів Паскаля один на одного можуть утворювати деревоподібну структуру будь-якої складності, однак забороняється явне або непряме звернення модуля до самого себе.

Стандартні модулі Паскаля. У Турбо Паскалі є 8 стандартних модулів, в яких міститься безліч різних типів, констант, процедур і функцій. Цими модулями є SYSTEM, DOS, CRT, GRAPH, OVERLAY, TURBO3, GRAPH3. Модулі Паскаля GRAPH, TURBO 3, GRAPH 3 виділені в окремі TPU-файли, а решта входять до складу бібліотечного файлу TURBO. TPL. Лише один модуль Паскаля SYSTEM підключається до будь-якій програмі автоматично, всі інші стають доступні тільки після вказівки їхніх імен у списку модулів.

Модуль Паскаля SYSTEM. У нього входять всі процедури і функції стандартного Паскаля, а також вбудовані процедури і функції, які не увійшли в інші стандартні модулі (наприклад, INC, DEC, GETDIR і т.п.). Модуль Паскаля SYSTEM підключається до будь-якій програмі незалежно від того, чи оголошений він в пропозиції USES чи ні, тому його глобальні константи, змінні, процедури і функції вважаються вбудованими в Турбо Паскаль.

Модуль Паскаля PRINTER робить доступним висновок текстів на матричний принтер. У ньому визначається файлова змінна LST типу TEXT, яка зв'язується з логічним пристроєм PRN.

Модуль Паскаля CRT. У ньому зосереджені процедури та функції, що забезпечують управління текстовим режимом роботи екрану. З його допомогою можна переміщати курсор в будь-яку точку екрану, міняти колір символів, що виводяться і фону, створювати вікна. Крім того, в даний модуль включені також процедури «сліпого» читання клавіатури і керування звуком.

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

Модуль Паскаля DOS. У модулі зібрані процедури і функції, що відкривають доступ до засобів дискової операційної системи MS — DOS.

Модуль Паскаля OVERLAY. Даний модуль необхідний при розробці громіздких програм з перекриттями. Турбо Паскаль забезпечує створення програм, довжина яких обмежується лише основною оперативною пам'яттю. Операційна система MS - DOS залишає програмі близько 580 Кбайт основної пам'яті. Пам'ять такого розміру достатня для більшості виконуваних програм, тим не менше, використання програм з перекриттями знімає це обмеження.

Питання для контролю вивченого матеріалу:

1. Що являє собою модуль Паскаля?

2. Для чого призначений модуль GRAPH3D?

Література:

Меженний О.А.Turbo Pascal: М: Издательский дом «Вильямс», 2006.-336 с., стор. 276-285

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.