Тверской государственный университет
Опубликован: 22.11.2005 | Доступ: свободный | Студентов: 30273 / 1763 | Оценка: 4.31 / 3.69 | Длительность: 28:26:00
ISBN: 978-5-9556-0050-5
Лекция 7:

Присваивание и встроенные функции

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

Класс Math и его функции

Кроме переменных и констант, первичным материалом для построения выражений являются функции. Большинство их в проекте будут созданы самим программистом, но не обойтись и без встроенных функций. Умение работать в среде Visual Studio .Net предполагает знание встроенных возможностей этой среды, знание возможностей каркаса Framework .Net, пространств имен, доступных при программировании на языке C#, а также соответствующих встроенных классов и функций этих классов. Продолжим знакомство с возможностями, предоставляемыми пространством имен System. Мы уже познакомились с классом Convert этого пространства и частично с классом Console. Давайте рассмотрим еще один класс - класс Math, содержащий стандартные математические функции, без которых трудно обойтись при построении многих выражений. Этот класс содержит два статических поля, задающих константы E и PI, а также 23 статических метода. Методы задают:

  • тригонометрические функции - Sin, Cos, Tan ;
  • обратные тригонометрические функции - ASin, ACos, ATan, ATan2 (sinx, cosx) ;
  • гиперболические функции - Tanh, Sinh, Cosh ;
  • экспоненту и логарифмические функции - Exp, Log, Log10 ;
  • модуль, корень, знак - Abs, Sqrt, Sign ;
  • функции округления - Ceiling, Floor, Round ;
  • минимум, максимум, степень, остаток - Min, Max, Pow, IEEERemainder.

В особых пояснениях эти функции не нуждаются. Приведу пример:

/// <summary>
/// работа с функциями класса Math
/// </summary>
public  void MathFunctions()
{
	double a, b,t,t0,dt,y;
	string NameFunction;
	Console.WriteLine("Введите имя F(t)исследуемой функции
		a*F(b*t)" + " (sin, cos, tan, cotan)");
	NameFunction = Console.ReadLine();
	Console.WriteLine("Введите параметр a (double)");
	a= double.Parse(Console.ReadLine());
	Console.WriteLine("Введите параметр b (double)");
	b= double.Parse(Console.ReadLine());
	Console.WriteLine("Введите начальное время t0(double)");
	t0= double.Parse(Console.ReadLine());
	const int points = 10;
	dt = 0.2;
	for(int i = 1; i<=points; i++)
	{
		t = t0 + (i-1)* dt;
		switch (NameFunction)
		{
			case ("sin"):
				y = a*Math.Sin(b*t);
				break;
			case ("cos"):
				y = a*Math.Cos(b*t);
				break;
			case ("tan"):
				y = a*Math.Tan(b*t);
				break;
			case ("cotan"):
				y = a/Math.Tan(b*t);
				break;
			case ("ln"):
				y = a*Math.Log(b*t);
				break;
			case ("tanh"):
				y = a*Math.Tanh(b*t);
				break;
			default:
				y=1;
				break;
		}//switch
		Console.WriteLine ("t = " + t + "; " + a +"*" + 
			NameFunction +"(" + b + "*t)= " + y + ";");
	}//for
	double u = 2.5, v = 1.5, p,w;
	p= Math.Pow(u,v);
	w = Math.IEEERemainder(u,v);
	Console.WriteLine ("u = " + u + "; v= " + v +
		"; power(u,v)= " + p + "; reminder(u,v)= " + w);
}//MathFunctions

Заметьте, в примерах программного кода я постепенно расширяю диапазон используемых средств. Часть из этих средств уже описана, а часть (например, оператор цикла for и оператор выбора switch ) будут описаны позже. Те, у кого чтение примеров вызывает затруднение, смогут вернуться к ним при повторном чтении книги.

Коротко прокомментирую этот код. В данном примере пользователь определяет, какую функцию он хочет вычислить и при каких значениях ее параметров. Некоторые параметры задаются константами и инициализированными переменными, но для большинства их значения вводятся пользователем. Одна из целей этого фрагмента состоит в демонстрации консольного ввода данных разного типа, при котором используется описанный ранее метод Parse.

Функция, заданная пользователем, вычисляется в операторе switch. Здесь реализован выбор из 6 стандартных функций, входящих в джентльменский набор класса Math.

Вызов еще двух функций из класса Math содержится в двух последних строчках этой процедуры. На рис. 7.1 можно видеть результаты ее работы.

Результаты работы процедуры MathFunctions

Рис. 7.1. Результаты работы процедуры MathFunctions
< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Александр Галабудник
Александр Галабудник

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

Александра Гусева
Александра Гусева