条件付きループ文 - while


条件付きのループ。 while
ステートメント for ループを学習すると、アクションの繰り返し回数がわかっている場合は、for ループ演算子を使用してプログラムを短縮できると述べました。しかし、繰り返し回数が不明な場合はどうなるでしょうか?これはよく起こります
が。  
10 進数体系から別の数体系への数値の変換を思い出してください。答えがゼロになるまで、数値 (および割り算の結果) をその数値体系の底で割る必要があります。何回シェアするかは不明です。そして、そのようなアルゴリズムを実装するプログラムは非常にたくさんあります。

正確な反復回数がわからない場合、どのようにアルゴリズムを実装すればよいでしょうか?

プログラミングではこのような場合に備えて、条件付きのループ ステートメントがあります。
Python プログラミング言語では、条件付きループ ステートメントは while という単語で始まり、次の構造になります。
while (<condition>) 
{
 ループ本体
}

すでにご存知のとおり、
- condition は、(条件文のように) true または false に評価できる式です。
- ループ本体は繰り返されるコマンドであり、インデントされています。

オペレーターはどのように働いていますか?
1. まず、プログラムは単語 while の後の括弧内の条件を評価します。条件が満たされる (true) 場合、プログラムはループ本体に含まれるステートメントを実行します。
2. ループ本体の実行が完了すると条件チェックに戻り、再度条件チェックを行います。
3. これらのアクション (条件の確認 - ループ本体の実行) は、条件が false になるまで繰り返されます。
4. このステートメントの最初の実行時に条件がすぐに満たされない場合 (false)、プログラムはループ本体を実行しません。

この演算子の動作を分析すると、ループ本体には条件に影響を与える演算子が含まれている必要があることが明らかになるはずです。
たとえば、ループ内で条件で使用される変数の値がインクリメントされる場合があります。

「サイレント カウント」 と呼ぶプログラムの例。
私たちの代わりにプログラムが例えば10まで数えてみましょう
。 プログラムは「Start」というフレーズを出力する必要があります。 「Finish」と「Finish」を押すと、これらのアクションの間に計算中の数値が表示されます。

たとえばこんな感じ
です。 スタート
します。 1 2 3 4 5 6 7 8 9 10
仕上げ

while ループを使用するプログラムは次のようになります。 システムを使用する; クラス プログラム {    静的 void Main() {         Console.WriteLine("開始");         int i = 1;         while (i <= 10) {             Console.WriteLine(i);             i++;         }         Console.WriteLine("終了");     } } このプログラムでは、開始点である変数 i = 1 に値を割り当てます。
さらに、変数 i の値が必要な値より大きくない (つまり、以下である) 限り、次のことを行います。
 1) 変数 i の値を表示します。
 2) i  変数の値を 1 ずつ増やします - この演算子は括弧内の条件の値に影響します。変数 i  はインクリメントされます。つまり、ある時点で条件 i <= 10 が false になります。これは、i11 に等しい場合に発生します。この場合、ループ本体は実行されなくなり、プログラムはループの後の次のステートメント、つまり  Console.WriteLine("Finish") を実行します。

次の問題を解決するプログラムを書いてみましょう: 数値を入力する必要がありますその中の桁数を決定します。

ソリューションのアイデア
数値の最後の桁を順番に切り取るだけです (これは、整数の 10 による除算を使用して数値を 10 倍減らすことで実行できます)。そのたびにカウンターを増やす必要があります。
その結果、すべての数字を切り捨てた後、カウンターは数字の桁数を格納します。
別の方法として、アルゴリズムは次のように定式化できます:  数値がゼロに等しくない場合、数値を 10 倍減らし、カウンターを 1 増やします。
<頭> 数値 (n) <本体> プログラムは次のようになります: <プレ> ... 静的 void Main() { int n = Convert.ToInt32(Console.ReadLine()); int カウント = 0; ながら (n != 0) { カウント++; n = n / 10; } } の桁による計算に関連するタスクは他にもたくさんあるので、このプログラムをよく知って理解する必要があります。番号。

カウンター
123 0
12 1
1 2
0 3

タスク

プログラムの入力はデータ ストリームです。ゼロで終わる整数のシーケンス (シーケンスにはゼロは含まれません)。 このシーケンスの要素の合計を見つける必要があります。
 
解決アルゴリズム
<プレ> 合計=0 input x // 最初の数字を入力します while x != 0 // 入力終了符号が条件に設定されます。  nc // つまり、ゼロを入力するまで    sum = sum + x // 元の数値で何かを行うことができます。 // 条件などの数値チェックを追加できます。    input x // 次の数字を入力します kts print sum //結果の出力