Главная страница

Не зависят от конкретного компьютера Язык Си


Скачать 5.8 Mb.
НазваниеНе зависят от конкретного компьютера Язык Си
Дата24.10.2022
Размер5.8 Mb.
Формат файлаppt
Имя файлаINFORMATIKA_lektsii_IB-1.ppt
ТипПрограмма
#751529
страница4 из 16
1   2   3   4   5   6   7   8   9   ...   16

Спецификаторы типов данных


shortспецификатор укорачивает тип данных, к которому применяется, путем уменьшения размера занимаемой памяти
long – спецификатор удлиняет тип данных, к которому применяется, путем увеличения размера занимаемой памяти
unsigned (без знака) – спецификатор увеличивает диапазон положительных значений в два раза, при этом диапазон отрицательных значений в таком типе данных храниться не может
Обратите внимание. Имя типа int можно опускать и писать только спецификатор. Например, short компилятор будет интерпретировать как short int


32

Специальные типы


bool – логический (true/false). Используется для хранения результатов логических выражений. Так как диапазон допустимых значений от 0 до 255, то для сопоставления данного диапазона с логическими константами, в С++ константе true (истина) эквивалентны числа от 1 до 255, а константе false (ложь) – 0
void – пустой. Используется для обозначения функций без значений и нетипизированных указателей


33

Типы данных


Обратите внимание, что предельные размеры для типов разработчики компиляторов могут выбирать самостоятельно, исходя из аппаратных возможностей компьютера. Даже в рамках одной платформы разные компиляторы могут по разному устанавливать размер одного и того же типа данных. Стандарт устанавливает лишь минимальные значения.
Для получения размера переменной определенного типа используется оператор sizeof(), который возвращает размер памяти в байтах, которую занимает переменная


34

Константы


Литеральные константы, т.е. значения, которые встречаются в тексте программы, бывают следующих видов:
Целые:
Вещественные
Символьные
Строковые


35

Константы


36


Константа


Формат


Примеры


Целая десятичная


Последовательность десятичных чисел, начинающаяся не с нуля, кроме числа 0


7, 0, 234567


Целая восьмеричная


Нуль, за которым следуют восьмеричные цифры


07, 034, 05612


Целая шестнадцатеричная


0x или 0X, за которыми следуют шестнадцатеричные цифры


0xF, 0x12A, 0XFF00


Вещественная десятичная


Целая часть, символ «.», дробная часть. Одна из частей может отсутствовать


123.456, .456, 123.


Вещественная экспоненциальная


Мантисса, знак экспоненты («Е» или «е»), порядок. Пробелы внутри не допускаются


1.2е-4, .34Е5, 55е10

Константы


37


Константа


Формат


Примеры


Символьная


Заключенный в апострофы символ, управляющий символ или код символа, перед которым стоит «\»


'A', '\n', '\072'


Строковая


Последовательность символов, заключенная в кавычки. Длинную константу можно размещать на нескольких строках, если в конце строк поставить «\». В конце строки компилятор добавляет нулевой символ


"Пример", "Строка1\nСтрока2",
"Начало строки \
Продолжение строки"


Пустая строка состоит из нулевого символа, пустая символьная константа – ошибка.





При работе с консольными приложениями существуют два основных способа ввода-вывода данных.
Первый способ – это использование функций printf() и scanf(), унаследованных из языка С.
Второй – использование объектов cin и cout языка С++.
В одной программе не рекомендуют смешивать эти способы.


Ввод/вывод данных





Чтобы объекты cin и cout были доступны, нужно подключить к программе заголовочный файл iostream.
Для вывода в окно консоли используется объект cout.
Ему с помощью операции << (операции помещения в поток) передается то, что мы хотим вывести на экран. Это могут быть переменные любых стандартных типов, литералы, выражения. Например, текстовый литерал – это последовательность любых символов, заключенная в кавычки.


Ввод/вывод данных. Объекты cin и cout





Для вывода нескольких элементов используется цепочка операций <<.
В зависимости от типа данные из внутреннего представления преобразуются в текстовую строку, которая и выводится на экран.
Ввод данных осуществляется с помощью объекта cin и операции >> (операции извлечения из потока).
Для ввода несколько элементов используется цепочка операций >>.


