Koşullu döngü deyimi - while


Koşullu bir döngü. while
ifadesi for döngüsünü inceleyerek, herhangi bir eylemin tekrar sayısı biliniyorsa, for döngü operatörünü kullanarak programı kısaltabileceğinizi söyledik. Peki ya tekrar sayısı bilinmiyorsa? Ve bu oldukça sık olur.
 
Örnek
Bir sayının ondalık sayı sisteminden herhangi bir başkasına çevrilmesini hatırlayarak, yanıtta 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. 

Yinelemelerin tam sayısını bilmiyorsak algoritmayı nasıl uygulayabiliriz?

Programlamada bu tür durumlar için koşullu bir döngü ifadesi vardır. 
Python programlama dilinde bir koşullu döngü ifadesi while kelimesiyle başlar ve aşağıdaki yapıya sahiptir.
while (<condition>) 
{
  döngü gövdesi
}

Zaten bildiğimiz gibi:
- koşul, doğru veya yanlış olarak değerlendirilebilen bir ifadedir (bir koşullu ifadede olduğu gibi);
- döngü gövdesi tekrarlanacak komutlardır, girintilidirler.

Operatör nasıl çalışır?
1. Program ilk olarak while kelimesinden sonraki durumu parantez içinde değerlendirir. Koşul karşılanırsa (true), program döngü gövdesinde bulunan ifadeleri yürütür.
2. Döngü gövdesinin yürütülmesi tamamlandıktan sonra, program durumu kontrol etmek için geri döner ve tekrar kontrol eder.
3. Bu işlemler (koşulun kontrol edilmesi - döngü gövdesinin çalıştırılması), koşul yanlış olana kadar tekrarlanır.
4. Bu ifadenin ilk çalıştırılması sırası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üde, bir koşulda kullanılan bir değişkenin değeri artırılabilir.

"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" ve "Bitti" ve bu işlemler arasında hesaplanmakta olan sayıları görüntüler.

Örneğin, şöyle:
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: Sistemi kullanarak; sınıf Programı {     statik boşluk Ana() {         Console.WriteLine("Başlat");         int ben = 1;         iken (i <= 10) {             Console.WriteLine(i);             ben++;         }         Console.WriteLine("Bitir");     } } Bu programda, başlangıç ​​noktası olan i = 1 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, ondan küçük veya ona eşit) olmadığı sürece:
 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ülmeyecek ve program döngüden sonraki ifadeyi, yani  Console.WriteLine("Finish")'ı yürütecektir.

Aşağıdaki sorunu çözmek için bir program yazmaya çalışalım: bir sayı girmeniz gerekiyor ve içindeki basamak sayısını belirleyin.

Çözüm fikri.
Sadece sayıdan son basamağı sırayla kesmemiz gerekiyor (bu, tamsayıyı 10'a bölerek sayıyı 10 kat azaltarak yapılabilir) ve her seferinde sayacı artırmamız gerekiyor. 
Sonuç olarak tüm sayıları kestikten sonra sayaç sayının basamak sayısını kaydedecektir.
Başka bir deyişle, algoritma şu şekilde formüle edilebilir: sayı sıfıra eşit değilken 10 kat azaltın ve sayacı 1 artırın.
sayı (n) sayaç Program şöyle görünecek:
...
statik boşluk Ana()
{
    int n = Convert.ToInt32(Console.ReadLine());
    int sayısı = 0;
    iken (n != 0)
    {
      sayı++;
      n = n / 10;
    }
}
Basamaklarla hesaplamayla ilgili diğer birçok görev olduğundan, bu programı iyi bilmeniz ve anlamanız gerekir. bir sayı.

123 > 0 >
12 > 1 >
1 > 2 >
0 > 3 >

Görev

Programın girdisi, veri akışıdır — sıfırla biten bir tam sayı dizisi (sıfır diziye dahil değildir). Bu dizinin elemanlarının toplamını bulmanız gerekir.
 
Algoritmayı çözme
 toplam=0
 x girişi // ilk sayıyı girin
 x != 0 // koşulda giriş bitiş işareti ayarlanırken,
 nc // yani siz sıfır girene kadar
   toplam = toplam + x // orijinal sayıyla bir şeyler yapabilirsiniz.
                  // Bazı koşullar vb. için bir sayı kontrolü ekleyebilirsiniz.
   x girin // sonraki sayıyı girin
 kts
 toplamı yazdır // sonuç çıktısı