
Информационные технологии. Часть 1. Программирование на С++
.pdf
Глава 13. Интерфейс GUI
//
// Form1: название формы
this->Text = L"Построение графика";
//Form1: обработчик события Load this->Load += gcnew
System::EventHandler(this, &Form1::Form1_Load);
//chart1: настройка линейного графика сплайнами
series1->ChartType = System::Windows::Forms::DataVisualization:: Charting::SeriesChartType::Spline;
//chart1 series1: название серии series1->Name = L"x*Sin(x)";
//chart1: обработчик события Click this->chart1->Click += gcnew
System::EventHandler(this, &Form1::chart1_Click);
}
Событие Load нашей главной формы содержит следующий программный код (Листинг 165), смысл которого в настройках масштабирующих параметров графика по осям Х и Y соответственно. Масштабирование будет происходить, если пользователь мышкой выделит область на графике, которую необходимо увеличить. Визуальный компонент chart – предок нашего графика chart1 имеет методы, позволяющие производить масштабирование.
Листинг 165
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
//масштабирование по оси Х chart1->ChartAreas[0]->AxisX->ScaleView->Zoom(0, 100); // задаем область масштабирования chart1->ChartAreas[0]->CursorX->IsUserEnabled = true; //даем пользователю право масштабировать
chart1->ChartAreas[0]->CursorX->IsUserSelectionEnabled = true;
//даем пользователю право выбирать интервал масштабирования на графике chart1->ChartAreas[0]->AxisX->ScaleView->Zoomable = true;
//включаем собственно режим масштабирования по оси Х chart1->ChartAreas[0]->AxisX->ScrollBar->IsPositionedInside = true;
//добавляем полосы прокрутки //аналогично для оси Y
chart1->ChartAreas[0]->AxisY->ScaleView->Zoom(-100, 100); chart1->ChartAreas[0]->CursorY->IsUserEnabled = true; chart1->ChartAreas[0]->CursorY->IsUserSelectionEnabled = true; chart1->ChartAreas[0]->AxisY->ScaleView->Zoomable = true; chart1->ChartAreas[0]->AxisY->ScrollBar->IsPositionedInside = true;
}
Для построения координат точек Points непосредственно графика построим цикл от 0 до 100 по координате Х, вычисляющий координаты Y по формуле y=x*sin(x) и добавляющий точки в серию Series[0] при помощи метода AddXY(). Этот код (Листинг 166) поместим в обработчик события Click нашего элемента chart1:
Листинг 166
private: System::Void chart1_Click(System::Object^ sender, System::EventArgs^ e)
{
for (int x = 0; x < 100; x++)
{//строим по точкам график, согласно формуле
chart1->Series[0]->Points->AddXY(x, x * Math::Sin(x));
}
}
181

Информационные технологии
Заметим, что метод AddXY() не является методом построения графика, а лишь добавляет точку c указанными координатами в массив точек, данный метод применим ко всем типам диаграмм. График по заполненному массиву точек строится автоматически.
Результаты работы показаны на Рис. 157, после масштабирования на Рис. 158.
Рис. 157. Результат построения графика заданной функции
Рис. 158. Результат масштабирования графика
Мы убедились, что GUI (Graphical User Interface), реализуемый в среде Visual C++ организован в виде иерархии наследуемых классов. GUI довольно «дружественный» и интуитивно понятен. Более глубокого понимания процессов, реализуемых в GUI, можно достичь, изучив технологию объектно-ориентированного программирования (ООП).
182

