(Ichma ich) shart operatorlari - O’zbekiston respublikasi oliy va o’rta maxsus ta’lim vazirligi buxoro davlat universiteti

(Ichma ich) shart operatorlari.
23
Ichma ich shart operatorlari - bu C# dasturlash tilining afzalligi bo’lib, bunda
bir necha murakkab shartlarni bir shart orqali tekshirish, aniqlash mumkin. Bir
o’zgaruvchi qiymatini bir necha shartlar orqali tekshirish uchun ichma ich bir
necha shart operatorlaridan foydalanish mumkin :
using System;
class Values
{
static void Main( )
{
int temp = 25;
if (temp > 21)
{
if (temp < 26)
{
Console.WrireLine (
"Temperatura meyorda");
if (temp == 24)
{
Console.WriceLine("ishlash sharoiti optimal");
}
else
{
Console .WriteLine ("ishlash sharoiti optimal emas\n" +
"optimal temperatura 24");
} } }
Ko’p shartlilik qo’llanilishi.
Bunda bir necha shartni bir vaqtda tekshirish zarurati hisobga olinadi. C#
tilida buning uchun maxsus qo’shish (shartni) kalit so’zlari mavjud : && va,
| | yoki, ! inkor (!= bo’lsa, teng emas ma’nosida) .
Misol:
24
using
System;
using
System.Text;
namespace
hhhhh
{
class
Program
{
static
void
Main(
string
[] args)
{
double
a, b, c;
Console
.Write(
"a="
);
a =
int
.Parse(
Console
.ReadLine());
Console
.Write(
"b="
);
b =
int
.Parse(
Console
.ReadLine());
Console
.Write(
"c="
);
c =
int
.Parse(
Console
.ReadLine());
if
((a + b > c) && (a + c > b) && (b + c > a))
{
Console
.WriteLine(
"uchburchak yasaldi!"
);
double
s=0, p=(a+b+c)/2;
s =
Math
.Sqrt(p*((p - a)*(p - b)*(p -c)));
Console
.WriteLine(
"yuzasi s="
+ s);
}
else
Console
.WriteLine(
"uchburchak yasalmadi!"
);
Console
.ReadKey();
}
}
}
Natija: Uchburchak yasalishini tekshiradi va uni yuzini
hisoblab beradi!
25
Bu misolda har bir if operatori ikkita shartni tekshirib boradi.
Switch operatori.
Juda ko’p hollarda ichma ich yozilgan shart operatorlari ko’p tekshirish olib
borib bir nechta amal bajaradi. Lekin bulardan faqat bittasigina haqiqiy bo’ladi.
Masalan,
if (a == 10) Console.WriteLine("a teng 10");
else
if (a == 20) Console.WriteLine(a teng 20 " ) ;
else
if (a == 30} Console.WriteLine("a teng 30 " ) ;
else ....
Bunday murakkab shart tekshirilishi bo’lganda if operatoridan ko’ra, uning yangi
versiyasi bo’lgan switch dan foydalanish afzal.Switch operatori quyidagicha
ishlaydi :
Switch (ifoda)
{
case : o’zgarmas ifoda : instruksiya
o’tish ifodasi
[default : instruksiya]
}
Ko’rinib turibdiki, switch da ham tekshirilayotgan ifoda if … else dagi kabi, ( )
orasiga olingan va operatordan keyin yozilgan.Case(tekshirish) va default (aks
holda) bo’limlari
qaysi amal bajarilishi zarurligini aniqlab beradi.Case operatori albatta biror bir
tenglashtirish uchun qiymat talab qiladi.
{
switch (a)
case 10:
Console.WriteLine("a 10") ;
break;
26
case 20:
Console.WriteLine("a 20");
break;
case 30: Console.WriteLine("a 30");
break;
}
Switch operatorida default amalini yozish shart emas, chunki u berilgan
qiymatning tanlangan birorta qiymatga mos kelmaganda bajariladigan amallarni
o’z ichiga oladi. Agarda berilgan qiymat birorta tanlangan qiymatga mos kelsa, u
holda case amalidan keyin bajariladigan amallar (ular bir nechta bo’lsa, { } orasiga
olinadi) bajariladi, so’ng break amali switch operatorining ishini shu joyda
to’xtatadi va switch operatoridan keyin keladigan operator ishini davom ettiradi.
C va C++ tillarida keyingi case amaliga avtomatik o’tishingiz mumkin, agarda
oldingi case amalining oxirida break yoki goto operatorlari yozilmagan bo’lsa.
Shunday qilib, C# va C++ da quyidagicha yozish mumkin :
Case : statement 1 ;
Case : statement 2;
Break ;
Bu misolda statement 1 dan so’ng statement 2 ga avtomatik tarzda o’tiladi
(C++ da). C# da bu dastur ishlamaydi, chunki C# tili sintaksisida case1 dan case2
ga ikki xil vaziyatda o’tish mumkin : agarda birinchi amal bo’sh bo’lsa yoki break,
goto operatorlari yordamida.Har bir case operatori o’zida break amalini ushlab
turishi lozim.
Masalan oddiy hafta kunlarini aniqlash dasturini ko’ramiz:
static void Main(string[] args)
{
a1: Console.Write("hafta kunini kiriting - > ");
int a = int.Parse(Console.ReadLine());
switch (a) {
case 1: Console.WriteLine("Yakshanba");break;
27
case 2: Console.WriteLine("Dushanba"); break;
case 3: Console.WriteLine("Seshanba"); break;
case 4: Console.WriteLine("Chorshanba"); break;
case 5: Console.WriteLine("Payshanba"); break;
case 6: Console.WriteLine("Juma"); break;
case 7: Console.WriteLine("Shanba"); break;
default: Console.WriteLine("xatolik bor!"); goto a1; break;
}
Console.ReadKey();
}
Natija:
Kiritilgan raqamga qarab hafta kunlarini aniqlab ekranga chop etadi!
Switch va satrlar bilan ishlash.
Yuqorida keltirilgan misollarda userlar butun tipga tegishli edi.Agarda siz
switch operatorini satrli tipda ishlatmoqchi bo’lsangiz, u holda quyidagicha
yozishingiz mumkin :
Case “Artur”:
Agarda tekshirish uchun satrlar ko’p bo’lsa, butun tipli o’zgaruvchilar ko’p
marotaba case operatorini ishlatishga majbur etadi.
Misol :
using
System;
using
System.Text;
namespace
satrda
{
class
Program
{
static
void
Main(
string
[] args)
{
Console
.WriteLine(
"Oyni bosh harf bilan kiriting!"
);
string
oy =
Console
.ReadLine();
28
switch
(oy) {
case
"Dekabr"
:
case
"Yanvar"
:
case
"Fevral"
:
Console
.WriteLine(
" Qish 2-oy"
);
break
;
case
"Mart"
:
case
"Aprel"
:
case
"May"
:
Console
.WriteLine(
" Bahor ! 5-oy"
);
break
;
case
"Iyun"
:
case
"Iyul"
:
case
"Avgust"
:
Console
.WriteLine(
" Yoz 8-oy"
);
break
;
case
"Sentabr"
:
case
"Oktabr"
:
case
"Noyabr"
:
Console
.WriteLine(
" Kuz 11-oy"
);
break
;
default
:
Console
.WriteLine(
"kiritishda xatolik bor!"
);
break
;
}
Console
.ReadKey();
}
}
}
Natija :oyni bosh harf bilan kiriting !
Iyun
Yoz 6-oy
|