アルゴリズムトップ
0. はじめに
1. アルゴリズム
1. アルゴリズムとは
2. 当ページの範囲
3. 良いアルゴリズム
4. フローチャートの書き方(記号)
5. フローチャートの書き方(構造)
6. 順次構造
7. 分岐構造
8. 反復構造
2. 順次構造
1. 代入
2. 計算
3. 入力
4. 出力
5. 練習問題1
6. 練習問題2
3. 分岐構造
1. 条件分岐
2. 単一分岐
3. 練習問題1
4. 多重分岐
5. 複合条件
6. ケース(多方向分岐)
7. 練習問題2
8. 練習問題3
4. 反復構造
1. 反復構造の種類
2. 前判定型
3. 後判定型
4. 練習問題1
5. 練習問題2
6. 練習問題3
7. 多重反復処理(ネスト)
8. 練習問題4
9. 練習問題5
5. 配列
1. 配列とは
2. 練習問題
3. 2次配列
4. 練習問題
5. 素数を求める,その1
6. 素数を求める,その2
6. 検索・ソート
1. サブルーチン
2. シーケンシャルサーチ
3. バイナリサーチ
4. 練習問題
5. ルックアップテーブル
6. ソートとは
7. 選択法
8. 交換法
9. バブルソート
10. 挿入法
11. クイックソート
12. 処理速度の比較
7. 文字列
1. 文字と文字列
2. 文字列処理
3. 文字列のコピー
4. 練習問題
5. 文字列の比較
6. 文字列の連結
7. 文字列の検索
| |
前ページへ : トップへ : 次ページへ
3-4.多重分岐(例題)
- 例題:
- 変数a,b,cに適当な数が代入されている。この変数中で最小値を変数wに代入する。
- 考え方:
- aとbを比べる。そのうち、小さい方とcを比べる。その結果小さい方が最小値である。
- a≦bでかつa≦cの時 → 最小値は a
- a≦bでかつa>cの時 → 最小値は c
- a>bでかつb≦cの時 → 最小値は b
- a>bでかつb>cの時 → 最小値は c
これをアルゴリズムで表すと、
if(a<=b){
if(a<=c)
w=a;
else
w=c;
}
else{
if(b<=c)
w=b;
else
w=c;
}
}
|
mov al,a
cmp al,b
jbe JOUKEN2
mov al,b
cmp al,c
jbe MIN_B
mov al,c
mov w,al
jmp short _END
MIN_B:
mov al,b
mov w,al
jmp short _END
JOUKEN2:
mov al,a
cmp al,c
jbe MIN_A
mov al,c
mov w,al
jmp short _END
MIN_A:
mov al,a
mov w,al
; jmp short _END
_END:
|
ここで注意点があります。上のフローチャートで、cをwに代入している操作が
2カ所あります。しかしこれをまとめて、下記のようなフローチャートにする
ことはできません。アセンブリ言語のようにプログラム言語によっては、
このような悪いフローチャートをプログラムとして書くことが日常茶飯事に
行われる言語もありますが、いけません。必ず、条件分岐したものは、
一番手前の分岐が1つにまとまってからでないと、他の処理とまとまることは
許せないのです。
mov al,a
cmp al,b
jbe JOUKEN2
mov al,b
cmp al,c
jbe MIN_B
MIN_C:
mov al,c
mov w,al
jmp short _END
JOUKEN2:
mov al,a
cmp al,c
ja MIN_C
mov al,a
mov w,al
; jmp short _END
_END:
|
↑これは悪い例
前ページへ : トップへ : 次ページへ
|