こんにちは。
今回は、制御文のwhile文を使ってみます。
while文とは、「ある条件が満たされているうちは作業を繰り返す」
処理を行います😁
そして、whileの場合は、その条件を処理の前に確かめる書き方と
処理した後に確かめる書き方があります。
今回は、対象の数字がどの11の倍数に近いかを求める
ロジックを使ってみてみましょう。
こちらは、処理の前に確かめる書き方です。
while内で、変数xと11の倍数のy*11を引き算してその差を
みています。
差が11ない場合は、trueと判定され、変数yに1が追加され、
while内の判定に戻ります。
この処理は、差が11より下になるまで延々と繰り返します😀
val x = 223455 var y = 1 // xの数字と11の倍数の差が、11以上ある場合はtrueとなる。 while ((x – (y*11)) >= 11) { // 条件に一致する場合は、yに1を足す。 y++ } println(“${x}は、11の倍数${y*11}と同様か大きいかつ近い数字です。”)
↓ では、実行してみましょう。
変数xが22355に対して、11の倍数223454が近似値として
出力されています。
次は、処理した後に確かめる書き方です。
これは、「do..while文」で書きます。
doの処理を実行してから、while内で判定しています。
この判定がtrueであれば処理を継続し、falseであれば
直前のdo内の処理は無しとなり、「do..while文」処理を
終了します👽
val x = 45672 var y = 0 do { // 条件に一致する場合は、yに1を足す。 y++ // xの数字と11の倍数の差が、11以上ある場合はtrueとなる。 } while ((x – (y*11)) >= 11) println(“${x}は、11の倍数${y*11}と同様か大きいかつ近い数字です。”)
↓ 実行すると・・・。
同様に近似値が出力されます。
さらに、この「do..while文」は以下のように、
while内の判定処理を、do内に置くこともできます。
こうするとwhile内はまさにtrueかfalseの判定をするだけ
なのでスッキリしますね👌
なお、変数kekkaには、変更不可の「val」が付いていますが、
繰り返しのたびに新しい変数として定義されているので、
エラーにはなりません。
val x = 3256190 var y = 1 do { // 条件に一致する場合は、yに1を足す。 y++ // xの数字と11の倍数の差を出す。 val kekka = x – (y*11) // 差が、11以上ある場合はtrueとなる。 } while (kekka >= 11) println(“${x}は、11の倍数${y*11}と同様か大きいかつ近い数字です。”)
↓ 実行しましょう。
同様に出力されます。
次回は、制御文の応用をみてみようと思います。
今回はここまで🤚
では、また次回。