Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Предисловие
Предисловие. Знакомство с языком С++
Книга, которую открыл читатель, является с одной стороны учебником по алгоритмизации и программированию на 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) и лично Алексея Смирнова и Владимира Чёрного за возможность издать очередную книгу по свободному программному обеспечению.
Знакомство с языком С++
В этой главе читатель напишет свои первые программы на языке С(С++), познакомится с основными этапами перевода программы с языка C++ в машинный код. Второй параграф главы посвящён знакомству со средой Qt Creator.
1.1 Первая программа на C++
Знакомство с языком С++ начнём с написания программ, предназначенных для решения нескольких несложных задач.
Задача 1.1. Заданы две стороны прямоугольника a, b. Найти его площадь и периметр.
Как известно, периметр прямоугольника , а его площадь . Ниже приведён текст программы.
1 #include <iostream> 2 using namespace std; 3 int main( ) 4 { 5 float a, b, s, p; 6 cout<<"a="; 7 cin>>a; 8 cout<<"b="; 9 cin>>b; 10 p=2*(a+b ); 11 s=a*b; 12 cout << "Периметр прямоугольника равен " << p <<endl; 13 cout << "Площадь прямоугольника равна " << s <<endl; 14 return 0; 15 }
Давайте построчно рассмотрим текст программы и познакомимся со структурой программы на С++ и с некоторыми операторами языка.
Строка 1. Указывает компилятору (а точнее, препроцессору), что надо использовать функции из стандартной библиотеки iostream. Библиотека iostream нужна для организации ввода с помощью инструкции cin и вывода — с помощью cout. В программе на языке C++ должны быть подключены все используемые библиотеки.
Строка 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) по формуле . В операторе присваивания могут использоваться круглые скобки и знаки операций: + (сложение), - (вычитание), * (умножение), / (деление).
Строка 11. Оператор присваивания для вычисления площади прямоугольника.
Строка 12. Вывод строки "Периметр прямоугольника равен " и значения p на экран. Константа endl хранит строку "\n", которая предназначена для перевода курсора в новую строку дисплея2Обращаем внимание читателя, что символ пробел является обычным символом, который ничем не отличается от остальных. Для вывода пробела на экран его надо явно указывать в строке вывода..Таким образом строка
cout <<"Периметр прямоугольника равен "<< p <<endl;
выводит на экран текст "Периметр прямоугольника равен "3С пробелом после слова "равен"., значение переменной p, и переводит курсор в новую строку.
Строка 13. Вывод строки "Площадь прямоугольника равна ", значения площади прямоугольника s, после чего курсор переводится в новую строку дисплея.
Строка 14. Оператор return, который возвращает значение в операционную систему. Об этом подробный разговор предстоит в п. 4.9.Сейчас следует запомнить: если программа начинается со строки int main(), последним оператором должен быть4Вообще говоря, вместо нуля может быть любое целое число.return 0.
Строка 15. Любая функция (в том числе и main) заканчивается символом }.
Мы рассмотрели простейшую программу на языке С++, состоящую из операторов ввода данных, операторов присваивания (в которых происходит расчёт по формулам) и операторов вывода.
Программа на языке С++ представляет собой одну или несколько функций. В любой программе обязательно должна быть одна функция main(). С этой функции начинается выполнение программы. Правилом хорошего тона в программировании является разбиение задачи на подзадачи, и в главной функции чаще всего должны быть операторы вызова других функций. Общую структуру программы на языке C++ можно записать следующим образом.
Директивы препроцессора Объявление глобальных переменных Тип_результата f1 (Список_переменных) { Операторы } Тип_результата f2 (Список_переменных) { Операторы } ... Тип_результата fn (Список_переменных) { Операторы } Тип_ результата main (Список_переменных) { Операторы }
На первом этапе знакомства с языком мы будем писать программы, состоящие только из функции main, без использования глобальных переменных. Структура самой простой программы на C(C++) имеет вид.
Директивы препроцессора Тип_ результата main (Список_переменных) { Операторы }
Введённая в компьютер программа на языке С++ должна быть переведена в двоичный машинный код (формируется исполняемый файл). Для этого существуют специальные программы, называемые трансляторами. Все трансляторы делятся на два класса:
- интерпретаторы — трансляторы, которые переводят каждый оператор программы в машинный код, и по мере перевода операторы выполняются процессором;
- компиляторы переводят всю программу целиком, и если перевод всей программы прошёл без ошибок, то полученный двоичный код можно запускать на выполнение.
Процесс перевода программы в машинный код называется трансляцией. Если в качестве транслятора выступает компилятор, то используют термин компиляция программы. При переводе программы с языка С++ в машинный код используются именно компиляторы, и поэтому применительно к языку С++ термины "компилятор" и "транслятор" эквивалентны.
Рассмотрим основные этапы обработки компилятором программы на языке С++ и формирования машинного кода.
- Сначала с программой работает препроцессор5Препроцессор преобразовывает текст директив в форму, понятную компилятору. О данных на выходе препроцессора говорят, что они находятся в препроцессированной форме., он обрабатывает директивы, в нашем случае это директивы включения заголовочных файлов (файлов с расширением .h) — текстовых файлов, в которых содержится описание используемых библиотек. В результате формируется полный текст программы, который поступает на вход компилятора.
- Компилятор разбирает текст программ на составляющие элементы, проверяет синтаксические ошибки и в случае их отсутствия формирует объектный код (файл с расширением .o или .obj). Получаемый на этом этапе двоичный код не включает в себя двоичные коды библиотечных функций и функций пользователя.
- Компоновщик подключает к объектному коду программы объектные модули библиотек и других файлов (если программа состоит из нескольких файлов) и генерирует исполняемый код программы (двоичный файл), который уже можно запускать на выполнение. Этот этап называется компоновкой или сборкой программы.
После написания программы её необходимо ввести в компьютер. В этом курсе будет рассматриваться работа на языке C++ в среде Qt Creator6Тексты программ, приведённые в первой части книги (главы 1–9), без серьёзных изменений могут быть откомпилированы с помощью любого современного компилятора с языка С(С++). Авторы протестировали все программы из первой части книги с помощью QT Creator и IDE Geany (с использованием g++ версии 4.8).. Поэтому перед вводом программы в компьютер надо познакомиться со средой программирования.