Ввод/вывод данных. Объекты cin и cout





При вводе последовательность символов, набранных на клавиатуре, после необходимых преобразований присваивается переменной, указанной справа от знака >>.
Величины при вводе должны разделяться пробелами, знаками табуляции или символами перевода строки.


Ввод/вывод данных. Объекты cin и cout





cin >> a >> b;


cin >> a;


Ввод данных с клавиатуры


cout <<"Введите первое число: " << endl;
cin >> a;
cout << "Введите второе число: " << endl;
cin >> b;


Фрагмент программы


Ввод переменной a


Ввод переменных a, b





Вывод значения переменной «a»


cout << a;


Вывод значения переменной «a» и переход на новую строку


cout << a << endl;


Вывод текста


cout << "Привет!";


Вывод текста и значения переменной «с»


cout << "Ответ " << c;


Вывод данных на монитор


Важно! Число пробелов между словом Ответ и последними кавычками будет равно числу пробелов между словом Ответ и значением переменной с на экране.





Вещественные числа могут быть представлены как в форме с фиксированной точкой, так и с порядком. Например, на клавиатуре мы можем набрать как 0.0123, так и 1.23e-2. Это одно и то же число.
Если при вводе символов допущена ошибка, ее можно исправить, пока не была нажата клавиша Enter. После нажатия Enter строка символов попадает в буфер ввода, откуда и берет данные операция >>. Если очередной символ оказывается недопустимым, то операция ввода прекращается.


Ввод/вывод данных. Объекты cin и cout





УПРАВЛЯЮЩИЕ СИМВОЛЫ ДЛЯ ИСПОЛЬЗОВАНИЯ С ОБЪЕКТОМ COUT


СИМВОЛ


НАЗНАЧЕНИЕ





Сигнал бипера компьютера


\n


Переход на новую строку


\r


Возврат каретки в начало строки


\t


Горизонтальная табуляция


\v


Вертикальная табуляция


\\


Обратный слеш


\?


Знак вопроса


\'


Апостроф


\"


Двойные кавычки


\0


Нулевой символ


\000


Восьмеричное значение, например \007


\xhhhh


Шестнадцатеричное значение, например \xffff





Управляющие символы указываются в двойных кавычках.
Если необходимо вывести какое-то сообщение, то управляющие символы можно записывать сразу в сообщении.


Управляющие символы





Пример:
void Prim1() {
cout << "\t\tуправляющие символы C++"; //две табуляции и вывод сообщения
cout << "\rwxDev-C++\n"; //возврат каретки на начало строки, вывод сообщения, переход на новую строку
cout << "\'форматированный\' вывод с \"управляющими символами\""; //вывод сообщения в одинарных и двойных кавычках
cout << "\a\a\a\a\a" < return 0;
}


Управляющие символы





Манипуляторы - вспомогательные функции управляющие форматированием потоков ввода/вывода.
Используются для добавления данных в поток цепочкой. Устанавливают параметры текущего оператора ввода/вывода
При использовании манипуляторов с параметрами необходимо подключить к программе заголовочный файл iomanip.
#include


Ввод/вывод данных с использованием
манипуляторов





Пример:
#include
#include
using namespace std;
int main() {
setlocale(LC_ALL,"Russian");
int a, b, c;
cin >> a >> b >> c;
cout << "Первое число " << a
<< "\nВторое число " << b
<< "\nТретье число " << c
<< "\na + b + c = " << a + b + c
<< "\na * b * c = " << a * b * c
<< endl;
return 0;
}


Ввод/вывод данных





endl – включает в поток символ новой строки и выгружает буфер, используется для перехода на новую строку;
right – выравнивание по правой границе (по умолчанию). Сначала необходимо установить ширину поля (ширина поля должна быть большей чем, длина выводимой строки);
left – выравнивание по левой границе. Сначала необходимо установить ширину поля (ширина поля должна быть большей чем, длина выводимой строки);
fixed – вывод вещественного числа в фиксированной форме (по умолчанию);
scientific – вывод вещественного числа в экспоненциальной форме;


Манипуляторы





