「条件分岐と繰り返しのあれそれ」
能書き
条件分岐と繰り返しは基本的なことさえ押さえれば、あとは知恵と工夫でプログラミングは出来ます。が、見た目のすっきりした賢そうなプログラムを書けるなら、それに越したことはありません。
多用を勧めるものではありませんが、テクニックを知っておくと良いでしょう。
条件分岐のあれそれ
省略if文
if (条件式) 命令if文で行う命令が1つだけの場合、then, end ifを省略することが出来る。
if文が連続して出てくる細かい処理などは、省略すると見た目がすっきりする。
select case文
select case(変数)
case(値1)
{処理1}
[case(値2)
{処理2}]
[...]
[case default
{処理 default}]
end select
『変数』の値が各caseに等しい場合、その処理が実行される。該当が無い場合、defaultの処理が実行される。
Fortranとしては変則的な文法だが、if文を使うより簡潔に書ける。文字列もしくは整数変数によるスイッチングに使うと便利。
do文のあれそれ
無限ループ
do文の繰り返し条件を省略すると、無限ループになる。 do
{処理}
end do
当然終わらないので、
if(終了条件) exitで明示的に終わらせる必要がある。
do while文で表しにくい複雑なループに使う。
ループ構造名
do文に名前を付けることが出来る。 ループ構造の名前: do [繰り返し条件]
{処理}
end do ループ構造の名前
ただ名前が付いて嬉しいだけではなく、
exit ループ構造の名前 cycle ループ構造の名前を使うことによって多重ループの柔軟な動作制御が可能になる。
最初はdoの前でコロン付き、最後はdoの後でコロン無し。ややこしい。
使用例
多重ループからの脱出 loop1: do
{処理}
loop2: do
{処理}
do
{処理}
if(条件1) exit loop1
if(条件2) cycle loop2
end do
end do loop2
end do loop1
名前を付けない場合、exit, cycleは最内ループのみが対象となるため、多重ループを抜けるには各段階にexit文を入れる必要があります。