1. do-while dövrü ilə tanışlıq
Gəlin bir dəqiqəlik fikrimizi yayındıraq və təsəvvür edək: sən istifadəçinin düşündüyü rəqəmi tapmağa çalışan proqram yazmaq qərarına gəlmisən. Lazımdır ki, proqram ən azı bir dəfə istifadəçidən rəqəm soruşsun və təxmin etməyənə qədər təkrar-təkrar soruşsun. Amma əgər şərt ilk cəhddən ödənmirsə, adi while dövrü heç dövrün içinə də girməyəcək.
Bax, məhz burada do-while dövrü ortaya çıxır. while-dan fərqli olaraq, o, dövrün bədənini ən azı bir dəfə icra edəcək — hətta şərt dərhal yalnış olsa belə. Bu elə bil sənə nəsə almadan da pulsuz saqqız verirlər.
do
{
// Dövrün bədəni: bu kod ən azı bir dəfə işləyəcək
}
while (şərt);
Nöqtəli vergülə ; axırda şərtin mötərizəsindən sonra diqqət yetir! Adi while-da o yoxdur, amma burada var. Başlayanlar üçün belə kiçik bir tələdir :)
do-while dövrünün addımlarının təsviri
- Dövrün bədəninə daxil olmaq (həmişə ən azı bir dəfə).
- Şərtin yoxlanılması.
- Əgər şərt doğrudursa — bədəni təkrar et.
- Əgər şərt yalnışdırsa — dövrdən çıx.
2. Adi while-dan fərqi
Gəlin adi while-ın əsas işləmə ssenarisini xatırlayaq:
while (şərt)
{
// Dövrün bədəni
}
Əgər şərt əvvəldən yalnışdırsa, bədən heç vaxt işləməyəcək!
İndi isə do-while ilə nümunə:
do
{
// Dövrün bədəni
}
while (şərt);
Dövrün bədəni ən azı bir dəfə işləyəcək, hətta şərt dərhal yalnış olsa belə!
Gəlin fərqi kodla göstərək:
// Adi while
int count = 0;
while (count > 0)
{
Console.WriteLine("count = " + count);
count--;
}
// Heç nə çıxmayacaq
// do-while
int count2 = 0;
do
{
Console.WriteLine("count2 = " + count2);
count2--;
}
while (count2 > 0);
// "count2 = 0" çıxacaq, baxmayaraq ki, şərt yalnışdır!
Bəzən bu "qəribəlik" kimi görünür, amma elə məhz belə davranış kodunu xilas edir (məsələn, istifadəçi input-u və məlumatların yoxlanılması zamanı).
3. do-while üçün praktiki istifadə ssenariləri
Bu dövr ən çox harada rast gəlinir?
Məlumatların yoxlanılması
Ən məşhur ssenari — istəyirsən ki, istifadəçi düzgün nəsə daxil etsin (məsələn, yalnız rəqəmlər, ya da parol ən azı 6 simvol olsun), və düzgün input alana qədər soruşursan.
string password;
do
{
Console.Write("Yeni parol daxil edin (ən azı 6 simvol): ");
password = Console.ReadLine();
}
while (password.Length < 6);
Console.WriteLine("Parol qəbul olundu!");
Bu nümunədə dövrün bədəni ən azı bir dəfə işləyir — hətta istifadəçi ilk cəhddə uzun parol daxil etsə belə.
Konsol tətbiqlərində menyu
Çox rast gəlinən və faydalı pattern: menyunu göstərirsən, istifadəçi komandası gözləyirsən və dövrü yalnız xüsusi komanda ilə bitirirsən.
string command;
do
{
Console.WriteLine("Menyu:");
Console.WriteLine("1. Salamı göstər");
Console.WriteLine("2. Çıxış");
Console.Write("Əməliyyatı seçin: ");
command = Console.ReadLine();
if (command == "1")
{
Console.WriteLine("Salam, dünya!");
}
else if (command != "2")
{
Console.WriteLine("Naməlum komanda.");
}
}
while (command != "2");
Console.WriteLine("Sağ ol!");
4. while və digər dövrlərin müqayisəsi
| Dövr tipi | Şərtin yoxlanılması | Bədən neçə dəfə işləyə bilər | Harada uyğundur |
|---|---|---|---|
| while | Əvvəl | 0 və daha çox dəfə | Təkrarlama sayını əvvəlcədən bilməyəndə |
| do-while | Sonra | 1 və daha çox dəfə | Ən azı bir dəfə işləmək lazım olanda |
| for | Əvvəl | 0 və daha çox dəfə | İterasiya sayı əvvəlcədən məlum olanda |
GO TO FULL VERSION