showpos – вывод знака + для положительного числа;
noshowpos – вывод положительного числа без знака + (по умолчанию);
setw(n) – устанавливает максимальную ширину поля вывода, равную n позициям (выравнивание по умолчанию по правой границе). Действует только для следующего за ним объекта;
setprecision(с) – устанавливает максимальное количество цифр в дробной части для вещественных чисел в форме с фиксированной точкой или общее количество значащих цифр;


Манипуляторы





setfill(s) – устанавливает символ заполнитель (s). Если ширина поля больше, чем выводимая величина, то свободные места поля заполняются символом s (по умолчанию – пробел);
boolalpha – вывод логических величин в текстовом виде;
noboolalpha – вывод логических величин в числовом виде;
setiosflags(ios::flag) – устанавливает флаги состояния потока;
resetiosflags(ios::flag) – сбрасывает флаги состояния потока.


Манипуляторы





Программа выводит на экран текст «Пример программы на С++», вводит значение переменной A и затем выводит его на экран.
#include //1
#include //2
using namespace std; //3
int main() { //4
setlocale(LC_ALL,"Russian"); //5
cout << "Пример программы на С++" << endl; //6
int A; //7
cout << "A: "; //8
cin >> A; //9
cout << "A = " << A << endl; //10
return 0; //11
} //12


Пример программы





В первых двух строках написаны директивы препроцессору, с помощью которых к тексту программы подключаются заголовочные файлы iostream и clocale.
Строка, содержащая директиву препроцессора, всегда начинается с символа «#» и не имеет точки с запятой в конце.
Заголовочные файлы содержат описания элементов стандартной библиотеки, необходимые для выполнения определенных действий.


Пример программы





Заголовочный файл iostream обеспечивает работу со стандартными объектами cin и cout, которые используются для ввода и вывода на экран, и операциями вывода на экран << и ввода с клавиатуры >>.
Строка 3 объявляет, что используется пространство имен std. Пространства имен в языке позволяют избежать конфликта имен, определенных пользователем, со стандартными именами. Открытие пространства имен дает возможность программе использовать cin, cout и endl без указания полных имен (std::cin, std::cout и std::endl).


Пример программы





Строки 2 и 5 программы обеспечивают корректный вывод на экран русских букв.
Если в консольное окно русский текст не будет выводиться, то их можно не писать.
Для корректной работы функции setlocale необходимо, чтобы в операционной системе Windows в настройках языков и стандартов по умолчанию была установлена кириллица.
В строках 6, 8, 10 осуществляется вывод на экран текста или значения переменной.


Пример программы





В строке 7 объявляется переменная A.
В строке 9 вводится значение этой переменной.
После того, как текст «A: » появится на экране, нужно ввести любое целое число и нажать клавишу Enter.
Строку 11 можно опустить.
Результат выполнения программы представлен на рисунке:


Пример программы





Решим ту же самую задачу с применением функций.
Функция Prim2 выполняет все необходимые действия. Она не имеет параметров и не возвращает значения.
Функция Prim2 вызывается в теле функции main.
Функция Prim2 в тексте программы должна быть расположена перед функцией main.


Пример программы с применением функций





#include
#include
using namespace std;
void Prim2() {
cout << "Пример программы на С++" << endl;
int A;
cout << "A: ";
cin >> A;
cout << "A = " << A << endl;
}
int main() {
setlocale(LC_ALL,"Russian");
Prim2(); //Вызов функции. Скобки нужны, хотя параметров нет
}


Пример программы с применением функций





#include
#include
using namespace std;
int R1=10;
int R2=2000;
int main()
{
cout << setw(5) << R1 << setw(10) << R2 << endl;
return 0;
}


Если необходимо зарезервировать под выводимое число определенное количество позиций, то нужно применить библиотеку #include и оператор setw(n), где n – кол-во зарезервированных под число позиций, например,


Вывод с заданной шириной поля





Пример:
#include
#include
using namespace std;
int main() {
    int a = 10;
     float b = 12.3456789;
     cout << a << endl;
     cout << setw(12) << a << endl;
     cout << scientific << b << endl;
     cout << "b = " << fixed << b << endl;
     cout << setw(12) << setprecision(2) << b << endl;
     cout << setw(12) << setfill('.') << b << endl;
     return 0;
}


Вывод с использованием манипуляторов





