- •Предисловие
- •Глава 1. Основные понятия
- •1.1. Элементы языка программирования
- •1.2. Процесс создания программы
- •1.3. Первая программа
- •1.4. Состав программы
- •Глава 2. Средства разработки на C++
- •2.1. Системы Turbo C++ 3.0/Borland C++ 3.1
- •2.2. Система C++ Builder
- •Глава 3. Работа с числовыми данными
- •3.1. Целые типы
- •3.2. Числа с плавающей точкой
- •3.3. Ввод и вывод чисел
- •3.4. Логический тип и логические операции
- •3.5. Математические функции
- •Глава 4. Операторы. Ключевые слова
- •4.1. Операторы
- •4.2. Приоритеты операторов
- •4.3. Ключевые слова
- •4.4. Структура программы
- •4.5. Константы
- •Задачи - . Простейшие вычисления
- •Глава 5. Управление и циклы
- •5.1. Условный оператор
- •5.2. Операторы цикла
- •5.3. Переключатель
- •5.4. Операторы break и continue
- •Задачи -. Выбор и циклы
- •Глава 6. Массивы
- •6.1. Одномерные массивы
- •6.2. Двумерные массивы
- •Задачи -. Одно- и двумерные массивы
- •Глава 7. Функции
- •7.1. Определение функции
- •7.2. Формальные параметры и фактические аргументы
- •7.3. Автоматические и статические переменные
- •7.4. Прототипы функций
- •7.5. Массивы как аргументы функций
- •7.6. Внешние переменные
- •7.7. Рекурсия
- •7.8. Перегруженные имена функций
- •7.9. Аргументы функций по умолчанию
- •Задачи -. Функции
- •Глава 8. Символы и строки
- •8.1. Символы
- •8.2. Строки символов
- •Задачи -. Символы и строки
- •Глава 9. Препроцессор
- •9.1. Директивы препроцессора
- •9.2. Макросы
- •Задачи -. Макросы
- •Глава 10. Указатели и ссылки
- •10.1. Указатели и адреса
- •10.2. Указатели и массивы
- •10.3. Адресная арифметика
- •10.4. Символьные указатели
- •10.5. Массивы указателей
- •10.6. Указатели на функции
- •10.7. Ссылки
- •10.8. Операторы new и delete
- •Задачи -. Указатели и ссылки
- •Глава 11. О файлах и командной строке
- •11.1. Знакомство с файлами
- •11.2. Командная строка
- •11.3. Перенаправление стандартного ввода и вывода на файл
- •11.4. Аргументы командной строки
- •Задачи -. Файлы и командная строка
- •Глава 12. Работа с экраном дисплея
- •12.1. Текстовый режим
- •12.2. Графический режим
- •Задачи -. Работа с экраном
- •Глава 13. Внутреннее представление чисел
- •13.1. Двоичная система счисления
- •13.2. Беззнаковые целые
- •13.3. Двоичный дополнительный код
- •13.4. Двоичный код с избытком
- •13.5. Побитовые операторы
- •13.6. Дробные числа в двоичной системе
- •13.7. Внутреннее представление плавающих типов
- •13.8. Преобразование типов
- •Задачи -. Побитовые операторы
- •Глава 14. Структуры, перечисления, объединения
- •14.1. Объявление структур
- •14.2. Структуры и функции
- •14.3. Указатели на структуры
- •14.4. Массивы структур
- •14.5. Перечисления
- •14.6. Объединения
- •14.7. Битовые поля
- •14.8. О бинарных файлах
- •Задачи -. Структуры
- •Глава 15. Классы
- •15.1. Структуры в C++. Инкапсуляция
- •15.2. Встроенные функции
- •15.3. Классы. Скрытие данных
- •15.4. Конструкторы
- •15.5. Статические члены класса
- •15.6. Друзья класса
- •15.7. Копирование объектов класса
- •15.8. Управление доступом
- •15.9. Ссылка на себя
- •15.10. Деструкторы
- •Задачи -. Работа с классами
- •Глава 16. Программы из нескольких файлов
- •16.1. Работа с проектами
- •16.2. Область действия имен
- •16.3. Заголовочные файлы
- •16.4. Пространства имен
- •Задачи -. Работа со стеком
- •Глава 17. Перегрузка операторов
- •17.1. Правила перегрузки операторов
- •Задачи -. Перегрузка операторов
- •Глава 18. Конструктор копирования и оператор присваивания
- •18.1. Проблемы при копировании
- •Задачи -. Конструктор копирования
- •Глава 19. Ввод и вывод
- •19.1. Вывод
- •19.2. Ввод
- •19.3. Ввод и вывод определяемых пользователем типов
- •19.4. Работа с файлами
- •Глава 20. Взаимоотношения классов
- •20.1. Объекты как члены класса
- •20.2. Конструкторы встроенных типов
- •20.3. Наследование
- •20.4. Виртуальные функции
- •20.5. Абстрактные классы
- •20.6. Совместимость типов
- •20.7. Множественное наследование
- •Задачи -. Наследование классов
- •Глава 21. Шаблоны, исключения
- •21.1. Шаблоны
- •21.2. Шаблоны функций
- •21.3. Классы и шаблоны
- •21.4. Обработка исключений
- •21.5. Стандартная библиотека шаблонов
- •Литература
- •Предметный указатель
18 1
вставляет в текст обрабатываемого файла содержимое других файлов, заменяет одни фрагменты текста другими, убирает комментарии. Наличие препроцессора позволяет частично автоматизировать создание исходного кода, так как предоставляет программисту возможность объявлять короткие фрагменты текста, называемые макросами, заменяемые препроцессором на другие заданные фрагменты, обычно более длинные.
Компилятор проверяет правильность исходной программы с точки зрения правил языка и переводит ее на язык машинных команд, в результате чего создается объектный код. Объектный код не может быть непосредственно выполнен процессором, так как не содержит кода библиотечных функций. Объектный код, полученный после компиляции какого-либо файла, размещается в файле с расширением
.obj.
Редактор связей собирает в один исполняемый файл объектные модули программы, добавляет код стандартных функций из библиотек. В результате получается готовая к выполнению рабочая программа, размещаемая в файле с расширением .exe. Другие названия редактора связей – компоновщик или линкер, по имени программы Link, которая обычно используется для редактирования связей.
1.3. Первая программа
Программа 1. Приветствие
Рассмотрим следующую простейшую программу на языке C++:
// Файл Hello.cpp
#include <iostream.h> int main()
{
cout << "Здравствуй, Мир!\n"; return 0;
}
Она выводит на экране сообщение:
Здравствуй, Мир!
Ниже данная программа детально обсуждается.
1.4. Состав программы
Разберем назначение каждой строки Программы 1. Строка
Основные понятия 19
#include <iostream.h>
является директивой препроцессора. Препроцессор вместо этой строки вставит в программу содержимое файла iostream.h. В этом файле находятся объявления стандартных средств ввода и вывода языка C++. Программы, которые осуществляют ввод с клавиатуры или из файла, вывод на экран или в файл, должны включать в свой состав файл
iostream.h.
Отметим, что файлы, содержащие различные объявления, в том числе объявления (заголовки) функций, принято называть заголовочными. Файл iostream.h – один из многих заголовочных
файлов, входящих в состав системы программирования на C++. Строка
int main()
является заголовком функции main. Указанием на то, что main – это именно функция, является наличие круглых скобок (). В данном случае в скобках ничего нет, но в них может содержаться список аргументов функции. Ключевое слово int, стоящее перед именем функции, указывает тип значения, которое возвращает функция.
Фигурные скобки { и } ограничивают блок операторов, составляющих тело функции. Оператор (инструкция):
cout << "Здравствуй, Мир! \n";
выводит на экран строку символов, заключенную в двойные кавычки. Сами кавычки не выводятся. Слово cout – это имя переменной, определенной в файле iostream.h, которая является потоком, связанным со стандартным устройством вывода (экраном). (Для простоты можно условно считать, что cout – это экран). Два символа << обозначают один оператор вывода в поток. После этого оператора пишется выражение, значение которого надо вывести. Двумя знаками \n в языке C++ обозначается один символ новая строка. Существует еще несколько символов, для обозначения которых используются два знака. При выводе на экран символа \n произойдет перевод курсора в начало следующей строки экрана.
Инструкция return 0;
завершает работу функции. Значение 0 возвращается из функции в качестве результата.
Каждая инструкция программы завершается точкой с запятой.
20 1
Для выполнения программы на реальном компьютере следует воспользоваться каким-либо средством разработки. О них речь пойдет в следующей главе.