
- •7)Понятие структурного программирования. Базовые конструкции структурного программирования. Оператор «выражения».
- •8)Операторы ветвления. Условный оператор if. Оператор switch.
- •10)Операторы передачи управления. Оператор goto. Оператор break. Оператор continue. Оператор return.
- •11) Указатели. Инициализация указателей. Операции с указателями. Ссылки.
- •12)Массивы. Динамические массивы. Строки.
- •13)Типы данных, определяемые пользователем. Переименование типов. Перечисление.
- •14)Типы данных, определяемые пользователем. Структуры. Битовые поля. Объединения.
- •15)Функции. Объявление и определение функций.
- •16)Способы обмена данными между функциями. Глобальные переменные. Возвращаемое значение. Параметры функции. Передача массивов в качестве параметров. Параметры со значениями по умолчанию.
- •17)Рекурсивные функции. Функция main().
- •18)Перегрузка функций.
- •19)Шаблоны функции.
- •20)Директивы препроцессора. Директива #include. Директива #define. Директива #undef.
- •21)Директива препроцессора. Директивы условной компиляции.
- •22)Основные свойства объектно-ориентированного программирования. Понятие класса.
- •23)Классы. Описание класса. Описание объекта. Константные методы. Указатель this.
- •24)Конструкторы. Конструктор копирования. Статические элементы класса.
- •25)Деструкторы. Дружественные функции и классы.
- •26)Перегрузка операций. Перегрузка бинарных и унарных операций.
- •27)Перегрузка операций. Перегрузка операции присваивания. Перегрузка операции приведения типа. Перегрузка операции индексирования.
- •28)Наследование. Ключи доступа к элементам базового класса. Простое наследование.
- •29)Виртуальные методы. Механизм позднего связывания.
- •30)Абстрактные классы. Множественное наследование.
- •31)Шаблоны классов. Создание шаблонов. Использование шаблонов класса.
- •35)Форматирование данных при вводе - выводе в поток. Флаги и манипуляторы.
- •38)Модель программирования для os Windows. Механизм обработки сообщений в Windows. Группы сообщений.
1)Состав алгоритмического языка. Алфавит С++. Идентификаторы. Ключевые слова.
С++ создан в начале 80 годов 20 века Бьерном Страуструпом. Первое название «Си с классами». В середине 80х годов появилось новое название «С++».
С++ реализует:
- базовые конструкции структурного программирования
- основные свойства объектно-ориентированного программирования.
Свойства языка С++:
Языки |
|
Естественный |
Алгоритмический |
символы слова словосочетания предложения |
символы лексемы выражения операторы |
Символы - основные неделимые знаки, с помощью которых пишутся все тексты на языке.
Лексема – минимальная единица языка, имеющая самостоятельный смысл.
Выражение – задает правило вычисления некоторого значения.
Оператор – задает законченное описание некоторого действия. Операторы могут быть объединены в составной оператор-блок.
Совокупность операторов, объединенная единым алгоритмом, образует программу на алгоритмическом языке.
Создание программы:
исходный текст программы (.cpp) => препроцессор => полный текст программы (.cpp) => компилятор => объектный модуль => компоновщик – редактор связей (<=библиотечные файлы (.lib)) => исполняемая программа (.exe)
Алфавит С++:
- прописные и строчные знаки и знак подчеркивания
- арабские цифры
- специальные знаки
- пробельные символы
Лексемы С++:
- идентификаторы
- ключевые слова
-знаки операций
-константы
-разделители
Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.
Идентификатор – имя программного объекта (переменная, функция…):
- используются латинские буквы и знаки подчеркивания
- прописные и строчные буквы различаются
-первый символ буква или знак подчеркивания
-пробелы внутри имен не допускаются
-идентификатор не должен совпадать по написанию с ключевыми словами
Ключевые слова – это зарегистрированные идентификаторы, которые имеют специальное значение для компилятора.
2) Состав алгоритмического языка. Знаки операций С++. Константы. Комментарии.
С++ создан в начале 80 годов 20 века Бьерном Страуструпом. Первое название «Си с классами». В середине 80х годов появилось новое название «С++».
С++ реализует:
- базовые конструкции структурного программирования
- основные свойства объектно-ориентированного программирования.
Свойства языка С++:
Языки |
|
Естественный |
Алгоритмический |
символы слова словосочетания предложения |
символы лексемы выражения операторы |
Символы - основные неделимые знаки, с помощью которых пишутся все тексты на языке.
Лексема – минимальная единица языка, имеющая самостоятельный смысл.
Выражение – задает правило вычисления некоторого значения.
Оператор – задает законченное описание некоторого действия. Операторы могут быть объединены в составной оператор-блок.
Совокупность операторов, объединенная единым алгоритмом, образует программу на алгоритмическом языке.
Создание программы:
исходный текст программы (.cpp) => препроцессор => полный текст программы (.cpp) => компилятор => объектный модуль (.obj) => компоновщик – редактор связей (<=библиотечные файлы (.lib)) => исполняемая программа (.exe)
Знаки операций – один или более символов, определяющих действия над операндами. Внутри знака операции пробелы не допускаются. Операции делятся на унарные, бинарные и тернарные по количеству участвующих в них операндов.
Константы – неизменяемые величины, записанные в тексте программы.
Компилятор относит программу к одному из ее типов по ее внешнему виду.
целые константы:
- десятичный формат(8, 0, 123)
- восьмеричный формат(01, 020, 06543)
- шестнадцатеричный формат(0*А, 0*1В8)
вещественные константы:
- десятичный формат(5.7, 0.001)
- экспоненциальный формат(0.2Е7, 11е-9)
символьные константы: ‘A’ , ‘ю’ , ‘* ’ , ‘ \” ’ ‘\012’ , ‘\0*07’
строковые константы:
“здесь был Вася” , “\t значение x=\0*F5\n”
Строковые константы, определенные в программе только пробельными символами, при компиляции объединяются в одну. Длинную строковую константу можно разделить на нескольких строках, используя в качестве знака переноса обратную косую черту. В конце каждой строковой константы компилятор добавляет нулевой символ ‘\0’.
Комментарии:
- 2 символа косая черта //
- символы скобки /* и */
3)Основные типы данных С++. Целый, символьный, расширенный символьный, логический типы.
Любой тип данных определяет:
- внутреннее представление данных в памяти
- множество значений, которые могут принимать величины этого типа
- операции и функции, которые можно применить к величинам
6 основных типов данных:
- целочисленные
int (целый)
char (символьный)
wchar_t (расширенный символьный)
bool (логический)
- с плавающей точкой
float (вещественный)
double (вещественный с двойной точностью)
4 спецификатора типа уточняют внутреннее представление и диапазон значений основных типов:
short (короткий)
long (длинный)
signed (знаковый)
unsigned (беззнаковый)
целый тип int:
- размер не определен стандартом С++ (2 или 4 байта) и определяется спецификаторами short int, long int, signed int, unsigned int
- спецификаторы можно комбинировать
unsigned long int
- по умолчанию все целые типы знаковые
- целым константам приписывается тип в соответствии с их видом
Символьный тип char:
- размер 1 байт
- может быть со знаком и без знака
signed char unsigned char
Расширенный символьный тип wchar_t:
- работа с набором символов Unicode
- размер равен типу short (2 байта)
- строковые и символьные константы расширенного символьного типа записываются с префиксом «L»:
L “строка широких символов”
Логический тип bool:
- размер 1 байт
- величина типа может принимать 2 значения (true или false).
4)Основные типы данных С++. типы с плавающей точкой. Тип void.
Любой тип данных определяет:
- внутреннее представление данных в памяти
- множество значений, которые могут принимать величины этого типа
- операции и функции, которые можно применить к величинам
6 основных типов данных:
- целочисленные
int (целый)
char (символьный)
wchar_t (расширенный символьный)
bool (логический)
- с плавающей точкой
float (вещественный)
double (вещественный с двойной точностью)
4 спецификатора типа уточняют внутреннее представление и диапазон значений основных типов:
short (короткий)
long (длинный)
signed (знаковый)
unsigned (беззнаковый)
Типы с плавающей точкой (float, double, long double):
float – 4 байта
double – 8 байта
long double – 8 и 10 байт
- константы вещественного типа по умолчанию имеют тип double
2E+6L – long double
1,82F – float
Тип void:
- нет значений
- используется для:
1) определения функций, которые не возвращают значений
2) указания пустого списка аргументов функции
3) как базовый тип для указателей
5)Структура программы на С++. Переменные. Правила описания переменных.
Программа на С++ состоит из:
- функций
- описаний
- директив препроцессора
main – главная функция (выполнение программы начинается с нее).
Формат определения функции:
тип имя (параметры)
{ операторы, составляющие тело функции}
«тип» - тип данных возвращаемого функцией значения
«имя» - произвольный идентификатор
«параметры» могут отсутствовать
Правила описания:
- если функция не должна возвращать значения, указывается тип void
- тело функции является блоком (составным оператором) и заключается в фигурные скобки
- не могут быть вложенными
- оператор заканчивается ‘;’ (кроме составного)
Ввод и вывод данных:
2 способа:
1)функции унаследованные от языка Си:
int scanf (const char * format, …) -ввод
int printf (const char * format, …) –вывод
Строка формата содержит символы, которые при выводе копируются на экран, и спецификации преобразования (начинаются со знака %), которые при вводе и выводе заменяются конкретными величинами.
2)объекты стандартной библиотеки С++:
cin>> -ввод
cout<< -вывод
Переменные – это именованная область памяти, в которой хранятся данные определенного типа:
- у переменной есть имя и значение
- перед использованием любая переменная должна быть описана (объявлена):
int a; float x;
Описание переменных:
[класс памяти] [const] тип имя [инициализатор];
- при описании можно присвоить начальное значение (инициализация)
- 2 формата инициализатора:
1) со знаком равенства =значение
2) в круглых скобках (значение)
- модификатор const описывает константу
- в одной строке можно описывать несколько переменных одного типа через запятую
Область действия переменной:
- область действия идентификатора – часть программы, в которой его можно использовать для доступа к связанной с ним области памяти
- в зависимости от области действия переменной может быть локальной и глобальной
- локальная – внутри блока
- глобальная – вне блока и функции
класс памяти – время жизни и области видимости переменной
auto – автоматическая переменная (уничтожается при выходе из блока)
extern – переменная определена в другом месте программы
static – статическая переменная, инициализируется один раз
register – память для переменной выделяется, по возможности, в регистрах процессора
6)Операции С++. Выражения. Преобразование типов при вычислении выражения.
Операции делятся на унарные, бинарные и тернарные по количеству участвующих в них операндов.
унарные операции:
++ увеличение на 1 (инкремент)
-- уменьшение на 1 (декремент)
sizeof размер типа или переменной в байтах
~ поразрядное отрицание
! логическое отрицание
- арифметическое отрицание
+ унарный плюс
& взятие адреса
* разадресация
new выделение памяти
delete освобождение памяти
(тип) преобразование типа
бинарные операции:
* умножение
/ деление
% остаток от деления
+ сложение
- вычитание
<< сдвиг влево
>> сдвиг вправо
< меньше
<= меньше или равно
> больше
>= больше или равно
== равно
!= не равно
& поразрядное И
^ поразрядное исключающее ИЛИ
| поразрядное ИЛИ
&& логическое И
|| логическое ИЛИ
бинарные и тернарные операции:
?: условная операция (тернарная)
= присваивание
*= умножение с присваиванием
/= деление с присваиванием
%= остаток от деления с присваиванием
+= сложение с присваиванием
-= вычитание с присваиванием
<<= сдвиг влево с присваиванием
>>= сдвиг вправо с присваиванием
&= поразрядное И с присваиванием
|= поразрядное ИЛИ с присваиванием
^= поразрядное исключающее ИЛИ с присваиванием
, последовательное вычисление
Состав выражения:
- операнды (данные для вычисления)
- знак операции (действия над операндами)
- круглые скобки (изменяют порядок вычислений)
Результат вычисления выражения характеризуется значением и типом.
Правила преобразования типов операндов:
1) все операнды целого типа, имеющие размер меньше чем int, преобразуются в int
2) если один из операндов имеет плавающий тип, то и второй операнд преобразуется к такому же
3)если предыдущее условие не выполнено, т.е. оба операнда целого типа то:
- если один имеет тип long, второй расширяется до него
-если один является беззнаковым, то и второй становится беззнаковым
7)Понятие структурного программирования. Базовые конструкции структурного программирования. Оператор «выражения».
Любую программу для решения задачи любой сложности можно составить, используя только три основные конструкции: следование, ветвление, цикл.
Оператор «выражение»:
- любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении этого выражения
- частный случай – пустой оператор (;)
8)Операторы ветвления. Условный оператор if. Оператор switch.
Условный оператор if:
используется для разветвления процесса вычисления на 2 направления
if (выражение) оператор 1;
[else оператор 2;]
Оператор switch:
предназначен для разветвления процесса вычисления на несколько направлений
switch ()
{ case константное выражение1: [список операторов]
case константное выражение 2: [список операторов]
…
case константное выражение n: [список операторов]
[default: список операторов] }
- выход из оператора обычно выполняется с помощью операторов break или return
- все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа.
9)Операторы цикла в С++. Цикл с предусловием. Цикл с постусловием. Цикл с параметром.
Операторы цикла :
- используются для организации многократно повторяющегося вычисления
- любой цикл состоит из:
1)тела цикла
2)начальных установок
3)модификации параметра цикла
4)проверки условия продолжения выполнения цикла
- один проход цикла называется итерацией
- параметры – переменные, изменяющиеся и используемые при проверки условия
- счетчик цикла – целочисленные параметры цикла, изменяющиеся с постоянным шагом на каждой итерации
Цикл с предусловием while:
while (выражение) оператор;
int a=100, sum=0;
while (a!=0) {sum+=a; a--;}
Цикл с постусловием do while:
do оператор while (выражение);
int a=100, sum=0;
do {sum+=a; a--;} while (a!=0);
Цикл с параметром for:
for ( инициализация; выражение; модификации) оператор;
- любая часть оператора for может быть опущена, но точки с запятой обязательны
int sum=0;
for (int a=1; a<=100;a++) sum+=a;
10)Операторы передачи управления. Оператор goto. Оператор break. Оператор continue. Оператор return.
4 оператора, изменяющих естественный порядок выполнения выражения:
goto – безусловный переход
break – выход из цикла
continue – переход к следующей итерации
return - возврат из функции
GOTO:
формат – goto метка;
…..
метка: оператор;
метка – обычный идентификатор
BREAK:
используется внутри операторов цикла для обеспечения перехода в точку программы, находящуюся непосредственно за оператором, внутри которого он находится
CONTINUE:
используется только внутри тела любого цикла. Его действие – пропуск всех операторов, оставшихся до конца тела цикла, и передача управления на начало следующего
RETURN:
завершает выполнение функции и передает управление в точку ее вызова
return [выражение];
если тип void, return должен отсутствовать