- •Про проходження навчальної практики після третього року навчання
- •Черкаси 2013
- •Постановка задачі та алгоритм вирішення 34
- •4.1.1. Постановка задачі та алгоритм вирішення. 41
- •Щоденник проходження навчальної практики
- •1.1. Програмування з використанням рядків, файлів
- •Постановка задачі та алгоритм вирішення.
- •Лістинг програми
- •Пошук та сортування масивів
- •1.3.1. Постановка задачі та алгоритм вирішення
- •1.4 Об‘єктно-орієнтоване прорамування
- •Постановка задачі та алгоритм вирішення.
- •Лістинг програми
- •Результати тестування програми
- •Результати тестування програми
- •Умови задач:
- •Лістинги програм
- •Результати тестування програм
- •Стандартна бібліотека шаблонів stl. Алгоритми та діопазони
- •Умови задач:
- •Лістинги програм
- •Результати тестування програм
- •Стандартна бібліотека шаблонів stl. Послідовні контейнери
- •Умови задач:
- •Лістинги програм
- •Стандартна бібліотека шаблонів stl. Адаптер контейнерів
- •Розробка баз даних
- •База даних в 1нф
- •База даних в 2нф
- •Лістинги Лістинги форм проекту ”Міський транспорт”
- •Опис візуальних форм і модуля в роботі
- •4.1. Лінійний обчислювальний процес
- •4.1.1. Постановка задачі та алгоритм вирішення.
- •4.1.2. Лістинг програми
- •4.1.3. Результати виконання програми
- •4.2 Реалізація алгоритмів розгалуження
- •4.2.1. Постановка задачі та алгоритм вирішення.
- •4.2.2. Лістинг програми
- •4.2.3. Результати виконання програми
- •4.3 Реалізація циклічних алгоритмів
- •4.3.1. Постановка задачі та алгоритм вирішення.
- •4.3.2. Лістинг програми
- •4.5.3. Результати виконання програми
- •4.6 Обробка двомірних динамічних масивів
- •4.6.1. Постановка задачі та алгоритм вирішення.
- •4.6.2. Лістинг програми
- •4.7.3. Результати виконання програми
- •4.8 Обробка структур з використанням файлів
- •4.8.1. Постановка задачі та алгоритм вирішення.
- •4.8.2. Лістинг програми
- •4.9.3. Результати виконання програми
- •Висновок
- •Список використаної літератури
Результати тестування програми
Рис.3. Головне вікно програми
Рис.4. Вікно програми в роботі
Пошук та сортування масивів
1.3.1. Постановка задачі та алгоритм вирішення
Для створення та обробки всіляких баз даних широко застосовуються масиви структур. Зазвичай база даних накопичується і зберігається на диску. До неї часто доводиться звертатися, оновлювати, перегруповувати. Робота з базою може бать організована двома способами:
1. Внесення змін і пошук здійснюється прямо на диску, спользуя специфічну техніку роботи зі структурами у файлах. При цьому временне витрати на обробку даних (пошук, сортування) значно зростають, але немає обмежень на оперативну пам'ять.
2. Зчитування на початку роботи всієї бази (або необхідної її частини) у масиви структур. При цьому обробка проводиться в оперативній пам'яті, що значно збільшує швидкість, однак вимагає великих витрат пам'яті. Найбільш частими операціями при роботі з базами даних є «пошук» і «сортування». При цьому алгоритми вирішення цих завдань істотно залежать від того, організовані структури в масиви або розміщені на диску. Зазвичай структура містить якесь ключове поле (ключ), за яким її можна знайти. Ключем може, наприклад, бути прізвище або номер телефону або адресу. Основна вимога до ключа в задачах пошуку полягає в тому, щоб операція перевірки на рівність була коректною. Тому, наприклад, в якості ключа не слід вибирати дійсне число, тому що через завжди можливої помилки округлення пошук потрібного ключа може виявитися безрезультатним, хоча цей ключ в масиві є.
Умова задачі: У довідковій аеропорту зберігається розклад вильоту літаків на наступну добу. Для кожного рейсу зазначені: номер рейсу, тип літака, пункт призначення, час вильоту. Вивести всі номери рейсів, типи літаків і часи вильоту для заданого пункту призначення в порядку зростання часу вильоту.
Ключ: пункт призначення.
1.4 Об‘єктно-орієнтоване прорамування
-
-
Постановка задачі та алгоритм вирішення.
Описати клас-батько і клас-нащадок, що мають методи, зазначені у відповідному варіанті завдання (нащадок успадковує або перевизначає методи батька і набуває нових). Передбачити необхідну кількість кнопок для демонстрації кожного з методів об'єктів.
Умова задачі: Батько - відрізок (переміщення в довільну сторону. Нащадок - ракета (включення / вимикання двигуна з появою / зникненням полум'я з сопла, зміщення вперед).
Лістинг програми
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "labOOP.h"
#include "unit1.h"
#include "unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
TRectg *Obj1;
TMashin *Obj2;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
// Cоздание динамических объектов классов
Obj1 = new TRectg(20, 20, 200, 21, clBlack,Form3->Canvas);
Obj2 = new TRaketa(250, 10, 390, 70, clBlue,Form3->Canvas);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::CheckBox1Click(TObject *Sender)
{
// Включение двигателя
if (CheckBox1->Checked) Obj2->SetD(clRed);
else Obj2->SetD(clBtnFace);
Obj2->Move(3,0)
}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormResize(TObject *Sender)
{
// Отображение объектов (прямоугольника и ракеты)
Obj1->Move(0,0);
Obj2->SetD(clBtnFace);
Obj2->Move(0,0);
}
//---------------------------------------------------------------------------
void Dvigen(int hx, int hy) // Движение выбранного объекта
{
switch (Form3->RadioGroup1->ItemIndex)
{
case 0:
Obj1->Move(hx,hy);
break;
case 1:
Obj2->Move(hx,hy);
break;
}
}
void __fastcall TForm3::SpeedButton1Click(TObject *Sender)
{
Dvigen(0, -StrToInt(Edit2->Text));
}
//---------------------------------------------------------------------------
void __fastcall TForm3::SpeedButton4Click(TObject *Sender)
{
Dvigen(0, StrToInt(Edit2->Text));
}
//---------------------------------------------------------------------------
void __fastcall TForm3::SpeedButton2Click(TObject *Sender)
{
Dvigen(-StrToInt(Edit1->Text), 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::SpeedButton3Click(TObject *Sender)
{
Dvigen(StrToInt(Edit1->Text), 0);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef labOOPH
#define labOOPH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published: // IDE-managed Components
TCheckBox *CheckBox1;
TRadioGroup *RadioGroup1;
TSpeedButton *SpeedButton1;
TSpeedButton *SpeedButton2;
TSpeedButton *SpeedButton3;
TSpeedButton *SpeedButton4;
TEdit *Edit1;
TEdit *Edit2;
void __fastcall CheckBox1Click(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
void __fastcall SpeedButton1Click(TObject *Sender);
void __fastcall SpeedButton4Click(TObject *Sender);
void __fastcall SpeedButton2Click(TObject *Sender);
void __fastcall SpeedButton3Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
void TRaketa::Show(TColor CP, TColor CB) // Отображение машины
{
Canvas->Pen->Color=CP;
Canvas->Brush->Color=CB;
int hx=(X2-X1)/10;
int hy=(Y2-Y1)/10;
TPoint pnt[4];
pnt[0]=Point(X1-2*hx,Y1+8*hy);
pnt[1]=Point(X1-2*hx,Y1+4*hy);
pnt[2]=Point(X2-2*hx,Y1+6*hy);
pnt[3]=Point(X2-2*hx,Y1+6*hy);
Canvas->Polygon(pnt,3); // ????? ??????
TPoint pnd[4];
Canvas->Pen->Color=clBtnFace;
if (CB != clBtnFace)Canvas->Brush->Color=ColorD;
pnd[0]=Point(X2-11*hx,Y1+8*hy);
pnd[1]=Point(X2-11*hx,Y1+4*hy);
pnd[2]=Point(X2-16*hx,Y1+6*hy);
pnd[3]=Point(X2-16*hx,Y1+6*hy);
Canvas->Polygon(pnd,3); // ????
}
void TRaketa::SetD(TColor clr) // Задание цвета огня
{
ColorD = clr;
};
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#endif
#include "Unit1.h"
class TRaketa : public TRectg
{
protected:
TColor ColorD;
public:
TRaketa(int X01,int Y01,int X02,int Y02,TColor Color0,TCanvas* Canvas0):
TRectg(X01,Y01,X02,Y02,Color0,Canvas0){};
void SetD(TColor);
void Show(TColor, TColor);};
//---------------------------------------------------------------------------
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
TRectg :: TRectg(int X01,int Y01,int X02,int Y02,TColor Color0,
TCanvas* Canvas0) // Конструктор
{
X1=X01;
Y1=Y01;
X2=X02;
Y2=Y02;
Color=Color0;
Canvas=Canvas0;
}
void TRectg::Move(int dX, int dY) // Перемещение на заданное расстояние
{
Show(clBtnFace,clBtnFace); // Удаление старого изображения
X1+=dX; Y1+=dY; // Расчет новых координат
X2+=dX; Y2+=dY;
Show(clBlack,Color); // Рисование изображение на новом месте
}
void TRectg::Show(TColor CP, TColor CB) // Отображение прямоугольника
{
Canvas->Pen->Color=CP;
Canvas->Brush->Color=CB;
Canvas->Rectangle(X1,Y1,X2,Y2);
}
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <graphics.hpp>
class TRectg
{
public:
TRectg(int,int,int,int,TColor,TCanvas*);
void Move(int, int );
virtual void Show(TColor,TColor);
protected:
int X1,Y1,X2,Y2;
TColor Color;
TCanvas* Canvas;
};
#endif