Флаги позволяют установить параметры ввода-вывода, которые будут действовать во всех последующих операторах ввода/вывода до тех пор, пока не будут отменены.
Флаги форматирования объявлены в классе ios
Установка флага форматирования вывода:
cout.setf(ios::flag)
Снятие флага форматирования вывода:
cout.unsetf(ios::flag)
flag – имя конкретного флага


Флаги форматирования





Если при вводе/выводе необходимо установить или сбросить несколько флагов, то они объединяются с помощью поразрядной логической операции «ИЛИ» (|):
cout.setf(ios::flag1 | ios::flag2 | ios::flag3)
cout.unsetf(ios::flag1 | ios::flag2 | ios::flag3)
flag1flag2flag3 – имена устанавливаемых / сбрасываемых флагов вывода


Флаги форматирования


В программе можно одновременно использовать и манипуляторы, и флаги форматирования и методы объекта ввода/вывода





Имена флагов, в большинстве своем, совпадают с именами манипуляторов.
Наиболее используемые флаги форматирования:
ios::left – выравнивание по левому краю;
ios::right – выравнивание по правому краю;
ios::fixed – вывод вещественного числа в форме с фиксированной точкой (по умолчанию);
ios::scientific – вывод вещественного числа в экспоненциальной форме (мантиссы с порядком);
ios::showpoint – при выводе вещественных чисел печатает десятичную точку и дробную часть.


Флаги форматирования





#include
#include
using namespace std;
void Prim3() {
int A=25; cout << "A = " << A << endl;
float B=12.3456789; cout << "B = " << B << endl;
cout << "B = " << setw(10) << setprecision(3) << B << endl;
cout << "B = " << setiosflags(ios::fixed | ios::showpoint)
<< setw(10) << B << endl;
}
int main() {
Prim3();
}


Пример вывода чисел с использованием
манипуляторов и флагов





Результат работы программы представлен на рисунке:


Пример вывода чисел с использованием
манипуляторов





Вместо манипуляторов для установки параметров форматирования можно также использовать методы объекта cout:
setf(long) – устанавливает заданные флаги;
unsetf(long) – сбрасывает заданные флаги;
width(int) – устанавливает ширину поля вывода для следующего значения;
precision(int) – устанавливает значение точности представления при выводе вещественных чисел.
В данном случае файл iomanip не нужен.


Методы объекта cout





cout.precision(5);
cout << x << endl;


cout.precision(2);
cout << x << endl;


Значащих цифр – 5:
x = 1238.5


Значащих цифр – 2:
x= 1.2e+003
(или 1,2·103, или 1200)


Форматы вывода вещественных чисел


cout.precision(7);
cout << x << endl;


float x = 1238.4767;


Значащих цифр – 7:
x = 1238.477





При записи результатов в виде x= 1.2e+003, число 1.2 называется мантиссой, 003 – показатель степени при основании 10. В данном примере при переходе к записи числа в обычной форме точка должна быть передвинута на три знака вправо, т. е. х = 1200. Если показатель степени отрицательный (например, -003), точка передвигается на три знака влево.
В некоторых вариантах компилятора для того, чтобы задержать результаты на экране, используется оператор _getch() (начинается с символа подчеркивания). При этом в начале программы должна быть подключена библиотека . В некоторых вариантах компилятора в этом операторе нет необходимости. Достаточно поставить галочку около опции: Сервис > Параметры среды > Общие > Pause console programs after return





#include
using namespace std;
void Prim4() {
int A=25; cout << "A = " << A << endl;
float B=12.3456789; cout << "B = " << B << endl;
cout.precision(3);
cout << "B = "; cout.width(10); cout << B << endl;
cout.setf(ios::fixed | ios::showpoint);
cout << "B = "; cout.width(10); cout << B << endl;
}
int main() {
Prim4();
}


Пример вывода чисел с использованием
методов объекта cout





В С++ при построении выражений используются следующие типы операций:
Арифметические (*, /, +, -, %);
Отношений (<, <=, >, >=, ==, !=);
Логические (&&, ||, !);
Поразрядные (&, |, , ^, <<, >>);
Инкремента и декремента (++, --);
Присваивания (=, *=, /=, +=, -=, %=, <<=, >>=, &=, ^=, !=).
В языке имеются и другие операции, но они будут рассмотрены позже.


Операции. Использование функций





