Смекни!
smekni.com

Розробка математичної програми в середовищі С++ (стр. 3 из 3)

У головному модулі оголошено такі локальні змінні: int k=0 – для збереження пункту головного меню, яке обирає користувач, int gdriver = DETECT, gmode, errorcode – додаткові змінні для ініціалізації графічного режиму.

Тепер перейдемо до додаткових модулів.

Модуль TUTYLKA.CPP містить лише одну функцію що виводить на екран електронну титульну сторінку розробника курсової роботи. Оголошено такі локальні змінні: int a=5 – значення відступів від краю екрану до рамки, xmax=getmaxx(), ymax=getmaxy() – значення роздільної здатності екрану у

int i; – лічильник циклу;

float x1, x2, y1, y2, xx1, xx2, yy1, yy2; – містять координати точок на площині.

Модуль HORD.CPP містить дві функції: double f (double x) – обчислення значення вказаної в завданні функції для певного значення х, void Hord () – реалізація чисельного методу знаходження кореня рівняння на вказаному проміжку з вказаною точністю. Оголошено такі локальні змінні:

FILE *fp1,*fp2; – вказівники на файли, що містять проміжні результати обчислень;

int k=0; – лічильник ітерацій;

double a, b, c, epsilon; – межі проміжку, середина проміжку та точність.

Модуль Show.CPP містить одну функцію void Show (), що графічно демонструє роботу функції void Hord (). Оголошено такі локальні змінні:

int xmax=getmaxx(), ymax=getmaxy(); – значення роздільної здатності екрану у графічному режимі;

float x, a, b; – значення кореня рівняння та межі проміжку;

int i = 7; – кількість знаків після коми, які виводить функція gcvt();

char *buf; – допоміжна змінна для роботи функції gcvt().

2. Опис структури програмного проекту

Як зазначалося вище, наш проект складається з 6 додаткових модулів, та основного модуля, в якому міститься головна функція main() нашого проекту. Додаткові модулі не зв’язані один з одним, а лише з головним модулем.

Єдиним зв’язком (неявним) між модулями Hord.cpp та Show.cpp є спільне використання файлів KORENI.TXT та MEGI.TXT.

Загальна схема проекту із способами взаємодії між модулями наведена на рисунку 2.1.

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

3. Опис алгоритмів розв’язання задачі

Опишемо алгоритм роботи усіх функцій усіх модулів нашого проекту. Почнемо з основного KURSAK.CPP. Містить функцію void main().

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

Тепер перейдемо до додаткових модулів. Модуль tytulka.cpp містить лише одну функцію void tytulka(), що виводить на екран електронну титульну сторінку розробника курсової роботи. Алгоритм роботи дуже простий, такій як і void avtor(): очистка екрану -> задання кольору -> отримання розмірів екрану -> замальовування екрану вибраним кольором -> задання кольору та стилю тексту -> вивід тексту на екран.

Модуль grafik.cpp містить функцію void grafik(), що будує Декартову систему координат та графік функції на ній. Алгоритм роботи теж подібний до алгоритму функції void avtor(), але є додатково цикл обчислення значення функції.

Модуль HORD.CPP містить дві функції: double f (double x) – обчислення значення вказаної в завданні функції для певного значення х, void Hord() – реалізація чисельного методу знаходження кореня рівняння на вказаному проміжку з вказаною точністю. Проміжні результати виконання записуються у файли KORENI.TXT та MEGI.TXT.

Алгоритм наступний:

ввід інтервалу (a; b) та потрібної точності (D)

якщо fnk(a)*fnk2 (a)>0 то x=a

інакше x=b

і=0

початок циклу

x1=x-fnk(x)/fnk1 (x)

i++

n=100

якщо

i>=n

то кількість ітерацій більше за «n»

Вихід.

Якщо ні, то

х= x1=x-fnk(x)/fnk1 (x)

вивід на екран результатів

і запис необхідних результатів у файли:

«KORENI.TXT», «MEGI.TXT».

Модуль Show.cpp містить одну функцію void Show(), що графічно демонструє роботу функції void Hord (), використовуючи проміжні результати виконання, що записані у файли KORENI.TXT та MEGI.TXT. Алгоритм роботи дуже простий і подібний до алгоритму функцій void avtor() та void tytulka().

Алгоритми всіх функцій у вигляді блок-схем подані в додатку.

4. Розробка та виконання тестового прикладу

Запускаємо на виконання виконавчий файл нашого проекту. Спочатку бачимо зображення електронної титульної сторінки (рисунок 4.1).

Рисунок 4.1 – Зображення електронної титульної сторінки

Програма чекає, поки буде натиснута довільна кнопка. Що ми і робимо. З’являється графік функцій (рисунок 4.2)

