- •Этапы разработки программы и устранение ошибок
- •Показать на примере (на своей машине) процесс подготовки к написанию программы, первая Hello!
- •Объяснить программу, все детали.
- •Вывод данных с помощью cout, использование Escape-последовательностей
- •Типы данных (числовые, символьные, логические)
- •Переменные и константы (объявление и использование), правила составления имен
- •Литералы
- •Ввод данных с помощью cin
- •Виды операторов
- •Арифметические операции с числами. Инкремент. Декремент. Сокращенные арифметические формы
- •Преобразование типов
- •Логические операции (сравнения, равенства, объединения, отрицательная инверсия)
- •Операторы ветвления. Конструкция логического выбора if, тернарный оператор ?
- •Структура множественного выбора switch
Арифметические операции с числами. Инкремент. Декремент. Сокращенные арифметические формы
В С/C++ предоставляются операции для выполнения пяти базовых арифметических действий: сложения, вычитания, умножения, деления и получения остатка от деления. Каждая из этих операций использует два значения (называемые операндами) для вычисления конечного результата. Операция и ее операнды вместе образуют выражение. Например, рассмотрим следующий оператор:
int wheels = 4 + 2;
Значения 4 и 2 — это операнды, знак + обозначает операцию сложения, а 4 + 2 — это выражение, результатом которого является 6.
• Операция + выполняет сложение операндов. Например, 4 + 20 дает 24.
• Операция - вычитает второй операнд из первого. Например, 12-3 дает 9.
• Операция * умножает операнды. Например, 28*4 дает 112.
• Операция / выполняет деление первого операнда на второй.
Например, 1000 / 5 дает 200. Если оба операнда являются целыми числами, то результат будет равен целой доли частного. Например, 17/3 дает 5, с отброшенной дробной частью.
• Операция % находит остаток от деления первого операнда на второй. Например, 19 % 6 равно 1, поскольку 6 входит в 19 три раза, с остатком 1. Оба операнда при этом должны быть целочисленными; использование операции % над числами в формате с плавающей точкой приведет к ошибке времени компиляции.
Другие примеры: 11%2=1; 5%37=5
Задача: ввести двузначное целое число – определить сумму его цифр.
#include <iostream>
using namespace std;
void main()
{
setlocale (LC_CTYPE, "russian");
int a;
cout << "Введите двузначное целое число: ";
cin >> a;
cout<< "Сумма цифр числа = " << a/10+a%10 << endl;
cin.get();
}
Порядок выполнения операций: приоритеты операций и ассоциативность
Арифметические операции выполняются в соответствии с алгебраическими правилами, согласно которым умножение, деление и нахождение остатка от деления выполняются раньше операций сложения и вычитания.
Для операций умножения и деления характерна ассоциативность слева направо.
Различные результаты, получаемые после деления
Если оба операнда являются целочисленными, то C++ выполнит целочисленное деление. Это означает, что любая дробная часть результата будет отброшена, приводя результат к целому числу. Если один или оба операнда являются значениями с плавающей точкой, то дробная часть остается, поэтому результатом будет число с плавающей точкой.
Операции инкремента и декремента
Операция инкремента (+ + ), которая получила отражение в самом названии C++, а также операция декремента (--). Эти операции выполняют два чрезвычайно часто встречающихся действия в циклах: увеличивают и уменьшают на единицу значение счетчика цикла.
Каждая из них имеет два варианта. Префиксная версия операции указывается перед операндом, как в ++х. Постфиксная версия следует после операнда, как в х++. Эти две версии имеют один и тот же эффект для операнда, но отличаются в контексте применения.
Все похоже на получение оплаты за работу авансом или после завершения работы: оба метода имеют один и тот же конечный результат для вашего бумажника, но отличаются тем, в какой момент деньги в него добавляются.
Грубо говоря, нотация а++ означает "использовать текущее значение а при вычислении выражения, затем увеличить а на единицу". Аналогично, нотация ++а означает "сначала увеличить значение а на единицу, затем использовать новое значение при вычислении выражения".
Plus_on.cpp
#include <iostream>
using namespace std;
void main ()
{
setlocale (LC_CTYPE, "russian");
int a;
cout << "Введите число: ";
cin >> a; //ввели 1
cin.get();
cout << a++<< endl; //выводится 1 после ; 2
cout << a++<< endl; //выводится новое значение 2 после ; будет 3
cout << ++a << endl; //выводится новое значение 3+1=4 после ; тоже будет 4
cout << a << endl;
cin.get();
cin.get();
}
Plus_on_2.cpp
#include <iostream>
using namespace std;
void main ()
{
setlocale (LC_CTYPE, "russian");
int a;
cout << "Введите число: ";
cin >> a; //ввели 1
cin.get();
//cout << a++ << endl; //вывод 1 после ; будет увеличение на 1 и будет 2
//cout << ++a << endl; //вывод 2+1=3 после ; тоже будет 3
//cout << a << endl;
cout << --a << endl; //вывод 0 после ; тоже 0
cout << a++ << endl; //вывод 0 после ; 1
cout << --a << endl; //вывод 0 после ; тоже 0
cout << a << endl;
cin.get();
cin.get();
}
а++ - сначала операция, ++ изменяет после ;
++а - сначала прибавление потом операция
Пример:
int a=6, b=3, c=0;
c=(++b)++ + a++; //4+6=10
cout << "c= " << c << endl; //10
cout << "b= " << b << endl; //4+1=5
cout << "a= " << a << endl; //6+1=7
Пример:
int a=3, b=7, c=11, d=0;
d = ((a++)++ + (--c + (++b)++)); //3+(10+8)=21
cout << "d= " << d << endl; //21
cout << "a= " << a << endl; //3+1+1=5
cout << "c= " << c << endl; //10
cout << "b= " << b << endl; //9
Операции инкремента и декремента — симпатичные и компактные, но не стоит поддаваться соблазну и применять их к одному и тому же значению более одного раза в одном и том же операторе. Проблема в том, что при этом правила "использовать и изменить" и "изменить и использовать" становятся неоднозначными. То есть, следующий оператор в различных системах может дать совершенно разные результаты:
х = 2 * х++ * (3 - ++х) ; //не поступайте так
В C++ поведение операторов подобного рода не определено
Сокращенные арифметические формы
Используется следующее выражение для обновления счетчика цикла:
і = і + by
В C++ предусмотрена комбинированная операция сложения с присваиванием, которая .позволяет получить тот же результат, но более кратко:
і += by
+= Присваивает l + r операнду l
-= Присваивает l - r операнду l
*= Присваивает l * r операнду l
/= Присваивает l / r операнду l
%= Присваивает l % r операнду l
Где L — левый операнд, R- правый операнд