Арифметические операции *(умножения), +(сложения), -(вычитания), -(изменения знака или одноместный минус), %(получения остатка от целочисленного деления) выполняются стандартным образом.
Операция /(деления) выполняется по-разному в зависимости от типа операндов.
Если оба операнда целые числа, то / – операция целочисленного деления, результат будет целым. Если хотя бы один операнд имеет вещественный тип – то выполняется обычное деление, а в результате получится вещественное число.


Арифметические операции





Важно. В С++ деление целого числа на целое дает в результате целое число, т.е. 1/2 = 0. Чтобы при делении получить 0.5 необходимо, чтобы хотя одно из чисел было вещественным числом.
Например, после выполнения следующих операторов
int A=1; float B, C; B = A/2; C = A/2.;
значение переменной B будет равно 0, а значение C равно 0.5.
Обратите внимание, что операции возведения в степень в С++ нет. Вместо нее используется функция pow.


Арифметические операции





Операция % означает остаток от целочисленного деления. Например, 10 % 3 = 1
В C++ доступны две константы: число «пи» и число «е» (основание натурального логарифма). Их можно получить с помощью констант M_PI и M_E, например,
double a, b;
a = M_PI;
b = M_E;
cout<

Арифметические операции





Для использования сложных математических функций нужно подключить библиотеку, в которой содержатся эти функции:
#include (или )


Библиотека


Математическая запись


Запись на C++


Назначение


cos x


cos(x)


Косинус x радиан


sin x


sin(x)


Синус x радиан


tg x


tan(x)


Тангенс x радиан


Arccos x


acos(x)


Арккосинус числа x


Arcsin x


asin(x)


Арксинус числа x


arctg x


atan(x)


Арктангенс числа x


ex


exp(x)


Значение e в степени x


xn


pow(x,n)


Число x в степени n


|x|


fabs(x)


Модуль числа x





sqrt(x)


Квадратный корень из x


ln x


log(x)


Натуральный логарифм x


log10 x


log10(x)


Десятичный логарифм x





Запись математических функций в C++





    int a, b;
    a ++; // a = a + 1;
    a --; // a = a – 1;
    a += b; // a = a + b;
    a -= b; // a = a - b;
    a *= b; // a = a * b;
    a /= b; // a = a / b;
    a %= b; // a = a % b;


Допустимая сокращенная запись простых математических операций





Если операнды двуместной операции (например, сложения) имеют разный тип, то перед выполнением операции они преобразуются к одному общему типу.
При неявном (автоматическом) преобразовании более короткие типы преобразуются в более длинные, чтобы избежать потери данных.
При возможной потере информации (например, значение типа double присваивается переменной типа float) компилятор обычно выдает предупреждение (Warning), но не считает это ошибкой.


Преобразование типов





Явное преобразование типа предполагает, что с помощью операции приведения типа программист может сам указать, к какому типу преобразовать операнд.
Операция приведения типа записывается одним из трех способов:
тип (выражение)
(тип) выражение
static_cast <тип> (выражение)
Два первых способа взяты из языка С и считаются устаревшими.
За последствия преобразований отвечает сам программист, поэтому сообщения о возможной потере данных в этом случае не выдаются.


Преобразование типов





#include
#include
using namespace std;
void Prim2_1() {
int A = 22;
float x;
x=A/5; //целое присваивается float, предупреждение
cout << "x1 = " << x << endl;
x=(float)A/5; //приоритет (float) выше, чем приоритет /
cout << "x2 = " << x << endl;
cout << "sqrt(A): " << sqrt(float (A)) << endl;
}
int main() {
Prim2_1();
}


Преобразование типов. Пример





В примере переменная A имеет тип int, поэтому при выполнении операции деления A/5 получим целый результат.
При присваивании полученного значения переменной x(тип float) выполняется преобразование целого значения в вещественное. Так как диапазоны значений типов int и float разные, может произойти потеря данных, и система выдает соответствующее сообщение.
Во втором случае мы сначала преобразуем A в float, а уже затем выполняем деление, поэтому никаких сообщений нет.


Преобразование типов. Пример





В С++ используются следующие операции отношений:
< меньше;
<= меньше или равно;
> больше;
>= больше или равно;
== равно;
!= не равно.
Значением операций является true или false.
Операнды могут иметь арифметический тип или быть указателями.