Нам потрібний проміжок, де функція перетинає ОХ.

Знову натискаємо довільну кнопку. З’являється вікно із запитом на введення даних (рисунок 4.3). Вводимо послідовно значення межі проміжку та похибки. Отримаємо:

a=0

b=1

eps=0.01

korin rivnjannja 0.500253

kilkist iteratsij 2

Рисунок 4.2 – Графік функцій

Рисунок 4.7 – Інформація про автора


Рисунок 4.3 – Вікно із запитом на введення даних

а=0

b=2

eps=0.01

korin rivnjannja 1.060973

kilkist iteratsij 1

Як бачимо, кількість ітерацій зменшилась.

Перевіримо, чи записано у файл проміжні результати рисунок (4.4)

Рисунок 4.4. – Проміжні результати


Дані записано нормально.

Після отримання числових результатів натискаємо довільну кнопку і переходимо до наступного вікна (рисунок 4.5), яке демонструє графічно реалізацію метода.

Рисунок 4.5 – Вікно демонстрації реалізації метода хорд

Дані для x, a та b завантажуються з текстових файлів KORENI.TXT та MEGI.TXT, точки будуються відповідно до цих даних. Після кожного натиснення будь-якої клавіші зчитуються наступні дані, аж поки не знайдемо значення x із заданою точністю.

Після натискання довільної кнопки переходимо до меню користувача (рисунок 4.6).

Натиснувши «7» – вийдемо з програми, обравши «6» побачимо вікно з інформацією про автора програми, «5» програма запускається заново, «4» запускається демонстрація роботи методу, «3» запускається введення даних, «2» запускається вікно з графіком, «1» запускається титульна сторінка.

Натиснувши довільну кнопку знову переходимо до вікна меню користувача.


Рисунок 4.6

5. Інструкція користувача

Для запуску програми потрібно зайти в папку Kursova і запустити на виконання файл KURSAK.EXE. Для вірної роботи програми у тій же папці має бути файл-драйвер EGAVGA.bgi.

Дана програма може працювати під управлінням операційної системи сімейства Windows, починаючи від версії 95 та під управлінням ОС MS-DOS.

Мінімальні системні вимоги для коректної роботи програми:

– операційна система Windows 95, Windows 98 або MS-DOS;

– процесор – не менше 8038 б;

– оперативної пам’яті – 512 Кб;

– відеокарта – 16 біт;

– вільного місця на жорсткому диску – 2Мб.

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

Після отримання числових результатів натискаємо довільну кнопку і переходимо до наступного вікна яке демонструє графічно реалізацію метода. Дані для x, a та b завантажуються з текстових файлів KORENI.TXT та MEGI.TXT, точки будуються відповідно до цих даних. Після кожного натиснення будь-якої клавіші зчитуються наступні дані, аж поки не знайдемо значення x із заданою точністю. Після натискання довільної кнопки переходимо до меню користувача (рисунок 4.6).

Натиснувши 7 – вийдемо з програми, а обравши 6 побачимо вікно з інформацією про автора програми (Рисунок 4.7). На інші кнопки програма не реагує. Натиснувши довільну кнопку знову переходимо до вікна меню користувача.

Висновки

Під час виконання даної курсової роботи ми удосконалили свої знання в мові програмування С++. Для знаходження теоретичного і практичного матеріалу використовувався Інтернет, також довідники з програмування.

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

До недоліків програми можна віднести недосконалість візуального оформлення, яке обмежене 16 кольорами, а також робота програми в DOS режимі.

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


Перелік літератури

1. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навч. посібн. 3-тє вид. – Львів: СПД Глинський, 2006. – 192 с.

2. Пахомов Б.И. С/С++ и Borland C++ Builder для студента. – Спб.: БХВ-Петербург, 2006. – 448 с.

3. С/С++. Программирование на языке высокого уровня / Т.А. Павловская. СПб.: Питер, 2002. – 464 с

4. Сборник часто задаваемых вопросов и ответов к ним по компиляторам языков Си и C++ http://soft.munic.msk.su/

5. Уоррен Г.С. Алгоритмические трюки для программистов. – М.: Изд.дом «Вильямс», 2003

6. Шилдт Г. Теория и практика С++. – СПб.: BHV, 1996.


Додаток

Як зазначалося вище, наш проект складається з 6 додаткових модулів, та основного модуля, в якому міститься головна функція main() нашого проекту. Додаткові модулі не зв’язані один з одним, а лише з головним модулем.

Єдиним зв’язком (неявним) між модулями dyhotom.cpp та demon.cpp є спільне використання файлів KORENI.TXT та MEGI.TXT.

Загальна схема проекту із способами взаємодії між модулями наведена на рисунку 2.1.


Рисунок 2.1 – Загальна схема проекту