Oldingi darsimizda while, while-do sikl operatorlarini ko‘rib chiqdik. Bulardan tashqari Java dasturlash tilida «for» nomli yana bir sikl operatori mavjud.  «For» operatori 2 xil ko‘rinishga ega:

1. for — odatiy ko‘rinishi.

2. for-each — yangi formasi(ro‘yxatlar uchun).

Bu darsimizda, «for» operatorining odatiy ko‘rinishini o‘rganamiz.

Bu operator ham sikl yaratishda ishlatiladi va u quyidagi sintaksisga ega:

for (e’lon qilish;shart;qaytarilish) {
operatorlar bloki
}

Operatorning yaxshi tomoni shundaki, siklga oid barcha amallarni(elon qilish, shart, shartni o‘zgartirish) o‘z ichida bir qatorda yozish imkoni mavjudligidir.

Misol asosida tushuntirib o‘taman,

class test {
public static void main(String args[]){
int a;
  for (a=8; a>0; a--)
     System.out.println("raqam "  +  a ) ;
  }
}

«int» tipidagi «a» o‘zrauvchi e’lon qilindi va «for» operatori o‘z ishini boshladi. Dastlab, bir qatorda eng asosiy ishlar aniqlashtirib olindi: o‘zgaruvchiga qiymat berish, shart qo‘yish va o‘zgaruvchini qiymatini bittaga kamaytirish(shartni o‘zgartirish uchun). Shundan so‘ng, sikl tanasida «a» o‘zgaruvchini qiymati ekranga chiqarildi va sikl o‘z ishini tugatdi.

for_1

Bu sikl qanday ishlaydi? «a» o‘zgaruvchigi «8» qiymati o‘zlashtirildi  va «a» o‘zgaruvchini musbatligi tekshirildi(a>0). Keyin, ekranga chiqarish operatori ishga tushdi(a— operatori tashlab ketiladi) va oxirida «a» o‘zgaruvchi qiymati bittaga kamaytiriladi. Siklning keyingi aylanishida, o‘zlashtirish operatori tashlab ketiladi, birdaniga shart rost yoki yolg‘onligi tekshiriladi, agar rost bo‘lsa, ekranga chiqarish operatori ishga tushadi va «a» qiymati bittaga kamaytiriladi. Bu hol, shart yolg‘on natija berguncha davom etadi, ya’ni a=0 bo‘lguncha.

Misoldan quyidagilarni ko‘rish mumkin:

shartni boshqaruvchi o‘zgaruvchi bir marotaba e’lon qilinar ekan;

shart tekshirilgandan so‘ng, darhol sikl tanasi ishga tushadi, so‘ng shartni boshqaruvchi o‘zgaruvchi o‘zgartiriladi;

 sikl tanasi shart tekshirilgandan so‘ng ishga tushadi, bu degani shart yolg‘on bo‘lsa, sikl tanasidagi operatorlar umuman ishlamasligi ham mumkin, ya’ni bu «sharti oldin tekshiriladigan» sikl ekan.

class test {
public static void main(String args[]){
int n;
for(n=10; n>20; n--)
System.out.println("son "  +  n );
}
}

for_2

Misolda, shart yolg‘on, shuning uchun sikl tanasi ishlamaydi va dastur hech nima qaytarmaydi.

Sikl shartini boshqaradigan o‘zgaruvchini, sikl ichida ham e’lon qilish mumkin,

class test {
public  static  void main(String args[]){
for(int n=10; n>0; n--)
  System.out.println("son"  +  n );
}
}

Bu holda, o‘zgaruvchi faqat siklga tegishli bo‘ladi va uni dasturning boshqa yerida ishlatib bo‘lmaydi. Barcha joyda ishlatish uchun, uni sikldan tashqarida e’lon qilish lozim.

for_3

Sikl ichida bir necha o‘zgaruvchilarni e’lon qilib, ularni shartda tekshirish mumkin.

class test {
public static void main(String args[]){
int a, b;
for(a=10, b=20; b>a; a++, b--)
  System.out.println("son " + a);
}
}

Ikkita o‘zgaruvchi e’lon qilinib, ular bir-biri bilan solishtirilmoqda va ularning qiymati o‘zgartirib borilmoqda, natija ularning kesishgan nuqtasi bo‘ladi.

for_4

«For» siklinin bir qancha qismlarini tushirib qoldirish mumkin.

class test {
public static void main(String args[]){
int a=4;
for(; a>0; a--)
  System.out.println("son " + a);
}
}

Bu misolda, o‘zgaruvchini e’lon qilish sikl tashqarisiga olib chiqilgan, bu qism siklda bo‘lmaganligi uchun, u nuqta-vergul (;) bilan almashtirilgan.

for_5

Navbatdagi misolni ko‘ramiz, bunda birato‘la ikkita qism sikldan(sikl bosh qismidan) chiqarilgan.

class test {
public static void main(String args[]){
int a=3;
for(; a>0;){
  System.out.println("son " + a);
  a--;
}
}
}

O‘zgaruvchini e’lon qilish sikl tashqarisiga, o‘zgaruvchini o‘zgartirish esa, sikl tanasiga o‘tkazilgan va ularning o‘rni nuqta-vergul(;) bilan to‘ldirilgan.

for_6

Undan ham qizig‘i bor, siklning barcha qismlarini olib tashlaymiz(bu ishni amalga oshirmang(!), sababini keyingi qatorlarda yozaman.)

class test {
public static void main(String args[]){
int a=10;
for(;;){
  System.out.println("son " + a);
  a--;
}
}
}

Bu holda o‘zgaruvchi sikldan tashqarida e’lon qilinmoqda, bu o‘zgaruvchini o‘zgartirish sikl tanasida amalga oshirilmoqda, lekin shart yo‘q. Shu sababli bu sikl to‘xtamasdan ishlayveradi, ya’ni to‘xtovsiz sikl bo‘lib qoladi. Bu ishni bajarmang(!).