Программирование на языке С++ в среде Qt Creator
Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк,
О. В. Чеснокова, А. С. Чмыхало Москва
ALT Linux 2015
УДК 004.43
ББК 32.973.26-018.1А47
А47 Программирование на языке С++ в среде Qt Creator:
/ Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк,О. В. Чеснокова,
А. С. Чмыхало М. : ALT Linux, 2015. 448 с. : ил. (Биб-
лиотека ALT Linux).
ISBN 978-5-905167-16-4
Книга является учебником по алгоритмизации и программиров а-
нию на С++и пособием по разработке визуальных приложений в среде Qt
Creator . Также в книге описаны среда программирования Qt Creator,
редактор Geany, кроссплатформенная билиотека построения графиков
MathGL . При чтении книги не требуется предварительного знакомств а с
программированием. Издание предназначено для студентов, аспирантов и препода вате-
лей вузов, а также для всех, кто изучает программирование на С++
и осваивает кроссплатформенный инструментарий Qtдля разработки
программного обеспечения.
Сайт книги: http://www.altlinux.org/Books:Qt- C++
УДК 004.43
ББК 32.973.26-018.1
По вопросам приобретения обращаться: ООО Альт Линукс (495)662-38-83 E-mail: sales@altlinux.ru http://altlinux.ru
Материалы, составляющие данную книгу, распространяются н а условиях лицензии GNU
FDL. Книга содержит следующий текст, помещаемый на первую с траницу обложки: В серии
“Библиотека ALT Linux”. Название: Программирование на я зыке С++ в среде Qt Creator.
Книга не содержит неизменяемых разделов. Авторы разделов у казаны в Предисловии. ALT
Linux торговая марка компании ALT Linux. Linux торговая м арка Линуса Торвальдса.
Прочие встречающиеся названия могут являться торговыми ма рками соответствующих вла-
дельцев.
ISBN 978-5-905167-16-4 © Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк,
О. В. Чеснокова, А. С. Чмыхало, 2015
© ALT Linux, 2015
ОглавлениеПредисловие 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Оглавление
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
Программирование на языке С++ в среде Qt Creator
Оглавление5
Глава 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
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В. , Чмыхало А. С.
6Оглавление
Приложение A. Использование компилятора командной строки
и текстового редактора Geany 419
Приложение B. Общие сведения о библиотеке MathGL 428
B.1 Установка MathGL в Linux. . . . . . . . . . . . . . . . . . . . . . . 428
B.2 Использование MathGL при построении двух- и трёхмерных
графиков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Список литературы 443
Предметный указатель 444
Программирование на языке С++ в среде Qt Creator
ПредисловиеКнига, которую открыл читатель, является с одной стороны уч ебником по
алгоритмизации и программированию на C++, а с другой пособием по разра-
ботке визуальных приложений в среде Qt Creator. В книге описаны среда про-
граммирования Qt Creatorи редакторGeany. При чтении книги не требуется
предварительного знакомства с программированием. В первой части книги (главы 1–9) на большом количестве приме ров пред-
ставлены методы построения программ на языке C++, особое внимание уделено
построению циклических программ, программированию с испо льзованием функ-
ций, массивов, матриц и указателей. Вторая часть книги (глава 10) посвящена объектно-ориентир ованному про-
граммированию на C++.
В третьей части книги (главы 11–15) читатель научится созда вать кроссплат-
форменные визуальные приложения с помощью Qt Creatorи познакомится с
библиотекой классов Qt.
В книге присутствуют задания для самостоятельного решения.
В приложениях описан текстовый редактор Geany, а также кросс-
платформенная библиотека MathGL, предназначенная для пос троения раз-
личных двух- и трёхмерных графиков. Главы 1–9 написаны Е. Р. Алексеевым и О. В. Чесноковой. Автором раздела по
объектно-ориентированному программированию является Д. А. Костюк. Главы
11–15, посвящённые программированию с использованием инс трументарияQt,
написаны Г. Г. Злобиным и А. C. Чмыхало.
Авторы благодарят компанию ALT Linux ( www.altlinux.ru) и лично Алексея
Смирнова и Владимира Чёрного за возможность издать очередн ую книгу по
свободному программному обеспечению.
Глава 1
Знакомство с языкомС++
В этой главе читатель напишет свои первые программы на языке С(С++), по-
знакомится с основными этапами перевода программы с языка C++в машинный
код. Второй параграф главы посвящён знакомству со средой Qt Creator.
1.1 Первая программа на C++
Знакомство с языком С++начнём с написания программ, предназначенных
для решения нескольких несложных задач.
Задача 1.1. Заданы две стороны прямоугольника a, b. Найти его площадь и
периметр.
Как известно, периметр прямоугольника P= 2 ·( a + b), а его площадь S= a·b .
Ниже приведён текст программы.
1 #i n c l u d e < i o s t r e a m >
2 u s i n g namespace s t d ;
3 i n t m a i n ( )
4 {
5 f l o a ta , b , s , p ;
6 c o u t << " a = ";
7 c i n >>a ;
8 c o u t << " b = ";
9 c i n >>b ;
10 p = 2 ∗ ( a+b ) ;
11 s=a ∗ b ;
12 c o u t << "Периметр прямоугольника равен "<< p << e n d l ;
13 c o u t << "Площадь прямоугольника равна "<< s << e n d l ;
14 r e t u r n 0 ;
15 }
Давайте построчно рассмотрим текст программы и познакомим ся со струк-
турой программы на С++и с некоторыми операторами языка.
Строка 1. Указывает компилятору (а точнее, препроцессору), что надо и с-
пользовать функции из стандартной библиотеки iostream. Библиотека iostream
нужна для организации ввода с помощью инструкции cinи вывода с помощью
cout . В программе на языке C++должны быть подключены все используемые
библиотеки.
1.1. Первая программа наC++ 9
Строка 2.Эта строка обозначает, что при вводе и выводе с помощью cinи
cout будут использоваться стандартные устройства (клавиатура и экран), если
эту строку не указывать, то каждый раз при вводе вместо cinнадо будет писать
std::cin , а вместо cout –- std::cout .
Строка 3. Заголовок главной функции (главная функция имеет имя main).
В простых программах присутствует только функция main().
Строка 4. Любая функция начинается с символа {.
Строка 5. Описание вещественных ( float) переменных a(длина одной сто-
роны прямоугольника), b(длина второй стороны прямоугольника), s(площадь
прямоугольника), p(периметр прямоугольника). Имя переменной 1
состоит из
латинских букв, цифр и символа подчёркивания. Имя не может н ачинаться с
цифры. В языке С++большие и малые буквы различимы. Например, имена PR_1,
pr_1 ,Pr_1 иpR_1 разные.
Строка 6. Вывод строки символов a=с помощью cout. Программа выведет
подсказку пользователю, что необходимо вводить переменную a
Строка 7. Ввод вещественного числа aс помощью cin. В это момент про-
грамма останавливается и ждёт, пока пользователь введёт зн ачение переменойa
с клавиатуры.
Строка 8 . Вывод строки символов b=с помощью cout.
Строка 9. Ввод вещественного числа bс помощью cin.
Строка 10. Оператор присваивания для вычисления периметра прямоугол ь-
ника (переменная p) по формуле 2·(a + b) . В операторе присваивания могут
использоваться круглые скобки и знаки операций: +(сложение), −(вычитание),
∗ (умножение), / (деление).
Строка 11. Оператор присваивания для вычисления площади прямоуголь-
ника.
Строка 12. Вывод строки Периметр прямоугольника равен и значения
p на экран. Константа endlхранит строку \n, которая предназначена для
перевода курсора в новую строку дисплея 2
. Таким образом строка
cout <<"Периметр прямоугольника равен " << p <
, значение пере-
менной p, и переводит курсор в новую строку.
Строка 13. Вывод строки "Площадь прямоугольника равна " , значения пло-
щади прямоугольника s, после чего курсор переводится в новую строку дисплея.
Строка 14. Операторreturn, который возвращает значение в операционную
систему. Об этом подробный разговор предстоит в п. 4.9.Сейч ас следует запом-
нить: если программа начинается со строки int main(), последним оператором
должен быть 4
return 0 .
1
В литературе равнозначно используются термины имя переме нной и идентификатор.
2 Обращаем внимание читателя, что символ пробел является обы чным символом, который
ничем не отличается от остальных. Для вывода пробела на экра н его надо явно указывать в
строке вывода. 3С пробелом после слова равен.
4 Вообще говоря, вместо нуля может быть любое целое число.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В. , Чмыхало А. С.
10Глава 1. Знакомство с языкомС++
Строка 15.Любая функция (в том числе и main) заканчивается символом }.
Мы рассмотрели простейшую программу на языке С++, состоящую из опера-
торов ввода данных, операторов присваивания (в которых про исходит расчёт по
формулам) и операторов вывода. Программа на языке С++представляет собой одну или несколько функций.
В любой программе обязательнодолжна быть одна функция main(). С этой
функции начинается выполнение программы. Правилом хороше го тона в про-
граммировании является разбиение задачи на подзадачи, и в г лавной функции
чаще всего должны быть операторы вызова других функций. Общ ую структуру
программы на языке C++можно записать следующим образом.
Директивы препроцессора
Объявление глобальных переменных
Тип_результата f 1 ( Список_переменных ) {
Операторы }
Тип_результата f 2 ( Список_переменных ) {
Операторы }
. . .
Тип_результата f n ( Список_переменных ) {
Операторы }
Тип_ результата m a i n ( Список_переменных )
{
Операторы
}
На первом этапе знакомства с языком мы будем писать программ ы, состоящие
только из функции main, без использования глобальных переменных. Структура
самой простой программы на C(C++)имеет вид.
Директивы препроцессора
Тип_ результата m a i n ( Список_переменных ) {
Операторы }
Введённая в компьютер программа на языке С++должна быть переведена в
двоичный машинный код (формируется исполняемый файл). Для этого суще-
ствуют специальные программы, называемые трансляторами. В се трансляторы
делятся на два класса:
•интерпретаторы трансляторы, которые переводят каждый оператор
программы в машинный код, и по мере перевода операторы выпол няют-
ся процессором;
• компиляторы переводят всю программу целиком, и если перевод всей про-
граммы прошёл без ошибок, то полученный двоичный код можно з апускать
на выполнение.
Процесс перевода программы в машинный код называется трансляцией. Если
в качестве транслятора выступает компилятор, то используют терминкомпиля-
Программирование на языке С++ в среде Qt Creator
1.2. Среда программированияQt Creator 11
цияпрограммы. При переводе программы с языка С++в машинный код исполь-
зуются именно компиляторы, и поэтому применительно к языку С++термины
компилятор и транслятор эквивалентны.
Рассмотрим основные этапы обработки компилятором програм мы на языке
С++ и формирования машинного кода.
1. Сначала с программой работает препроцессор 5
, он обрабатывает директи-
вы, в нашем случае это директивы включения заголовочных файл ов (фай-
лов с расширением .h) текстовых файлов, в которых содержится опи-
сание используемых библиотек. В результате формируется по лный текст
программы, который поступает на вход компилятора.
2. Компилятор разбирает текст программ на составляющие элем енты, про-
веряет синтаксические ошибки и в случае их отсутствия форми рует объ-
ектный код (файл с расширением .oили . ob j). Получаемый на этом этапе
двоичный код не включает в себя двоичные коды библиотечных фу нкций
и функций пользователя.
3. Компоновщик подключает к объектному коду программы объектные моду-
ли библиотек и других файлов (если программа состоит из неск ольких фай-
лов) и генерирует исполняемый код программы (двоичный файл ), который
уже можно запускать на выполнение. Этот этап называется ком поновкой
или сборкой программы.
После написания программы её необходимо ввести в компьютер. В той книге
будет рассматриваться работа на языке C++в среде Qt Creator 6
. Поэтому перед
вводом программы в компьютер надо познакомиться со средой пр ограммирова-
ния.
1.2 Среда программирования Qt Creator
Среда программирования Qt Creator(IDE QT Creator ) находится в репози-
тории большинства современных дистрибутивов Linux (OC Lin ux Debian, OC
Linux Ubuntu, OC ROSA Linux, ALT Linux и др.). Установка осущес твляется
штатными средствами вашей операционной системы (менеджер пакетов Synaptic
и др.) из репозитория, достаточно установить пакет qtcreat or, необходимые па-
кеты и библиотеки будут доставлены автоматически. Последн юю версию IDEQt
Creator можно скачать на сайте QtPro ject ( http://qt-project.org/downloads ).
Установочный файл имеет расширение .run. Для установки приложения, необхо-
димо запустить его на выполнение. Установка проходит в граф ическом режиме.
5
Препроцессор преобразовывает текст директив в форму, поня тную компилятору. О данных
на выходе препроцессора говорят, что они находятся в препро цессированной форме.
6 Тексты программ, приведённые в первой части книги (главы 1– 9), без серьёзных изменений
могут быть откомпилированы с помощью любого современного к омпилятора с языкаС(С++ ).
Авторы протестировали все программы из первой части книги с помощьюQT Creator иIDE
Geany (с использованием g++версии 4.8).
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В. , Чмыхало А. С.
12Глава 1. Знакомство с языкомС++
После запуска программы пользователь увидит на экране окно , подобное пред-
ставленному на рис. 1.1 7
.
Рис. 1.1: Окно Qt Creator
При работе в Qt Creatorвы находитесь в одном из режимов:
1. Welcome (Начало) отображает экран приветствия, позволяя быстро з а-
гружать недавние сессии или отдельные проекты. Этот режим м ожно уви-
деть при запуске Qt Creatorбез указания ключей командной строки.
2. Edi t (Редактор) позволяет редактировать файлы проекта и исхо дных
кодов. Боковая панель слева предоставляет различные виды д ля переме-
щения между файлами.
3. Debug (Отладка) предоставляет различные способы для просмотра со-
стояния программы при отладке.
4. Pro jects (Проекты) используется для настройки сборки, запуска и ре -
дактирования кода.
5. Analyze (Анализ) в Qt интегрированы современные средства анализа
кода разрабатываемого приложения.
6. Help (Справка) используется для вывода документации библиоте ки Qt
и Qt Creator .
7. Output (Вывод) используется для вывода подробных сведений о прое к-
те.
7 Окно на вашем компьютере визуально может несколько отличат ься от представленного
на рис. 1.1, авторы использовали IDE Qt Creatorверсии 2.6.2, основанную на QT 5.0.1.
Программирование на языке С++ в среде Qt Creator
1.2. Среда программированияQt Creator 13
Рассмотрим простейшие приёмы работы в среде Qt Creatorна примере со-
здания консольного приложения для решения задачи 1.1. Для э того можно по-
ступить одним из способов:
1. В меню File(Файл) выбрать команду New File or Pro ject(Новый файл
или проект) (комбинация клавиш Ctrl+N).
2. Находясь в режиме Welcome(Начало) главного окна QtCreator (рис. 1.1)
щёлкаем по ссылке Develop(Разработка) и выбираем команду Create
Pro ject (Создать проект).
После это откроется окно, подобное представленному на рис. 1.2. Для созда-
ния простейшего консольного приложения выбираем Non-Qt Pro ject(Проект
без использования Qt) Plain C++Pro ject (Простой проект на языке С++).
Далее выбираем имя проекта и каталог для его размещения (см. рис. 1.3)8
.
Следующие два этапа создания нашего первого приложения оста вляем без из-
менения 9
. После чего окно IDE Qt Creatorбудет подобно представленному на
рис. 1.4. Заменим текст Hello, Word стандартного приложен ия, на текст про-
граммы решения задачи 1.1.
Рис. 1.2: Окно выбора типа приложения в Qt Creator
Для сохранения текста программы можно воспользоваться ком андойСохра-
нить илиСохранить всё из менюФайл. Откомпилировать и запустить про-
грамму можно одним из следующих способов:
1. Пункт меню Сборка-Запустить .
2. Нажать на клавиатуре комбинацию клавиш Ctrk+R.
3. Щёлкнуть по кнопке Запустить (
).
Окно с результатами работы программы представлено на рис. 1 .5.
8
Рекомендуем для каждого проекта выбирать отдельный катало г. Проект это несколько
взаимосвязанных между собой файлов и каталогов. 9О назначении этих этапов будет рассказано в дальнейших разд елах книги.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В. , Чмыхало А. С.
14Глава 1. Знакомство с языкомС++
Рис. 1.3: Выбор имени и каталога нового проекта
Рис. 1.4: Главное окно создания консольного приложения
Авторы сталкивались с тем, что в некоторых дистрибутивах Ubun tu Linux и
Linux Mint после установки Qt Creatorне запускались консольные приложения.
Если читатель столкнулся с подобной проблемой, скорее всег о надо корректно
настроить терминал, который отвечает за запуск приложений в консоли. Для
этого вызываем команду Tools Options Environment (см. ри с. 1.6). Параметр
Terminal (Терминал) должен быть таким же, как показано на рис. 1.6. Пр оверь-
те установлен ли в Вашей системе пакет xterm, и при необходим ости доставьте
его. После этого не должно быть проблем с запуском консольны х приложений.
Аналогичным образом можно создавать и запускать любое консол ьное при-
ложение.
Программирование на языке С++ в среде Qt Creator
1.2. Среда программированияQt Creator 15
Рис. 1.5: Результаты работы программы решения задачи 1.1
Рис. 1.6: Окно настроек средыQt Creator
Дальнейшее знакомство со средой Qt Creatorпродолжим, решая следующую
задачу.
Задача 1.2. Заданы длины трёх сторон треугольника a, b и c(см. рис. 1.7).
Вычислить площадь и периметр треугольника.
Для решения задачи можно воспользоваться формулой Герона
S= q
p2
p 2 −
a
p 2−
b
p 2−
c
, где p= a+ b+ c периметр.
Решение задачи можно разбить на следующие этапы:
1. Определение значений a, b и c(ввод величин a, b, c с клавиатуры в память
компьютера).
2. Расчёт значений pи sпо приведённым выше формулам.
3. Вывод pи sна экран дисплея.
Ниже приведён текст программы. Сразу заметим, что в тексте м огут встречаться
строки, начинающие с двух наклонных (//). Это комментарии. Комментариине
являются обязательными элементами программы и ничего не соо бщают компью-
теру, они поясняют человеку, читающему текст программы, назн ачение отдель-
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В. , Чмыхало А. С.
16Глава 1. Знакомство с языкомС++
Рис. 1.7: Треугольник
ных элементов программы. В книге комментарии будут широко и спользоваться
для пояснения отдельных участков программы.
#i n c l u d e < i o s t r e a m >
#i n c l u d e