Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Основи програмування на мові С++"

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Розгляд особливостей мови програмування С++: основні можливості, характеристика функцій. Аналіз файлів з вхідними даними. Використання похідних класів як ефективний засіб об’єктно-орієнтованого програмування. Способи роздруківки графічного вирішення.
Краткое сожержание материала:

Размещено на

"Основи програмування на мові С++"

програмування мова графічний

Анотація

Дана програма вирішує задачу побудови геометричних фігур за допомогою графічного редактора, з використанням об'єктно-орієнтованого програмування (мови С++): багатокутника та описаних навколо його вершин кіл. Програма побудована на основі методів об'єктно-орієнтованого програмування. У програмі створено власні класи із застосуванням інкапсуляції даних. Програма складається з трьох частин. В першій частині створюється масив координат вершин багатокутника, які зчитуються з файла. В другій - будується багатокутник, по заданих вершинах, і, нарешті, в третій частині навколо вершин багатокутника описуються кола.

Завдання

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

Вступ

Для того, щоб приступити до розв'язку поставленої задачі, необхідно нагадати теоретичні відомості про об'єктно-орієнтоване програмування, як таке, а також його особливості.

Відмінною особливістю мови С++ є поняття класу. Його призначення полягає в тому, щоб надати програмісту інструмент для створення нових типів, настільки ж зручних у звертанні як і вбудовані типи. В ідеалі тип, обумовлений користувачем, способом використання не повинний відрізнятися від вбудованих типів, тільки способом створення.

Тип є конкретне представлення деякої концепції (поняття). Наприклад, наявний у C++ тип float з його операціями +, -, * і т.д. забезпечує обмежену, але конкретну версію математичного поняття дійсного числа. Новий тип створюється для того, щоб дати спеціальне і конкретне визначення поняття, якому ніщо прямо й очевидно серед убудованих типів не відповідає. Як правило, програму, у якій створюються типи, що добре відповідають поняттям додатка, зрозуміти легше, ніж програму, у якій це не робиться. Добре обрані типи, обумовлені користувачем, роблять програму більш чіткою та короткою. Це також дозволяє компілятору виявляти неприпустимі використання об'єктів, що у протилежному випадку залишаться невиявленими до тестування програми.

