1. Sikllar hayotimizda
Ko'pincha hayotimizda bir xil harakatlarni qayta-qayta bajarishimiz kerak bo'ladi. Masalan, men ko'p sahifali hujjatni skanerlashim kerak. Keyin biz bir xil harakatlarni yana va yana bajaramiz:
- Birinchi sahifani skanerdan yuqoriga qo'yish
- Skanerlash tugmasini bosish
- Keyingi sahifani qo'yish
Bu narsani qo'lda qilish qiyin bo'ladi. Agar shu jarayon qandaydir automatizatsiya qilinsa yaxshi bo'lardi.
Yana bir misol: men pochta qutisidagi o'qilmagan xatlarni spam sifatida belgilamoqchiman. Boshida ularni birma-bir ajratib, spam sifatida belgilanishi kerak edi.
Lekin dasturchilar dangasalik qilishadi, shuning uchun bu funksiya allaqachon avto-matizatsiya qilingan: siz faqat xatlarni ro'yxatini ajratib olib, "spam sifatida belgilash" tugmasini bosasiz va pochta mijozi bu ro'yxatdan o'tib, har bir xatni spam papkasiga ko'chiradi.
Nima deyish mumkin? Kompyuter yoki dastur bir klikda yuzlab va minglab rutinalar bajarishi qulay. Hozir siz ham bunga o'rganasiz.
2. while sikli
If-else operatori bizning dasturlash imkoniyatlarimizni sezilarli darajada kengaytirdi: endi har xil vaziyatlarda har xil harakatlarni bajaradigan dasturlar yozishimiz mumkin. Lekin yana bir narsa bor, u bizning dasturlarimizni yanada kuchli qiladi — bu sikllar.
Java'da 4 turdagi sikllar bor: while, for, for-each va do-while. Hozir birinchisini ko'rib chiqamiz.
while sikli juda oddiy va faqat ikki qismdan iborat: shart va sikl tanasi. Sikl tanasi shart true bo'lganda qayta-qayta bajariladi. Umumiy while sikli ko'rinishi quyidagicha:
while (shart)
komanda;
while siklining bir komandali yozilishi
while (shart)
{
komandalar bloki
}
while siklining komandalar bloki bilan yozilishi
Hammasi juda oddiy. Komanda yoki komandalar bloki shart haqiqiy — true holatlaridayoq qayta-qayta bajariladi.
Bu quyidagicha ishlaydi: avval shart tekshiriladi va agar u haqiqiy bo'lsa, sikl tanasi (komanda yoki komandalar bloki) bajariladi, keyin yana shart tekshiriladi va yana sikl tanasi bajariladi. Va bu holat shart yolg'on bo'lmaganida davom etadi.
Agar shart doimo haqiqiy bo'lsa, demak dastur hech qachon to'xtamaydi va doimo siklni bajara beradi.
Agar eng birinchi marta shart yolg'on bo'lsa, sikl tanasi hech qachon bajarilmaydi.
3. Siklar misollari
Mana sikllardan foydalanishning bir qancha amaliy misollari.
| Kod | Izoh |
|---|---|
|
Ekraanga 5 qator chiqariladi: |
| Kod | Izoh |
|---|---|
|
Ekraanga 10 qator chiqariladi: |
| Kod | Izoh |
|---|---|
|
Dastur klavishdan raqamlar o'qiydi, to'g'ri raqamlar kiritilguncha. |
| Kod | Izoh |
|---|---|
|
Dastur cheksiz ekranga C harifini chiqaradi. |
| Kod | Izoh |
|---|---|
|
Dastur klavishdan qatorlarni kiritadi, to |
Oldingi misolda equals() funksiyasi qatorlarni solishtirish uchun ishlatiladi. Agar qatorlar teng bo'lsa, funksiya true natijani qaytaradi, agar qatorlar teng bo'lmasa false qaytariladi.
4. Sikl ichida sikl
Shartli operatorni o'rganishda ko'rganingizdek, agar bir nechta shartli operatorlarni birlashtirsangiz, murakkab logika amalga oshirilishi mumkin. Boshqa so'zlar bilan aytganda, if ichida if-ni ishlatish mumkin.
Sikllar bilan ham xuddi shunday qilish mumkin. Sikl ichida sikl yozish uchun birinchi siklning tanasi ichiga ikkinchi siklni yozish kerak. Bu quyidagicha ko'rinadi:
while (tashqi siklning sharti)
{
while (ichki siklning sharti)
{
komandalar bloki
}
}
while sikli ichida
while (
komandalar bloki bilan )
Uchta vazifani ko'rib chiqamiz.
Vazifa 1. Aytaylik, ekranga 4 marta Moma so'zini chiqarishni istaymiz. Sikl aynan bizga kerak. Va taxminan bizning kodimiz quyidagicha ko'rinardi:
| Kod | Izoh |
|---|---|
|
Ekranga 4 qator chiqariladi: |
Vazifa 2. Ekranga bir qator ichida 5 ta A harfi chiqarish kerak. Yana bizga sikl kerak. Kod quyidagicha ko'rinadi
| Kod | Izoh |
|---|---|
|
println o'rniga print yozamiz, aks holda har bir A alohida qatorga ko'chiriladi.Ekranga chiqariladi: |
Vazifa 3. Ekranga 4 qator va 5 ustundan iborat A harfidan to'g'ri burchakli shaklni chiqarish kerak. Buning uchun bizga yana ichi ichiga sikllar kerak. Birinchi misolni olib, 4 qator chiqaramiz va ikkinchi misoldagi bir qator chiqarish kodini o'rniga qo'yamiz.
| Kod | Izoh |
|---|---|
|
Tashqi sikl violet rang bilan belgilangan, u sikl burilishlarining sonini hisoblash uchun n o'zgaruvchisidan foydalanadi.Ichki sikl yashil rang bilan belgilangan. U sikl burilishlarining sonini hisoblash uchun m o'zgaruvchisidan foydalanadi.Ichki sikl ish tugaganidan keyin kursorni keyingi qatorda ko'chirish kerak. Aks holda, dastur chiqaradigan barcha harflar bir qatorga qadirlanadi. Ekranda ko'rinadi: |
Tashqi va ichki sikllar burilishlar sonini hisoblash uchun har xil o'zgaruvchilardan foydalanishi kerak. Shu bilan birga, System.out.println() komandasini ichki sikl ishidan keyin qo'shish kerak bo'ldi, chunki u A harflarini bir qatorga chiqaradi va barcha harflarni chiqarib bo'lgandan keyin kursorni yangi qatorga o'tkazishi kerak.
5. Sikllarni solishtirish: Java vs Pascal
Ko'pchiligingiz maktabda Pascal o'rganibsiz, shu sababli materialni osonroq tushunishingiz uchun, Pascal va Java tillarida while sikllarini solishtirishni keltiramiz. Agar Pascalni bilmasaiz, bu materialni o'tkazib yuboring.
| Pascal | Java |
|---|---|
|
|
|
|
|
|
|
|
|
|
GO TO FULL VERSION