Бағдарламалу технологиясы


C# ТІЛІНІҢ КҮРДЕЛІ ОПЕРАТОРЛАРЫ



жүктеу 1,63 Mb.
бет22/73
Дата03.02.2022
өлшемі1,63 Mb.
#35497
түріОқулық
1   ...   18   19   20   21   22   23   24   25   ...   73
Ба?дарламалу технологиясы

3 C# ТІЛІНІҢ КҮРДЕЛІ ОПЕРАТОРЛАРЫ




3.1 Шартты өту операторы if

Бағдарламалау тілдерінде барлық операторлар қарапайым және күрделі операторлар болып бөлінеді. Сонымен бірге күрделі оператор деп өз қызметінде басқа операторларды қолданатын операторды жатқызуға болады.

C# тілінде күрделі оператордың бірнеше операторы болса, онда ол фигуралы жақшаға алынады.

Кең таралған күрделі операторларға шартты өту операторы және цикл операторы жатады. Әлбетте, C# тілінде басқа да күрделі операторлар бар, бірақ оқулықтың осы бөлімінде біз тек осы екі операторларды ғана қарастырамыз.

if шартты өту операторы бағдарламада есепті шешу алгоритмінің кейбір логикалық шартын тексеруді және тексерудің нәтижесіне байланысты бағдарламаның жұмысын мүмкін екі жолдың бірімен жалғастыру керек болған жағдайда қолданылады. Бағдарламаның «тармақталған» учаскесі термині де бар, оларға ауысу үшін шартты өту операторы қолданылады.

if операторының жазылу пішімі:

if ( шарт) { операторлар; } else { операторлар;}

Егер шарт «ақиқат» болса, онда шарттан кейін орналасқан, фигуралық жақшалар ішіндегі операторлар орындалады, әйтпесе else қызметтік сөзінен кейін орналасқан, фигуралық жақшалар ішіндегі операторлар орындалады. Мысалы,

if (a > b) { x = a; y = b;} else { x = b; y = a;}

Көрсетілген үзіндіде азаймалы ретте екі айнымалының мәндерін ретке келтіру алгоритмі қарастырылған. a және b айнымалының мәндері салыстырылады және ең жоғарғы мәні бар айнымалы x айнымалысына, ал ең кіші мәні бар айнымалы y айнымалысына меншіктеледі.

Есептің шарты бойынша екі айнымалының арасындағы ең үлкен мәнін табу және оны x айнымалысына меншіктеу керек болса, онда осы есептің шешімінің алгоритмін шартты өту операторы арқылы жазуға болады:

if (a > b) x = a; else x = b;

Осы жазбада оператордың іс-әрекет облысын ерекшелеу үшін фигуралық жақшалар қолданылмайды, өткені оператордың іс-әрекет облысы шарттың ақиқат және жалған мәндерінде бір ғана меншіктеу операторынан тұрады.

if операторының жазбасында else қызметтік сөзі болмауы мүмкін. Онда, шарт орындалмаған жағдайда бағдарлама if операторының сыртындағы операторды орындауға көшеді.

Егер if операторының іс-әрекет облысында басқа шартты өту операторлары болса, онда түсінбестікті болдырмау үшін else сөзі мен оның іс-әрекет облысы ең жақын сипаталған if операторына тиісті болады.

Есеп шішімі алгоритмінің құрылымдық схемаларын дайындағанда шарт ромб түрінде бейнеленеді, шартты жалғастырудың екі нұсқасы бар.

Шарттың графикалық көрінісі мына түрде болады:

3.1-сурет – Есеп шешімі алгоритмінің құрылымдық схемаларында шарттың графикалық көрінісі.


if операторының шарты алгебралық өрнектерден, салыстыру және логикалық операциялардан тұрады.

C# тілінде келесі салыстыру операциялары қолданылады:

A == B – егер A B-ға тең болса, нәтиже true мәніне, әйтпесе false мәніне тең болады;

A != B – егер A B-ға тең болмаса, нәтиже true мәніне, әйтпесе false мәніне тең болады;

A < B – егер A B-дан кіші болса, онда нәтиже true мәніне, әйтпесе false мәніне тең болады;

A > B – егер A B-дан үлкен болса, онда нәтиже true мәніне, әйтпесе false мәніне тең болады;

A <= B – егер A B-дан кіші немесе тең болса, онда нәтиже true мәніне, әйтпесе false мәніне тең болады;

A >= B – егер A B-дан үлкен немесе тең болса, онда нәтиже true мәніне, әйтпесе false мәніне тең болады;

