- •1. Введение
- •2. Элементы языка
- •2.1. Первые программы
- •2.2. Алфавит языка
- •2.3. Комментарии
- •2.4. Типы данных
- •2.5. Целые типы данных
- •2.8. Директива препроцессора define
- •2.9. Описания
- •2.10. Модификатор const
- •3. Выражения
- •3.1. Операция и выражение присваивания
- •2.6. Плавающие типы данных
- •2.7. Константы-строки, или литералы
- •3.2. Арифметические операции
- •3.3. Операции отношения
- •3.4. Логические операции
- •3.5. Побитовые операции
- •3.6. Сдвиги
- •?????3.8. Тернарная или условная операция
- •3.9. Операция следования
- •3.10. Приоритеты операций и порядок вычисления
- •4.6. Оператор выбора switch
- •4.7. Оператор цикла while
- •4.8. Цикл с постусловием do-while
- •4.9. Оператор for
- •4.10. Оператор безусловного перехода
- •4.11. Оператор break
- •4.12. Оператор continue
- •4.13. Оператор return
- •5. Указатели
- •5.1. Определение указателей
- •5.2. Указатели и массивы
- •5.3. Адресная арифметика
- •5.4. Символьные массивы и строки
- •5.5. Многомерные массивы
- •5.6. Указатели и многомерные массивы
- •6. Операция sizeof
- •7. Операции для работы с динамической памятью
- •7.1. Операция выделения памяти new
- •7.2. Операция освобождения памяти delete
- •8. Функции
- •8.1. Определение и вызов функции
- •8.2. Функции. Передача аргументов
- •8.3. Передача многомерных массивов
- •8.4. Указатели на функции
- •8.5. Ссылки
- •8.6. Ссылки в качестве параметров функций
- •8.7. Аргументы по умолчанию
- •8.8. Переопределение функций
- •8.9. Шаблоны функций
- •9. Объявления и определения
- •10. Область существования имени
- •11. Область видимости
- •Здесь будет напечатано
- •12. Классы памяти
- •13. Объявления объектов и типов
- •14. Имена типов
- •15. Синоним имени типа
- •16. Правила преобразования стандартных типов
- •16.1. Явные преобразования
- •16.2. Неявные преобразования стандартных базовых типов
- •16.3. Преобразование производных стандартных типов
- •17. Перечисления
- •18. Классы
- •18.1. Объявление классов
- •18.2. Конструкторы
- •18.3. Деструкторы
- •18.4. Статические члены класса
- •18.5. Указатель this
- •18.6. Статические функции-члены
- •18.7. Указатели на члены класса
- •18.8. Инициализация данных–членов класса
- •18.9. Конструктор копирования и операция присваивания
- •18.10. Дружественные функции
- •18.11. Конструктор и операция new
- •18.12. Вызов деструктора
- •19. Производные классы
- •19.1. Построение производного класса
- •19.2. Защищенные члены класса
- •19.3. Управление уровнем доступа к членам класса
- •19.4. Последовательность вызова конструктора и деструктора при построении производного класса на основе одного базового
- •19.5. Преобразования типов
- •20. Полиморфизм
- •20.1. Раннее и позднее связывание
- •20.2. Виртуальные функции
- •20.3. Абстрактные классы
- •21. Переопределение стандартных операций
- •21.1. Основные определения и свойства
- •21.2. Операции new и delete при работе с абстрактными типами
- •21.3. Использование new при создании динамического объекта абстрактного типа
- •21.4. Операция delete
- •21.5. Преобразование типов
- •22. Некоторые особенности переопределенных операций
- •22.2. Операция [ ]
- •23. Классы и шаблоны
- •24. Списки
- •24.1. Операции над односвязными списками
- •24.3. Операции над кольцевыми списками
- •24.2. Двунаправленные и кольцевые списки
- •25. Стеки
- •25.1. Реализация стека через массив
- •25.2. Реализация стека через динамическую цепочку звеньев
- •26. Двоичные деревья
- •26.1. Определение и построение
- •26.2.Таблицы
- •27. Список литературы
2. Элементы языка
2.1. Первые программы
Напишем простейшую программу.
#include<iostream.h>
void main(){
cout<<”Hello, World!\n”;
}
Здесь в первой строке расположена так называемая директива препроцессора include (включающая директива). Выполнение этой директивы приведет к тому, что вместо первой строки в программу будет вставлено содержимое файла iostream.h, (файлы с расширением .h называются хедерами, или заголовочными файлами; эти файлы содержат тексты на языке С++) и компилятор после этого будет обрабатывать новый полученный текст программы.
Во второй строке исходного текста программы находится заголовок функции с именем main. Пустые круглые скобки говорят о том, что эта функция не имеет аргументов, а ключевое слово void означает, что функция main не возвращает никакого значения. В фигурных скобках находится блок, который часто называют телом программы.
В третьей строке стоит оператор, действие которого – вывод в поток cout (на английском звучит как see-out), который здесь ассоциируется с экраном дисплея, строки
Hello, World!
Символ ‘\n‘ в конце текста в кавычках сообщает компилятору, что после вывода текста на экран нужно перейти на новую строку.
Теперь приведем пример простой программы и диалога, который получается на экране компьютера, если пользователь запускает эту программу и вводит соответствующие данные. В дальнейшем пользователем мы будем называть человека, который использует программу. Данные, введенные пользователем, выделены в тексте диалога жирным шрифтом. Программистом мы будем в дальнейшем называть, естественно, автора программы.
#include <iostream.h>
void main(){
int m, n, sum; // Описания.
cout<<”Для ввода чисел задайте два числа на клавиатуре\n”;
cout<<”(через пробелы) и нажмите Enter.\n”;
cin>>m>>n; // Ввод чисел.
sum = m + n;
cout<<”При m= ”<<m<<” и n= ”<<n
<<” их сумма равна ”<<sum<<”.\n”; // Вывод результата.
}
При выполнении этой программы на экране монитора появится следующий диалог:
Для ввода чисел задайте два числа на клавиатуре
(через пробелы) и нажмите Enter.
20 45
При m= 20 и n= 45 их сумма равна 65.
В этой программе за символами // стоят комментарии. В третьей строке описываются целые переменные с именами m, n и sum.
Оператор, начинающийся со слова cin сообщает компилятору, что введенные пользователем значения, равные 20 и 45, нужно поместить соответственно в переменные m и n. Объект cin (читается как see-in) – поток ввода – здесь понимается как клавиатура, а стрелки << и >> указывают направление, в котором перемещаются данные.
Перейдем теперь к описанию языка С++ и его возможностей.
2.2. Алфавит языка
В алфавит языка входят
1) Прописные латинские буквы А .. Z
Строчные латинские буквы a .. z
Арабские цифры 0..9
Символ подчеркивания _ (рассматривается как буква).
Все эти символы используются для образования ключевых слов и имён языка. Имя есть последовательность букв и цифр, начинающихся с буквы и не являющаяся ключевым словом. ( _ в начале имени ставить не рекомендуется).
В С++ прописные и строчные буквы различаются, поэтому имена ARG1 и arg1 являются различными.
2) В алфавит С++ входят знаки пунктуации и специальные символы, приведенные в табл. 1.
Таблица 1
Знаки пунктуации и специальные символы
Символы |
Наименование |
Символы |
Наименование |
, |
запятая |
{ |
открывающая скобка |
. |
точка |
} |
закрывающая скобка |
; |
точка с запятой |
< |
меньше |
: |
двоеточие |
> |
больше |
? |
знак вопроса |
[ |
открывающая скобка |
‘ |
апостроф |
] |
закрывающая скобка |
! |
восклицательный знак |
# |
номер или решетка |
| |
|
% |
процент |
/ |
слэш |
& |
амперсанд |
\ |
обратный слэш |
^ |
НЕ-логическое |
~ |
тильда |
- |
минус |
* |
звездочка |
= |
равенство |
( |
открывающая скобка |
“ |
кавычки |
) |
закрывающая скобка |
+ |
плюс |
3) Пробельные символы
К этой группе относятся пробел, символы табуляции, перевода строки, возврат каретки, перевода страницы. Эти символы отделяют друг от друга лексемы языка. Любая последовательность пробельных символов рассматривается при компиляции как один пробел.
