アルゴリズム - 直線型・分岐型 |
アルゴリズム(算法)とは、問題を解決するための手順を示したものである。その手順の示し方には、一般的にフローチャート(流れ図)が使用される。
直線型
フローチャートの上から下へ処理の順序が一直線に進む(流れる)形の処理である。
基本的には、@データ入力(データの記憶) → A計算 → B結果出力、の順である。例えば、三角形の面積を求めるには、「底辺×高さ÷2」という公式を使って計算する。この計算を行うには底辺と高さのデータが必要であることがわかる。したがって、処理の流れは次のように考えることができる。
これをフローチャートで表すと次のようになる。
=>
底辺=T, 高さ=H, 面積=S としたとき
2つある入力処理は1つにまとめても良い。また、TとHの順番が逆になっても良い。
=====−−−
例題 たてA(cm)、横B(cm)の長方形の面積S(cm2)を求める。フローチャートを作成せよ。
(考え方)
長方形の面積を求める公式 … S=A×B
計算(処理)に必要なデータ … たてA、 横B
出力データ … 面積S
・フローチャート
BASIC | C(整数のみとする) |
10 INPUT "たて=",A 20 INPUT "横=",B 30 S = A * B 40 PRINT "長方形の面積=";S 50 END |
#include <stdio.h> void main(void) { int a, b, s; printf("たて="); scanf("%d", &a); printf("たて="); scanf("%d", &b); s = a * b; printf("長方形の面積=%d\n", s); } |
条件を判定した結果によって2つ以上の方向に処理の流れが分かれるものである。
条件は、@等号、不等号の式で表し、成立、不成立によって流れを変える。A比較する値(式)を記述し、比較結果によって流れを変える。の2通りが考えられる。
フローチャート内の表記の方法が違うが、@、Aとも同じである。
Aの値の方がBより大きければ、下の流れ線へ進む。逆にBの値の方がAより大きければ、右の流れ線へ進む。
AとBの値を比較する。その結果によって処理の流れが分かれる。
・Aの値の方が大きい → 左の流れ線へ進む。
・Bの値の方が大きい → 右の流れ線へ進む。
・AとBの値が等しい → 下の流れ線へ進む。
Nの値によって処理の流れが分かれる。
・Nの値が1 → 下の流れ線へ進む。
・Nの値が2 → 右の流れ線へ進む。
・Nの値が3 → 左の流れ線へ進む。
Nの値は1〜3以外にならないという前提が必要である。
3つ以上の方向に分岐する場合の書き方である。流れの方向が明確に示せれば別の書き方でも良い。
=====−−−
例題 2つの値X,Yを入力して大きい方を出力する。XとYが同じときはXを出力する。フローチャートを作成せよ。
・フローチャート
BASIC | BASIC(ポケコン) | C(整数のみとする) |
10 INPUT "X=",X 20 INPUT "Y=",Y 30 IF X>=Y THEN 40 PRINT X 50 ELSE 60 PRINT Y 70 END |
10 INPUT "X=",X 20 INPUT "Y=",Y 30 IF X>=Y THEN 60 40 PRINT Y 50 GOTO 70 60 PRINT X 70 END |
#include <stdio.h> void main(void) { int x, y; printf("x="); scanf("%d", &x); printf("y="); scanf("%d", &y); if(x>=y) printf("%d", x); else printf("%d", y); } |
Copyright © 2003 Hiroshi Masuda |