C# тілінде логикалық операциялардың екі түрін айырады – разрядтық (поразрядные) логикалық операциялар және шартты логикалық операциялар. Разрядтық логикалық операциялар бүтін сандық типтерге қолданылады екілік (двоичном) түрде ұсынылған. Осы логикалық операцияларды қолданған кезде екілік нәтиже «0» немесе «1» болады.

Шартты логикалық операциялар әр түрлі операторлар «шарттарында» қолданылады және оның жұмысының нәтижесінің мәндері true немесе false болады.

Разрядтық логикалық операциялар:

& – разрядтық логикалық көбейту «ЖӘНЕ» операциясы;

| – разрядтық логикалық қосу «НЕМЕСЕ» операциясы;

^ – разрядтық логикалық алып тастау «НЕМЕСЕ» операциясы.

Шартты логикалық операциялар:

&& – логикалық көбейту «ЖӘНЕ» операциясы;

|| – логикалық қосу «НЕМЕСЕ» операциясы;

! – логикалық терістеу «ЖОҚ» операциясы.

Логикалық көбейту «ЖӘНЕ» операциясы true (ақиқат) мәнін қабылдайды, егер осы операцияның барлық көбейткіштері true мәніне тең болса.

Логикалық қосу «НЕМЕСЕ» операциясы true мәнін қабылдайды, егер осы операцияның кем дегенде бір қосылғышы true мәніне тең болса.

Өрнектің логикалық терістеу операциясы true мәнін қабылдайды, егер өрнек false мәніне тең болса. Өрнектің логикалық терістеу операциясы false мәнін қабылдайды, егер өрнек true мәніне тең болса.

Ескерту, логикалық операциялар салыстыру операцияларына қарағанда басымдығы төмен. Осыны кейбір логикалық өрнектерді жазуда ескеру керек. Мысалы, өрнегінің мәні «ақиқат» шартты өту операторын жазу керек болса, егер кейбір x айнымалы 0-ден үлкен, ал 10-нан кіші болса, онда бұл өрнек мына түрде жазылады:

if ( x > 0 && x < 10 ).

Шартты қолданатын есептің мысалын қарастырайық.

3.1 есебі. Диалог режимінде үшбұрыш жақтарын беру және оның периметрін есептеу керек. Үшбұрыш жақтарының мәндерін енгізгеннен кейін келесі тексерулерді орындау керек: үшбұрыштың барлық жақтары нөлден және кез келген екі жақтарының қосындысы үшіншісінен үлкен болуы керек. Бағдарлама жұмысына тиісті түсініктеме беру керек.

Есепті шешуге арналған құрылымдық схемасын дайындайық. Біріншіден, диалог режимінде үшбұрыш жақтарын енгізуді ұйымдастырамыз.

Одан кейін енгізілген сандармен үшбұрышты тұрғызу мүмкіндігі бойынша шарттарды тексеру керек . Егер «Иә» болса, онда үшбұрыштың периметрін есептеу және шығару керек, әйтпесе тиісті түсініктемені шығарыңыз. 3.1 есепті шешуге арналған алгоритмнің құрылымдық схемасы 3.2. суретінде көрсетілген.
Құрылымдық схемаларды бейнелегенде «төмен» және «жоғары» сызықтарының тілдері болмайды. Бірақ «солға» немесе «оңға» сызықтары болса, онда ортақ сызықтың тілі бар болуы керек.

3.2-суреті – Есепті шешуге арналған алгоритмнің құрылымдық схемасы

Есепті шешуге арналған алгоритмнің құрылымдық схемасына сәйкес бағдарлама кодын дайындаймыз.

using System;

namespace ConsoleApplication1

{

class Program



{

static void Main()

{

int a, b, c;



string buf;

vvod:


Console.Write("a bytin canin engiziniz ");

buf = Console.ReadLine();

a = Convert.ToInt32(buf);

Console.Write("b bytin canin engiziniz ");

buf = Console.ReadLine();

b = Convert.ToInt32(buf);

Console.Write("c bytin canin engiziniz ");

buf = Console.ReadLine();

c = Convert.ToInt32(buf);

if (a > 0 && b > 0 && c > 0)

if (a + b > c && a + c > b && b + c > a)

Console.WriteLine("PERIMETR = {0}", a + b + c);

else

{

Console.WriteLine("Yshbyrishtin bir kabirgasi kalgan eki kabirganin kocindisinan ylken nemese ten"); goto vvod;



}

else


{

Console.WriteLine("Bir kabirgasi <= 0 !");

goto vvod;

}

Console.WriteLine("Enter pernesin basiniz");



Console.ReadLine();

}

}



}
Бағдарлама жұмысы:

a bytin canin engiziniz 1

b bytin canin engiziniz 2