Операции отношений





Будьте внимательны при использовании операций «=» и «==».
Пусть, например, значение переменной А равно 2, а значение В равно 5. Результатом операции А=В будет значение 5, которое интерпретируется как true (0 – ложь, не ноль – истина). Результатом А==В будет false.
Также с осторожностью нужно использовать операцию равно для сравнения вещественных чисел. Вместо С==D безопаснее использовать конструкцию abs(С-D)<=eps, где eps – достаточно маленькое число.


Операции отношений





Из отношений и функций можно формировать более сложные выражения, используя логические операции:
&& – логическое «И»;
|| – логическое «ИЛИ»;
! – логическое отрицание.
Операндом логического выражения может быть значение арифметического типа или указатель. Если операнд равен нулю, то в этом случае считается, что он имеет значение false, если не равен – значение true.


Логические операции





Логические операции





Поразрядные операции (операции с битами) применяются только к целочисленным операндам, так как работают с их двоичными представлениями.
Эти операции нельзя применять к переменным типа float и double.


Поразрядные операции





Определены следующие операции:
& поразрядное «И» (результат равен 1 тогда и только тогда, когда оба операнда равны 1);
| поразрядное «ИЛИ» (результат равен 1 тогда, когда хотя бы один из операндов равен 1);
поразрядная инверсия (если операнд равен 0, то результат – 1, и наоборот);
^ поразрядное «исключающее ИЛИ» (результат равен 1 тогда, когда только один из операндов равен 1);
<< сдвиг влево;
>> сдвиг вправо.


Поразрядные операции





Операции сдвига сдвигают двоичное представление первого операнда на количество разрядов, заданное вторым аргументом.
При сдвиге влево освободившиеся разряды обнуляются.
При сдвиге вправо освободившиеся разряды заполняются нулями, если первый операнд имел беззнаковый тип, и знаковым разрядом в противном случае.


Поразрядные операции





1. Проверка на нечетность: (A&1). Это выражение будет равно 1(true) для нечетных чисел и 0(false) – для четных. Такая проверка работает быстрее, чем (A%2==1).
2. Флаги форматирования представляют собой отдельные биты специальной переменной типа long, поэтому для установки флага требуется записать 1 в соответствующий бит, а для сброса флага – удалить эту 1. Константы, которые задаются при установке или сбросе флага содержат 1 в нужном разряде.


Примеры использования поразрядных
операций





Операция инкремента (++) увеличивает значение переменной на единицу, а операция декремента (--) уменьшает значение переменной на единицу.
i++; // увеличиваем переменную i на единицу
i--; // уменьшаем переменную i на единицу


Операции инкремента и декремента





Операции декремента и инкремента можно заменить арифметическими операциями или операциями присваивания.
Оператор Эквивалентные операторы
i++; i = i + 1;
i += 1;
i--; i = i – 1;
i – = 1;
Операции инкремента и декремента позволяют получить более эффективный код.


Операции инкремента и декремента





Основные случаи применения этих операций для операции ++ (для -- аналогично):
Оператор Эквивалентные операторы
1. j = i++; j = i; i++;
2. j = ++i; i++; j = i;


Операции инкремента и декремента


В случае 1 оператор инкремента имеет постфиксную форму записи (операция ++ записывается после имени переменной).
В случае 2 – префиксную форму (операция ++ записывается перед именем переменной).





При префиксном инкременте (для префиксного декремента аналогично) значение переменной сначала увеличивается (уменьшается) на 1, а затем используется в выражении.
Пример:
int A = 4, R;
R = ++A; // A и R равны пяти


Операции инкремента и декремента





При постфиксном инкременте (для префиксного декремента аналогично) значение переменной сначала используется в выражении, а затем увеличивается (уменьшается) на 1.
Пример:
int A = 4, R;
R = A++; // R равна четырем, а A равна пяти


Операции инкремента и декремента





void Prim2_2() {
int A=7, B=5, R;
R = A – B++;
cout << "A=" << A << ", B=" << B << ", R= " << R << endl;
R = A++ + B;
cout << "A=" << A << ", B=" << B << ", R= " << R << endl;
R = A – ++B;
cout << "A=" << A << ", B=" << B << ", R= " << R << endl;
}


Операции инкремента и декремента. Пример





