(C++) 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: #include<iostream> ad alanı std kullanarak; ana() { int ben; cout
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 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ülmez ve program döngüden sonraki bir sonraki ifadeyi yürütür, yani. cout << "\nBitir".

Görev
Bir sayı girmeli (3.000.000'den küçük olsun) ve içindeki basamak sayısını belirlemelisiniz.
 
Çö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 sayının tüm rakamlarını kestikten sonra sayaçta onların numarasını alacağız.

Bu algoritma şu şekilde formüle edilebilir:
Sayı sıfır olana kadar, 10 azaltın ve her seferinde sayacı 1 artırın.
  sayı (n) sayaç
Program böyle görünecek. #include<iostream> ad alanı std kullanarak; ana() { int, sayım; cin>> N; sayı = 0; iken (n != 0) { sayı++; n = n / 10; } cout Bu programı ezbere bilmeniz gerekiyor, çünkü. temelde, sayıların rakamlarla hesaplanmasıyla ilgili diğer birçok problem çözülmüştür.

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ı