В C++ определены следующие арифметические операторы.
+ cложение;
– вычитание;
* умножение
/ деление
% деление по модулю
– – декремент (уменьшение на 1)
++ инкремент (увеличение на 1).
Действие операторов +, –, * и / совпадает с действием аналогичных операторов в алгебре. Их можно применять к данным любого встроенного числового типа.
После применения оператора деления (/) к целому числу остаток будет отброшен. Например, результат целочисленного деления 10/3 будет равен 3. Остаток от деления можно получить с помощью оператора деления по модулю (%). Например, 10%3 равно 1. Это означает, что в С++ оператор % нельзя применять к нецелочисленным типам данных.
Операторы инкремента (++) и декремента (– –) обладают очень интересными свойствами. Поэтому им следует уделить особое внимание.
Оператор инкремента выполняет сложение операнда с числом 1, а оператор декремента вычитает 1 из своего операнда. Это значит, что инструкция:
х = х + 1;
аналогична такой инструкции:
++х;
А инструкция:
х = х –1;
аналогична такой инструкции:
– – х;
Операторы инкремента и декремента могут стоять как перед своим операндом (префиксная форма), так и после него (постфиксная форма). Например, инструкцию
х =х + 1;
можно переписать в виде префиксной
++х;//префиксная форма оператора инкремента
или постфиксной формы:
х++;//постфиксная форма оператора инкремента
В предыдущем примере не имело значения, в какой форме был применен оператор инкремента: префиксной или постфиксной. Но если оператор инкремента или декремента используется как часть большего выражения, то форма его применения очень важна. Если такой оператор применен в префиксной форме, то C++ сначала выполнит эту операцию, чтобы операнд получил новое значение, которое затем будет использовано остальной частью выражения. Если же оператор применен в постфиксной форме, то С++ использует в выражении его старое значение, а затем выполнит операцию, в результате которой операнд обретет новое значение.
В языке С++ имеются специальные функции для расчета алгебраических выражений. Все такие функции находятся в отдельном заголовочном файле math.h. Поэтому для использования функций в коде программы необходимо подключить данный файл с помощью директивы
#include <math.h>
Приведем основные алгебраические функции С++.
abs(x) - модуль целого числа;
labs(x) - модуль «длинного» целого;
fabs(x) - модуль числа с плавающей точкой;
sqrt(x) - извлечение квадратного корня;
pow(x,y) - возведение x в степень y;
cos(x) - косинус;
sin(x) - синус;
tan(x) - тангенс;
acos(x) - арккосинус;
asin(x) - арксинус;
atan(x) - арктангенс;
exp(x) - експонента в степени x;
log(x) - натуральный логарифм;
log10(x) - десятичный логарифм
При возведении числа в дробную степень, знаменатель дробной степени нужно записывать в вещественном виде. Например: квадратный корень из а записывается так: pow(a,1/ 2.0)
Продемонстрируем использование функций на примерах.
y=(a+pow(b,2))/(sin(x)-4) | |
y=(sqrt(pow(a,3)+pow(b,2))-7)/(exp(4*x-1)+log(4*x)) | |
y=(sin(pow(x,2))+pow(tan(z)))/fabs(pow(3*a,1/3)-exp(b+3))+pow(log(pow(b-2,2)),5) (начало) |
5. Операторы ввода/вывода на языке С++
Для вывода сообщения на экран используется следующий оператор C++:
cout<<”текст”;
Оператор COUT находится в заголовочном файле iostream.h. Поэтому для его использования данный файл нужно подключить с помощью директивы:
#include <iostream.h>
Информация, заключенная в двойные кавычки, является сообщением, которое должно быть выведено на экран. В языке C++ любая последовательность символов, заключенная в двойные кавычки, называется строкой потому, что она состоит из нескольких символов, соединяемых вместе в более крупный блок (элемент).
Строка в операторе COUT может содержать так называемые подстановочные символы - символы, которых нет на клавиатуре или они заняты под ключевые символы в тексте программы. Перед каждым таким подстановочным символов ставится символ «\».
Приведем перечень таких символов:
\a – звуковой сигнал
\n – переход на новую строку
\t – горизонтальная табуляция
\v – вертикальная табуляция
\\ - обратный слеш
\’ – одинарная кавычка
\” – двойная кавычка
\? – знак вопроса.
Например, оператор вида:
cout>>“пример\nтекста”;
Слово «пример» выведет на одной строке, а слово «текста» на другой.
Оператор вида:
cout>>“магазин\»”чайка\””;
Слово «Чайка» отобразит в двойных кавычках.
Кроме текса оператор может выводить на экран значения переменных, комбинируя их с текстом.
int a=10, b=12;
cout<<”a=”<<a<<”, b=”<<b
Форматированный вывод
Для выдачи значений заданной длины или точности оператор cout имеет ряд настроек:
- cout.width(число) – общая длина выводимого значения
- cout.precision(число) – число знаков после запятой
- cout.fill(‘символ-заполнитель’) – символ, которым заполняются лишние позиции на экране
Настройка cout.width после выполнения одного оператора вывода сбрасывается в начальное значение. Поэтому ее приходится указывать отдельно для каждой переменной или строки.
Настройки этих параметров должны проводиться до вызова оператора вывода.
Например:
//описываем переменные
float a=125.478, b=625.365;
//задаем число знаков поле запятой
cout.precision(2);
//задаем заполнитель для лишний позиций
cout.fill(‘0’);
//выдаем значения переменных на экран
cout<<”a=”;
//задаем общую длину для числа
cout.width(8);
cout<<a;
cout<<” b=”;
//задаем общую длину для числа
cout.width(8);
cout<<b;
Регулировка ширины поля (width) и заполнителя (fill) имеет смысл при выдачи данных в таблицу. Чаще всего можно обойтись только настройкой precision.
Очистка экрана
Язык С++ имеет функцию, позволяющую очищать экран от текстовой информации. Эта функция имеет вид:
clrscr();
Данная функция находится в заголовочном файле conio.h. Поэтому для ее использования данный файл должен быть подключен с помощью директивы:
#include <conio.h>
Организация паузы для просмотра результата
После выполнения программы обычно происходит автоматичский возврат в окно с исходным текстом. Это не позволяет просмотреть результат, который программа выдает на экран. Выходом из этой ситуации может быть использование клавиш Alt+F5, при нажатии на которые происходит скрытие окна с кодом программы. Повторное нажатие на эти клавиши возвращает окно с кодом на экран.
Однако, если создать исполняемый EXE файл, то использовать эти клавиши будет невозможно и результат останется невидимым для пользователя.
Для решения данной проблемы в конце программы можно добавлять функцию, которая приостанавливает работу до нажатия любой клавиши. Эта функция имеет вид:
getch();
Данная функция находится в заголовочном файле conio.h. Поэтому для ее использования данный файл должен быть подключен с помощью директивы:
#include <conio.h>
Оператор ввода данных с клавиатуры
Для вода данных с клавиатуры в С++ имеется оператор:
cin>>переменная;
Данный оператор приостанавливает работу программы и ждет пока пользователь не введет значение переменной и на нажмет ENTER.
C помощью одного оператора можно ввести значения нескольких переменных. Для этого оператор записывают в виде:
cin>>переменная1>>переменная2>>...>>переменнаяn;
При запуске программы каждое значение вводится через пробел и в конце нажимают ENTER.
Оператор COUT находится в заголовочном файле iostream.h. Поэтому для его использования данный файл нужно подключить с помощью директивы:
#include <iostream.h>(начало)
6. Пример программы на С++
Для демонстрации решим одну задачу. Составить программу для нахождения значения функции:
c=sina+cos2b
Программа может иметь вид:
//подключаем файл для организации ввода/вывода
#include <iostream.h>
//подключаем файл для использования алгебраических функций
#include <math.h>
//подключаем файл для вызова функции очистки экрана
#include <conio.h>
//заголовок главной программы
void main()
{
//описываем три переменных вещественного типа
float a,b,c;
//очищаем экран
clrscr();
//выдаем текстовую подсказку на экран
cout<<"Введите значения a и b:";
//запрашиваем ввод с клавиатуры двух переменных: a и b
cin>>a>>b;
//считаем значение функции
c=sin(a)+pow(cos(b),2);
//устанавливаем точность вывода результата 3 знака полсе запятой
cout.precision(3);
//выводим результат на экран
cout<<"Функция равна:"<<c<<"\n";
cout<<"Для продолжения нажмите любую клавишу...";
//делаем паузу для просмотра результата
getch();
//завершаем работу главной программы
return;
}