For döngüsünü incelerken, herhangi bir eylemin tekrar sayısı biliniyorsa, for döngüsü operatörünü kullanarak programı kısaltabileceğinizi söyledik. Peki ya tekrar sayısı bilinmiyorsa? Ve bu oldukça sık olur.
Örneğin, bir sayının ondalık sayı sisteminden herhangi bir başkasına dönüştürülmesini hatırlayalım: cevapta sıfır elde edene kadar sayıyı (ve ardından bölme sonucunu) sayı sisteminin tabanına bölmemiz gerekir. Daha kaç kez paylaşacağız bilinmez. Ve böyle bir algoritma uygulayan pek çok program var.
Bu nasıl uygulanır?
Programlamada bu tür durumlar için koşullu bir döngü operatörü vardır.
Pascal programlama dilinde bir koşullu döngü ifadesi while kelimesi ile başlar ve aşağıdaki yapıya sahiptir.
while <durum> başla
döngü gövdesi
bitiş
Zaten bildiğimiz gibi:
- koşul, sonucu doğru veya yanlış olabilen bir ifadedir (koşullu ifadede olduğu gibi)
- döngü gövdesi tekrarlanması gereken komutlardır
- Döngü gövdesi yalnızca bir operatörden oluşuyorsa
begin ve
end atlanabilir
Operatör nasıl çalışır:
1. Program öncelikle while kelimesinden sonraki koşulu değerlendirir. Koşul karşılanırsa (true), program döngü gövdesinde bulunan ifadeleri yürütür.
2. for döngüsünde olduğu gibi, döngü gövdesi yalnızca bir ifade içeriyorsa, döngü gövdesini vurgulayan başlangıç ve bitiş sözcükleri atlanabilir.
3. Döngü gövdesinin yürütülmesi tamamlandıktan sonra, program durumu kontrol etmek için geri döner ve tekrar kontrol eder.
4. Bu işlemler (koşulun kontrol edilmesi - döngü gövdesinin çalıştırılması), koşul yanlış olana kadar tekrarlanır.
5. Bu operatörün ilk çalıştırılmasında koşul hemen karşılanmazsa (yanlış), program hiçbir zaman döngü gövdesini yürütmez.
Bu operatörün çalışması analiz edildiğinde, döngü gövdesinin koşulu etkileyen bir operatör içermesi gerektiği anlaşılmalıdır.
Örneğin, bir döngü, bir koşulda kullanılan bir değişkenin değerini artırabilir.
"Sessiz sayım" olarak adlandıracağımız bir program örneği
Programı bizim yerimize saydıralım mesela 10'a kadar.
Program, "Başlat" ifadesini vermelidir. ve "Bitti" ve bu işlemler arasında hesaplanmakta olan sayıları görüntüler.
Bunun gibi
Başlat
1 2 3 4 5 6 7 8 9 10
Bitir
While döngüsü kullanan bir program şöyle görünür.
var i: tamsayı;
başlamak
writeln('Başlat');
ben := 1;
i <= 10 iken başlar
yaz(i, ' ');
ben += 1; //Koşuldaki değişkenin değişimini etkileyen operatör
son;
writeln();
writeln('Bitti');
bitiş.
Bu programda i := 1 - orijin
değişkenine bir değer atadık.
Ayrıca, i değişkeninin değeri ihtiyacımız olan değerden büyük (yani küçük veya ona eşit) olmadığı sürece, biz
1 - i
değişkeninin değerini göster
2 - i değişkeninin değerini 1 artır - bu operatör, koşulun parantez içindeki değerini etkiler. i değişkeni artırılır, yani bir noktada i<=10 koşulu yanlış olur. Bu, i 11'e eşit olduğunda gerçekleşir. Bu durumda, döngü gövdesi artık yürütülmez ve program döngüden sonraki bir sonraki ifadeyi yürütür, yani.
writeln();
writeln('Bitir');