ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.07.2024
Просмотров: 45
Скачиваний: 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)