Форматированный
вывод
Для
выдачи значений заданной длины или
точности оператор 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<<”
b=”;
//задаем
общую длину для числа
Регулировка
ширины поля (width)
и заполнителя (fill)
имеет смысл при выдачи данных
в таблицу. Чаще всего можно обойтись
только настройкой precision.
Очистка
экрана
Язык С++
имеет функцию, позволяющую очищать
экран от текстовой информации. Эта
функция имеет вид:
Данная
функция находится в заголовочном
файле conio.h.
Поэтому для ее использования данный
файл должен быть подключен с помощью
директивы:
#include
Организация
паузы для просмотра результата
После
выполнения программы обычно происходит
автоматичский возврат в окно с исходным
текстом. Это не позволяет просмотреть
результат, который программа выдает на
экран. Выходом из этой ситуации может
быть использование
клавиш Alt+F5, при нажатии на которые происходит
скрытие окна с кодом программы. Повторное
нажатие на эти клавиши возвращает окно
с кодом на экран.
Однако,
если создать исполняемый EXE файл,
то использовать эти клавиши будет
невозможно и результат останется
невидимым для пользователя.
Для
решения данной проблемы в конце программы
можно добавлять функцию, которая
приостанавливает работу до нажатия
любой клавиши. Эта функция имеет вид:
getch
();
Данная функция
находится в заголовочном файле conio.h.
Поэтому для ее использования данный
файл должен быть подключен с помощью
директивы:
#include
Оператор
ввода данных с клавиатуры
Для
вода данных с клавиатуры в С++
имеется оператор:
cin>>переменная;
Данный
оператор приостанавливает работу
программы и ждет пока пользователь не
введет значение переменной и на нажмет ENTER.
C помощью
одного оператора можно ввести значения
нескольких переменных. Для этого
оператор записывают в виде:
cin>>переменная1>>переменная2>>.
. .>>переменнаяn;
При
запуске программы каждое значение
вводится через пробел и в конце
нажимают ENTER.
Оператор COUT находится
в заголовочном файле iostream.h.
Поэтому для его использования данный
файл нужно подключить с помощью директивы:
#include
(начало)
6.
Пример программы на С++
Для демонстрации решим одну
задачу. Составить программу для нахождения
значения функции:
Программа может иметь
вид:
//подключаем
файл для организации ввода/вывода
#include
//подключаем
файл для использования алгебраических
функций
#include
//подключаем
файл для вызова функции очистки экрана
#include
//заголовок
главной программы
//описываем
три переменных вещественного типа
//очищаем экран
//выдаем
текстовую подсказку на экран
cout<<"Введите
значения a и b:";
//запрашиваем
ввод с клавиатуры двух переменных: a и b
//считаем
значение функции
c=sin(a)+pow(cos(b),2);
//устанавливаем
точность вывода результата 3
знака полсе запятой
cout.precision(3);
//выводим
результат на экран
cout<<"Функция
равна:"<cout<<"Для
продолжения нажмите любую клавишу. . .";
//делаем
паузу для просмотра результата
//завершаем
работу главной программы
Все
математические функции реализованы
как методы класса Math,
основные из которых представлены в
таблице 4.1
Таблица
4.1 – Основные поля и методы класса Math
Имя
метода
|
Описание
|
Пояснения
|
|
|
|x|,
записывается как Abs(x)
|
|
Арккосинус
|
Acos(double
x),
угол задается в радианах
|
|
Арксинус
|
|
|
Арктангенс
|
|
|
Арктангенс
|
Atan2(double
x,double
y)
–угол, тангенс которого есть результат
деления y
на х
|
|
Произведение
|
BigMul(int
x,int y)
|
|
Округление
до большего целого
|
Celling(double
x)
|
|
|
|
|
Гиперболический
косинус
|
|
|
Деление
и остаток
|
|
|
|
2,71828182845905
|
|
Экспонента
|
|
|
Округление
до меньшего целого
|
Floor(double
x)
|
|
Остаток
от деления
|
IEEERemainder(double
x, double y)
|
|
Натуральный
логарифм
|
|
|
Десятичный
логарифм
|
|
|
Максимум
из 2-х чисел
|
|
Продолжение
таблицы 4.1
Имя
метода
|
Описание
|
Пояснения
|
|
Минимум
из 2-х чисел
|
|
|
Значение
числа пи
|
3,14159265358979
|
|
Возведение
в степень
|
Pow(x,y)
– x
в степени y
|
|
Округление
|
Round(3.1)=3
Round(3.8)=4
|
|
Знак
числа
|
|
|
|
|
|
Гиперболический
синус
|
|
|
Квадратный
корень
|
|
|
|
|
|
Гиперболический
тангенс
|
|
Пример
линейной программы расчета по заданной
формуле
namespace
ConsoleApplicationl
{
static void Main()
Console.WriteLine(“Введите
x”);
buf=Console.ReadLine();
double
x=Convert.ToDouble(buf);
Console.WriteLine(“Введите
alfa”);
buf=Console.ReadLine();
double
a=double.Parse(buf);
double
y=Math.Sqrt(Math.PI*x)-
Math.Exp(0.2*Math.Sqrt(a))+
2*Math.Tan(2*a)+
1.6e3*Math.Log10(Math.Pow(x,2));
Console.WriteLine(“Для
х=
{0} и
alfa ={1}”, x,a);
Console.WriteLine(“Результат
=” +y); }}}
Лекция 5. Операторы языка c#
Состав
операторов языка C#,
их синтаксис и семантика унаследованы
от языка С++. Любое
выражение,
завершающееся точкой с запятой является
оператором.
Блок или составной оператор
С
помощью фигурных скобок несколько
операторов языка (возможно, перемежаемых
объявлениями) можно объединить в единую
синтаксическую конструкцию, называемую
блоком
или составным
оператором:
оператор_1
оператор_N
Синтаксически
блок
воспринимается как единичный оператор
и может использоваться всюду в
конструкциях, где синтаксис требует
одного оператора. Тело цикла, ветви
оператора
if,
как правило, представляются блоком.
Пустой оператор
Пустой
оператор
- это "пусто", завершаемое точкой
с запятой. Он используется когда по
синтаксису оператор требуется, а по
смыслу- нет. Иногда полезно рассматривать
отсутствие операторов как существующий
пустой
оператор.
Синтаксически допустимо ставить лишние
точки с запятой, полагая, что вставляются
пустые
операторы.
Например, синтаксически допустима
следующая конструкция:
for
(int
j=1;
j<5;
j++)
//оператор цикла
{;;;};
//пустой оператор
Она
может рассматриваться как задержка по
времени, работа на холостом ходе.
Для всех математических функций необходим заголовок . В программах на языке C используется заголовок
1
|
acos
|
Функция double acos(double arg
arg
|
2
|
asin
|
Функция double asin(double arg
) возвращает арккосинус аргумента arg
. Значение аргумента функции должно лежать в интервале от -1 до 1, иначе произойдет ошибка.
|
3
|
atan
|
Функция double atan(double arg
) возвращает арктангенс аргумента arg
.
|
4
|
atan2
|
Функция double atan2(double x
, double y
) возвращает арктангенс значения y
/x
.
|
5
|
ceil
|
Функция double ceil(double num
) возвращает ближайшее целое число (представленное как действительное число с плавающей точкой), которое не меньше значения аргумента num
. Например, ceil(1.02) вернет 2.0. Такое преобразование называется округлением с избытком.
|
6
|
cos
|
Функция double cos(double arg
) возвращает косинус аргумента arg
|
7
|
cosh
|
Функция double cosh(double arg
) возвращает гиперболический косинус аргумента arg
.
|
8
|
exp
|
Функция double exp(double arg
) возвращает основание натурального логарифма e,
возведенное в степень arg
.
|
9
|
fabs
|
Функция double fabs(double num
) возвращает абсолютное значение (значение по модулю) аргумента num
.
|
10
|
floor
|
Функция double floor(double num
) возвращает наибольшее целое число (представленное как действительное число с плавающей точкой), не превышающее значения аргумента num
. Например, floor(1.02) вернет число 1.0. Такое преобразование называется округлением с недостатком.
|
11
|
fmod
|
Функция double fmod(double x, double y) возвращает остаток от деления x/y.
|
12
|
frexp
|
Функция double frexp(double num
, int *exp
) раскладывает число num
на мантиссу, изменяющуюся в диапазоне от 0.1 до 1, не включая 1, и целый показатель степени, так что num
= mantissa
. Функция возвращает мантиссу, а значение показателя степени сохраняется в переменной, на которую ссылается указатель exp
.
|
13
|
log
|
Функция double log(double num
) возвращает натуральный логарифм числа num
. Если аргумент num
|
14
|
log10
|
Функция double log10(double num
) возвращает десятичный логарифм числа num
. Если аргумент num
отрицателен или равен нулю, возникает ошибка.
|
15
|
pow
|
Функция double pow(double base
, double exp
) возвращает число base
, возведенное в степени exp
. Если основание степени base
равно нулю, а показатель степени exp
меньше или равен нулю, может произойти ошибка, связанная с выходом аргумента из области определения функции (domain error). Это ошибка возникает также, если аргумент base
отрицателен, а аргумент exp
не является целым числом.
|
16
|
sin
|
Функция double sin(double arg
) возвращает синус аргумента arg
. Значение аргумента должно быть выражено в радианах.
|
17
|
sinh
|
Функция double sinh(double arg
) возвращает гиперболический синус аргумента arg
.
|
18
|
sqrt
|
Функция double sqrt(double num
) возвращает квадратный корень аргумента num
. Если значение аргумента отрицательно, возникает ошибка, связанная с выходом из области определения функции.
|
19
|
tan
|
Функция double tan(double arg
) возвращает тангенс аргумента arg
. Значение аргумента должно быть выражено в радианах.
|
20
|
tanh
|
Функция double tanh(double arg
) возвращает гиперболический тангенс аргумента arg
.
|
Последнее обновление: 31.10.2015
Для выполнения различных математических операций в библиотеке классов.NET предназначен класс Math
. Он является статическим, поэтому все его методы также являются статическими.
Рассмотрим методы класса Math:
Abs(double value) : возвращает абсолютное значение для аргумента value
Double result = Math.Abs(-12.4); // 12.4
Acos(double value) : возвращает арккосинус value. Параметр value должен иметь значение от -1 до 1
Double result = Math.Acos(1); // 0
Asin(double value) : возвращает арксинус value. Параметр value должен иметь значение от -1 до 1
Atan(double value) : возвращает арктангенс value
BigMul(int x, int y) : возвращает произведение x * y в виде объекта long
Double result = Math.BigMul(100, 9340); // 934000
Ceiling(double value) : возвращает наименьшее целое число с плавающей точкой, которое не меньше value
Double result = Math.Ceiling(2.34); // 3
Cos(double d) : возвращает косинус угла d
Cosh(double d) : возвращает гиперболический косинус угла d
DivRem(int a, int b, out int result) : возвращает результат от деления a/b, а остаток помещается в параметр result
Int result;
int div = Math.DivRem(14, 5, out result);
//result = 4
// div = 2
Exp(double d) : возвращает основание натурального логарифма, возведенное в степень d
Floor(decimal d) : возвращает наибольшее целое число, которое не больше d
Double result = Math.Floor(2.56); // 2
IEEERemainder(double a, double b) : возвращает остаток от деления a на b
Double result = Math.IEEERemainder(26, 4); // 2 = 26-24
Log(double d) : возвращает натуральный логарифм числа d
Log(double a, double newBase) : возвращает логарифм числа a по основанию newBase
Log10(double d) : возвращает десятичный логарифм числа d
Max(double a, double b) : возвращает максимальное число из a и b
Min(double a, double b) : возвращает минимальное число из a и b
Pow(double a, double b) : возвращает число a, возведенное в степень b
Round(double d) : возвращает число d, округленное до ближайшего целого числа
Double result1 = Math.Round(20.56); // 21
double result2 = Math.Round(20.46); //20
Round(double a, round b) : возвращает число a, округленное до определенного количества знаков после запятой, представленного параметром b
Double result1 = Math.Round(20.567, 2); // 20,57
double result2 = Math.Round(20.463, 1); //20,5
Sign(double value) : возвращает число 1, если число value положительное, и -1, если значение value отрицательное. Если value равно 0, то возвращает 0
Int result1 = Math.Sign(15); // 1
int result2 = Math.Sign(-5); //-1
Sin(double value) : возвращает синус угла value
Sinh(double value) : возвращает гиперболический синус угла value
Sqrt(double value) : возвращает квадратный корень числа value
Double result1 = Math.Sqrt(16); // 4
Tan(double value) : возвращает тангенс угла value
Tanh(double value) : возвращает гиперболический тангенс угла value
Truncate(double value) : отбрасывает дробную часть числа value, возвращаяя лишь целое значние
Double result = Math.Truncate(16.89); // 16
Также класс Math определяет две константы: Math.E и Math.PI . Например, вычислим площадь круга:
Console.WriteLine("Введите радиус круга");
double radius = Double.Parse(Console.ReadLine());
double area = Math.PI * Math.Pow(radius, 2);
Console.WriteLine("Площадь круга с радиусом {0} равна {1}", radius, area);
Консольный вывод:
Введите радиус круга
20
Площадь круга с радиусом 20 равна 1256,63706143592
Для целых чисел определены операции
+ , - , * и ** . Операция
деления / для целых чисел возвращает вещественное число (значение типа float).
Также функция возведения в степень возвращает значение типа float ,
если показатель степени — отрицательное число.
Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием
дробной части, которая обозначается // (она соответствует операции div в Паскале).
Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления,
обозначаемая % (она соответствует операции mod в Паскале).
Например:
Print(17 / 3) # выведет 5.66666666667
print(17 // 3) # выведет 5
print(17 % 3) # выведет 2
Некоторые из перечисленных функций (int , round , abs)
являются стандартными и не требуют подключения модуля math для использования.
Функция
|
Описание
|
---|
Округление
|
int(x)
|
Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать
модуль math .
|
round(x)
|
Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется
до ближайшего четного числа.
|
round(x, n)
|
Округляет число x
до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать
модуль math .
|
floor(x)
|
Округляет число вниз («пол»), при этом floor(1.5) == 1 , floor(-1.5) == -2
|
ceil(x)
|
Округляет число вверх («потолок»), при этом ceil(1.5) == 2 , ceil(-1.5) == -1
|
abs(x)
|
Модуль (абсолютная величина). Это — стандартная функция.
|
Корни, логарифмы
|
sqrt(x)
|
Квадратный корень. Использование: sqrt(x)
|
log(x)
|
Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b .
|
e
|
Основание натуральных логарифмов e = 2,71828...
|
Тригонометрия
|
sin(x)
|
Синус угла, задаваемого в радианах
|
cos(x)
|
Косинус угла, задаваемого в радианах
|
tan(x)
|
Тангенс угла, задаваемого в радианах
|
asin(x)
|
Арксинус, возвращает значение в радианах
|
acos(x)
|
Арккосинус, возвращает значение в радианах
|
atan(x)
|
Арктангенс, возвращает значение в радианах
|
atan2(y, x)
|
Полярный угол (в радианах) точки с координатами (x, y).
|
|
degrees(x)
|
Преобразует угол, заданный в радианах, в градусы.
|
radians(x)
|
Преобразует угол, заданный в градусах, в радианы.
|
pi
|
Константа π
= 3.1415...
|