Операційна система Windows

 
 

Основи програмування та алгоритмічних мов

В сучасному світі чільне місце посідають комп’ютерні технології. Внаслідок швидкого розвитку цієї галузі комп’ютери тепер є доступними практично всім. А якщо людина має справу з комп’ютером, то рано чи пізно в неї виникне бажання програмувати. Але декілька років назад більшість мов програмування, таких, як Turbo Pascal, або Borland C++ for Windows були досить складними для створення в них програм, якими було б зручно користуватись.

Бурхливий розвиток обчислювалної техніки, необхідність в ефективних засобах розробки програмного забезпечення призвели до появи систем програмування, орієнтованих на так звану „швидку розробку", серед яких можна виділити Borland Delphi і Microsoft Visual Basic. В основі систем швидкої розробки покладена технологія візуального проектування і подійного програмування, суть якої заключається в тому, що область розробки бере на себе більшу частину рутинної роботи, залишаючи програмісту роботу по конструюванню діалогових вікон і функцій обробки подій. Продуктивність програміста при використанні систем швидкої розробки приложеній RAD - систем фантастична.

Delphi – це середовище швидкої розробки, в якій в якості мови програмування використовується мова Delphi. Мова Delphi – строго типізована об’єктно орієнтована мова, в основі якої лежить добре знайомий програмістам Object Pascal.

Характеристика предметної області

Мультиплікація

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

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

Метод базової крапки

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

1. Вибирається деяка крапка зображення, що приймається за базову.

2. Координати інших крапок відраховуються від базової крапки.

3. Якщо координати крапок зображення відраховувати від базової у відносних одиницях, а не в пікселях, то забезпечується можливість масштабування зображення.

На мал. 1 наведене зображення кораблика. Базовою крапкою є крапка з координатами Хо, Уо. Координати інших крапок відраховуються саме від цієї крапки.

Мал. 1. Визначення координат зображення щодо базової крапки

Узагальнена схема алгоритму функціонування проекту

Малювання і стирання зображення кораблика виконує процедура Titanic, яка одержує як параметри координати базової крапки і колір, яким треба намалювати зображення. Якщо при виклику процедури Titanic колір відрізняється від кольору тла форми, то процедура малює зображення, а якщо збігається - те стирає. У процедурі оголошені константи dx і dу, що визначають крок у пікселях, який використовується при обчисленні координат крапок зображення. Змінюючи значення цих констант, можна проводити масштабування зображення.

Проектування форм

Програма складається з одної форми на якій розміщені компоненти Timer1, SpeedButton1, SpeedButton2. У властивостях компонент SpeedButton1 і SpeedButton2 виставлені потрібні значення:

SpeedButton1

Caption:CLOSE

Flat:True

Font. Color:clNone

Font. Size:20

Hint:Закриває форму

ShowHint:True

SpeedButton2

Caption:STOP

Flat:True

Font. Color:clNone

Font. Size:20

Hint:Зупиняє рух зображення

ShowHint:True

У властивостях форми виставлено:

Caption:Animate

Constraints. MaxHeigth:380

Constraints. MaxWidth:536

Constraints. MinHeigth:380

Constraints. MinWidth:536

Останні чотири властивості забезпечують неможливість зміни розмірів форми.

Для того, щоб при запуску програми форма з’являлася в центрі екрану в її властивості Position виставлено значення poDesktopCenter.

Довідкова система

В програмі є дві підказки, які вказують на те, які функції виконують дві кнопки, які знаходяться на формі.

Проектування програмного забезпечення

В програмі використовуються змінні x, y,z, k,s, n і u типу integer.

За рух зображення відповідають змінні x, y,s і n, а змінні z, k i u є допоміжними. Змінні х і у відповідають за махаючі рухи «рук» і «ніг» «чоловічка», змінна s за переміщення його вздовж, а змінна т за його „підстрибування".

Процедурами програми є процедури Timer1Timer, FormActivate, SpeedButton1Click, SpeedButton2Click і Titanic.

Основна робота виконується процедурами Timer1Timer, FormActivate та процедурою Titanic. Процедура Titanic виконує малювання зображення, використовуючи графічну підсистему Delphi, Timer1Timer забезпечує рух і зміну зображення, а в процедурі FormActivate встановлюються початкові параметри.

Процедури SpeedButton1Click і SpeedButton2Click зв’язані з двома кнопками і призначені: SpeedButton1Click – для закриття програми, а SpeedButton2Click для зупинки зображення задопомогою зміни властивості interval компонента Timer1.

Головна форма програми

Тексти модулів програми

Unit Unit1;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Buttons, StdCtrls;

Type

TForm1 = classTForm

Timer1: TTimer;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

procedure Timer1TimerSender: TObject;

procedure FormActivateSender: TObject;

procedure SpeedButton1ClickSender: TObject;

procedure SpeedButton2ClickSender: TObject;

private

{ Private declarations }

public

{ Public declarations }

end;

Var

Form1: TForm1;

x, y,z, k,s, n,u:integer;

Implementation

{$R.dfm}

Procedure titanicx, y:integer;color:TColor;

Const

Dx=5;dy=5;

Var

Buf:TColor;

Begin

With form1.Canvas do

Begin

Buf:=pen. Color;

Pen. Color:=color;

Moveto0,161;

Lineto530,161;

Ellipse480,40,600,-80;

Moveto500,30;

If z=1 then

Lineto500-x2,30+x2;

Moveto480,10;

If z=1 then

Lineto480-x2,10+x2;

Moveto520,40;

If z=1 then

Lineto520-x2,40+x2;

Ellipse 197+s,150-4dy+n,202+s,150-3dy+n;

Moveto200+s,150+n;

Lineto200+s,150-3dy+n;

Moveto200+s,150+n;

If z=1 then

Lineto200+x+s,150+y+n;

If z=0 then

Lineto200-x+s,150+y+n;

Moveto200+s,150+n;

If z=1 then

Lineto200-x+s,150+y+n;

If z=0 then

Lineto200+x+s,150+y+n;

Moveto200+s,137+n;

If z=1 then

Lineto200+x+s,137+y+n;

If z=0 then

Lineto200-x+s,137+y+n;

Moveto200+s,137+n;

If z=1 then

Lineto200-x+s,137+y+n;

If z=0 then

Lineto200+x+s,137+y+n;

Pen. Color:=buf;

End;

End;

Procedure TForm1.Timer1TimerSender: TObject;

Begin

Titanicx, y,form1.Color;

If n=-5 then

U:=1;

If n=5 then

U:=0;

If u=1 then

N:=n+1;

If u=0 then

N:=n-1;

If sform1.ClientWidth then

S:=s+1

Else

S:=0;

If x=0 then

Z:=1;

If x=10 then

Z:=0;

If y=0 then

K:=1;

If y=10 then

K:=0;

If z=1 then

X:=x+1;

If z=0 then

X:=x-1;

If k=1 then

Y:=y+1;

If k=0 then

Y:=y-1;

Titanicx, y,clWhite;

End;

Procedure TForm1.FormActivateSender: TObject;

Begin

With form1.Canvas do

Begin

Pen. Color:=clWhite;

Moveto0,160;

Lineto300,160;

End;

N:=0;

X:=0;

Y:=10;

Form1.Color:=clNavy;

Timer1.Interval:=50;

S:=-100;

End;

Procedure TForm1.SpeedButton1ClickSender: TObject;

Begin

Form1.Close;

End;

Procedure TForm1.SpeedButton2ClickSender: TObject;

Begin

If timer1.Interval1000 then

Timer1.Interval:=1000000000

Else timer1.Interval:=10;

End;

End.