Файл: Отчет Садовничий.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.07.2024

Просмотров: 41

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Зміст

1 Вступ……………………………………………………………………….………….3

2 Теоретична частина…………………………………………………………………..5

3 Виконання роботи………………………………………………………...…………..7

3.1 Приклад роботи програми…………………………………………………..8

4 Висновок…………………………………………………………………..…………11

5 Література…………………………………………………………………...……….12

Додаток ………………………..…………………………………………………….13

1 Вступ

C + + Builder-програмний продукт, інструмент швидкої розробки додатків (RAD), інтегроване середовище програмування (IDE), система, яка використовується програмістами для розробки програмного забезпечення на мові програмування C + +.

Спочатку розроблявся компанією BorlandSoftware, а потім її підрозділом CodeGear, нині належить компанії Embarcadero Technologies.

C + + Builder об'єднує в собі комплекс об'єктних бібліотек ( STL, VCL, CLX, MFC та ін), компілятор, відладчик, редактор коду і багато інших компоненти. Цикл розробки аналогічний Delphi [ 1 ]. Більшість компонентів, розроблених в Delphi, можна використовувати і в C + + Builder без модифікації, але зворотне твердження не вірно.

C + + Builder містить інструменти, які за допомогою drag - and - drop дійсно роблять розробку візуальної, спрощує програмування завдяки вбудованому WYSIWYG - редактору інтерфейсу і пр.

C + + Builder спочатку створювалася тільки для платформи Microsoft Windows. Пізні версії, що містять кросплатформенну компонентну бібліотеку Borland, підтримують і Windows, і Linux.

У 2003 році Borland випустила C + + BuilderX ( CBX ), написаний за допомогою тієї ж інфраструктури, що і JBuilder, який при цьому був мало

схожий на C + + Builder або Delphi. Цей продукт призначався для розробки великих програм для великих підприємств, але комерційного успіху не досяг. Наприкінці 2004 року Borland оголосила, що продовжить

розвиток класичного C + + Builder і об'єднає його з середовищем розробки Delphi, припинивши, таким чином, розробку C + + BuilderX. Через приблизно рік після цього оголошення, Borland випустила BorlandDeveloperStudio 2006, який включав в себе Borland C + + Builder 2006, який пропонував поліпшене керування конфігурацією і налагодженням. BorlandDeveloperStudio 2006 - єдиний повноцінний комплект, що містить Delphi, C + + Builder і C # Builder.


2 Теоретична частинa

Дек (відангл.Doubleended queue — двобічна  черга)  — абстрактна  структура даних, елементи якої можуть додаватись як на початок, так і в кінець.

Типові операції

• Додавання елемента в кінець черги

• Додавання елемента в початок черги

• Вибірка останнього елемента

• Вибірка першого елемента

• Перевірка першого елемента (без видалення з деку)

• Перевірка останнього елемента (без видалення з деку)

Реалізації

Існує принаймні два поширених способи ефективної реалізації двосторонньої черги: за допомогою динамічного масиву або двозв'язного списку.

Стек в інформатиці та програмуванні — різновид лінійного списку, структура даних, яка працює за принципом (дисципліною) «останнім прийшов — першим пішов» (LIFO, англ. last in, firstout). Всі операції (наприклад, видалення елементу) в стеку можна проводити тільки з одним елементом, який знаходиться на верхівці стеку та був введений в стек останнім.

Стек можна розглядати як певну аналогію до стопки тарілок, з якої можна взяти верхню, і на яку можна покласти верхню тарілку (інша назва стеку — «магазин», за аналогією з принципом роботи магазину в автоматичній зброї)

Операції зі стеком

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

Черга (англ. queue) в програмуванні — динамічна структура даних, що працює за принципом «перший прийшов — перший пішов» (англ. FIFO — firstin, firstout). У черги є голова (англ. head) та хвіст (англ. tail). Елемент, що додається до черги, опиняється в її хвості. Елемент, що видаляється з черги, знаходиться в її голові.

Основні операції з чергою

  • англ. enqueue — "поставити в чергу". Операція додавання елемента в "хвіст" черги. При цьому довжина черги збільшується на одиницю. Якщо відбувається намагання додати елемент у вже заповнену чергу, відбувається її переповнення (англ. queue overflow).


  • англ. dequeue — "отримання з черги". Операція, яка повертає елемент з голови та видаляє його з черги, таким чином встановлюючи голову на наступний за видаленим елемент та зменшуючи довжину на одиницю. При намаганні видалити елемент з пустої черги, виникає ситуація


3 Виконання роботи

Використані компоненти

1. Form – головне вікно програми.

2. Label – поле для виведення результату.

