Pre se prilikom učenja programiranja u C i C++ programskom jeziku često koristila matematika i zbirke matematičkih zadataka kako bi se kroz matematiku učilo programiranje. Poznavanje matematičkih formula, manipulacije brojevima i poznavanje geometrije je na neki način bio preduslov da bi ste se uopšte i upustili u programiranje. Danas se toliko ne insistira na tome; kad učite C# programski jezik; jedna od najbitnijih matematičkih klasa Math, retko da se i uopšte spominje prilikom edukacije. Jednostavno se podrazumeva da koristite klasu Math kad vam je ona potrebna kao i bilo kakva sporedna klasa .Net Framework-a. Međutim ja vam savetujem da ovu klasu dobro prostudirate jer će te je često koristiti ukoliko se budete bavili ozbiljnim projektima.
( Math klasa, nezaobilazna za matematičke proračune )
Klasa Math je statička klasa, koja se nalazi u System.Math imenskom prostoru, tako da nemate potrebe da uvozite ovu klasu ukoliko već koristite imenski prostor System. Klasa Math vam omogućava da koristite osnovne matematičke funkcije, koje su već testirane i nemate potrebe da vi pišete vaše. Od verzije C# 6.0 vi možete da imenski prostor Math koristite i na ovakav način:
using static System.Math;
Na ovaj način
možete pisati kraće konstante i metode klase Math.
WriteLine(PI.ToString());
//
Math.PI.ToString() = 3.14159265358979
WriteLine(E.ToString());
// E = 2.71828182845905
Koje matematičke metode sadrži klasa Math?
Klasa Math sadrži neke od osnovnih matematički
funkcija jer većina matematičkih formula se bazira na skupu istih metoda. Na
primer ako želite da izračunate hipotenuzu pravouglog trougla koristiće te više
metoda klase Math:
double hipotenuza = Sqrt(Pow(a, 2)
+ Pow(b, 2));
WriteLine($"abs(-7) = {Abs(-7)}"); //
Returns 7
Klasa Math je takođe nezaobilazna ako nameravate da se u programiranju bavite trigonometrijskim funkcijama ili funkcijama ugla.
WriteLine($"Acos(0) = {Acos(0)}");
WriteLine($"Cos(2) = {Cos(2)}");
WriteLine($"Cosh(5) = {Cosh(5)}");
WriteLine($"Asin(0.2) = {Asin(0.2)}");
WriteLine($"Sin(2) = {Sin(2)}");
WriteLine($"Sinh(-5)
= {Sinh(-5)}");
WriteLine($"Atan(-5)
= {Atan(-5)}");
WriteLine($"Atan2(2,1) = {Atan2(2,1)}");
WriteLine($"Tan(1)
= {Tan(1)}");
WriteLine($"Tanh(0.1) = {Tanh(0.1)}");
long number = unchecked(int.MaxValue * int.MaxValue);
// Result 1
long number = BigMul(int.MaxValue, int.MaxValue); // Result 4611686014132420609
Value Ceiling Floor
7.03 8 7
7.64 8 7
0.12 1 0
-0.12 0 -1
-7.1 -7 -8
-7.6 -7 -8
Međutim kad smo kod zaokruživanja brojeva, ponekad se morate pitati da li na primer broj 1.5 želite zaokružiti na 1 ili na 2. Ili na kojoj decimali broja želite da da zaokružite broj. Metoda Round je u ovom slučaju jednostavno rešenje, ili bi ste sami morali da pišete komleksan kod.
WriteLine($"{Round(123.45)}"); // 123
WriteLine($"{Round(123.45, 1, MidpointRounding.AwayFromZero)}"); // 123.5
WriteLine($"{Round(123.45, 1, MidpointRounding.ToEven)}"); // 123.4
Ili da jednostavno prepustite stvari metodi
Truncate:
WriteLine($"Truncate(56.789) = {Truncate(56.789)}"); // 56
WriteLine($"Truncate(-56.789)
= {Truncate(-56.789)}"); // -56
WriteLine("$"Log(1.2) = {Log(1.2)}");
WriteLine("$"Log(1.2,
0.1) = {Log(1.2, 0.1)}");
WriteLine("$"Log10(50) = {Log10(50)}");
Pretpostavimo da želite da izračunate količnik dva cela broja, ali takođe
vam treba i ostatak. Metoda DivRem vam to omogućava na najednostavniji način.
int number1 = 100, number2 = 35, result;
int quotient = DivRem(number1, number2, out
result);
WriteLine("number1 = " + number1); // 100
WriteLine("number2 = " + number2); // 35
WriteLine("quotient = " + quotient); // 100 / 35 = 20
WriteLine("The rest of the
number: "
+ result); // 30
U vašim matematičkim proračunima možete doći u
situaciju da radite sa modulo brojevima. Međutim šta ako vama treba negativan
ostatak. To nećete moći dobiti od modulo dva broja. Klasa Math ima rešenje i za
takav slučaj, jednostavno umesto modulo
koristite metodu IEEERemainder:
WriteLine($"IEEERemainder(3, 4)
= {IEEERemainder(3,
4)}"); // -1 Different from 3 % 4 =
3
Ukoliko hoćete da izračunate bilo koji stepen od nekog
broja, koristite metodu Pow klase Math.
WriteLine($"Pow(7,2) = {Pow(7, 2)}"); // 7 * 7 = 49
WriteLine($"Sqrt(49) = {Sqrt(49)}"); // 49 / 7 = 7
WriteLine($"{Max(123.45, 567.89)}"); // 567.89
WriteLine($"{Min(123.45, 567.89)}"); // 123.45
Sad kad ste
upoznati sa svim metodama klase Math, dobro bi bilo da isprogramirate i sledeći
program, kako bi se lakše uvek mogli prisetiti kada i kako da koristite klasu
Math.
using System;
using static System.Console;
using static System.Math;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MathClass
{
class Program
{
static void Main(string[] args)
{
WriteLine("SYSTEM.MATH
CLASS" + Environment.NewLine);
WriteLine("E - Returns the base
of the natural logarithm: " + E.ToString()); //
E = 2.71828182845905
WriteLine("PI - Returns PI
number: "
+ PI.ToString() + Environment.NewLine); // PI = 3.14159265358979
WriteLine($"Abs - Returns the
absolute number: Abs(-7) = {Abs(-7)}"
+ Environment.NewLine); // 7
ReadKey();
Clear();
WriteLine("Trigonometric
functions: "
+ Environment.NewLine);
WriteLine("Acos - Returns the
angle whose cosine is the specified number:" + Environment.NewLine
+ $"Acos(0) = {Acos(0)}");
WriteLine("Cos - Returns the
cosine of the specified angle:" + Environment.NewLine
+ $"Cos(2) = {Cos(2)}");
WriteLine("Cosh - Returns the
hyperbolic cosine of the specified angle:" + Environment.NewLine
+ $"Cosh(5) = {Cosh(5)}" + Environment.NewLine);
WriteLine("Asin - Returns the
angle whose sine is the specified number:" + Environment.NewLine
+ $"Asin(0.2) = {Asin(0.2)}");
WriteLine("Sin - Returns the
sine of the specified angle:" + Environment.NewLine
+ $"Sin(2) = {Sin(2)}");
WriteLine("Sinh - Returns the
hyperbolic sine of the specified angle:" + Environment.NewLine
+ $"Sinh(-5) = {Sinh(-5)}" + Environment.NewLine);
WriteLine("Atan - Returns the
angle whose tangent is the specified number:" + Environment.NewLine
+ $"Atan(-5) = {Atan(-5)}");
WriteLine("Atan2 - Returns the
angle whose tangent is the quotient of 2 specified numbers:" + Environment.NewLine
+ $"Atan2(2,1) = {Atan2(2,1)}");
WriteLine("Tan - Returns the
tangent of the specified angle:" + Environment.NewLine
+ $"Tan(1) = {Tan(1)}");
WriteLine("Tanh - Returns the
hyperbolic tangent of the specified angle:" + Environment.NewLine
+ $"Tanh(0.1) = {Tanh(0.1)}" + Environment.NewLine);
ReadKey();
Clear();
WriteLine("BigMul - Produces the
full product of two 32-bit numbers:");
WriteLine($"BigMul(int.MaxValue,
int.MaxValue) = {int.MaxValue}*{int.MaxValue} = {BigMul(int.MaxValue, int.MaxValue)}");
WriteLine(Environment.NewLine + "Ceiling and Floor
methods:"
+ Environment.NewLine);
decimal[] values = { 7.03m, 7.64m, 0.12m, -0.12m, -7.1m, -7.6m };
WriteLine(" Value Ceiling Floor" + Environment.NewLine);
foreach (decimal value in values) WriteLine("{0,7} {1,16}
{2,14}",
value, Ceiling(value), Floor(value));
ReadKey();
Clear();
WriteLine(Environment.NewLine + "Round - Round type
numbers in many ways:" + Environment.NewLine);
WriteLine($"Round(123.45) = {Round(123.45)}"); // 123
WriteLine($"Round(123.45, 1,
MidpointRounding.AwayFromZero) = {Round(123.45, 1, MidpointRounding.AwayFromZero)}"); //
123.5
WriteLine($"Round(123.45, 1,
MidpointRounding.ToEven) = {Round(123.45, 1, MidpointRounding.ToEven)}"); // 123.4
WriteLine(Environment.NewLine + "Truncate - Calculates
the integral part of a specified number:" + Environment.NewLine);
WriteLine($"Truncate(56.789) = {Truncate(56.789)}"); // 56
WriteLine($"Truncate(-56.789) = {Truncate(-56.789)}"); // -56
WriteLine(Environment.NewLine + $"Exp - Returns e
raised to the specified power. Exp(0.5) = {Exp(0.5)}"
+ Environment.NewLine);
WriteLine("Log - Returns the
natural (base e) logarithm of a specified number:" + Environment.NewLine
+ $"Log(1.2) = {Log(1.2)}");
WriteLine("Log(double, double) -
Returns the logarithm of a specified number" + Environment.NewLine
+ "in a specified
base." + Environment.NewLine
+ $"Log(1.2, 0.1) = {Log(1.2, 0.1)}");
WriteLine("Log10 - Returns the
base 10 logarithm of a specified number." + Environment.NewLine
+ $"Log10(50) = {Log10(50)}" + Environment.NewLine);
ReadKey();
Clear();
WriteLine("DivRem - Calculates
the quotient of two integers and also returns the remainder in an output
parameter.");
int
number1 = 100, number2 = 35, result;
int
quotient = DivRem(number1, number2, out
result);
WriteLine("number1 = " + number1); // 100
WriteLine("number2 = " + number2); // 35
WriteLine("quotient = " + quotient); // 100 / 35 = 2
WriteLine("The rest of the
number: "
+ result ); //
30
WriteLine(Environment.NewLine + "IEEERemainder -
Returns the remainder resulting from"
+ "the division of a
specified number by another specified number.");
WriteLine($"IEEERemainder(3, 4)
= {IEEERemainder(3,
4)}"); // -1 - Different from 3 % 4
= 1
WriteLine(Environment.NewLine + "Pow - Returns a
specified number raised to the specified power:"
+ Environment.NewLine + $"Pow(7,2) = {Pow(7, 2)}"); // 7 * 7 = 49
WriteLine(Environment.NewLine + "Sqrt - Returns the
square root of a specified number:"
+ Environment.NewLine + $"Sqrt(49) = {Sqrt(49)}"); // 49 / 7 = 7
WriteLine(Environment.NewLine + "Maximum and Minimum
numbers: ");
WriteLine($"Max - Returns the
larger of two numbers. Max(123.45, 567.89) = {Max(123.45, 567.89)}"); // 567.89
WriteLine($"Min - Returns the
smaller of two numbers. Min(123.45, 567.89) = {Min(123.45, 567.89)}"); // 123.45
ReadKey();
}
}
}
Kad pokrenete navedeni program on će vam prikazati sledeće rezultate:
SYSTEM.MATH CLASS
E - Returns the base of the natural logarithm: 2.71828182845905
PI - Returns PI number: 3.14159265358979
Abs - Returns the absolute number: Abs(-7) = 7
Trigonometric functions:
Acos - Returns the angle whose cosine is the specified number:
Acos(0) = 1.5707963267949
Cos - Returns the cosine of the specified angle:
Cos(2) = -0.416146836547142
Cosh - Returns the hyperbolic cosine of the specified angle:
Cosh(5) = 74.2099485247878
Asin - Returns the angle whose sine is the specified number:
Asin(0.2) = 0.201357920790331
Sin - Returns the sine of the specified angle:
Sin(2) = 0.909297426825682
Sinh - Returns the hyperbolic sine of the specified angle:
Sinh(-5) = -74.2032105777888
Atan - Returns the angle whose tangent is the specified number:
Atan(-5) = -1.37340076694502
Atan2 - Returns the angle whose tangent is the quotient of 2 specified numbers:
Atan2(2,1) = 1.10714871779409
Tan - Returns the tangent of the specified angle:
Tan(1) = 1.5574077246549
Tanh - Returns the hyperbolic tangent of the specified angle:
Tanh(0.1) = 0.0996679946249558
BigMul - Produces the full product of two 32-bit numbers:
BigMul(int.MaxValue, int.MaxValue) = 2147483647*2147483647 = 4611686014132420609
Ceiling and Floor methods:
Value Ceiling Floor
7.03 8 7
7.64 8 7
0.12 1 0
-0.12 0 -1
-7.1 -7 -8
-7.6 -7 -8
Round - Round type numbers in many ways:
Round(123.45) = 123
Round(123.45, 1, MidpointRounding.AwayFromZero) = 123.5
Round(123.45, 1, MidpointRounding.ToEven) = 123.4
Truncate - Calculates the integral part of a specified number:
Truncate(56.789) = 56
Truncate(-56.789) = -56
Exp - Returns e raised to the specified power. Exp(0.5) = 1.64872127070013
Log - Returns the natural (base e) logarithm of a specified number:
Log(1.2) = 0.182321556793955
Log(double, double) - Returns the logarithm of a specified number
in a specified base.
Log(1.2, 0.1) = -0.0791812460476248
Log10 - Returns the base 10 logarithm of a specified number.
Log10(50) = 1.69897000433602
DivRem - Calculates the quotient of two integers and also returns the remainder
in an output parameter.
number1 = 100
number2 = 35
quotient = 2
The rest of the number: 30
IEEERemainder - Returns the remainder resulting fromthe division of a specified
number by another specified number.
IEEERemainder(3, 4) = -1
Pow - Returns a specified number raised to the specified power:
Pow(7,2) = 49
Sqrt - Returns the square root of a specified number:
Sqrt(49) = 7
Maximum and Minimum numbers:
Max - Returns the larger of two numbers. Max(123.45, 567.89) = 567.89
Min - Returns the smaller of two numbers. Min(123.45, 567.89) = 123.45
Kako to sve izgleda možete pogledati i na video-u:
( C# 6.0 Tutorial - Fundamentals - 35. Math Class )
No comments:
Post a Comment