Заключение
Заключение
Вэтой части учебного пособия мы познакомились с основами программирования на С++, в частности изучили процесс создания программного кода в среде Visual Studio, освоили структуру С++ программы, изучили стандартные типы данных языка С++. Освоено явное и неявное преобразование типов данных, изучены способы форматного и потокового ввода-вывода. Освоено умение работать с константами и перечислимым типом данных enum.
Алгоритмические конструкции языка С++ изучались во 2 главе данного пособия. Исследованы операторы выбора, цикла, операторы прерывания и безусловного перехода. Для построения логических выражений изучены переменные логического типа. Рассмотрен пример организации диалога с пользователем.
Третья глава посвящена указателям и ссылочным переменным. Рассмотрены типизированные и нетипизированные указатели, изучены способы статического и динамического распределения памяти. Рассмотрен пример с генерацией случайных чисел. Освоены принципы работы с константными указателями и ссылками.
Подпрограммы рассматривались в 4 главе. Рассмотрены три основных способа передачи параметров в тело функции. Изучена логика перегрузки и маскирования функций. Детально разобран процесс отладки программ в среде Visual Studio. Рассмотрены механизмы трассировки программного кода и контроля значений переменных в окне watch.
Пятая и шестая главы рассматривают массивы языка С++ и указатели на них. Рассматриваются статические и динамические одномерные и двумерные массивы и способы работы с ними. Особое внимание уделяется двумерным динамическим массивам, хранящимся в памяти в виде массива указателей или в виде одномерного массива.
Седьмая глава изучает строки в С++ в из стандартном исходном представлении – как массив символов. Изучаются статические и динамические строки, производится знакомство со строковыми операциями и с библиотекой <string.h>. Отдельно рассматриваются функции преобразования типов.
Работа с файлами и файловые операции изучаются в восьмой главе. Работа с файлами производится посредством альтернативных библиотек <stdio> и <fstream>.
Девятая глава посвящена структурам языка С++. Здесь изучается механизм конструирования собственных типов данных и работы с ними. Рассматриваются указатели на структуру и структуры, включающие в свой состав динамические массивы. Рассматривается динамический массив структур.
Вдесятой главе разбираются специальные структурные типы данных – битовые поля и объединения. На базе этих знаний в 11 главе изучаются побитовые методы работы
сданными, логические и сдвиговые операции с разрядами.
Введение в классы, рассматриваемое в 12 главе, дает понятие классам, объектноориентируемому программированию, технике ограничения доступа к данным (Set и Get методы). Рассматриваются функции конструктора и деструктора, демонстрируется перегрузка операторов и использование дружественных функций. Студенты знакомятся
сметодами отделения интерфейса от реализации класса. Здесь же студенты знакомятся
спонятием наследования.
Применение ООП к реализации графического интерфейса пользователя (GUI) демонстрируется в последней – 13 главе. Подробно рассматривается механизм создания проекта Windows Forms в Visual Studio на C++ и на его основе создается шаблон такого проекта. В части работы с визуальными объектами разбираются основные элементы
Windows Forms и их свойства.
В завершении приводится список рекомендуемой литературы.
183