3. SpeedButton – кнопка виконання завдання

4. Image–поле для вставки малюнку

5. Timer – таймер для анімації

6. SkinManager– модуль що слугує для дизайну форми

7. В даному програмному продукту була використана структура типу:

Struct matches //оголошення структури

{

TImage *lab; //змінна типу TImage для більш зручного використання

} l[6]; //масив змінних типу TImage для подальшого викристання структури

Додаток: Код програми

#include<vcl.h>//об'єктно-орієнтована бібліотека для розробки програмних продуктів

#pragma hdrstop //завершує список файлів заголовка для препроцесора

#include "Unit1.h" //підключення модуля з кодом даного програмного продукту

#pragma package(smart_init)

//визначає послідовність ініціалізації складових частин програми.

#pragma link "acPNG" //підключає менеджер скінів «SkinManeger»

#pragma link "sSkinManager" /*дозволяє робити вибір між формами, які будуть використовуватись замість стандартної форми c++ builder */

#pragma resource "*.dfm" /*повідомляє препроцесору про те, що для форми необхідно використовувати файл *. dfm з ім'ям даного файлу*/

TForm1 *Form1; //змінна Form1 для быльш зрузного використання оператору TForm1

__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) //виклик форми програми

{

Timer1->Interval = 10; //таймер почне рахувати на 10 одиниць з кожним разом

}

int t=-50,i,t2=0,h=0,n;//змінні,які були використані в даному програмному продукті

struct matches {

TImage *lab;

} l[6];

void__fastcall TForm1::FormCreate(TObject *Sender)

{

//подальші дії будуть виконані при старті програми

Timer1->Enabled=false; // відключення таймеру

l[0].lab=Image1; //присвоєння першому елементу масива структури компонент Image1

//ця дія використовується для більш зручного використання компонента TImage1

l[1].lab=Image2;

l[2].lab=Image3;

l[3].lab=Image4;


l[4].lab=Image5;

l[5].lab=Image6;}

void__fastcall TForm1::FormActivate(TObject *Sender)

{

//подальші дії будуть виконані як тільки вікно форми активується.

Timer1->Enabled=false; // відключення таймеру.

t=-50; //присвоєння змінній значення -50

}

void__fastcall TForm1::Image7Click(TObject *Sender)

{

//подальші дії будуть виконані при натисканні на компонент Image7

Timer1->Enabled=true; //ця дія активує таймер, який відповідає за пересування //компонента Image

Image7->Enabled=false; // ця дія заперечує використання компоненту Image7

}

void__fastcall TForm1::Timer1Timer(TObject *Sender)

{

//подальші дії будуть виконані при активації таймера пересування компоненту Image

if(Timer1->Enabled==true) //якщо перший таймер активовано...

{

t++; // додавання до змінної t 10 одиниць (див. стр.7 Timer1->Interval)

if(t==10)//якщо t=10...

{

l[4].lab->Top=(l[4].lab->Top)+50;//пересування компонента Image5 на 50 пікселів //вгору

}

if(t==30) )//якщо t=30...

{

l[4].lab->Left=(l[4].lab->Left)-50; } //пересування компонента Image5 на 50 //пікселів вліво

if(t==50) )//якщо t=50...

{ l[3].lab->Top=(l[3].lab->Top)+50; } //пересування компонента Image4 на 50 //пікселів вгору

if(t==70)

{

l[2].lab->Top=(l[2].lab->Top)+50;}

if(t==90){

l[1].lab->Top=(l[1].lab->Top)+50;}

if(t==110)

{

l[0].lab->Top=(l[0].lab->Top)+50;

}

if(t==130)

{

l[5].lab->Left=(l[5].lab->Left)+100;

}

if(t==150)

{

l[5].lab->Top=(l[5].lab->Top)+50;

}

if(t==170)

{

l[4].lab->Left=(l[4].lab->Left)-200;

}

if(t==175)

{

l[4].lab->Top=(l[4].lab->Top)-300;}

if(t==180)

{

l[4].lab->Left=(l[4].lab->Left)+150;

l[3].lab->Top=(l[3].lab->Top)+50;

if(t==200)

{

l[3].lab->Left=(l[3].lab->Left)-50;

}

if(t==220){

l[2].lab->Top=(l[2].lab->Top)+50;

}

if(t==240){

l[1].lab->Top=(l[1].lab->Top)+50;

if(t==260){

l[0].lab->Top=(l[0].lab->Top)+50;

}

if(t==280)

{

l[5].lab->Top=(l[5].lab->Top)+50;

}

if(t==300)

{

l[4].lab->Left=(l[4].lab->Left)+100;

}

if(t==320)