アルゴリズム - 配列・定義済み処理 |
配列
同じ種類のデータをたくさん記憶して扱う場合、データの個数だけ変数を用意するのは大変である。大量にデータを記憶させる必要がある場合、配列を使うのが一般的である。
配列は配列名に添字(そえじ)という番号を付けて利用する。多くのプログラムでは配列を使う前に宣言を行う必要がある。
一次元配列
BASIC DIM A(9) 配列A(0)〜A(9)の10個分用意する。 C言語 int a[10]; 配列aを10個分用意する。a[0]〜a[9]の範囲が利用できる。
二次元配列・二次元配列 B(4,4)のイメージ
BASIC DIM B(4,4) 配列B(0,0)〜B(4,4)の25個分用意する。 C言語 int b[5][5]; 配列aを25個分(5*5)用意する。a[0][0]〜a[4][4]の範囲が利用できる。 例えば、添字の1つ目を出席番号、2つ目を科目の成績というような使い方ができる。
B(0,0) B(0,1) B(0,2) B(0,3) B(0,4) B(1,0) B(1,1) B(1,2) B(1,3) B(1,4) B(2,0) B(2,1) B(2,2) B(2,3) B(2,4) B(3,0) B(3,1) B(3,2) B(3,3) B(3,4) B(4,0) B(4,1) B(4,2) B(4,3) B(4,4)
配列の宣言には、「準備」の流れ図記号を使う。
=====−−−
例題 10個のデータを配列に入力して、そのまま出力する。フローチャートを作成せよ。
図(a)のように、データの入力を10回の繰返しで行い、次の10回の繰り返しでデータを出力している。すなわち、10個のデータを全て入力してから、その10個のデータを出力している。
問題は入力してそのまま出力するのだから、「入力してそのまま出力する」を10回繰り返しても良い。これを流れ図にすると図(b)のようになる。
どちらも繰り返しようの変数Nの値を配列の添字として利用いる。
定義済み処理
処理が複雑になってくると、ひとつのフローチャートでは表しにくくなる。そこで、まとまった処理を別のフローチャートとして表し、主(メイン)となるフローチャートから呼び出して利用できるようにすると都合がよい。
=====−−−
例題 式 2x+5 を計算する処理を定義済み処理として作成する。計算に必要なデータxの入力と結果の出力はメイン側で行うものとする。フローチャートを作成せよ。
プログラム言語によって上図のように変数の扱い方が異なるものがある。例えば、BASICは(a)、VisualBASICやC言語などは(b)である。(VisualBASICやC言語は(a)とすることもできる。)
「定義済み処理」の記号で、その中に書かれた処理へ移動して処理が終われば「定義済み処理」の記号の次へ戻る。(一般的には、「定義済みの処理を呼び出し、終了すると呼び出し元(側)に戻る。」と表現する。)
BASIC | C (b)の場合(整数のみとする) | C (a)の場合(整数のみとする) |
10 INPUT "データ=",X 20 GOSUB 100 30 PRINT "計算結果=";Y 40 END 100 Y=2*X+5 110 RETURN |
#include <stdio.h> void main(void) { int x, y; printf("データ="); scanf("%d", &x); y = sub(x); printf("計算結果=%d\n", s); } int sub(int x) { int y; y = 2 * x + 5; return(y); } |
#include <stdio.h> int x, y; void main(void) { printf("データ="); scanf("%d", &x); sub(); printf("計算結果=%d\n", s); } void sub(void) { y = 2 * x + 5; } |
Copyright © 2003 Hiroshi Masuda |