講義ノート3E 電子計算機 → CASL IIのプログラム例(その5)

アドレスの受け渡し(サブルーチン)

教科書の[例題8](p.101〜105)の説明である。

目次

  1. サブルーチン
  2. プログラムの構造とフローチャート

サブルーチン

プログラムの規模が大きくなると、その動作の内容が分かりにくくなる。また、似たような処理が増えてくる。そのため、プログラムを機能毎に分割することが行われている。機能毎に分割した、専用のプログラムを利用するのである。このことにより

というようなメリットが生じる。

実際のプログラムでは、下図の様な構造となる。一番左のSTARTからENDのラインがメインルーチンである。そして、処理Aから処理Dのラインが、それぞれサブルーチンとなっている。

教科書の例は、最大値を求める部分をサブルーチンとしている。最大値を求めるサブルーチンは、他でも使えそうなので、独立させているのである。他のプログラムでも、このサブルーチンを使うことを考えると、その独立性を高くする必要がある。サブルーチンを変更することなく、他のプログラムで、そのルーチンが使えれば、独立性が高いと言える。

独立性を高めるためには、データの共有を減らすことである。もちろん、最大値を求めるために必要なデータは共有しなくてはならないが、その他のものはそうしないことである。そのため、データの受け渡しをよく考えなくてはならない。CASL IIの場合、汎用レジスターを使ってデータの受け渡しを行う。また、汎用レジスターはデータの処理にも使われる。サブルーチンでは、できるだけ汎用レジスターの値を変更しないようにする。そのため、教科書の例題では

としている。

他に、ここで使っているテクニックはアドレスの受け渡しである。それは、プログラムをよくにらめば分かるはずである。

プログラムの構造とフローチャート


last update:



no counter