SE道場 - 探索の極意(2) |     ✤ We Love Softbrain ✤ 

    ✤ We Love Softbrain ✤ 

        日々の仕事や、プライベートな趣味まで掲載しています。

 
皆さん、こんにちはビックリマーク シニアAですクローバー

今日は、探索ループの極意(2)2重ループの条件探索をお話ししましょうひらめき電球
 
 
探索の対象が2つあり、条件がそれぞれ指定された場合、探索ループが2重になるのが普通です。
その探索ロジックをC言語で表すと、次図の通りですひらめき電球
 

前回の探索ループの極意(1)と同様に、見つかったルート(retun FOUNDの前)に、後処理がたくさんあると、見にくい(醜いはてなマーク)プログラムになりますショボーン
 
つまり、正常ルートがfor文やif文の中にあると、後々解析しづらくなるからですビックリマーク
 
それでは、正常ルートを関数の最後にしてみましょうビックリマーク
変数を増やさず、コーディングしますひらめき電球
 

さてここからが探索の極意ですひらめき電球
見つかった場合に、break文でループを抜けても、まだ外側のループの中にいます。
だから外側のループを抜けるif文が必要です。
 
①に注目してください。
見つかった場合にLoop2<Max2のままでbreakされ、外側のループ内のif文判定となります。
だからここは、Loop2<Max2であれば見つかった、Loop2≧Max2であれば見つからなかった、と判定できるのです。
 
②に注目してください。
見つかった場合に①で外側のループを抜けてきます。
Loop2同様、Loop1<Max1であれば見つかった、Loop1≧Max1であれば見つからなかった、と判定できます。
 

このループカウンタで判断できるという発想が『極意』なのです!!
慣れてくれば楽勝ですよ音譜
 
また『FindFlag』の様な変数を増やしてコーディングすることもできますが、変数は少ないほど解析が用意となります。常に後のメンテナンスのし易さを考えていけるといいですね音譜
 
次回もお楽しみに・・・
 

 


SE道場では、プログラミングの極意や開発の苦労話等、様々な記事を投稿していますビックリマーク是非ご覧くださいクローバー
 

 

1つ前の極意ネタは...