Рассмотрим, как изменяются значения переменных A, B, R.
R = A – B++
Сначала вычисляется значение R при значении B, равном 5:
из значения А, равном 7, вычитается значение В, равное 5. В результате R = 7 – 5 = 2.
Затем значение B увеличивается на 1.
В результате выполнения данного выражения получим следующие значения переменных:
А = 7, В = 6, R = 2.


Операции инкремента и декремента. Пример





R = A++ + B
Сначала вычисляется значение R при значении A, равном 7:
к значению А, равному 7, прибавляется значение В, равное 6. В результате R = 7 + 6 = 13.
Затем значение A увеличивается на 1.
В результате выполнения данного выражения получим следующие значения переменных:
А = 8, В = 6, R = 13.


Операции инкремента и декремента. Пример





R = A – ++B
Сначала значение B увеличивается на 1.
Затем вычисляется значение R при значении B, равном 7:
из значения А, равного 8, вычитается значение В, равное 7. В результате R = 8 – 6 = 1.
В результате выполнения данного выражения получим следующие значения переменных:
А = 8, В = 6, R = 1.


Операции инкремента и декремента. Пример





Результаты работы программы представлен на рисунке:


Операции инкремента и декремента. Пример





В С++ наряду с обычным присваиванием имеются сложные операции присваивания:
*=, /=, +=, -=, %=, <<=, >>=, &=, ^=, !=.
Смысл операций заключается в том, что вместо конструкции
Операнд1 = Операнд1 Операция Операнд2
используется конструкция
Операнд1 Операция = Операнд2


Операции присваивания





В первом случае нужно дважды вычислять адрес переменной Операнд1, а во втором – только один раз. Поэтому использование сложных операций присваивания ускоряет работу программы.
Все операции присваивания могут использоваться в программе как законченные операторы.


Операции присваивания





Присваивания
Условный
Выбора
Циклы
Передачи управления
В конце оператора всегда ставится ;


Операторы





Оператор присваивания


Оператор – это команда языка программирования высокого уровня.
Оператор присваивания служит для изменения значения переменной.
Пример


a = 5;
x = a + 20;
y = (a + x) * (x – a);


5


5


5+20


25


600


30*20





Оператор присваивания


Общая структура:


Арифметическое выражение может включать
    константы (постоянные)
    имена переменных знаки арифметических операций:
    + - * / %
    вызовы функций круглые скобки ( )


умножение


деление


остаток от деления


имя переменной = выражение;


куда записать


что


#include
using namespace std;
double a, y;
int main()
{
setlocale (0, "");
cout << "Введите переменную a: " << endl;
cin >> a;
y=a+a;
cout << "y= " << y << endl;
return 0;
}


Пример





Результат работы программы


Директива #include используется для подключения библиотечных подпрограмм.
Библиотечная подпрограмма отвечает за ввод/вывод данных.
Строка — using namespace std указывает на то, что используется подпространство имен с названием «std».
double a, y – объявление вещественных переменных.
int main() {…} – главная программа. В круглых скобках указывается либо возвращаемое значение, либо ничего не указывается. Далее в фигурных скобках идет тело главной программы. Все, что находится внутри фигурных скобок, будет автоматически выполняться после запуска программы. Количество открывающих и закрывающих скобок должно быть одинаковым.
Оператор setlocale (0, "") позволяет распознавать русский текст в программе. Эквивалентная форма записи этого оператора setlocale (LC_ALL, "Russian").








Оператор cin >> a задает ввод данных в программу с клавиатуры. После оператора cin (Console INput) ставятся двойные угловые кавычки, направленные от оператора cin (данные уходят от пользователя).
Оператор cout << "y= " << y << endl задает вывод данных из программы на экран монитора. После оператора cout (Console OUTput) ставятся две угловые кавычки, направленные к оператору cout (данные приходят к пользователю). Если надо вывести текст (но не значение переменной), то он заключается в верхние кавычки.
Оператор endl (end line) переводит курсор на следующую строку. Вместо endl можно применять "\n".
Команда return 0 (пишется со строчной буквы) сообщает о завершении главной программы
В конце каждого оператора (строки) ставится точка с запятой.

1   2   3   4   5   6   7   8   9   ...   16


написать администратору сайта