AOBA's Information Processing Education
1997/11/09
注意1:このページは、回線を切断した後でゆっくりご覧になってください(テキストを印刷する場合は、その取り扱いに注意してください)。
注意2:背景が白地の画面を長時間見つめていると頭が痛くなってしまいますので、ここは背景をグレーにしています。
早速ですが、次の図1を見てください。これは縦がTATE,横がYOKO,高さがTKSAの三角柱か四角柱の体積をTISKに求める流れ図です。どちらの体積を求めるかはFLAGでもって決定され、それが1の場合は三角柱を、2の場合(1以外の場合)は四角柱を求めます(流れ図の開始に先立って4変数への代入が行われていると考えてください)。
![]()
流れ図の真ん中あたりにひし形の図形がありますね。これを判断といい、判断でもって、流れ図内で通過する処理を分岐させることができます。
感覚で分かると思いますが、図1の判断部分では、FLAGが1の場合に"MNSK / 2 → MNSK"の処理を行い、FLAGが1以外の場合はこの処理を迂回します。したがって、"MNSK * TKSA → TISK"の処理を実行する直前では、MNSKに三角形か四角形の面積が代入されており、これにTKSA(高さ)を乗じることで、TISK(体積)を求めているのです。実は判断の書式はいくつかあるのですが、図1にある書式が一般的なので、とりあえずこのように覚えておきましょう。判断の書式は以下の通りです。
変数:定数 または 変数:変数 つまり判断は、変数と定数を比較して(または変数どおしを比較して)、比較条件を満足するルートへ分岐させるのです。比較条件とは図1における"="や"≠"であり、これ以外にも">","<","≧","≦"等を使用することができます。
さて、図1ではFLAGが1以外の場合に処理はありませんでしたが、ここに処理を記述することも許されます。またその処理は1つとは限らず複数の処理を行っても結構です。だから図1と同じ結果を得る流れ図を、図2のように書くこともできます。
![]()
ただし図2の流れ図は同じ処理(最後の体積を求める部分)を2回記述しているので、あまり良い流れ図とは言えません。
「演習」
以下は、変数Aの内容の絶対値を変数Bに求める流れ図である。空欄を埋めて流れ図を完成させよ(この流れ図を実行すると、Aの内容が10の場合はBの内容も10になり、Aの内容が−20の場合はBの内容が20になる)。
![]()
演習の解答 空欄ア A:0 空欄イ −A → B(または、0 − A → B)
変数Aの内容が正の数の場合は、変数Aをそのまま変数Bに代入します。変数Aの内容が負の数の場合は、変数Aの符号を反転した値を変数Bに代入します。
空欄アについて
変数Aの内容が正か負かを判断するには、変数Aと0を比較し、A≧0ならば正の数(この演習では0も正の数とみなしてよい)、A<0ならば負の数とみなせます。したがって空欄アは"A:0"です。
空欄イについて
変数Aの符号を逆転させるには"−A"("0 − A"でもよい)とすればよいので、空欄イは"−A → B"です。
比較条件で大小関係を用いる場合、一方が">"ならもう一方は必ず"≦"です。逆に一方が"≧"ならもう一方は必ず"<"です。この演習では特に考慮する必要がありませんが、比較する数の境界値(この演習における0)の場合にどちらに分岐するべきかを、よく考えるようにしましょう。
ではまた来週。