Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабробС++1к.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.06 Mб
Скачать

3.Програмування простих арифметичних виразів

Мета роботи – навчитися програмувати виконання елементарних обчислень за заданими формулами та стандартними математичним функціями C++ .

Завдання до лабораторної роботи:

  1. Побудувати каркас однодокументного проекту за допомогою майстра.

  2. Побудувати власне меню проекту

  3. Побудувати діалогове вікно для введення вхідних даних

  4. Забезпечити передавання даних з діалогового вікна у змінні виразу

  5. Записати код для обчислення арифметичних виразів

  6. Відладити програму.

  7. Вивести результати роботи програми, супроводжуючи їх поясненнями.

Стандартні функції ( вимагає приєднання #include <math.h> ).

abs(x)повертає абсолютне значення цілого.

acos(x)обчислює арккосінус.

asin(x)обчислює арксінус.

atan(x)– обчислює арктангенс.

cabs(x)– обчислює абсолютне значення комплексного числа.

ceil(x)округлення.

cos(x)обчислює косинус.

cosh(x)обчислює гіперболічний косинус.

div(x,y)ділить ціле на ціле, повертаючи частку та залишок.

exp(x)oбчислює експоненту x.

fabs(x)обчислює абсолютне значення числа з плаваючою крапкою.

floor(x)округляє з недостачею.

fmod (x,y)обчислює x mod y.

labs(x)повертає абсолютне значення типу long.

ldexp(x,n)обчислює x * 2**n.

ldiv(n,m)ділить цілі числа типу long, повертаючи часткн та залишок.

log(x)обчислює натуральний логарифм числа х.

log10(х)обчислює логарифм числа х за основою 10.

max(a,b)повертає більше з двох чисел.

sin(x)- обчислює сінус

sinh(x) – обчислює гіперболічний сінус.

sqrt(x) – Якщо аргумент дійсний, обчислює додатнє значення квадратного кореня від переданого значення.

t an(x) – обчислює тангенс.

4.Створення файлів даних

(4години, 2 заняття)

Мета роботи – ознайомитись з особливостями побудови проектів з відтворенням результатів роботи у вікні програми.

Розглянемо засоби, які дають змогу виводити дані на екран монітора у головне вікно проекту.

Графічне виведення даних додатку виконується функцією-членом об’єкту представлення OnDraw(). У похідному від CView класі, який створив майстер АррWizard, є порожня функція OnDraw(), яка має вказівник на дані, записані у файлі документа. До неї можна додавати власний код для відображення даних. Вона має такий вигляд:

Void cMyAppView::OnDraw(cdc* pDc)

{ CMyAppDoc* pDoc = GetDocument(); //вказівник на дані документа

ASSERT_VALID(pDoc); //перевірка правильності читання даних

// TODO: add draw code for native data here

}

Зверніть увагу на те, що у цю функцію передається вказівник на об’єкт CDC. Він потрібен для виклику функцій контексту пристрою, які можуть рисувати чи виводити текст у вікно. Окрім того, функція OnDraw() отримує вказівник на об’єкт документу, який можна використати для звернення до даних додатку.Розглянемо просту реалізацію функції OnDraw().

Реалізація функції OnDraw().

  1. Побудуйте проект Lab4 на основі CView (як у лабораторній роботі 1)

  2. У вікні ClassView клацніть правою кнопкою значок класу C Lab4Doc.

  3. У контекстному меню, яке виникне, виберіть пункт Add Member Variable

Рис.1. Вибір пункту Add Member Variable

4. У діалоговому вікні Add Member Variable у полі Variable Type введіть CString і у полі Variable Name - m_string.

5. Залиште перемикач Access встановленим у Public та, для створення змінної, клацніть кнопку ОК.

Рис.2. Створення змінної

6. Розкрийте гілку CLab4Doc та впевніться, що змінна m_string1 додана у клас.

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

Рис.3. Вибір конструктора

8. Додайте у конструктор наступний рядок: m_string1 = "Vchidni dani!";

Рис.4. Додавання рядка

9. Повторивши пункти 2..8, введіть змінну m_string2=”Resultat”;

10. Розкрийте вузол CLab4View. Перейдіть до редагування функції OnDraw(), двічі клацнувши її значок.

10. Замість коментара, що починається з //TODO, додайте у функцію OnDraw()код:

pDC->TextOut(10,10,pDoc->m_string1);

Рис.5. Функция OnDraw()

11. Компілюйте та завантажуйте програму. Перевірте, чи відображається у лівому верхньому куті прямокутник з надписом "Vchidni dani!";!

Висновки.

  • для виведення на екран функціям-членам класу СDC потрібен вказівник на контекст пристрою;

  • вказівник на документ використовується для отримання даних додатку;

код рисування створюється таким чином, щоб при зміні даних вони у всіх випадках

Нагадаємо, проте, що архітектура "документ/вигляд" відокремлює дані та засоби їх обробки. Дана особливість продемонстрована у другому додатку. Опис змінної h розташовано у класі CHelloDoc. Присвоювання початкового значення цій змінній виконується у конструкторі класу CHelloDoc().

Виведення значення змінної h виконується у методі CHelloView::OnDraw() об’єкту вигляду. Проте обов’язково потрібно поєднати об’єкти документу та вигляду. Тому спочатку створюється вказівник pDoc, який отримує адресу об’єкту документу за допомогою функції GetDocument(). При виконанні цієї функції можливе виникнення помилок, тому після її виконання потрібно перевірити: чи дійсно вказівник pDoc містить адресу об’єкту документу. Це виконується використанням макросу ASSERT_VALID(pDoc).

Якщо всі перевірки завершились успішно, тоді можна починати виведення значення змінної h, до того ж, доступ до неї можна отримати, використовуючи вказівник на об’єкт документу.

Але для виведення значення змінної h потрібно мати вказівник на контекст пристрою виведення, яким у даному випадку є клієнтська область вікна. Цей вказівник передається як параметр CDC* pDC методу CHelloView::OnDraw().

Таким чином, рядок

pDC->TextOut(0,0,pDoc->h);

"розшифровується" так: використати метод TextOut() контексту пристрою, заданого вказівником pDC, та вивести, починаючи з рядка з координатами (0,0) значення змінної h, що знаходиться у об’єкті документу, доступ до якого виконується через вказівник pDoc."

12. Змініть меню проекту для введення параметрів задачі, використавши інструкцію до лабораторної роботи 2.

13. Побудуйте діалогове вікно для введення даних, подібно до лабораторної роботи3.

14. Побудуйте новий клас на базі CDialog для роботи з новим діалоговим вікном.

15. Додайте змінні до нового класу діалогу, відповідно до полів введення даних.

16. Перейдіть у функцію OnDraw() класу CLab4View та додайте об’єкт діалогової панелі та метод DoModal() для виклику діалогової панелі, наприклад:

Cdialogg pc;

pc.DoModal();

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

17. Виведіть у головне вікно вхідні дані. Для цього у функцію OnDraw() після виклику функції DoModal(); вставте, наприклад:

s.Format("a=%d с=%d",pc.m_a,pc.m_с);

pDC->TextOut(20,40,s);

Якщо тепер відкомпілювати проект. тоді у головному вікні після коментара про вхідні дані виникне рядок, який міститиме значення, введені у діалоговому вікні.

18. Надрукуйте коментар про виведення результатів роботи програми, записавши слідом за попереднім рядком, наприклад, такий:

pDC->TextOut(20,60,pDoc-> m_string2);

19. Подібно до попередніх, виведіть у головне вікно програми «шапку» уявної таблиці, де відмітити поля «Value argument» та «Value function»

20. Напишіть фрагмент програми обчислення варіанту завдання до лабораторної роботи та виведіть результати за форматом, подібно до виведення вхідних даних.

21. Відкомпілюйте та завантажте на виконання проект Lab4.

Завдання до лабораторної роботи №4.

  1. Виконати пункти 1..18 для побудови однодокументного додатку Lab4.

  2. Написати фрагмент програми для обчислення значень функції за заданими параметрами, та вставити у текст програми OnDraw(), при цьому використати три типи циклів:for, while, do …while .

  3. Відкомпілювати, відладити програму та вивести результати у вигляді двох стовпців – значень аргументів та значень функцій .