アルゴリズム - 直線型・分岐型
 

 アルゴリズム(算法)とは、問題を解決するための手順を示したものである。その手順の示し方には、一般的にフローチャート(流れ図)が使用される。

直線型

 フローチャートの上から下へ処理の順序が一直線に進む(流れる)形の処理である。
 基本的には、@データ入力(データの記憶) → A計算 → B結果出力、の順である。例えば、三角形の面積を求めるには、「底辺×高さ÷2」という公式を使って計算する。この計算を行うには底辺と高さのデータが必要であることがわかる。したがって、処理の流れは次のように考えることができる。

@底辺のデータ入力、高さのデータ入力

A公式により面積を計算

B計算結果(面積)を出力

 これをフローチャートで表すと次のようになる。

=>
 底辺=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

 

 

inserted by FC2 system