PADにおける各制御構造と対応するフローチャート、および、サンプル擬似コードを示す。なお、A、B…は処理(サンプルコードにおいては関数)、Q、R、C1〜Cx は選択や反復の条件など、選択におけるTはTrue、FはFalesを表すものとする。また、PADでは「Start」「End」の記号は必須ではないが、フローチャートとの比較用に用いている。
■連接
処理「A」に続いて処理「B」を実行する例。
| PAD | フローチャート | サンプルコード |
|---|---|---|
int sample(void)
{
A();
B();
}
|
■選択
条件「Q」の真偽によって処理を実行するか否かを選択する例。
if then型[編集]
条件「Q」が真の場合に処理「A」を実行する例。「if文(if...then)」に相当する。
| PAD | フローチャート | サンプルコード |
|---|---|---|
int sample(void)
{
if (Q)
A();
}
|
if then else型
各条件「Q」が真の場合に処理「A」を実行し、偽の場合に処理「B」を実行する例。「if文(if...then...else)」に相当する。。
| PAD | フローチャート | サンプルコード |
|---|---|---|
int sample(void)
{
if (Q)
A();
else
B();
}
|
多分岐(switch case)型
「Q」に対しそれぞれの条件「Cn」が成立した場合に各処理を実行する例。「switch文」に相当する。
| PAD | フローチャート | サンプルコード |
|---|---|---|
int sample(void)
{
switch(Q){
case C1:
A();
break;
case C1:
B();
break;
…
case Cx: ;
break;
}
}
|
■前判定反復
最初に条件「Q」を判定し、成立している間は処理「A」「B」を実行する例。「while文」に相当する。
| PAD | フローチャート | フローチャート(JIS) | サンプルコード |
|---|---|---|---|
int sample(void)
{
while(Q){
A();
B();
}
}
|
■後判定反復
処理「A」「B」を実行したあとに条件「Q」を判定し成立するまで処理を繰り返す例。「do-while文」に相当する。また、「for文」処理にも用いられる(条件設定部に初期値、継続条件、更新処理を記述する)。
| PAD | フローチャート | フローチャート(JIS) | サンプルコード |
|---|---|---|---|
int sample(void)
{
do{
A();
B();
} while{Q};
}
|
■拡張図式
連接、選択、反復の構造だけでは必ずしも全てのプログラムを実現できるわけではなく、例えば「goto文」を使うことが効率的なこともある。このような事例をPADで記述するための記法がある。また、ひとまとまりの処理を定義する記法もある。
●N+1/2ループ
ループに入る前に行う処理がループ内でも行われる場合の記法である。標準記法でも記述できるが、拡張図式として記述することが出来る[8]。
| PAD(標準図式) | PAD(拡張図式) | フローチャート | サンプルコード |
|---|---|---|---|
int sample(void)
{
A();
do{
B();
A();
} while{Q};
}
|
●Break
Break(gotoと同義)[9]。
| PAD | フローチャート | サンプルコード |
|---|---|---|
goto label; label: |
●定義
処理(関数やサブルーチン)の定義名をつけて一連の処理を記述しておき、他のPAD図でその処理を引用する[10][11]。(以下の例では、処理名を「func」とし、定義名と処理の内容を「=���」でつなぐ。)
| PAD | フローチャート | サンプルコード |
|---|---|---|
int func()
{
A();
while(P){
if Q
C();
D();
}
B();
}
int sample(void)
{
if (R)
func();
F();
}
|
■実例
具体的な処理例として、打ち切り処理付きバブルソートのPAD、フローチャート、サンプルコードの対応を示す[注釈 1]。
■PADの視覚的利点
PADでは、
- 処理の実行順序 - 下への接続
- 選択・反復の深さ - 右方向への展開
という2次元的な図になる。
これは、構造化プログラムにおいて、フローチャートでは判別しにくい論理構造がPADでは視覚的に把握しやすい図として表現できることを示している。同時に、処理の接続展開方向が規定されているので、プログラム構造を図にする場合はフローチャートに比べてPADで表記することで作成する個人差が出にくいという利点もある。
逆に、プログラムの論理構造が明確でない場合はPADにすることができないともいえる。