8.3. Математик функциялар- Math базавий синфи
Энг содда дастурлар чизиқли дастурлар ҳисобланиб, бирор маълумотни киритиш, киритилган маълумотни бирор формула орқали ҳисоблаш ва олинган натижани чоп қилишдан иборат бўлади.ҳисоблашда фойдаланиладиган формулалар аксарият холларда математик функциялардан иборат бўлади. C# да математик функциялар System номлар маконинг Math синфида жамланган. Math синфининг услуб ва майдонлари 5.3.1-жадвалда келтирилган.
8.3.1-жадвал. Math синфининг асосий майдон ва статик усуллари.
|
Номи
|
Тавсифи
|
Натижа типи
|
Изоҳ
|
Abs(х)
|
Модуль
|
Қайта юкланувчи
|
Математик | x |
|
Acos
|
Арккосинус
|
double
|
Acos(double x)
|
Asin
|
Арксинус
|
double
|
Asin(double x)
|
Atan
|
Арктангенс
|
double
|
Atan2(double x, double y) —
бурчак,y/x тангенси
|
BigMul
|
Кўпайтириш
|
long
|
BigMul(int x, int y)
|
Ceiling
|
Катта сонга қараб яхлитлаш
|
double
|
Ceiling(double х)
|
Cos
|
Косинус
|
double
|
Сos(double x)
|
Cosh
|
Гиперболик косинус
|
double
|
Cosh(double x)
|
DivRem
|
Бўлинма ва қолдиқ
|
Қайта юкланувчи
|
DivRem(x, y, rem)
|
E
|
е сони
|
double
|
Қиймати - 2,71828182845905
|
Exp
|
Экспонента
(ex )
|
double
|
Exp(x)
|
Floor
|
Кичик сонга қараб яхлитлаш
|
double
|
Floor(double х)
|
IEEERemainder
|
Бўлинманинг қолдиқ қисми
|
double
|
IEEERemainder(double x, double y)
|
Log
|
Натураль логарифм
loge x
|
double
|
Log(x)
|
Log10
|
10 асосли логарифм
|
double
|
log10 x записывается как Log10(x)
|
Max
|
Иккита соннинг максимуми
|
Қайта юкланувчи
|
Max(x, y)
|
Min
|
Иккита соннинг минимуми
|
Қайта юкланувчи
|
Min(x, y)
|
PI
|
-сони
|
double
|
3,14159265358979
|
Pow
|
Даражага кўтариш
xy
|
double
|
Pow(x, y)
|
Round
|
Яхлитлаш
|
Қайта юкланувчи
|
Round(3.1) =3;
Round (3.8)=4;
|
Sign
|
Соннинг ишораси
|
int
|
Sign(х)
|
Sin
|
Синус
|
double
|
Sin(double x)
|
Sinh
|
Гиперболик синус
|
double
|
Sinh(double x)
|
Sqrt
|
Квадрат илдиз
|
double
|
Sqrt(x)
|
Tan
|
Тангенс
|
double
|
Tan(double x)
|
Tanh
|
Гиперболик тангенс
|
double
|
Tanh(double x)
|
Мисол:
using System;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{
Console.Write( "х ни киритинг: " );
double x = double.Parse( Console.ReadLine() );
Console.Write( "y ни киритинг: " );
double y = double.Parse( Console.ReadLine() );
Console.WriteLine( " х ва y нинг максимуми: " + Math.Max(x, y) );
double z = Math.Pow(Math.Sin(x), 2) + Math.Pow(Math.Sin(y), 2);
Console.WriteLine( " sinx* sinx+ siny* sinx= " + z );
}
}
}
Листинг 8.3.1. Math синфи услубларидан фойдаланиш
8.4. Дастурий коднинг блоклари
С# да нуқтали вергул(;) тугаган ҳар бир қатор қандайдир жараённи бажарувчи тугалланган оператор сифатида қаралади. Хусусий холда эса ; бўш оператор ҳисобланади. Масалан:
i++; // инкремент амали бажарилади
a *= b + c; // кўпайтириб, ўзлаштириш амали бажарилади
fun( i, k ); // функция чақирилади
while( true ); // бўш операторли цикл.
Блок – фигурали қавслар {} орасига ёзилган операторлар кетма-кетлигидан ташкил топган дастур қисмидир. Компилятор томонидан блок битта оператор каби қабул қилинади. Блок нафақат бир нечта балки, битта оператордан ёки бўш оператордан ҳам ташкил топиши мумкин. Бундан ташқари блокнинг ичида ички блоклар ҳам жойлашиши мумкин.
Блокнинг вазифаси – операторларни гуруҳлашдан иборат.
9-10 маърузалар (4-соат)
Тармоқланувчи жараёнларни C# да дастурлаш.
Шарт текшириш операторлари.
Режа:
if-else конструкцияси(if оператори).
switch-case конструкцияси
Қисқа шартли(тернар) оператор.
9.1. if-else конструкцияси(if оператори).
Тармоқланувчи жараёнлар ҳисоблаш жараёнини бирор шартга кўра икки томонга тармоқланишини таъминлайди. Тармоқланувчи жараённинг структурали схемаси бизларга блок-схемалардан таниш 6.1.1-расм.
9.1.1-расм. Тармоқланувчи жараённинг структурали схемаси
Тармоқланувчи жараёнларни ҳисоблаш операторларидан бири бу if-операторидир.
Синтаксиси:
If(шарт)
{1-блок. агар шарт бажарилса бажарилувчи оператор(лар);}
[else]
{2-блок. агар шарт бажарилмаса бажарилувчи оператор(лар);}
Бунда биринчи навбатда шарт ўрнида қўлланилувчи мантиқий ифода текширилади. Агар ушбу шарт бажарилса, 1 блокдаги оператор(лар) бажарилади, акс ҳолда 2 блокдаги операторлар бажарилади. If операторининг ўзи етарли бўлса, else – қисми ёзилмаслиги ҳам мумкин.
Агар шарт бажарилганда ёки бажарилмаганда бажарилувчи опертор битта бўлса, блок қавслари{}ни ишлатмаса ҳам бўлади.
Масалан:
...
int i=16;//
if (i>10) // Агар i 10 дан катта бўлса
--i; //i=i-1
else //Акс холда
i++ // i=i+1
...
Агар шарт текширилаётган ўзгарувчи(ёки ўзгармас) сонли тип бўлса, ва уни 0 дан фарқлилиги текширилса, у холда қуйидагича ёзиш мумкин.
...
if (i) // Агар i<>0 бўлса
i++; //i=i+1
else //Акс холда
i-- // i=i-1
...
Агар текширилувчи шартнинг инкори бажарилиш лозим бўлса, қуйидагича ёзилади:
...
if !(i>10) // Агар i 10 дан катта бўлмаса
i--; //i=i-1
else //Акс холда
i++ // i=i+1
...
Агар текширилувчи шартлар бир нечта бўлса, уларни мантиқий шартли амаллар билан бир-бирига боғлаш лозим. Масалан:
...
if(a && (a>d || a==0))
b++;
else{ b*=a; a=0; }
...
Нишонга отилган ўқлар бўйича тўпланган очколарни уларнинг кординатасига нисбатан ҳисоблаш дастурини кўриб чиқайлик(6.1.2-расм).
9.1.2-расм. Нишон
//X – Нишонга теккан ўқнинг х кординатаси
//Y - Нишонга теккан ўқнинг y кординатаси
using System;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{
Console.WriteLine("X – Нишонга теккан ўқнинг х кординатаси");
Console.WriteLine("Y – Нишонга теккан ўқнинг y кординатаси");
Console.WriteLine( " x ни киритинг:" );
double x = Convert.ToDouble(Console.ReadLine() );
Console.WriteLine( " y ни киритинг:" );
double y = double.Parse( Console.ReadLine() );
int kol = 0;
if ( x * x + y * y < 1 ) kol = 2;
else if ( x * x + y * y < 4 ) kol = 1;
Console.WriteLine( "Результат = {0} очко", kol );
}
}
}
Листинг 9.1.1. Нишонга отилган ўқлар бўйича очкони ҳисоблаш дастури
If..else конструкцияси ичида яна бир нечта If..else конструкциясин қўллаш мумкин. Лекин бу дастурни мураккаблашиб кетишига олиб келиши мумкин.
Ичма-ич жойлашган If..else конструкциясига мисол тариқасида 9.1.2 листингда киритилган 3 та сондан энг катта ва энг кичигини топиш дастури келтирилган.
using System;
namespace uch_sondan_topish
{
class Program
{
static void Main(string[] args)
{
double a, b, c, max=0, min=0;
//string smax, smin;
Console.Write("A=");
a = double.Parse(Console.ReadLine());
Console.Write("B=");
b = double.Parse(Console.ReadLine());
Console.Write("C=");
c = double.Parse(Console.ReadLine());
if ((a == b) && (b == c))
Console.WriteLine("a, b, c sonlari o'zaro teng!");
else
{
if (a > b)
{ max = a; min = b;}
else if (a < b)
{max = b; min = a;} //****2
else
{max = b; min = b;}
//***********************
if (max < c)max = c;
else if (min > c)min = c;
else if (max == c)max = c;
else if (min == c)min = c;
}
Console.WriteLine("MAX=" + max + ", MIN=" + min + ",\n ");
Console.ReadKey();
}
}
}
|
Листинг 9.1.2. 3 та сондан энг катта ва энг кичигини топиш дастури
9.2.Қисқа шартли оператор
Ушбу оператор билан биз аввалги маърузаларимизда танишиб ўтган эдик. Ушбу операторни тернар оператор ҳам деб аталади. Одатда тернар операторидан шартга мос равишда бажарилувчи операторлар сони биттадан кўп бўлмаганда фойдаланиш қулайдир.
Синтаксиси: <шарт ? [рост бўлса, оператор]:[ёлғон бўлса, оператор]>
Масалан:
int i=10;
Console.WriteLine(i==10 ? “i = 10”:“i <> 10”);
Console.WriteLine(i<20 ? “i < 20”:“i >= 20”);
If..else конструкцияси ва тернар операторларидан дастурларда фойдаланишга мисоллар.
1-Мисол. Киритилган сонларни бошқа бир сонга қолдиқларсиз бўлинишини текшириш дастурини тузишда if..else ва тернар операторларидан фойдаланиш.
using System;
namespace qoldiqsiz_bolinish_consol
{
class Program
{
static void Main(string[] args)
{
Console.Write("Bol'inuvchi sonni kiriting:");
double b = int.Parse(Console.ReadLine());
//2 га бўлинишини текшириш
if (b > 2)
{
Console.WriteLine(b % 2 == 0 ?
b + " soni 2 ga qoldiqsiz bo'linadi!\n " + b + "/2=" + b / 2 :
b + " soni 2 ga qoldiqsiz bo'linmaydi!\n " + b + " ni 2 ga bolishda butun qismi " + (b - (b % 2)) / 2 + " qoldiq qismi = " + b % 2);
}
else
{ Console.WriteLine(b+" son 2 dan kichik, shu sababli u 2 ga qoldiqsiz bo'linmaydi!"); }
Console.WriteLine();
//3 га бўлинишини текшириш
if (b > 3)
{
Console.WriteLine(b % 3 == 0 ? b + " soni 3 ga qoldiqsiz bo'linadi!\n " +
b + "/3=" + b / 3 :
b + " soni 3 ga qoldiqsiz bo'linmaydi!\n " +
b + " ni 3 ga bolishda butun qismi " +
(b - (b % 3)) / 3 + " qoldiq qismi = " + b % 3);
}
else
{ Console.WriteLine(b + " son 3 dan kichik, shu sababli u 3 ga qoldiqsiz bo'linmaydi!"); }
Console.WriteLine();
//4 га бўлинишини текшириш
if (b > 4)
{
Console.WriteLine(b % 4 == 0 ? b + " soni 4 ga qoldiqsiz bo'linadi!\n " +
b + "/4=" + b / 4 :
b + " soni 4 ga qoldiqsiz bo'linmaydi!\n " +
b + " ni 4 ga bolishda butun qismi " +
(b - (b % 4)) / 4 + " qoldiq qismi = " + b % 4);
}
else
{ Console.WriteLine(b + " son 4 dan kichik, shu sababli u 4 ga qoldiqsiz bo'linmaydi!"); }
Console.WriteLine();
//5 га бўлинишини текшириш
if (b > 5)
{
Console.WriteLine(b % 5 == 0 ? b + " soni 5 ga qoldiqsiz bo'linadi!\n " +
b + "/5=" + b / 5 :
b + " soni 5 ga qoldiqsiz bo'linmaydi!\n " +
b + " ni 5 ga bolishda butun qismi " +
(b - (b % 5)) / 5 + " qoldiq qismi = " + b % 5);
}
else
{ Console.WriteLine(b + " son 5 dan kichik, shu sababli u 5 ga qoldiqsiz bo'linmaydi!"); }
Console.WriteLine();
Console.ReadKey();
}
}
}
|
20>
Do'stlaringiz bilan baham: |