2- Зертханалық сабақ. Шартты операторлар. 2 зертханалы жмыс. Шартты операторлар жне Math каласыны дістерін пайдалану. Math класы
Скачать 130.71 Kb.
|
2- Зертханалық жұмыс. Шартты операторлар және Math каласының әдістерін пайдалану. Math класы. C# тілінде математикалық формулаларды есептеу үшін арнайы Math класы қолданады. Математикалық функциялар, мысалы, синус, косинус, дәрежелеу System атаулар кеңістігінде анықталған Math класында орындалады. Осы класс тәсілдері арқылы мыналар есептелінеді: тригонометрииялық функциялар: Sin, Cos, Tan; кері тригонометрииялық функциялар: ASin,ACos,ATan,ATan2; гиперболалық функциялар: Tanh, Sinh, Cosh; экспонента мен логарифмдік функциялар: Exp,Log,Log10; модуль (абсолюттік шама), квадрат түбір, таңбаны анықтау: Abs, Sqrt, Sign; дөңгелектеу: Ceiling,Floor,Round; минимум, максимум: Min, Max; дәрежелеу, қалдық табу: Pow, IEEEReminder; екі бүтін шаманың толық көбейтіндісі: BigMul; бөлу және бөлгендегі қалдықты табу: DivRem.
2.3 – кесте. Math класының негізгі өрістері мен статикалық функциялары С# тілінде кездескен кез-келген математикалық формулаларды Math класының 2.3 – кестегі сәйкес әдістері бойынша программалаймыз. Бұл әдістерді осы курста түрлі тақырыптар бойынша мысал келтіру барсында қолданатын боламыз. Төменде Math класының әдістері қолданылатын формула бойынша есептеу программасын құру мысалын көрсетейік: Мұндағы енгізілетін айнымалыларымыз (мәндер) - х пен а. Олардың типтері көрсетілмегендіктен нәтижемен қоса бәрін double типінде сипаттаймыз. Бұл өрнекте квадрат түбір, π, экспонента, дәреже, тангенс, логарифм бар. Сондықтан программа құрған кезде сол бойынша math класының әдістерін қолданамыз. Берілген формула бойынша есептеу программасы: using System; namespace ConsoleApplication1 { class Class1 { static void Main() { double x, a, y; Console.WriteLine(" х = "); x = Convert.ToDouble(Console.ReadLine()); Console.WriteLine(" alfa = "); a = double.Parse(Console.ReadLine()); 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(" x = {0} , alfa = {1} болса, ", x, a); Console.WriteLine(" y ={0,10:F3}",y);} } } Шартты операторлар және шартты операция Программалау барысында белгілі бір шарт аясында таңдау жасауға тура келетін тармақталу алгоритмдері шартты операторлар арқылы жүзеге асады. Жалпы тармақталу алгоритмдері екі түрде кездеседі, олар "таңдау" және "аттап өту" мүмкіндіктері болып бөлінеді. "Таңдау" жолымен тармақталуда берілген шарт тексеріледі (2.1-сурет), егер ол шарт орындалса (орындалуы ақиқат болса), онда 1-амал жүзеге асырылып, содан кейін келесі 3-амалға көшеміз. Ал, егерде шарт орындалмаса, яғни оның орындалу мүмкіндігі жалған болса, онда 2-амал атқарылып, содан кейін 3-амал атқарылады. Сонымен, шарттың ақиқат немесе жалған болуына байланысты 1-амал немесе 2-амал орындалады. "Аттап өту" (2.2-сурет) алгоритмінде шарт орындалмаса (жоқ), 1-амалды аттап өтіп, бірден 2-амалды, содан кейін 3-амалды орындаймыз. Ал шарт ақиқат болса, онда 1-амал міндетті түрде орындалып, одан кейін 2- және 3-амалдар жүзеге асырылады. Тармақталу кезеңінде шартты тексеру блогы орындалуы барысында, алгоритмнің екі мүмкіндігінің тек біреуі ғана таңдап алынып жүзеге асырылады да, ал екінші таңдап алынбаған тармақ біріктіру нүктесіне дейін орындалмай қалады. Енді осыған нақты мысалдар келтірейік. 2.1-сурет. "Таңдау" алгоритмі 2.2-сурет."Аттап өту" алгоритмі Яғни тармақталған операторлар тізбегінен берілген шарт бойынша бір тармақтың нәтижесін алу үшін шартты операторлар қолданылады. Мұнда берілген шарт тексеріледі, егер ол ақиқат болса, онда бірінші оператор, ал жалған болса екінші оператор орындалады. Шартты операторлар if түйінді сөзінен басталады. Жалпы if шартты операторының толық түрінің жазылу формасы (2.1-сурет) келесідей: if (шарт) 1-оператор; else 2-оператор; Ал енді аттап өту алгоритмін орындау кезінде оң жақтағы операторды жазбай кетуге болады (2.2-сурет). Бұл else бөлігі жазылмаған жағдайға сәйкес келеді, орындалатын 1-оператор ғана жазылып – шартты оператордың қысқаша түрі қолданылады. Операторды орындау барысында шарт мәні тексеріледі. Егер оның мәні «ақиқат» («иә») болса, онда 1-оператор орындалады. Егер шарт «жалған» («жоқ») болса, онда 1-оператор атталып өтіледі де, бірден 3-оператор атқарылады (2.2-сурет). Сонымен, if шартты операторының қысқаша түрінің жазылу формасы: if (шарт) 1-оператор; Шартты операторларды орындау барысында салыстыру операциялары қолданылады. Ал оның тармақталуы шарт бойынша анықталады. Мысал ретінде, төмендегі өрнекте шартты оператордың қалай қолданылатынын көрсетейік: Берілген математикалық функцияда х айнымалысын π-дің мәнімен салыстыру арқылы у айнымалысының мәнін есептейтін өрнек таңдалады. Сондықтан бұл өрнекте шартты оператор келесідей түрде қолданылады: if (x >= pi) y=Math.Sin(Math.Sqrt(x)); else y=x*Math.Exp(x+1); Шартты оператордың қысқаша түріне мысал ретінде айнымалы мәні теріс болған жағдайда оның абсолюттік шамасын табатын өрнекті келтіруге болады: if (x<0) y=Math.Abs(x); Кей жағдайда шартқа байланысты шартты оператор екіден артық тармақтардан тұрады. Ондай жағдайда шартты оператордың бірінен кейін бірі келетін if – else if – else нұсқасы қолданылады. Бұны қабаттасқан шартты операторлар деп атайды. Қабаттасқан шартты оператордың жалпы жазылу формасы: if (шарт-өрнек 1 ) 1-оператор; else if (шарт-өрнек 2 ) 2-оператор; … else if (шарт-өрнек n ) n оператор; else n+1 оператор; if операторын қабаттастыра отырып, күрделі өрнек мәндерін анықтайтын жағдайлар да жиі кездесіп отырады, мысалы келесі мысалды санды енгізу арқылы апта күнін анықтау программасы жазылған: class Program { static void Main(string[] args) { int c; Console.Write(" c = "); c = int.Parse(Console.ReadLine()); if (c == 1) Console.WriteLine("Bugin duysenbi"); else if (c == 2) Console.WriteLine("Bugin seysenbi"); else if (c == 3) Console.WriteLine("Bugin sarsenbi"); else if (c== 4) Console.WriteLine("Bugin beysenbi"); else if (c== 5) Console.WriteLine("Bugin juma"); else if (c == 6) Console.WriteLine("Bugin senbi"); else if (c == 7) Console.WriteLine("Bugin jeksenbi"); else Console.Write("qate, 1…7 sandaryn engizu kerek"); Нәтижесі: Бұл мысалда if – else нұсқасы 7 рет қайталанып, шарт бойынша 8 оператордың бірі орындалады. Мұндай кездерде компилятор else түйінді сөзін оның алдындағы ең соңғы if операторымен байланыстырады. Сондықтан else түйінді сөзін соған сәйкес if сөзімен бір деңгейде жазған ыңғайлы болады Ал келесі мысалда нақты x санының қабылдайтын мәніне байланысты у өрнегін есептеп шығару керек. Бұл өрнекте х үш түрлі аралықта мән қабылдайды, соған сәйкес if – else нұсқасы үш рет жазылады. Х айнымалысының қай аралыққа кіретінін тексеріп, соған сәйкес өрнек есептеледі. Программа кодының негізгі бөлігі: s tatic void Main() { double x,y; const double p = 3.14159; Console.Write("Enter x: "); x=double.Parse(Console.ReadLine()); if (x>1) { y=x*x-p*Math.Sin(x); } else if (0 else { y=0; } Console.WriteLine("x={0,5:f2} y={1,7:f3}",x,y); } Кейбір кездерде шартты оператор орнына оның қысқаша үш орындық операция түрінде жазылған нұсқасы қолданылады. Шартты операция ( ? : ) – тернарлық операция үш операндтан тұрады. Оның жазылу форматы: 1-операнд ? 2-операнд : 3-операнд Егер оның шарты (бірінші операнды) ақиқат болса, өрнек мәні екінші операндқа тең; егер жалған болса, онда — үшіншіге тең. Мысалы: max_ab = a > b? a : b; abs_x = x < 0? -x : x; Мысалы келесі программада екі санның үлкенін анықтайтын шартты операция қолданылған. using System; namespace Ternar1 { class Program { static void Main() { int a = 11, b = 4; int max = b > a ? b : a; Console.WriteLine("max=" + max ); // Нәтиже 11 } } } Программа нәтижесі: Бұл мысалда бірінші операнд b > a шарты тексеріледі. Егер шарт ақиқат болса өрнектің мәні b aйнымалысы (екінші операнд), шарт жалған болса а айнымалысы мәніне (үшінші операнд) тең болады. Бұл жерге а айнымалысының мәні 11, b айнымалысының мәні 4 болғандықтан, шарт жалған болып, үшінші операндтың мәні шығады. Екі санның үлкені ретінде а айнымалысының мәні 11 болады. 2 зертханалық жұмысқа арналған тапсырмалар 1. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 2. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 3. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 4. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 5. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 6. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 7. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 8. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 9. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 10. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 11. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 12. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 13. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 14. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 15. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. 16. х – аргументіне берілген мән бойынша f(x) функциясын есептеу программасын және алгоритмнің блок-схемасын құру. f(x) функциясының мәні шартты оператор көмегімен есептеледі. |