Информационные технологии
Список рекомендуемой литературы
1.Страуструп Бьярне. Программирование: принципы и практика использования C++,
исправленное издание. / Programming: Principles and Practice Using C++. — М.: «Вильямс», 2011. — С. 1248. — ISBN 978-5-8459-1705-8
2.Страуструп Бьярне. Язык программирования С++. Краткий курс, 2-е изд.: Пер. с англ. - СПб.: ООО "Диалектика", 2019. - 320 с.: ил. - Парал. тит. англ. ISBN 978-5- 907144-12-5 (рус.)
3.Богуславский А.А., Соколов С.М. Основы программирования на языке Си++: Для студентов физико-математических факультетов педагогических институтов. – Коломна: КГПИ, 2007.
4.Вайсфельд Мэтт Объектно-ориентированный подход. 5-е межд. изд. — СПб.: Питер, 2020. — 256 с.: ил. — (Серия «Библиотека программиста»). ISBN 978-5-4461-1431-3
5.Васильев А. Н. Объектно-ориентированное программирование на С++ — СПб.:
Наука и Техника, 2016. — 544 с., ил. ISBN 978-5-94387-984-5
6.Герберт Шилдт С/С++ Справочник программиста. — М.: «Вильямс», 2003. — С. 432.
—ISBN 5-8459-0459-5
7.Готтшлинг, Питер. C++ для инженерных и научных расчетов.: Пер. с англ. — СПб.:
ООО “Диалектика”. 2020. — 512 с.: ил. — Парал. тит. англ. ISBN 978-5-907203-30-3
(рус.)
8.Демидович Е.М. Основы алгоритмизации и программирования. Язык СИ : Учебное пособие. – СПб.: БХВ-Петербург, 2006.
9.Доусон М. Изучаем С++ через программирование игр. - СПб.: Питер, 2016. - 352 с.:
ил. ISBN 978-5-496-01629-2
10.Дэвис С. С++ для «чайников». – К. : Диалектика, 2005.
11.Златопольский Д. М. Программирование: типовые задачи, алгоритмы, методы / Д.М. Златопольский. 4е изд., электрон. - М.: Лаборатория знаний, 2020. - 226 с.
ISBN 978-5-00101-789-9
12.Кёниг Эндрю, Му Барбара Эффективное программирование на C++. Серия книг
"C++ In-Depth"++. — М.: «Вильямс», 2002. — С. 384. ил. — ISBN 5-8459-0350-5
13.Кнут Дональд Искусство программирования, том 3. Сортировка и поиск = The Art of Computer Programming, vol.3. Sorting and Searching. — 2-е изд. — М.: «Вильямс», 2007. — С. 824. — ISBN 0-201-89685-0
14.Конова Е. А., Поллак Г. А. Алгоритмы и программы. Язык С++: Учебное пособие.
—2е изд., стер. — СПб.: Издательство «Лань», 2017.— 384 с.: ил. — (Учебники для вузов. Специальная литература). ISBN 978-5-8114-2020-9
15.Лоспинозо Джош C++ для профи. — СПб.: Питер, 2021. — 816 с.: ил. — (Серия «Для профессионалов»). ISBN 978-5-4461-1730-7
16.Лафоре Р. Объектно-ориентированное программирование в C++. - 4-е издание. – С.Петербург – Изд. Питер. – 2004. – 924 с.
17.Мейерс Скотт. Эффективный и современный С++: 42 рекомендации по исполыованию С++ 11 и С++14.: Пер. с англ. - М. : ООО "ИЛ. Вильяме", 2016. - 304
с.: ил. - тит. англ. ISBN 978-5-8459-2000-3 (рус.)

Рекомендуемая литература
18.Марапулец Ю.В. Язык С++. Основы программирования. Издание второе, исправленное и дополненное / Ю. В. Марапулец. — Петропавловск-Камчатский: КамГУ им. Витуса Беринга, 2019. — 158 с. ISBN 978-5-7968-0675-3
19.Павлов Л. А. Структуры и алгоритмы обработки данных : учебник / Л. А. Павлов, Н. В. Первова. — 2-е изд., испр. и доп. — СПб: Лань, 2020. — 256 с. : ил. — (Учебники для вузов. Специальная литература). ISBN 978-5-8114-4881-4
20.Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб:
Питер, 2007.
21.Павловская Т. А., Щупак Ю. А. C++. Объектно-ориентированное программирование: Практикум. — СПб.: Питер, 2006. — 265 с: ил. ISBN 5-94723- 842-Х
22.Павловская Т. А., Щупак Ю. А. C/C++. Структурное и объектно-ориентированное программирование: Практикум. — СПб.: Питер, 2011. — 352 с.: ил. — (Серия «Учебное пособие»). ISBN 978-5-459-00613-1
23.Пай П., Абрахам П. Реактивное программирование на С++ / пер. с анг. В. Ю.
Винника. – М.: ДМК Пресс, 2019. – 324 с.: ил. ISBN 978-5-97060-778-7
24.Прата Стивен. Язык программирования С++. Лекции и упражнения, 6-е изд. : Пер. с англ. - М. : ООО "И.Д. Вильямc", 2012. - 1248 с. : ил. - Парал. тит. англ. ISBN 978-5- 8459-1 778-2 (рус. )
25.Пош М. Программирование встроенных систем на C++17 / пер. с анг. А. В. Снастина.
– М.: ДМК Пресс, 2020. – 394 с.: ил. ISBN 978-5-97060-785-5
26.Стэнли Б. Липпман, Жози Лажойе. Язык программирования C++. Вводный курс. – Спб.: Невский Диалект, ДМК пресс, 2002. – С. 444., ил. - ISBN 5-7940-0070-8, 5- 94074-040-5
27.Эккель Б., Эллисон Ч. Философия C++. Практическое программирование. — СПб.:
Питер, 2004. — 608 с.: ил. ISBN 5-469-00043-5
185
Михальченко С.Г., 2022
ТУСУР, 2022