У визначенні нового типу основна ідея - відокремити несуттєві подробиці реалізації (наприклад, формат даних, що використовуються для збереження об'єкта типу) від тих якостей, що істотні для його правильного використання (наприклад, повний список функцій, що мають доступ до даних). Такий поділ можна описати так, що робота зі структурою даних і внутрішніх адміністративних підпрограмах здійснюється через спеціальний інтерфейс. Програмування без приховання даних (із застосуванням структур) вимагає меншої продуманості, чим програмування з прихованням даних (з використанням класів). Структуру можна визначити не занадто задумуючись про те, як її передбачається використовувати. А коли визначається клас, вся увага зосереджується на забезпеченні нового типу повною кількістю операцій, що визначені для об`єкту цього типу. Час, витрачений на розробку нового типу, звичайно багаторазово окупається при розробці і тестуванні програми. Ефективним засобом об'єктно-орієнтованого програмування є використання похідних класів. Похідні класи дають простий, гнучкий і ефективний апарат завдання для класу альтернативного інтерфейсу і визначення класу за допомогою додавання можливостей до вже наявного класу без перепрограмування чи перекомпіляції. За допомогою похідних класів можна також забезпечити загальний інтерфейс для декількох різних класів так, щоб інші частини програми могли працювати з об'єктами цих класів однаковим образом. При цьому звичайно в кожен об'єкт розміщується інформація про тип, для того щоб ці об'єкти могли оброблятися відповідним чином у ситуаціях, коли їхній тип не можна визначити під час компіляції. Для елегантної і надійної обробки таких динамічних залежностей типів мається поняття віртуальної функції. По своїй суті похідні класи існують для того, щоб полегшити програмісту формулювання спільності.

Метод вирішення задачі

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

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

Опис класів

При складенні даної курсової роботи я створив три власних класи - це класи tochka, mnogougolnik, та kola. Слід зауважити використання дружніх зв'язків між класами mnogougolnik та kola, де клас kola є дружнім класу mnogougolnik.

class tochka

{

int x;

int y;

public:

void set (int xx,int yy){x=xx;y=yy};

int getx() return x;

int gety() return y;

};

Даний клас записує координати масиву вершин багатокутника, який створюється функцією void dat(). При цьому вищезазначений масив створюється у пам'яті комп'ютера динамічно. Крім цього, клас tochka містить функції getx(), gety(), які повертають значення координат вершин багатокутника.

class mnogougolnik

{

int kol;

friend class kola;

tochka *tochki;

public:

void dat();

void show();

};

В цьому класі створюється вказівник на масив об'єктів *tochki типу tochka, що являє собою масив координат вершин багатокутника. Кількість цих об'єктів дорівнює kol. Тут також знаходиться функція динамічного створення масиву tochki, а також функція виводу на екран самого багатокутника.

class kola

{

int ymlong;

int *r;

public:

int ymlength();

void setr(mnogougolnik mnog);

void show(mnogougolnik mnog);

};

В класі kola міститься функція ymlength(), яка повертає значення змінній ymlong. Ця функція визначає довжину, яку не повинні перевищувати сторони багатокутника. Крім цього тут створюється вказівник на масив *r, який створюється функцією setr(mnogougolnik mnog), і являє собою Множину радіусів кіл, які потрібно описати навколо вершин багатокутника. Нарешті, в цьому класі задана функція show(mnogougolnik mnog), яка виводить на екран вищезазначені кола.

Опис змінних і функцій

void mnogougolnik::dat()

{

char str[100];

int i,x,y;

FILE *f; f=fopen("A:\\my.txt","r");

fgets(str,100,f);

for(i=0;!feof(f);i++)

fgets(str,100,f);

kol=i;

tochki=new tochka[kol];

rewind(f);

fgets(str,100,f);

for(i=0;i<kol;i++)

{

fscanf(f,"%s%2s%d%s%2s%d%s\n",str,str,&x,str,str,&y,str);

tochki[i].set(x,y);

}

fclose(f);

}

Дана функція динамічно створює у пам'яті масив об'єктів tochki. Вона зчитує координати цих точок з файлу my.txt, а також записує ці координати у клас tochka.

Змінні функції dat():

str[100] - стрічка, розміром до 100 символів;

i - номер об'єкту масиву;

x,y - координати вершин багатокутника;

kol - кількість членів масиву;

tochki[i] - масив об'єктів типу tochka;

void mnogougolnik::show(void)

{

int i;

for(i=0;i<kol-1;i++)

line(tochki[i].getx(),tochki[i].gety(),tochki[i+1].getx(),tochki[i+1].gety());

line(tochki[0].getx(),tochki[0].gety(),tochki[kol-1].getx(),tochki[kol-1].gety());

}

Функція show(void) виводить на екран зображення побудованого багатокутника по координатах, які задані в масиві tochki[i].

Змінні функції show(void):

і - номер об'єкту масиву;

kol - кількість членів масиву;

void kola::ymlength()

{

char str[100];

FILE *f; f=fopen("A:\\my1.txt","r");

fgets(str,100,f);

fscanf(f,"%s%s%s%s%s%s%d",str,str,str,str,str,str,&ymlong);

fclose(f);

}

В функції ymlength() зчитується величина ymlong, яку не повинні перевищувати сторони нашого багатокутника.

Змінні функції ymlength():

str[100] - стрічка, розміром до 100 символів;

ymlong - задана величина у файлі my1.txt;

void kola::setr(mnogougolnik mnog)

{

int N=mnog.kol;

r=new int[N];

...

Другие файлы:

Основи програмування мовою асемблер та ознайомлення із засобом для відпрацювання асемблерних програм Emu 8086
Загальна структура комп'ютера, архітектура процесора типу Intel 8086. Принцип роботи пам'яті, її види (постійна та оперативна). Основи програмування н...

Створення програмної оболонки на мові С++ до задачі, яка повинна містити меню з командами
Розробка програми на мові програмування С++ з використанням об'єктно-орієнтованого програмування. Робота з файлами, графікою, класами, обробка числово...

Програмування гри "Трикутники"
Аналіз сучасного стану технологій програмування. Засоби реалізації об'єктів в мові C++, структура даних і функцій. Розробка програмного продукту - гри...

Об’єктно-орієнтована програма обліку продуктового магазину
Модель в об’єктно-орієнтованих мовах програмування. Програмна модель створена на мові програмування С++, в середовищі програмування Borland С++ Builde...

Інформатика. Основи алгоритмізації та програмування
У навчальному посібнику розглядаються питання алгоритмізації. Складання алгоритмів базується на мові програмування Pascal. Посібник містить велику кіл...