Тема: створення програмного проекту побудови графіку функції (лінійної, квадратичної, раціональної) мовою С++.
Мета уроку: після виконання роботи учень повинен:
Обладнання: комп’ютери зі встановленими ОС та інтегрованим середовищем програмування Qt Creator.
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
2. Актуалізація опорних знань
Дати відповіді на питання.
3. Інструктаж з ТБ
4. Вивчення нового матеріалу
Ознайомитися:
за наявним описом.
Завантажити і розпакувати архів бібліотеки QCustomPlot: на сторінці офіційного сайту перейти за посиланням Download (Завантаження) і вибрати архів (бажано останньої версії) всього пакунку, що містить коди, документацію і приклади — Full package contains source, documentation and examples.
Пересвідчитися наявності всіх складових бібліотеки: кодів qcustomplot.cpp і qcustomplot.h, документації англійською мовою у форматі html і теки з прикладами.
Проаналізувати частини кодів, необхідні для побудови графіка функції і кривої, заданої параметрично, на об'єкті widget з вивористанням бібліотеки QCustomPlot при стандартних налаштуваннях.
5. Вироблення практичних навичок
Завдання. Створити програму для побудови графіків:
Криві наближати ламаними з вершинами на графіках, які виводити при таких обмеженнях на координати: −1 ≤ x ≤ 1, −1 ≤ y ≤ 1.
Створити програму Qt Widgets з назвою plots у середовищі Qt Creator.
Скопіювати у теку проекту файли qcustomplot.cpp і qcustomplot.h.
Додати до проекту файли бібліотеки QCustomPlot:
Відкрити файл проекту plots.pro і дописати слово printsupport у рядок з кодом
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Перейти на форму, клацнувши лівою кнопкою миші на назві файлу maimwindow.ui див. малюнок вище.
Розташувати на формі 5 об'єктів:
Змінити написи на кнопках на такі:
викликавши натисканням правої кнопки миші контексне меню виділеної кнопки й вибравши Змінити текст...,
або двічі клацнувши на написі. Отримати такий вигляд форми.
Перетворити Widget на об'єкт, до якого можна застосувати бібліотеку QCustomPlot, діючи таким чином:
у вікні діалогу Перетворені віджети вписати QCustomPlot у поле з підписом ліворуч: Ім'я перетвореного класу
і помітити, що одночасно буде заповнено поле з підписом: Файл заголовків назвою заголовного файлу бібліотеки QCustomPlot, приєднаного раніше до проекту;
у вікні діалогу Перетворені віджети натиснути кнопку Додати, а після отримання нового вигляду вікна натиснути кнопку Перетворити.
Створити подію on_pushButton_clicked — натискання першої зліва кнопки з написом: y = x/2 + 3/4, діючи таким чином:
у вікні діалогу Перейти до слота при вибраному clicked() натиснути кнопку OK;
отримати такий вигляд вікна середовища програмування:
Cтворити код для побудови графіка лінійної функції y(x) = x/2 + 3/4 — обробника події on_pushButton_clicked
void MainWindow::on_pushButton_clicked(){…}
Трикрапку потрібно замінити на конкретні вказівки, які завершити вже розглянутою частиною коду. Порівняти з очікуваним. Вставити створений код у файл mainwindow.cpp.
Пересвідчитися у коректності роботи проекту щодо побудови графіка лінійної функції:
Створити події натискання кнопок:
діючи так само, як при виконанні пункту 9.
Створити коди для побудови графіків квадратичної і раціональної функцій, фігури Ліссажу, діючи так само, як при виконанні пункту 10:
для квадратичної функції — змінивши у вже створеному коді формули для обчислення координат;
для раціональної функції — запровадивши 2 графіки для 2 гілок гіперболи, щоб уникнути ділення на нуль або проведення майже вертикальної лінії, і змінюючи в уже створеному коді формули для обчислення координат;
для фігур Ліссажу — змінюючи вже розглянутий код.
Перед внесенням коду у файл mainwindow.cpp порівняти з очікуваним: 2, 3, 4.
Пересвідчитися у коректності роботи проекту щодо побудови графіків усіх 4 функцій, діючи так само, як при виконанні пункту 11.
6. Підбиття підсумків уроку
Виставлення оцінок.
7. Домашнє завдання
Проаналізувати і застосувати приклади кодів побудови графіка функції і кривої, заданої параметрично, з фарбуванням областей (коментарі англійською).
Переробити отримати зображення кривих у файлах формату svg.
SVG — Scalable Vector Graphics (англійською: масштабована векторна графіка) — специфікація мови розмітки на основі XML або формат файлу двовимірної векторної графіки (статичної, анімованої, інтерактивної).
Ця специфікація є відкритим стандартом, розробленим робочою групою SVG Working Group організації World Wide Web Consortium.
Файл svg можна створити і редагувати:
Потрібно використати останній варіант. Інакше кажучи, створити програму (мовою Python), яка створить іншу програму (мовою розмітки) для зображення кривої, у тому числі графіка функції: лінійної, квадратичної,
раціональної. Для цього немає необхідності вивчати детальний опис (англійською) з прикладами. Достатньо використати лише такі відомості.
<svg>…</svg> — контейнер, всередині якого (замість трьох крапок) записують всі інші вказівки svg (при створення статичного малюнку у файлі формату svg). Наприклад, контейнер:
<svg width="600" height="400" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg"> </svg>
передбачає створення малюнку розміру 600×400 пікселів.
<line /> — вказівка для побудови зображення відрізка прямої.
Наприклад, вказівка:
<line x1="12" y1="34" x2="56" y2="78" style="stroke:rgb(0,0,0);stroke-width:2" />
передбачає створення зображення відрізка прямої:
<text>…</text> — контейнер, що описує форматування символів тексту і всередині якого записуєть контейнери для виведення послідовностей символів.
<tspan>…</tspan> — контейнер, що вказує яку послідовність символів і у якому місці потрібно розташувати.
Наприклад, вказівка:
<text style="font-size:12px;font-style:italic;font-weight:normal;font-family:Ubuntu,Calibri"><tspan x="12" y="34">текст для виведення</tspan></text>
передбачає таке виведення тексту:
Примітка. У разі потреби можна використати демонстраційне розв'язання мовою Ruby наявної розробки уроку.
Текст упорядкувала Новіцька Любов Вікторівна, вчитель інформатики НВК "Гуманітарна гімназія "Гармонія" Дніпровського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 30.10.2017 по 03.11.2017.