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++)
//оператор цикла
{;;;};
//пустой оператор
Она
может рассматриваться как задержка по
времени, работа на холостом ходе.
Последнее обновление: 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
Math.h
— заголовочный файл стандартной библиотеки языка С, разработанный для выполнения простых математических операций. Поскольку С++ также реализует данные функции для обеспечения совместимости (все они содержатся в заголовочном файле cmath) ми будем рассматривать эти языки вместе. Под Linux и FreeBSD математические функции хранятся отдельно в математической библиотеке libm. Таким образом, если любая из этих инструкций используется, при сборке линкеру должна быть передана опция -lm. Так как в результате большинства математических операций получатся дробные числа, все функции библиотеки принимают double. Для работы с типами float и long double используются функции с постфиксами f и l соответственно.
Complex.h
— заголовочный файл стандартной библиотеки языка программирования С, в котором объявляются функции для комплексной арифметики. Эти функции используют встроенный тип complex, который появился в стандарте C99. Функции в заголовочном файле complex.h представлены для трёх типов— double, float и long double (значения представлены в радианах): для вычисления тригонометрических значений синуса, косинуса, тангенса и котангенса для комплесных чисел, логарифм и экспонент, корень.
GNU (GSL)
— это свободное программное обеспечение под лицензией GNU General Public License. Библиотека предоставляет широкий спектр математических процедур, таких как генераторы случайных чисел, специальных функций и наименьших квадратов. Есть более 1000 функций в общей сложности с обширным набором тестов. В отличие от лицензий собственных численных библиотек лицензия GSL не ограничивает научное сотрудничество. Для подключения библиотеки вы должны написать: $\# include $. Чтобы использовать в C ++ обработку исключений в рамках пользовательских функций, переданных в библиотеку в качестве параметров, библиотека должна быть построена с опцией компиляции -fexceptions. Библиотека может быть использована в многопоточных программах. Все функции поточные в том смысле, что они не используют статические переменные. Память всегда связана с объектами, а не с функциями. Для функций, объекты которых используют рабочее пространство в качестве временного хранилища рабочие области должны быть выделены на основе каждого потока. Для функций, которые используют табличные объекты, память может использоваться несколькими потоками одновременно. Таблица аргументов всегда объявляются константой в прототипах функций, чтобы показать, что они могут быть безопасно доступны из различных потоков.
Вот примерные программы на С++ с использованием математических библиотек:
Найти синус и косинус А
#include // математическая библиотека
using namespace std;
cout << «Input A = »; cin>>a; //ввод а
b=cos(a); //присваивание значений
cout << «Cos A = „<
Вывод программы:
Найти exp от числа А
#include // библиотека ввода-вывода
#include // математичекая библиотека
#include
#include
using namespace std;
SetConsoleOutputCP(1251);
double a,b,c; // переменные типа double
cout << “Input A = »; cin>>a; //ввод а
b=ceil(a); //присваивание значаный
cout << «Большее целое число A = „<
Вывод программы:
Возведите число в степень по заданным значениям
#include // библиотека ввода-вывода
#include // математичекая библиотека
#include
#include
using namespace std;
SetConsoleOutputCP(1251);
double a,b; // переменные типа double
cout << “Введите число = »; cin>>a;
cout << «Введите степень = »; cin>>b;
cout << «Число в степени = „<
Вывод программы:
Решение квадратного уравнения
# include
# include # include
using namespace std;
double a = 1, b = 2, c = 1;
i = gsl_poly_solve_quadratic (a, b, c, &x0, &x1);
if (i == 2) cout << “x0 =»<< x0 << " x1 ="<< x1 << endl;
if (i == 1) cout<< «x0 = » << x0 << endl;
if (i == 0) cout<< «No solve » << endl;
Вывод программы:
Как использовать статистические функции
#include
#include
double data = {17.2, 18.1, 16.5, 18.3, 12.6};
double mean, variance, largest, smallest;
mean = gsl_stats_mean(data, 1, 5);
variance = gsl_stats_variance(data, 1, 5);
largest = gsl_stats_max(data, 1, 5);
smallest = gsl_stats_min(data, 1, 5);
printf («The dataset is \%g, \%g, \%g,\%g, \%g \ n»,
data, data, data, data, data);
printf («The sample mean is \%g\ n», mean);
printf («The estimated variance is \%g\ n», variance);
printf («The largest value is \%g \ n», largest);
printf («The smallest value is \%g \ n», smallest);
Структура программы на языке Си
1. #include
cstdlib.h
.
2. #include
- подключить заголовочный файл iostream.h
.
3
. using name space std –
использовать стандартное пространство имен
4. int main(int argc, char *argv)
– имя функции. Любая программа на языке Си состоит из одной или нескольких функций. В написанном шаблоне функция одна – main().
Функция c именем main
обязательно должна быть в любой исполняемой программе
.
5. { -
начало тела функции
6. system(“pause”) –
вызов функции system
с аргументом “pause”.
Функция реализует ожидание нажатия клавиши.
7. оператор return
с аргументом EXIT_SUCCESS
– завершение функции main с кодом 0.
8. } – конец функции main.
Простые типы данных Си
Для представления целых величин в Си предусмотрены следующие типы данных:
Тип сhar.
Занимает в памяти 1 байт. Используется для представления символов и целых чисел от 0 до 255 (-128 до 127).
Тип int
.
Занимает в памяти4 байта. Используется для представления целых чисел в диапазоне -2 147 483 648 до 2 147 483 647.
Тип float.
Занимает в памяти 4 байта. Используется для представления чисел с плавающей точкой. от 3.4×10 -38 до 3.4×10 38 . Точность вычислений до 7 знаков после запятой.
Тип double.
Занимает в памяти 8 байт. Используется для представления чисел с плавающей точкой. от 1.7×10 -308 до 1.7×10 308 . Точность вычислений до 15 знаков после запятой.
Тип void
– пустой тип. Используется для описания функций.
Тип bool
– логический тип. Может принимать 2 значения true или false.
Основные операторы Си
Оператор - это лексема, которая переключает некоторые вычисления, когда применяется к переменной или к другому объекту в выражении. Язык Си представляет большой набор операторов арифметических и логических операторов.
Таблица 4.1. Унарные операторы языка Си
Таблица 4.2. Бинарные операторы языка Си
Код оператора
| Название
| Результат операции
|
Аддитивные операторы
|
+
| бинарный плюс
| вычисление суммы, например:
int x = 2,y = 1,z;
z = x+y;
|
-
| бинарный минус
| вычисление разности, например:
int x = 2,y = 1,z;
z = x-y;
|
Мультипликативные операторы
|
*
| умножение
| вычисление произведения, например:
int x = 2,y = 1,z;
z = x*y;
|
/
| деление
| вычисление частного, например:
int x = 12,y = 2,z;
z = x/y;
|
%
| остаток
| вычисление остатка от деления, например:
int x = 12,y = 7,z;
z = x%y;
|
Логические операторы
|
&&
| логическое AND (И)
| проверка условий, связанных логическим И
|
||
| логическое OR (ИЛИ)
| проверка условий, связанных логическим ИЛИ
|
Операторы присваивания
|
=
| присваивание
| присвоить переменной заданное значение или значение другой переменной
|
Операторы отношения
|
<
| меньше чем
| x
|
>
| больше чем
| x>y, х больше y
|
<=
| меньше чем или равно
| x<=y, x меньше или равно y
|
>=
| больше чем или равно
| x>=y, x больше или равно y
|
Операторы эквивалентности
|
= =
| равно
| x= =y, х равно y
|
!=
| не равно
| x!=y, x не равно y
|
,
| оператор перечисления
| выполнить разделенные оператором действия слева направо, например
y+=5,x-=4,y+=x;
|
|
|
|
|
|
Библиотека математических функций math.h
Си поддерживает множество математических функций, прототипы которых описаны в файле math.h.
Познакомимся с некоторыми из них.
abs(int x)
возвращает модуль целого числа x
.
acos(double x)
возвращает арккосинус числа x
в радианах.
asin(double x)
возвращает арксинус числа x
в радианах.
atan(double x)
возвращает арктангенс числа x
в радианах.
atof(char *s, double x)
преобразует строку s
в вещественное число x.
cos(double x)
возвращает косинус числа x
(x
задано в радианах)
ceil(double x)
округляет число x
в большую сторону
exp(double x)
возвращает экспоненту числа x.
fabs(double x)
возвращает модуль вещественного числа x.
sin(double x)
возвращает синус числа x
(x
задано в радианах).
sqrt(double x)
возвращает квадрат числа x.
tan(double x)
возвращает тангенс числа x
(x
задано в радианах).
| floor(double x)
округляет число x
в меньшую сторону
fmod(double x, double y)
возвращает остаток от деления числа x
на число y.
hipot(double x, double y)
возвращает квадрат суммы числа x
и числа y.
log(double x)
возвращает натуральный логарифм числа x.
log10(double x)
возвращает десятичный логарифм числа x.
modf(double x,double& y)
возвращает дробную часть числа x,
по адресу y
записывается целая часть исходного числа x.
pow(double x, double y)
возвращает x
в степени y.
|
Для использования всех вышеперечисленных функций подключите библиотеку