- •2. Структура и основные элементы программы
- •3.Общее понятие типов данных
- •4. Переменные и константы
- •5.Основные типы данных
- •6. Спецификаторы типов данных
- •7. Определение переменных и констант в программе
- •8. Инициализация переменных различных типов
- •9.Целочисленные типы данных
- •10. Вещественные типы данных
- •11. Особенности представления вещественных типов данных
- •12.Логический тип данных
- •13. Символьный тип данных
- •14. Управляющие последовательности
- •15. Операции и выражения
- •16. Операция присваивания, составные операции присваивания
- •17. Понятие l-значения
- •18. Преобразование типов данных
- •19. Арифметические операции
- •20. Операции инкремента и декремента, их разновидности
- •21. Операции отношения
- •22. Логические операции
- •23. Побитовые операции сдвига
- •24. Побитовые логические операции
- •25. Примеры применения побитовых операций
- •26. Условная операция и ее использование
- •27. Определение объема памяти, необходимого для размещения объектов
- •28. Понятие приоритета операций и его влияние на результаты вычислений
- •31.Флаги форматирования потоков ввода-вывода
- •32. Форматирование ввода-вывода с помощью манипуляторов
- •33.Форматирование ввода-вывода с помощью функций потоков ввода-вывода
- •34. Управление шириной поля вывода и выравниванием данных при выводе
- •35. Управление форматом вывода вещественных значений
- •36. Основные понятия структурного программирования
- •37. Базовый набор управляющих структур
- •39.Условная инструкция (if)
- •40. Инструкция множественного выбора (switch)
- •42. Цикл с постусловием (do while)
- •43. Итерационный цикл (for)
- •46. Инструкция перехода goto
- •47. Понятие рекуррентных вычислений, примеры
- •48. Понятие инварианта цикла
- •49. Понятие и определение массива
- •52. Ввод элементов массивов с клавиатуры
- •53. Декларативная и программная инициализация массивов
- •54. Копирование массивов
- •55. Нахождение минимальных и максимальных значений в массивах
- •56. Сдвиг элементов массивов
- •57. Перестановка элементов в массивах
- •58. Поиск данных в массивах
- •59. Сортировка данных в массивах
- •60. Вычисление сумм и произведений элементов массивов
- •61. Представление текстовых строк в виде массива символов
- •62. Ввод-вывод символьных строк
- •63. Определение фактической длины строки
- •64. Копирование символьных строк
- •65. Основные функции обработки строк библиотеки cstring
- •66. Массивы текстовых строк (двумерные массивы символов)
- •67. Указатели Понятие указателя
- •Работа с указателями
- •68. Арифметика указателей
- •69. Индексирование указателей
- •70. Ссылки
- •71. Определение функции
- •72. Инструкция return
- •73. Завершение работы функции
- •74. Механизмы передачи данных через параметры функций
- •75. Передача данных по значению
- •76. Передача данных через указатели
- •77. Передача данных по ссылке
- •78. Параметры по умолчанию
- •79. Функции с переменным числом параметров
- •80. Inline функции
- •81. Перегрузка функций
- •82. Рекурсия
- •83. Прототипы функций
26. Условная операция и ее использование
Единственная в C++ тернарная операция. Формат записи:
< Условие > ? < Выражение 1 > : < Выражение 2 >
| | |
Операнд 1 Операнд 2 Операнд 3
"Условие" - любое выражение, результатом которого является число или логическое значение. Значение "Условия" трактуется как логическое значение (0 - false; любое не равное 0 значение - true). Если значение первого операнда true (не равное 0), то значение этого условного выражения будет равно значению второго операнда (Выражение 1). Если же значение первого операнда false (0), то значение этого условного выражения будет равно значению третьего операнда (Выражение 2).
Например:
// Переменной max присваивается наибольшее из a и b значение
int max = a > b ? a : b;
Условные выражения можно вкладывать друг в друга. Например:
// Переменной max присваивается наибольшее из a, b и c значение
int max = a > b ? (a > c ? a : c) : (b > c ? b : c);
Часто условное выражение используется для вывода на экран одного из значений, в зависимости от некоторого условия. Например:
cout << (a > b ? a : b) << endl; // Выводится наибольшее из a и b
27. Определение объема памяти, необходимого для размещения объектов
Операция sizeof предназначена для определения объема памяти в байтах, требующегося для размещения некоторого объекта или типа данных. Имеет две формы:
sizeof < Выражение >
или
sizeof (< Тип данных >)
Например:
long a = 0;
double d;
cout << sizeof (double) << endl; // Выведено 8
cout << sizeof (5 / 3) << endl; // Выведено 4
cout << sizeof a << endl; // Выведено 4
cout << sizeof (a + 3.14f) << endl; // Выведено 4
cout << sizeof (d = a + 3.14f) << endl; // Выведено 8
28. Понятие приоритета операций и его влияние на результаты вычислений
Результат вычисления выражений зависит от приоритета операций и от порядка выполнения операций с одинаковым приоритетом.
Для правильной записи выражений очень важно знать, в каком порядке выполняются операции внутри выражения. Например: 5 + 4 * 3 / 2 + 3
Если выполнить операции слева направо, то результат будет равен 16:
5 + 4 = 9
9 * 3 = 27
27 / 2 = 13
13 + 3 = 16
Но, поскольку, операции умножения и деления имеют одинаковый приоритет, и он выше, чем у операции сложения, на самом деле результат будет равен 14:
4 * 3 = 12
12 / 6 = 6
5 + 6 = 11
11 + 3 = 14
В арифметических и логических выражениях операции с одинаковым приоритетом выполняются слева направо. А вот выражения с операторами присваивания выполняются справа налево.
В следующей таблице приведен перечень рассмотренных выше операций в порядке уменьшения приоритетов. Операции, имеющий одинаковый приоритет, сгруппированы по секциям.
Операция |
Действие |
++ |
Постфиксный оператор инкремента |
-- |
Постфиксный оператор декремента |
++ |
Префиксный оператор инкремента |
-- |
Префиксный оператор декремента |
! |
Логическое «НЕ» |
- |
Унарный минус |
+ |
Унарный плюс |
Тип |
Явное преобразование типа |
Sizeof |
Получение размерности операнда в байтах |
* |
Умножение |
/ |
Деление |
% |
Остаток (деление по модулю) |
+ |
Сложение |
- |
Вычитание |
<< |
Сдвиг влево |
>> |
Сдвиг вправо |
< |
Меньше |
<= |
Меньше или равно |
> |
Больше |
>= |
Больше или равно |
== |
Равно |
!= |
Не равно |
& |
Побитовое «И» |
^ |
Побитовое исключающее «ИЛИ» |
| |
Побитовое «ИЛИ» |
&& |
Логическое «И» |
|| |
Логическое «ИЛИ» |
? : |
Условная операция |
=, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^= |
Простое и составные присваивания |
Изменить порядок выполнения операций внутри выражения можно с помощью круглых скобок. В любом случае, когда возникают сомнения в определении приоритета выполнения операций лучше использовать круглые скобки (на первых порах это особенно рекомендуется).
29-30. Вывод и вывод простых типов данных на экран
В языке C++ нет встроенных средств ввода/вывода — он осуществляется с помощью функций и объектов, содержащихся в стандартных библиотеках.
В C++ можно использовать два различных способа реализации ввода-вывода.
Первый способ (унаследованный от языка C) основан на использовании ряда библиотечных функций, наиболее употребимыми из которых являются функции printf и scanf. Они выполняют форматированный ввод и вывод произвольного количества величин в соответствии со строкой формата. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе, и спецификации преобразования, начинающиеся со знака %, которые при вводе и выводе заменяются конкретными величинами. Например:
#include <iostream>
using namespace std;
int main ()
{
setlocale (0, "");
int a;
printf ("Введите целое число:\t");
scanf ("%d", &a);
printf ("Вы ввели значение:\t%d\n\n", a);
system ("Pause");
return 0;
}
Второй способ, характерный для C++, основан на использовании стандартных потоков ввода (cin) и вывода (cout). Та же самая программа в стиле C++ будет выглядеть так:
#include <iostream>
using namespace std;
int main ()
{
setlocale (0, "");
int a;
cout << "Введите целое число:\t";
cin >> a;
cout << "Вы ввели значение:\t" << a << "\n\n";
// cout << "Вы ввели значение:\t" << a << endl << endl;
system ("Pause");
return 0;
}
В одной и той же программе совмещать эти два способа не рекомендуется.
При использовании потоков для вывода данных на экран используется операция <<, которая так и называется: операция вывода или операция вставки (данные "вставляются" в поток вывода).
Ввод данных с клавиатуры осуществляется с помощью операции ввода >> (операция извлечения данных из потока ввода).
Обе эти операции "знают" как осуществлять ввод и вывод стандартных простых типов данных. Более того эти операции можно "научить", как осуществлять ввод/вывод нестандартных пользовательских типов данных (перегрузка операций, которая будет рассмотрена позднее).