Программирование на языке С++ в среде Qt Creator: учебное пособие
Год издания: 2015
Автор: Алексеев Е. и др.
Издательство: ALT Linux
ISBN: 978-5-905167-16-4
Серия: Библиотека ALT Linux
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Количество страниц: 449
Описание: Книга является учебником по алгоритмизации и программированию на С++ и пособием по разработке визуальных приложений в среде Qt Creator. Также в книге описаны среда программирования Qt Creator, редактор Geany, кроссплатформенная билиотека построения графиков MathGL. При чтении книги не требуется предварительного знакомства с программированием.
Издание предназначено для студентов, аспирантов и преподавателей вузов, а также для всех, кто изучает программирование на С++ и осваивает кроссплатформенный инструментарий Qt для разработки программного обеспечения.
Оглавление
Предисловие 7
Глава 1. Знакомство с языком С++ 8
1.1 Первая программа на C++ . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Среда программирования Qt Creator . . . . . . . . . . . . . . . 11
Глава 2. Общие сведения о языке С++ ........................... 17
2.1 Алфавит языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Данные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Структурированные типы данных . . . . . . . . . . . . . . . . . . 21
2.5 Указатели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Операции и выражения . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7 Стандартные функции . . . . . . . . . . . . . . . . . . . . . . . . 31
2.8 Структура программы . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.9 Ввод и вывод данных . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.10 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 40
Глава 3. Операторы управления ........................................... 44
3.1 Основные конструкции алгоритма . . . . . . . . . . . . . . . . . . 44
3.2 Составной оператор . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3 Условные операторы . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4 Операторы цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.5 Решение задач с использованием циклов . . . . . . . . . . . . . . 70
3.6 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 86
Глава 4. Использование функций при программировании на C++ 100
4.1 Общие сведения о функциях . . . . . . . . . . . . . . . . . . . . . 100
4.2 Передача параметров в функцию . . . . . . . . . . . . . . . . . . 104
4.3 Возврат результата с помощью оператора return . . . . . . . . . . 106
4.4 Решение задач с использованием функций . . . . . . . . . . . . . 106
4.5 Рекурсивные функции . . . . . . . . . . . . . . . . . . . . . . . . 121
4.6 Перегрузка функций . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.7 Шаблоны функций . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.8 Область видимости переменных в функциях . . . . . . . . . . . . 126
4.9 Функция main(). Параметры командной строки . . . . . . . . . . 127
4.10 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 129
Глава 5. Массивы ................................................................. 134
5.1 Статические массивы в С(С++) . . . . . . . . . . . . . . . . . . . 134
5.2 Динамические массивы в С(С++) . . . . . . . . . . . . . . . . . . 136
5.3 Отличие статического и динамического массива . . . . . . . . . . 139
5.4 Основные алгоритмы обработки массивов . . . . . . . . . . . . . 139
5.5 Указатели на функции . . . . . . . . . . . . . . . . . . . . . . . . 166
5.6 Совместное использование динамических массивов . . . . . . . . 169
5.7 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 175
Глава 6. Статические и динамические матрицы .................... 185
6.1 Статические матрицы С(С++) . . . . . . . . . . . . . . . . . . . . 185
6.2 Динамические матрицы . . . . . . . . . . . . . . . . . . . . . . . 186
6.3 Обработка матриц в С(С++) . . . . . . . . . . . . . . . . . . . . . 187
6.4 Решение некоторых задач линейной алгебры . . . . . . . . . . . . 197
6.5 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 215
Глава 7. Организация ввода-вывода в C++ ............................ 226
7.1 Форматированный ввод-вывод в C++ . . . . . . . . . . . . . . . . 226
7.2 Работа с текстовыми файлами в C++ . . . . . . . . . . . . . . . . 230
7.3 Обработка двоичных файлов . . . . . . . . . . . . . . . . . . . . . 236
7.4 Функции fscanf() и fprintf() . . . . . . . . . . . . . . . . . . . . . . 240
Глава 8. Строки в языке C++ .............................................. 242
8.1 Общие сведения о строках в C++ . . . . . . . . . . . . . . . . . . 242
8.2 Операции над строками . . . . . . . . . . . . . . . . . . . . . . . 243
8.3 Тип данных string . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
8.4 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 247
Глава 9. Структуры в языке C++ ........................................ 249
9.1 Общие сведения о структурах . . . . . . . . . . . . . . . . . . . . 249
9.2 Библиотеки для работы с комплексными числами . . . . . . . . . 256
9.3 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 264
Глава 10. Объектно-ориентированное программирование ............ 267
10.1 Возникновение объектного подхода в программировании . . . . . 267
10.2 Классы и объекты в C++ . . . . . . . . . . . . . . . . . . . . . . . 271
10.3 Создание и удаление объектов . . . . . . . . . . . . . . . . . . . . 285
10.4 Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
10.5 Обработка исключений . . . . . . . . . . . . . . . . . . . . . . . . 305
10.6 Шаблоны классов . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
10.7 Элементы стандартной библиотеки C++ . . . . . . . . . . . . . . . 321
10.8 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 326
Глава 11. Знакомство с Qt. Подготовка к работе ..................... 329
11.1 Знакомство с Qt. Обзор истории . . . . . . . . . . . . . . . . . . 329
11.2 Лицензирование Qt . . . . . . . . . . . . . . . . . . . . . . . . . . 332
11.3 Справка и ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . 333
11.4 Обзор настроек среды Qt Creator . . . . . . . . . . . . . . . . . 334
11.5 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 339
Глава 12. Структура проекта. Основные типы .................. 340
12.1 Файлы проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
12.2 Компиляция проекта . . . . . . . . . . . . . . . . . . . . . . . . . 342
12.3 Консольный проект Qt.Вывод сообщений. . . . . . . . . . . . . . 345
12.4 Работа с текстовыми строками в Qt . . . . . . . . . . . . . . . . . 347
12.5 Контейнерные классы в Qt . . . . . . . . . . . . . . . . . . . . . . 348
12.6 Работа с файлами . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.7 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 354
Глава 13. Создание графического интерфейса средствами Qt 355
13.1 Виджеты (Widgets) . . . . . . . . . . . . . . . . . . . . . . . . . . 355
13.2 Компоновка (Layouts) . . . . . . . . . . . . . . . . . . . . . . . . . 359
13.3 Политики размера (Size Policies) . . . . . . . . . . . . . . . . . . . 363
13.4 Сигнально-слотовые соединения . . . . . . . . . . . . . . . . . . . 365
13.5 Создание сигналов (signals) и слотов (slots) . . . . . . . . . . . . 367
13.6 Элементы графического интерфейса. . . . . . . . . . . . . . . . . 371
13.7 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 373
Глава 14. Создание элементов графического интерфейса .......... 374
14.1 Класс QObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
14.2 Управление памятью. Иерархии объектов . . . . . . . . . . . . . 380
14.3 События (Events). Обработка событий (Event handling) . . . . . . 383
14.4 Фильтры событий (Event filters) . . . . . . . . . . . . . . . . . . . 385
14.5 Создание собственного элемента интерфейса . . . . . . . . . . . 389
14.6 Рисование элементов. Класс QPainter . . . . . . . . . . . . . . . . 391
14.7 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 394
Глава 15. Разработка приложений с графическим интерфейсом 395
15.1 Окна. Класс QMainWindow . . . . . . . . . . . . . . . . . . . . . . 395
15.2 Быстрая разработка с помощью Qt Designer . . . . . . . . . . . . 396
15.3 Программирование формы созданной в Qt Designer . . . . . . . . 401
15.4 Стандартные диалоги . . . . . . . . . . . . . . . . . . . . . . . . . 404
15.5 Ресурсы программы . . . . . . . . . . . . . . . . . . . . . . . . . . 408
15.6 Создание собственных диалогов . . . . . . . . . . . . . . . . . . . 410
15.7 Сохранение настроек . . . . . . . . . . . . . . . . . . . . . . . . . 414
15.8 Использование сторонних разработок в собственном проекте . . 415
15.9 Задачи для самостоятельного решения . . . . . . . . . . . . . . . 417
Приложение A. Использование компилятора командной строки
и текстового редактора Geany ................................................ 419
Приложение B. Общие сведения о библиотеке MathGL ............. 428
B.1 Установка MathGL в Linux. . . . . . . . . . . . . . . . . . . . . . . 428
B.2 Использование MathGL при построении двух- и трёхмерных
графиков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Список литературы ................................................ 443
Предметный указатель ........................................... 444