Samarqand davlat universiteti raqamli texnologiyalar fakulteti optimal boshqaruv usullari kafedrasi


&& belgisi, bir vaqtning o‘zida ikkala hol ham(a>0, a%2



Yüklə 1,58 Mb.
səhifə23/79
tarix14.12.2023
ölçüsü1,58 Mb.
#179928
1   ...   19   20   21   22   23   24   25   26   ...   79
Java MAJMUA

&& belgisi, bir vaqtning o‘zida ikkala hol ham(a>0, a%2) rost(true) bo‘lsa, umumiy shart rost bo‘lishini ta’minlaydi. Agar son musbat bo‘lib, lekin juft bo‘lmasa, natija yolg‘on bo‘ladi va «NO» degan yozuv ekranga chiqadi.
Ko‘rib turganingizdek, dasturda bitta «if» operatori kamaydi va dastur tushunarli holga keldi.
Yana bir mantiqiy operator YOKI(||)ni ishlatib ko‘ramiz. Oldingi misolni faqat shartini o‘zgartiramiz.

1
2
3
4
5
6
7
8
9
10
11

class test{
public static void main(String[ ] args){
int a= -5;
if(a>0 || a>=-5)
{
System.out.println("OK");
}
else
System.out.println("No");
}
}

Shartga e’tibor bering, agar berilgan son musbat bo‘lsa(a>0) YOKI -5 soniga teng yoki undan katta bo‘lsa, «OK» yozuvi ekranga chiqsin. Bunda ikkita shartdan biri rost bo‘lsa, umumiy shart rost bo‘ladi va dastlabki blok(5-7) ishga tushadi. Bu shartni yana cho‘zish mumkin:
if(a>0 || a>=-5 || a==0)
Mantiqiy operatorlar, matematik ishoralar va tanlash operatorlarini istalgancha kombinatsiya qilish mumkin, bu ishlab chiqilgan algoritm asosida amalga oshiriladi. Qanday tartibda bo‘lishini ko‘rsatib o‘tdim, bularni ichiga qavslarni, inkor operatorini, teng emas belgisini ham kiritish mumkin, bular endi fikrlashga qarab amalga oshirilaveradi.
IF tanlash operatorini «if else» sintaksisidan boshqa, «else if» sintaksisi ham mavjud. Agar shart yolg‘on bo‘lsa, yana boshqa shart tekshiriladi toki oxirgi «else«(If siz else) operatori chiqmaguncha, agar «else» chiqmasa, dastur hech qanday amal bajarmaydi. Misol ko‘ramiz,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

class test{
public static void main(String[ ] args){
int month = 4;
String fasl="";
if(month == 1 || month == 2 || month == 12)
fasl = "Qish";
else if (month == 3 || month == 4 || month == 5)
fasl = "Bahor";
else if (month == 6 || month == 7 || month == 8)
fasl = "Yoz";
else if (month == 9 || month == 10 || month == 11)
fasl = "Kuz";
else
fasl = "Bunday fasl mavjud emas";
System.out.println(fasl);
}
}

Kiritilgan oy qaysi faslga to‘g‘ri kelganligi tekshirilib, ekranga fasl nomi chiqariladi, agar bunday oy bo‘lmasa «Bunday fasl mavjud emas» degan yozuv chiqadi(Natija: Bahor).
Agar oxirgi «else»(13 chi qator) bo‘lmasa va noto‘g‘ri son berilgan bo‘lsa(12 sonidan katta yoki kichik), ekranga hech narsa chiqmaydi(bo‘sh belgi chiqadi xolos), bu dasturni boshqarish (qaysi operator ishlaganini yoki umuman ishlamaganligini bilish uchun) imkonini beradi.
Shuning uchun «else if» sintaksisini dasturlarda ishlatganda, «if«siz «else» operatori mavjud bo‘lishi lozim.
Odatda, dasturlash bo‘yicha tajribaga ega dasturchilar, «if else» operatorlari o‘rniga «?» belgisidan foydalanib, kodni qisqartirishadi. Bu biroz noqulayroq(tushunarsiz) ko‘rinishga ega bo‘ladi. «if else» sintaksisiga misol ko‘ramiz

1
2
3
4
5
6
7
8
9
10



class test{
public static void main(String[ ] args){
int son1=10;
int son2=20;
int natija;
if (son1>son2)
natija = son1;
else
natija = son2;
}}

Misol oddiy, agar birinchi son katta bo‘lsa, «natija» nomli o‘zgaruvchi shu sonni qiymatini oladi, agar kichik bo‘lsa, «natija» nomli o‘zgaruvchi ikkinchi sonni qiymatini oladi.
Shu misolni «?» belgisi orqali yozamiz.

1
2
3
4
5
6
7

class test{
public static void main(String[ ] args){
int son1=10;
int son2=20;
int natija = son1>son2 ? son1: son2;
}
}

«?» belgisidan oldingi shart tekshiriladi, agar rost bo‘lsa chap tomondan birinchi o‘zgaruvchi(son1), yolg‘on bo‘lsa o‘ng tomondagi o‘zgaruvchi(son2) «natija» o‘zgaruvchisiga beriladi.
Bunday shartni tekshirish biroz noqulayroq ko‘rinishga ega.
Java dasturlash tilida tanlash operatorlarini o‘rganishni davom ettiramiz. №14 va №15 darslarimizda «IF» tanlash operatorini ko‘rib chiqdik, endi navbat»SWITCH» operatoriga.
Switch operatori, dastur ishlashini, berilgan qiymatga mos holda biror yo‘nalishga o‘zgartirib berishni ta’minlaydi. Bu operator, bir necha variantlardan kerakliligini tanlab olishda, «if» operatori o‘rnida ishlatiladi.
Albatta, barcha tanlovlarni «If» orqali amalga oshirish mumkin, lekin bir necha variantli tanlov bo‘lsa, «switch» operatorini ishlatish ham qulay, ham tartibli eng asosiysi tushunarli bo‘ladi. Bu operatorning strukturasi quyidagicha:
switch (biror qiymat) {
case 1-variant:
operator;
break;
case 2-variant:
operator;
break;
case N-variant:
operator;
break;
default:
operator; }
Qiymat sifatida «type«, «short«, «int«, «char» undan tashqari «string«(JDK7 va yuqorilari uchun) tiplari bo‘lishi mumkin. Berilgan qiymat takrorlanmas(unikal) bo‘lishi lozim.
Bu operator qanday ishlaydi? «Switch» operatoriga berilgan qiymat, «case» operatoridagi qiymatlar bilan birma-bir solishtiriladi. Agar qiymat biror variant bilan mos tushsa, shu variantga tegishli blok ichidagi operator yoki operatorlar bloki ishlaydi va «break» orqali bu tanlov(switch) yakuniga yetadi. Agar qiymat hech qaysi variant bilan mos tushmasa, «default» operatori ishlaydi va uning ichidagi operatorlar dastur ishlashini davom ettiradi.
«default» bloki bo‘lmasligi ham mumkin, bunda agar variantlar orasida bizning qiymat topilmasa, «switch» hech qanday xabar bermaydi.
«break» operatori «switch» operatoridan chiqishni bildiradi, shuning uchun har bir «case» operatoridan keyin qo‘yilgan. Agar bu operatorni olib tashlasak, bizning qiymat variantlar orasidan topilsa ham, «switch» operatori ishlayveradi va hamma «case» operatoriga murojat qilaveradi. Bu dasturning xato ishlashiga olib keladi.
Nazariy jihat bilan tanishib chiqdik, endi misol ko‘ramiz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

class test{
public static void main(String[ ] args){
int fasl = 3;
switch (fasl) {
case 1:
System.out.println("Qish");
break;
case 2:
System.out.println("Bahor");
break;
case 3:
System.out.println("Yoz");
break;
case 4:
System.out.println("Kuz");
break;
default:
System.out.println("Bunday fasl yoq");
}
}
}

«int» tipidagi o‘zgaruvchi e’lon qilinib, unga «3» soni o‘zlashtirildi. Shundan so‘ng, «switch» ichiga bizning o‘zgaruvchi qiymat sifatida kiritildi. Qolgan qatorlarda bizning qiymatga teng bo‘lishi mumkin bo‘lgan har xil sonlar variant shaklida berildi(case 1, case 2, case 3, case 4).
Bizning qiymat «3«, shuning uchun «case 3» degan blokka kiramiz va «Yoz» degan yozuvni ekranga chiqaramiz, undan so‘ng «break» operatori turganligi uchun, «switch«-tanlash operatoridan chiqib, dasturni tugatamiz.

Agar bizga berilgan variantlardan hech qaysinisi to‘g‘ri kelmasa(agar 5 sonini qiymat sifatida bersak), «default» operatori ishga tushib, «Bunday fasl yoq» degan yozuvni natija sifatida ko‘ramiz. Kodni o‘zgartiramiz va qiymat sifatida «10» sonini kiritamiz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

class test{
public static void main(String[ ] args){
int fasl = 10;
switch (fasl) {
case 1:
System.out.println("Qish");
break;
case 2:
System.out.println("Bahor");
break;
case 3:
System.out.println("Yoz");
break;
case 4:
System.out.println("Kuz");
break;
default:
System.out.println("Bunday fasl yoq");
}
}
}

«10» soni hech qaysi variantga to‘g‘ri kelmaydi va «default» bloki ishga tushadi.

YUqorida aytilgan gaplarni isbotlashni davom ettiramiz, endi barcha bloklardan «break» operatorini olib tashlaymiz va qiymatni eski holiga qaytaramiz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

class test{
public static void main(String[ ] args){
int fasl = 3;
switch (fasl) {
case 1:
System.out.println("Qish");
case 2:
System.out.println("Bahor");
case 3:
System.out.println("Yoz");
case 4:
System.out.println("Kuz");
default:
System.out.println("Bunday fasl yoq");
}
}
}

Dastur, berilgan variantlardan to‘g‘ri keladiganini topadi va tanlash operatoridan chiqib ketmaydi, qolgan barcha bloklarga ham kirib chiqadi. Natijada operator o‘z ishini noto‘g‘ri bajaradi.

Agar, «case» ichidagi operatorlar bir xil vazifallarni bajarsa, ularni bitta blok shaklida birlashtirish mumkin. Misol uchun, oy raqami kiritilsa, qaysi faslga tegishli ekanligini topuvchi dastur ko‘ramiz. Agar «case» operatorini birlashtirmasak,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43



class test{
public static void main(String[ ] args){
int oy_raqami = 7;
switch (oy_raqami) {
case 12:
System.out.println("Qish");
break;
case 1:
System.out.println("Qish");
break;
case 2:
System.out.println("Qish");
break;
case 3:
System.out.println("Bahor");
break;
case 4:
System.out.println("Bahor");
break;
case 5:
System.out.println("Bahor");
break;
case 6:
System.out.println("Yoz");
break;
case 7:
System.out.println("Yoz");
break;
case 8:
System.out.println("Yoz");
break;
case 9:
System.out.println("Kuz");
break;
case 10:
System.out.println("Kuz");
break;
case 11:
System.out.println("Kuz");
break;
default:
System.out.println("Bunday fasl yuq");
}}}

Juda uzun kod hosil bo‘ldi, lekin bir xil yozuvlarni chiqaradigan operatorlar bor. Bu operatorlarni «case» orqali birlashtirish mumkin, uning uchun «:» dan foydalanamiz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19



class test{
public static void main(String[ ] args){
int oy_raqami = 7;
switch (oy_raqami) {
case 12:case 1:case 2:
System.out.println("Qish");
break;
case 3:case 4:case 5:
System.out.println("Bahor");
break;
case 6:case 7:case 8:
System.out.println("Yoz");
break;
case 9:case 10:case 11:
System.out.println("Kuz");
break;
default:
System.out.println("Bunday fasl yuq");
}}}

Agar «12, 1, 2» sonlari kiritilsa, 6-qator ishlaydi, «3, 4, 5» kiritilsa, 9-qator ishlaydi, «6, 7, 8» kiritilsa, 12-qator ishlaydi va nihoyat «9, 10, 11» kiritilsa, 15-qator operatori ishga tushadi. Bu orqali biz kodlarni biroz ixchamlagan bo‘lamiz.
JDK7 dan boshlab, qiymat sifatida «string» tipini ham ishlatishimiz mumkin bo‘ldi. Boshqa tiplardan farqi, bunda yozuvlarni qo‘shtirnoq(«») ichiga olishimiz kerak bo‘ladi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

class test{
public static void main(String[ ] args){
String fasl = "kuz";
switch (fasl) {
case "qish":
System.out.println("QISH");
break;
case "bahor":
System.out.println("BAHOR");
break;

case "yoz":


System.out.println("YOZ");
break;
case "kuz":
System.out.println("KUZ");
break;
default:
System.out.println("Bunday fasl yuq!");
}}}


«Switch» operatori orqali faqat tenglikni tekshirishimiz mumkin, ya’ni berilgan qiymat nechiga tengligini. Boshqa hech qanday mantiqiy solishtirishlarni(katta, kichik,…) amalga oshira olmaymiz, shuning uchun dasturlashda «if» operatori ko‘proq ishlatiladi.


  1. Yüklə 1,58 Mb.

    Dostları ilə paylaş:
1   ...   19   20   21   22   23   24   25   26   ...   79




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin