Компания ALT Linux
Опубликован: 07.03.2015 | Доступ: свободный | Студентов: 1714 / 223 | Длительность: 24:14:00
Лекция 1:

Предисловие

Лекция 1: 12 || Лекция 2 >
Аннотация: В этой главе читатель напишет свои первые программы на языке С(С++), познакомится с основными этапами перевода программы с языка C++ в машинный код. Второй параграф главы посвящён знакомству со средой 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) и лично Алексея Смирнова и Владимира Чёрного за возможность издать очередную книгу по свободному программному обеспечению.

Знакомство с языком С++

В этой главе читатель напишет свои первые программы на языке С(С++), познакомится с основными этапами перевода программы с языка C++ в машинный код. Второй параграф главы посвящён знакомству со средой Qt Creator.

1.1 Первая программа на C++

Знакомство с языком С++ начнём с написания программ, предназначенных для решения нескольких несложных задач.

Задача 1.1. Заданы две стороны прямоугольника a, b. Найти его площадь и периметр.

Как известно, периметр прямоугольника P = 2*(a +b), а его площадь S = 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) по формуле 2*(a + b). В операторе присваивания могут использоваться круглые скобки и знаки операций: + (сложение), - (вычитание), * (умножение), / (деление).

Строка 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 (Список_переменных)
{
Операторы
}
			

Введённая в компьютер программа на языке С++ должна быть переведена в двоичный машинный код (формируется исполняемый файл). Для этого существуют специальные программы, называемые трансляторами. Все трансляторы делятся на два класса:

  • интерпретаторы — трансляторы, которые переводят каждый оператор программы в машинный код, и по мере перевода операторы выполняются процессором;
  • компиляторы переводят всю программу целиком, и если перевод всей программы прошёл без ошибок, то полученный двоичный код можно запускать на выполнение.

Процесс перевода программы в машинный код называется трансляцией. Если в качестве транслятора выступает компилятор, то используют термин компиляция программы. При переводе программы с языка С++ в машинный код используются именно компиляторы, и поэтому применительно к языку С++ термины "компилятор" и "транслятор" эквивалентны.

Рассмотрим основные этапы обработки компилятором программы на языке С++ и формирования машинного кода.

  1. Сначала с программой работает препроцессор5Препроцессор преобразовывает текст директив в форму, понятную компилятору. О данных на выходе препроцессора говорят, что они находятся в препроцессированной форме., он обрабатывает директивы, в нашем случае это директивы включения заголовочных файлов (файлов с расширением .h) — текстовых файлов, в которых содержится описание используемых библиотек. В результате формируется полный текст программы, который поступает на вход компилятора.
  2. Компилятор разбирает текст программ на составляющие элементы, проверяет синтаксические ошибки и в случае их отсутствия формирует объектный код (файл с расширением .o или .obj). Получаемый на этом этапе двоичный код не включает в себя двоичные коды библиотечных функций и функций пользователя.
  3. Компоновщик подключает к объектному коду программы объектные модули библиотек и других файлов (если программа состоит из нескольких файлов) и генерирует исполняемый код программы (двоичный файл), который уже можно запускать на выполнение. Этот этап называется компоновкой или сборкой программы.

После написания программы её необходимо ввести в компьютер. В этом курсе будет рассматриваться работа на языке C++ в среде Qt Creator6Тексты программ, приведённые в первой части книги (главы 1–9), без серьёзных изменений могут быть откомпилированы с помощью любого современного компилятора с языка С(С++). Авторы протестировали все программы из первой части книги с помощью QT Creator и IDE Geany (с использованием g++ версии 4.8).. Поэтому перед вводом программы в компьютер надо познакомиться со средой программирования.

Лекция 1: 12 || Лекция 2 >
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?

Alex Arhipov
Alex Arhipov
Россия, Сочи
Николай Катющев
Николай Катющев
Украина, Одесса