【第1問】
 プログラムの機能を変更せずに,ソースコードの構造や書式を整理することを何と呼びますか。
【選択肢】正解
A  フォワードエンジニアリング  
B  リバースエンジニアリング  
C  リエントラント  
D  リファクタリング

正解は選択肢Dです。

 要求された機能を満たすプログラムが出来上がっているのに,リファクタリングするのは勇気がいることです。手を加えたことで,プログラムの動作がおかしくなってしまう危険があるからです。しかし,その危険があっても,あえてリファクタリングするのは,プログラムの将来的な改造や拡張を容易にするためです。




【第2問】
 「再帰呼び出し(recursive call)」と呼ばれるテクニックを使って実現できることはどれですか。
【選択肢】正解
A  繰り返し処理
B  分岐処理  
C  割り込み処理  
D  並列処理  

正解は選択肢Aです。

 再帰呼び出しは,関数の処理の中で同じ関数を呼び出すことで,繰り返し処理を実現するテクニックです。同じ関数を呼び出した時点で,関数の入り口から再び処理が始まるので,繰り返し処理になります。

 アルゴリズムによっては,for文やwhile文を使うより再帰呼び出しを使ったほうが,ソースコードをスマートに(短く,わかりやすく)記述できる場合があります。有名なところでは,クイックソートのアルゴリズムが,再帰呼び出しを使う定番として知られています。