CodeGym /Kurslar /JAVA 25 SELF /while döngüsü: tanışlıq və işin incəlikləri

while döngüsü: tanışlıq və işin incəlikləri

JAVA 25 SELF
Səviyyə , Dərs
Mövcuddur

1. Giriş

Proqramlaşdırmada eyni hərəkətləri dəfələrlə ardıcıl yerinə yetirmək tez-tez lazım olur. Məsələn:

  • Siyahının bütün elementləri üzərindən keçmək.
  • İstifadəçi düzgün dəyəri daxil edənə qədər klaviaturadan dəyərləri oxumaq.
  • 1-dən 100-ə qədər bütün ədədlərin cəmini hesablamaq.
  • Şifrə düzgün olana qədər istifadəçidən şifrə istəmək.

Bunların hamısını döngülərsiz reallaşdırmağa çalışsanız, alınan kod uzun, darıxdırıcı və miqyaslana bilməz olacaq. Təsəvvür edin ki, siz kalkulyator proqramı yazırsınız və 1-dən 10-a qədər ədədləri əllə toplamağa qərar verirsiniz:

int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... belə 10 dəfə. Hə.
Döngü olmadan əl ilə təkrarlamaq — əlverişsizdir!

İşinizi bitirməzdən əvvəl bezəcəksiniz! Həll — döngülərdir. Onlar hərəkətlərin təkrarlanmasını yığcam və anlaşılan şəkildə təsvir etməyə imkan verir. Bu gün ən baza, amma çox faydalı bir döngü — while ilə tanış olacağıq.

2. while döngüsü ilə tanışlıq

Sintaksis və əsas sxem

while döngüsü proqramlaşdırma dünyasında “tutuquşu” kimidir: müəyyən şərt yerinə yetirildiyi müddətdə eyni kod fraqmentini təkrar edir. Şərt artıq doğru olmadıqda, tutuquşu susur (döngü bitir).

Sintaksis:

while (uslovie)
{
    // Döngünün gövdəsi
}
while döngüsünün əmrlər bloku ilə yazılışı

Diaqram

Budur, while döngüsünün işini anlamaq üçün sadə blok-sxem:

uml-while

3. Nümunələr: while döngüsü iş başında

Klassik sayğac

1-dən 5-ə qədər sayan və ədədləri çap edən sadə proqram yazaq:

int i = 1;
while (i <= 5)
{
    System.out.println("Addım № " + i);
    i++; // Sayğacı artırmağı unutmayın!
}
// Çıxış:
// Addım № 1
// Addım № 2
// Addım № 3
// Addım № 4
// Addım № 5

Diqqət edin: əgər dəyişən i-ni artırmağı unutsaq, döngü heç vaxt bitməyəcək (tutuquşumuz ölməz olacaq və sonsuza qədər təkrar edəcək). Bu sonsuz döngü adlanır — qorxulu bir şeydir.

Lazım olan dəyərə qədər klaviaturadan giriş

Tez-tez döngü istifadəçidən düzgün cavabı “almaq” üçün işlədilir:

String password = "";
while (!password.equals("qwerty"))
{
    System.out.print("Şifrəni daxil edin: ");
    password = console.nextLine();
}
System.out.println("Xoş gəlmisiniz!");

Burada proqram siz sehrli "qwerty"-ni yazana qədər parolu daxil etməyi xahiş edir. Unutmayın: əgər password = console.nextLine(); sətrini silsəniz, döngü yenə sonsuz olacaq (parolu soruşacaq, amma girişi oxumayacaq — əbədi ilişib qalacaq, sanki xarab olmuş robot kimi).

4. while döngüsünün tipləri və istifadə ssenariləri

Adi döngü while

Bu döngü, yuxarıda göstərildiyi kimi, şərtlə əvvəl ilk iterasiyadan maraqlanır. Əgər şərt dərhal yalandırsa — döngünün gövdəsi heç bir dəfə icra olunmayacaq.

Nümunə: şərt dərhal ödənilmir

int i = 10;
while (i < 5)
{
    System.out.println(i); // Heç vaxt icra olunmayacaq!
}

Bu, əslində, tam məntiqlidir. Necə yazılıbsa, elə də işləyir.

İç-içə döngülər while

Bəzən döngü içində döngü qurmaq lazım olur. Məsələn, bütün sətirləri keçmək və onların hər birində bütün simvolları yoxlamaq. Bu mərhələdə bu, daha çox avantüradır, amma sadə bir nümunə budur:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

İç-içə döngüləri bir neçə mühazirədən sonra daha ətraflı müzakirə edəcəyik, sadəcə sizi bir az qorxutmaq istədim :)

Sonsuz döngü

Bəzən döngülər bitir, bəzən isə — əbədi yaşayır.

while (true)
{
    System.out.println("Mən əbədiəm!");
}

Nadir hallarda istifadə olunur, adətən hansısa fon prosesləri üçün (məsələn, serverin işi), amma praktikada da rast gəlinir.

5. Axmaqlıqlar yazmamaq üçün: while ilə bağlı tez-tez edilən səhvlər

Proqramlaşdırmada döngü elektrik kimidir: əladır, amma təhlükəsizlik qaydalarını bilmək lazımdır.

Problem 1: diqqətsizlikdən yaranan sonsuz döngü

Çox vaxt yeni başlayanlar şərtdən asılı olan dəyişəni yeniləməyi unudurlar. Nəticədə döngü “sonsuz” işləyir və proqramı məcburi dayandırmaq lazım gəlir (məsələn, Ctrl + C düymə birləşməsi ilə).

int i = 1;
while (i <= 5)
{
    System.out.println(i);
    // i++;  // Eyvah! i-ni artırmağı unutduq
}

Problem 2: şərtin səhv verilməsi

Bəzən tərtibatçı özünə quyu qazır: şərt, əksinə, heç vaxt doğru olmur. Nəticədə döngü ümumiyyətlə işləmir.

int i = 10;
while (i < 5)
{
    System.out.println(i); // Bu kod heç vaxt işləməyəcək.
    i++;
}

Problem 3: verilənlər tipləri ilə bağlı səhv

Döngünün şərtində həmişə boolean ifadə olmalıdır — yəni hesablamanın nəticəsi true və ya false olmalıdır.

int number = 5;
while (number) // Səhv! boolean gözlənilirdi, int yox.
{
    number--;
}
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION