PAD(問題解析図)によるプログラム設計
PAD(Problem Analysis Diagram、問題解析図)は、プログラムの
制御構造を木構造で表現する図解法です。
フローチャートと同様にプログラム設計に用いられますが、構造化プログラミングとの親和性が高く、プログラムの可読性と保守性を向上させる効果があります。
日立製作所の研究者らによって開発され、JIS X 0128規格にも「プログラム構成要素及びその表記法」として
フローチャートと共に掲載されています。
従来、プログラム開発では
フローチャートが広く利用されてきました。しかし、
フローチャートは処理の記号や接続線の配置が自由なため、同じ手順でも表現が異なったり、複雑な
制御構造を分かりにくく表現するといった欠点がありました。特に、構造化プログラミングが普及するにつれて、
フローチャートのこれらの欠点はより顕著になりました。
PADはこれらの問題を解決するために開発されました。PADは、プログラムの構造を「連接」「選択」「反復」という基本的な
制御構造に分解し、2次元の木構造で視覚的に表現することで、プログラムの論理構造を明確に示します。
PADの基本要素
PADは、以下の3つの基本要素から構成されます。
連接: 単純な処理の連続を表します。処理Aの後に処理Bを実行するといった流れです。
選択: 条件によって処理を分岐させます。`if-then-else`文のような条件分岐に対応します。
反復: 条件を満たす間、処理を繰り返し実行します。`while`文や`for`文のようなループ処理に対応します。
各要素は明確な記号と接続方法で表現されるため、PAD図の作成者は少なく、プログラム構造の理解を容易にします。また、PAD図とプログラムコードが容易に対応付けられるため、コーディング作業の効率化にも繋がります。
PADの記述方法
PADでは、各
制御構造を以下の図のように表現します。ここでは、A、Bなどのアルファベットは処理(関数など)を表し、Q、R、C1~Cxなどは条件を表します。Tは真、Fは偽を表します。「Start」と「End」は必須ではありませんが、
フローチャートとの比較のために使用しています。
連接
処理Aの後に処理Bを実行する例
[図:PADで連接を表す図解]
選択
条件Qの真偽によって処理Aまたは処理Bを実行する例(if-then-else)
[図:PADでif-then-elseを表す図解]
条件Qが真の場合のみ処理Aを実行する例(if-then)
[図:PADでif-thenを表す図解]
条件Qに基づいて複数の処理から一つを選択する例(switch-case)
[図:PADでswitch-caseを表す図解]
反復
条件Qが真の間、処理AとBを繰り返す例(while)
[図:PADでwhileループを表す図解]
処理AとBを実行した後、条件Qを判定し、真の間繰り返す例(do-while)
[図:PADでdo-whileループを表す図解]
拡張図式
基本的な
制御構造だけでは表現できないプログラム構造(例えばgoto文を使用する場合)に対処するために、拡張図式が用意されています。また、処理をモジュール化して再利用するために、処理の定義と呼び出しを表現する記法もあります。
PADの利点
PADは、以下の利点を持ちます。
視覚的な分かりやすさ: 処理の実行順序は上下、選択・反復の深さは左右に展開されるため、プログラムの構造が視覚的に把握しやすくなっています。
一貫性: 処理の接続方法が規定されているため、作成者によるバラツキが少なく、複数人でプログラムを開発する場合にも有利です。
構造化プログラミングとの親和性: 構造化プログラミングの原則に従ってプログラムを設計するのに適しています。
まとめ
PADは、プログラムの構造を明確に表現し、可読性と保守性を向上させるための強力なツールです。特に、複雑なプログラムを開発する際には、PADを活用することで、開発効率を向上させることができます。本稿で解説した内容を理解することで、PADを使った効率的なプログラム開発が可能になります。