制御構文をマスターしよう (4/4)
作成:2014-07-26 08:35
更新:2014-07-26 08:35
更新:2014-07-26 08:35
■whileによる繰り返し
forは繰り返しごとに変化するような仕組みを構文の中に持っています。が、もっと単純に「条件をチェックして繰り返すかどうか決めるだけ」というシンプルな繰り返し構文もあります。それがwhile文です。
whileは、条件のつく場所によって異なる2つの書き方があります(後者はdo while文といわれたりします)。
●whileの基本形
●do whileの基本形
whileの後に条件となるものを用意します。この条件がtrueであれば繰り返しを実行し、falseになれば繰り返しを抜ける、という単純なものです。
単純でありながら、なぜ2つの書き方があるのか。それは、条件をチェックするタイミングの違いです。前者(構文の最初にwhileがあるもの)は、まずwhileのあとにある条件をチェックし、それがtrueならば以下の{}部分を実行します。
後者(構文の最後にwhileがあるもの)は、繰り返し行う{}の部分をまず実行し、終わってからwhileの条件をチェックします。ということは、最初から条件がfalseであったとしても、必ず1度は{}部分を実行してしまう、ということになります。
例えば、簡単な繰り返しを比較してみましょう。
前者では、index:1〜index:10という形で値が得られます。これに対し後者は、index:0〜index:9という形になります。条件のところで++で変数を増やしているため、条件が前にあるか後にあるかで数字がずれるのですね。
こんな具合に、細かな動作を見れば、両者は微妙に違ってきます。個人的には、基本はwhileで書く、do whileは特別な事情のある場合のみ使う、と考えておけばいいように思います。
whileは、条件のつく場所によって異なる2つの書き方があります(後者はdo while文といわれたりします)。
●whileの基本形
while 条件となるもの {
……繰り返す処理……
}
●do whileの基本形
do {
……繰り返す処理……
} while 条件となるもの
whileの後に条件となるものを用意します。この条件がtrueであれば繰り返しを実行し、falseになれば繰り返しを抜ける、という単純なものです。
単純でありながら、なぜ2つの書き方があるのか。それは、条件をチェックするタイミングの違いです。前者(構文の最初にwhileがあるもの)は、まずwhileのあとにある条件をチェックし、それがtrueならば以下の{}部分を実行します。
後者(構文の最後にwhileがあるもの)は、繰り返し行う{}の部分をまず実行し、終わってからwhileの条件をチェックします。ということは、最初から条件がfalseであったとしても、必ず1度は{}部分を実行してしまう、ということになります。
例えば、簡単な繰り返しを比較してみましょう。
var n:Int = 0
while 10 > n++ {
"index:" + String(n)
}
var m:Int = 0
do {
"index:" + String(m)
} while 10 > m++
前者では、index:1〜index:10という形で値が得られます。これに対し後者は、index:0〜index:9という形になります。条件のところで++で変数を増やしているため、条件が前にあるか後にあるかで数字がずれるのですね。
こんな具合に、細かな動作を見れば、両者は微妙に違ってきます。個人的には、基本はwhileで書く、do whileは特別な事情のある場合のみ使う、と考えておけばいいように思います。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
var n:Int = 0 while 10 > n++ { "index:" + String(n) } var m:Int = 0 do { "index:" + String(m) } while 10 > m++
※関連コンテンツ