c bytin canin engiziniz 3

Yshbyrishtin bir kabirgasi kalgan eki kabirganin kocindisinan ylken nemese ten

a bytin canin engiziniz -4

b bytin canin engiziniz 5

c bytin canin engiziniz 6

Bir kabirgasi <= 0 !

a bytin canin engiziniz 7

b bytin canin engiziniz 8

c bytin canin engiziniz 9

PERIMETR = 24

Enter pernesin basiniz


Есепті шешуге арналған алгоритмнің «Шарты» бірнеше тексеруді жүргізеді. Тексеруді бір шартты өту операторымен немесе бірнеше шартты өту операторларымен орындауға болады, мысалы, екі.

Біздің бағдарламамызда екі if операторы қолданылған.

Бірінші if операторы үшбұрыштың барлық жақтары 0-ден үлкен болу шартын тексереді. Егер шарт орындалса, онда екінші if операторына көшу орындалады, әйтпесе монитор экранына “Bir kabirgasi <= 0 !” хабарламасы шығады және бағдарлама goto операторы арқылы үшбұрыш жақтарының мәндерін қайталап енгізу үшін vvod таңбасына (тамғасына) көшеді.

Екінші if операторының шартты үшбұрыш жақтарының арақатынасын тексереді. Егер шарт орындалса (бұл екі if оператордың шарттары орындалуымен сайма-сай), онда монитор экранына үшбұрыш периметрінің мәні шығады және бағдарлама аяқталады. Әйтпесе, монитор экранына «Yshbyrishtin bir kabirgasi kalgan eki kabirganin kocindisinan ylken nemese ten” хабарламасы шығады және goto оператор арқылы үшбұрыш жақтарының мәндерін қайталап енгізу орындалады.

goto операторы C# тілінің күрделі операторы болып табылмайды, бірақ әдетте бұл шартсыз өту операторы if шартты өту операторын оқығанда қарастырылады.

Шартсыз өту операторы пішімінің жазбасы: goto таңба; .

Шартсыз өту операторын қолдану алдында таңбаны жазу керек (біздің мысалда vvod идентификаторы:), оған біз бағдарламаны бағыттаймыз. Таңба атауынан кейін қос нүкте символын қою керек. Егер бағдарламада шартсыз өту операторы кездессе, онда бағдарлама тиісті таңбадан кейін тұрған операторды орындауға көшеді.

Бір таңбаға кем дегенде бір шартсыз өту операторы сәйкес келуі тиіс.

Біздің бағдарламада есеп шарттары орындалмаған жағдайында шартсыз өту операторының көмегімен үшбұрыш жақтарының мәндерін қайталап енгізу ұйымдастырылды («дұрыс» мәндер берілгенге дейін).

Есеп шешімінің алгоритмінде ол жоқ, бірақ бағдарлама кодын жазғанда есептің шешіміне жалпы шешімді жетілдіретін кейбір үзінділерді әрдайым толықтыруға болады.

Есептің шарты бойынша бағдарламаның орындалуы түсініктемелермен толықтырылуы тиіс. Мысалда үшбұрышты құрастыру шарттары орындалмаған жағдайда түсініктемелер қолданылады.

C# бағдарламалау тілінде шартты операторы бар, ол функция рөлін атқарады және оның жұмысының нәтижесін кейбір айнымалыға меншіктеу немесе кейбір өрнекте, басқа операторда қолдану керек. Қысқаша белгіленуі – ?:.

Осы оператордың пішімі келесі түрде болады:

өрнек1 ? өрнек2 : өрнек3;

мұндағы өрнек1 – шарт болады. Егер шарт ақиқат болса, онда ?: операторының мәні өрнек2 сәйкес, әйтпесе өрнек3. Мысалы, бағдарламаның келесі үзіндісінде осы оператор арқылы a, b және c үш айнымалысының ішінен ең жоғарғы мән анықталады:

x= a>b ? a : b;

x= x>c ? x : c;

?: операторын қысқартылған if операторы деп жиі атайды, өйткені оны кейбір есептерде шартты өту операторының орнына қолдануға болады. Алайда if операторы C# тілінің басқа операторларын өзіне қосуы мүмкін, ал ?: операторының ондай мүмкіндігі жоқ.

C# тілінде бағдарлама барысының бірнеше нұсқасының ішінен бірін таңдауды ұсынатын тағы да бір switch – шартты операторы бар.

switch операторының жұмысы мен жазу пішімін массивтер тақырыбында бағдарлама менюін дайындағанда қарастырамыз.




жүктеу 1,63 Mb.

Достарыңызбен бөлісу:
1   ...   18   19   20   21   22   23   24   25   ...   73




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау