1. Sikllarni solishtirish: for vs while
while siklini komandalar yoki komandalar guruhini bir necha marta bajarish kerak bo'lgan har qanday holatda foydalanish mumkin. Lekin ushbu holatlar orasida bittasi alohida ko'rib chiqilishi kerak.
Bu holatda dasturchi (dastur muallifi) oldindan sikli necha marta bajarilishini biladi. Odatda bu maxsus hisoblagich o'zgaruvchisini kiritish orqali amalga oshiriladi va har bir sikl iteratsiyasida o'zgaruvchi 1 birligacha oshiriladi (yoki kamayadi).
Hammasi to'g'ri ishlayotganga o'xshaydi, lekin juda qulay emas. Sikldan oldin biz hisoblagich o'zgaruvchisi uchun boshlang'ich qiymatni belgilaymiz, keyin shartni tekshiramiz: u allaqachon yakuniy qiymatga yetganmi yoki yo'q. Lekin odatda uni sikl tanasining oxirida o'zgartiramiz.
Agar sikl tanasi katta bo'lsa-chi? Yoki bir necha ichki sikllar bo'lsa-chi? Umuman olganda, bunday holatlarda hisoblagich o'zgaruvchisini to'liq boshqarishni bir joyda to'plashni istardik. Shu sababli Java'da for sikli paydo bo'lgan. U juda qiyin emas:
for (komanda1; shart; komanda2)
{
komandalar bloki
}
Agar while siklida qavs ichida faqat shart bo'lsa, bu yerda yana ikkita komanda qo'shilgan, nuqta va vergul bilan ajratilgan.
Haqiqatan ham barchasi oddiyroq, kompilyator for siklini oddiy while sikliga shunday aylantiradi:
komanda1;
while (shart)
{
komandalar bloki
komanda2;
}
Keling, misol bilan ko'rsatamiz: keyingi ikkita misol bir xil.
| 1-variant | 2-variant |
|---|---|
|
|
Biz shunchaki bir joyda hisoblagich o'zgaruvchisi i bilan bog'liq bo'lgan barcha kodni to'pladik.
komanda1 for siklida faqat bir marta, sikl boshlanishidan oldin bajariladi (bu ikkinchi misolda ko'rinadi)
komanda2 sikl tanasi bilan bir xil marta bajariladi, lekin sikl tanasi to'liq bajarilgandan keyin amalga oshiriladi
2. for sikli qaerda ishlatiladi
for sikli Java'da eng ko'p foydalaniladigan sikl variantidir. U har joyda qo'llaniladi, chunki bu dasturchilar uchun ancha tushunarli va qulayroq while sikli yozish shaklidir. Amalda har qanday while siklini for sikliga aylantirish mumkin.
Misollar:
| while sikli | for sikli |
|---|---|
|
|
|
|
|
|
|
|
|
|
Oxirgi misolga e'tibor bering. U yerda sikl hisoblagichi bilan ishlash komandalar o'tkazib yuborilgan. Hisoblagich yo'q - komanda yo'q.
Java for siklida «hisoblagichni boshlash komandasi» va «hisoblagichni o'zgartirish komandasi»ni yozishga ruxsat beradi. Sikl sharti ifodasini yozmaslikka ham ruxsat bor.
3. for siklidan foydalanishni nozik jihatlari
for siklidan foydalanish va break va continue operatorlari bilan bog'liq muhim jihatlar.
break operatori while siklida qanday ishlasa, for siklda ham xuddi shunday ishlaydi — siklni darhol to'xtatadi. Lekin continue operatori sikl tanasini o'tkazib yuboradi, lekin sikl hisoblagichini o'zgartiruvchi komanda2 ni emas.
Keling, qanday qilib for va while bog'liq ekanligini yana ko'rib chiqamiz.
for (komanda1; shart; komanda2)
{
komandalar bloki
}
komanda1;
while (shart)
{
komandalar bloki
komanda2;
}
Agar for siklining komandalar blokida continue operatori ishlatilsa, blokning qolgan qismi o'tkazib yuboriladi, ammo komanda2 (qiymat o'zgartiriladi) bajariladi.
Keling, 7 ga bo'linadigan sonlarni o'tkazib yuborishni yana bir bor ko'rib chiqaylik.
| Bu kod yopiq bo'ladi | Bu kod juda yaxshi ishlaydi |
|---|---|
|
|
while sikli bilan kod ishlamaydi — i hech qachon 7 dan oshib ketmaydi. Lekin for sikli bilan kod juda yaxshi ishlaydi.
4. for sikllarini solishtirish: Java vs Pascal
Aytgancha, Pascal'da ham For sikli bor. U deyarli barcha dasturlash tillarida mavjud. Faqat Pascal'da u ancha tushunarliroq. Misollar:
| Pascal | Java |
|---|---|
|
|
|
|
|
|
GO TO FULL VERSION