サブルーチンは、名前があり、独自の別個のタスクを解決するプログラムの別個の部分です。サブルーチンはメインプログラムの先頭に配置され、名前を指定することでメインプログラムから起動(呼び出し)できます。
サブルーチンを使用すると、プログラム内の別の場所に同じコードを記述する必要がある場合に、コードの重複を避けることができます。
プログラムにインポートされるライブラリ (数学ライブラリ math など) は、誰かがすでにコンパイルしたサブルーチンで構成されています。プログラマーは、どのようなアルゴリズムを実装するかを考える必要はなく、正確に何をしているのかだけを考えて、単にアルゴリズムを適用するだけです。これにより時間を大幅に節約できます。すでに誰かが書いたアルゴリズムを自分で書く必要は
ありません。
各ルーチンは
次の 1 つのことだけを実行する必要があります。 単に何かを計算するか、データを出力するか、あるいは他のことを行うかのいずれかです。
サブルーチンには
プロシージャと
関数の 2 種類があります
サブルーチンは、結果を特定の形式で画面に出力するなど、いくつかのアクションを実行します (簡単な例として、ステートメント
writeln() は標準のサブルーチンであり、画面情報)
関数サブルーチンは
メイン プログラムで使用できる結果 (数値、文字列など) を返します。
簡単な手順を書いてみましょう。
画面に「Error」という文字列を表示する必要があるとします。ユーザーの過失(間違ったデータを入力した場合など)によりコード内でエラーが発生する可能性があるたびに
これはステートメントを書くことで実行できます
<プレ>
writeln('エラー');
そして、そのような行をプログラム内の多くの場所に挿入する必要があると想像してください。もちろんどこにでも書いて大丈夫です。ただし、この解決策には 2 つの欠点があります。
1) この文字列は何度もメモリに保存されます
2) エラー時の出力を変更したい場合は、プログラム全体でこの行を変更する必要があり、かなり不便です
このような場合には手続きが必要
になります。
プロシージャを含むプログラムは次のようになります。
<プレ>
...
名前空間 std を使用します。
プロシージャ printError(); // 手続きの説明
始める
writeln('エラー'); // プロシージャ本体 - プロシージャが実行するコマンド
終わり;
// メインプログラム
始める;
...
印刷エラー(); // 実行のためのプロシージャを開始します。実行したいプロシージャの名前を指定するだけです。
...
印刷エラー();
...
終わり。
プレ>
プロシージャは、
procedure
という単語で始まります。 プロシージャ名の後に括弧が書かれ、プロシージャの実行が依存する変数とその型を示します。例:
var a, b, 答え: 整数;
プロシージャ Sum(a, b: 整数);
始める
答え:= a + b;
終了;
プロシージャ内で実行されるすべてのステートメントはインデントされます。
プロシージャはメインプログラムの前に記述されます
プロシージャを実行するには、メイン プログラムでプロシージャを
名前で呼び出し、 かっこを忘れずに記述する必要があります。
プログラム内のプロシージャは何度でも呼び出すことができます。