- •Конспект лекций по дисциплине «алгоритмизация и программирование»
- •Лекция № 1. Основные понятия
- •Использование ключевого слова using
- •2: Int main()
- •4: Using std::cout; // Вместо этих двух строк можно записать
- •5: Using std::endl; /* одну: using namespace std;*/
- •20: Return 0;
- •Комментарии
- •Функции
- •Переменные
- •Лекция № 3. Операторы
- •Математические операторы
- •Математические функции
- •Логические операторы
- •Операторы отношения
- •Операторы переходов по условию
- •Лекция № 4. Циклы
- •Оператор goto
- •Оператор цикла while
- •Операторы break и continue
- •Оператор цикла do..While
- •Оператор цикла for
- •Int main ()
- •Лекция № 5. Массивы
- •Одномерные массивы
- •Int main()
- •Многомерные массивы
- •Массивы символов (строки)
- •Int main()
- •Лекция № 6. Некоторые простые алгоритмы
- •Поиск максимального (или минимального) числа из выборки чисел
- •Int main()
- •Пузырьковая сортировка (bubble sort)
- •Void exch(double &a, double &b)
- •Лекция № 7. Численное решение уравнений
- •Теоретические основы
- •Метод простого перебора
- •Int RootSearch (double p[], int n, double a, double b, double dx);
- •Int main ()
- •Int RootSearch (double p[], int n, double a, double b, double dx)
- •Метод половинного деления
- •Метод Ньютона-Рафсона
- •Лекция № 8. Основы объектно-ориентированного программирования
- •Введение
- •Void Meow();
- •Закрытые и открытые члены класса
- •Void Meow();
- •Int main()
- •Void Meow();
- •Лекция № 9. Конструкторы и деструкторы
- •Определение
- •Int Weight;
- •Файлы заголовков
- •Встраиваемые функции
- •Лекция № 10. Классы, содержащие другие классы как данные-члены
- •Сложные классы
- •Структуры
Лекция № 3. Операторы
-
Математические операторы
В языке С++ операторы управляют последовательностью выполнения выражений, возвращают результаты вычислений или ничего не делают (пустые операторы). Операторы последовательного действия выполняют определенные действия над операндами – одно за другим, как показано на схеме рис. 3.1.
Рис. 3.1. Обозначение операторов последовательного действия на блок-схеме алгоритма программы
Все выражения языка С++ оканчиваются точкой с запятой. Пустые операторы представляют собой просто точку с запятой. Самый простой пример выражения – это операция присвоения значения:
x=a+b;
Здесь a и b – операнды, а x – результат операции. В отличие от алгебры, это выражение не означает, что x равняется a+b. Данное выражение следует понимать так: присвоим результат суммирования значений переменных a и b переменной x. Несмотря на то, что в этом выражении одновременно выполняются два действия (вычисление суммы и присвоение значения), после него устанавливается только один символ точки с запятой.
Оператор присвоения (=) присваивает результаты операций, выполняемых над операндами, расположенными справа от знака равенства, операнду, находящемуся слева от него.
Арифметические операторы. Существуют пять арифметических операторов: сложения (+), вычитания (-), умножения (*), целочисленного деления (/) и деления по модулю (%).
Вычитание беззнаковых чисел может преподнести сюрприз, если полученная разность окажется отрицательным числом.
Целочисленное деление несколько отличается от обычного. В случае целочисленного деления числа 21 на число 4 (21/4) в ответе получается 5. Чтобы получить остаток, число 21 необходимо разделить по модулю на 4 (21%4), в результате получим остаток 1.
Для получения дробного результата нужно использовать вещественные числа. Например, выражение 21.0/4.0 даст дробный ответ 5.25. Если делимое и делитель имеют вещественный тип, то результат также будет иметь вещественный тип. Но если результат присваивается целочисленной переменной, то значение будет усечено.
Очень часто в программах к переменным добавляется (или вычитается) единица. В языке С++ увеличение значения на единицу называется инкрементом, а уменьшение – декрементом. Для этих действий предусмотрены специальные операторы.
Оператор инкремента (++) увеличивает значение переменной на единицу, а оператор декремента (--) уменьшает его на единицу. Так, если переменную Counter необходимо увеличить на единицу, то можно использовать следующее выражение:
Counter++; // Увеличить значение Counter на единицу
Этот оператор эквивалентен подробному:
Counter= Counter+1;
Можно было бы подумать, что язык С++ получил свое имя после применения оператора приращения к имени языка его предшественника С. Так и есть: С++ является инкрементным приращением языка С.
Как оператор инкремента (++), так и оператор декремента (--) существуют в двух вариантах: префиксном и постфиксном. Префиксный вариант записывается перед именем переменной (++myAge), а постфиксный – после него (myAge++). В простом выражении вариант использования не имеет большого значения, но в сложном, при выполнении приращения одной переменной с последующим присвоением результата другой переменной, это весьма существенно.
Префиксный оператор вычисляется до присвоения, а постфиксный – после. Рассмотрим следующий пример. Предположим, что целочисленная переменная x имеет значение 5. Выражение int a = ++x; сообщает компилятору, что переменную x необходимо увеличить на единицу (сделав равной 6), а затем присвоить это значение переменной а. Следовательно, значение переменной а теперь равно 6 и значение переменной x тоже равно 6.
Если затем написать int b = x++, то компилятор получит команду сначала присвоить переменной b текущее значение переменной x (равное 6), а затем увеличить переменную x на единицу. В этом случае значение переменной b будет равно 6, а переменной x – 7.