(Java) Koşullu döngü deyimi - while


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 ç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. 
Bu nasıl uygulanır?
Programlamada bu tür durumlar için koşullu bir döngü operatörü vardır. 
C programlama dilinde bir koşullu döngü ifadesi while kelimesi ile başlar ve aşağıdaki yapıya sahiptir.
while (<durum>){
  döngü gövdesi
}
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öründen oluşuyorsa kaşlı ayraçlar atlanabilir
Operatör nasıl çalışır:
1. Program öncelikle while kelimesinden sonra parantez içindeki durumu 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 kaşlı ayraçlar 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.
#include<iostream>
ad alanı std kullanarak;
ana()
{
int ben;
cout 
Bu programda i=1 değişkenine bir değer atadık - orijin
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. cout << "\nBitir";

Aşağıdaki problemi çözmek için bir program yazmaya çalışalım:

Bir sayı girmelisiniz (3.000.000'den küçük olsun 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 sayıcıdaki tüm sayıları kestikten sonra sayının basamak sayısını alacağız.
Başka bir şekilde, algoritma şu şekilde formüle edilebilir:
SAYI SIFIR DEĞİLENE KADAR 10 KAT AZALTIN ​​ve SAYACI 1 ARTIRIN. 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ı