[パスカル – TUT] 投稿 7: サブルーチン

1. サブプログラムを使用するメリット(CTC)

– プログラムは、各セグメントは、特定の機能を実行する複数のセグメントを有している{ その後、我々は上のCTCのセグメントを行うために使用}
– プログラムでは、, 上がる必要があるセクションがあります, 別の場所で何度も繰り返さ. 人々は通常、複数のCTCプログラムに分類された段落を書き換えることを避けるために
– 1は簡単にメインプログラムにリンクする前に、それの正しさを確認することができますように、CTCのもう一つの便利な使用. したがって、エラーの識別と、プログラムで調整を行うことは、より容易になる.
=> CTCは、プログラムセグメント履行または特定の機能である. ターボパスカルで, 持っている 2 CTCのフォーマット: ファンクションおよびプロシージャ. ファンクションとプロシージャは、CTCである, しかし関数は、関数名を経由してコールに値を返す他の関数の手順は、手順はありませんでした

2. CTCの宣言

– ウィットの構造を想起

	PROGRAM Tên_chương_trình; { Tên chương trình}
	USES ...; {Khai báo thư viện}
	CONST ...;{Khai báo hằng}
	TYPE ...;{Khai báo kiểu}
	VAR ...;{Khai báo biến}
	Khai báo CTC
	BEGIN {Chương trình chính}
		<các lệnh>;
	END.

宣言の端部に位置するこのように宣言CTC
ザ·. 宣言と関数呼び出し
– 宣言する:

		FUNCTION <tên hàm>(Danh sách ác tham số):<Kiểu dữ liệu>;
		[Khai báo Const, Type, Var]
		BEGIN
			<các lệnh trong thân hàm>;
			<tên hàm>:=<Giá trị>;
		END;

呼び出されたときに注意は常に関数名の機能に割り当てられた値を可能にすると、値を返す
例: の合計 2 xとyの

	Function tong(x,y:integer):integer; {Do có giá trị trả về}
	var s:integer;
	begin
		s:=x+y;
		tong:=s;
	end;

– 関数呼び出し

	<tên hàm>(danh sách các tham số thực);

例:
トング(4,5);

B. 宣言とプロシージャ·コール
– 宣言する:

		PROCEDURE <tên thủ tục>(Danh sách các tham số);{không có giá trị trả về}
		[Khai báo Const, Type, Var]
		BEGIN
			<các câu lệnh>;
		END;

例:

	Procedure inso(n:integer);
	var i:inteher;
	Begin
		for i:=1 to n do
			write(i:5);
	end;

– 手続き呼び出し

	<tên thủ tục>(danh sách các tham số thực);

例:
INSO(6);

3. グローバル変数とローカル変数

– グローバル変数は、メインプログラムで宣言された変数です. これらの変数は、プログラムの任意の場所で使用し、作業計画の期間中に存在することができます
– ローカル変数 (ローカル変数) 変数は、CTCで宣言されています. これらの変数は、それが宣言されているCTC内で使用されている. CTCの後フォーム変数は、もはや存在しません.
例:

PROGRAM vidu;
Var a,b,c:integer; {3 biến toàn cục}
PROCEDURE thutuc(n:integer);{n là biến cục bộ}
var i:integer; {i là biến cục bộ}
begin
	for i:=1 to 10 do writeln(i);
end;
BEGIN
	a:=5;b:=6;c:=8;
	thutuc( a);
	thutuc( b);
	thutuc( c);
	readln;
END.

– 会議の中でグローバル変数と同じ名前のローカル変数がローカル変数に対して実行するマシンを混同してはいけません. グローバル変数は影響を受けません.

4. サブルーチンに引数を渡す方法

– CTCはパラメータを必要としません (後で名前CTC) あなたが直接、またはグローバル変数を使用してそれらを使用しない場合
– あなたは順番に、CTC呼び出しパラメータでパラメータを渡すと入力すると宣言CTCに対応.
例:

Procedure inso(a:integer; ch:char);
begin
	{các lệnh của CTC}
end;
{gọi}
inso(13,'a'); {lời gọi đúng}
inso('a',13); {loi goi sai}
inso(13);{lời gọi sai}

– パラメータフォーム (へ) 関数名と宣言手順後のパラメータ.
– パラメータは、コール中に、次のパラメータと手順関数の名前です.
– パラメータ: パラメータは、varキーワードの後に​​宣言されている. 実引数は、変数が価値がないです. パラメータは、CTCおよびCTCの値が変化するからそれを維持した後に変更することができます.
– 値に参加: varキーワードの後ろに予告ノッチなしのパラメータ. これらのパラメータは、実際の値とすることができる, 定数, 変数. CTCのCTCではなく、オリジナルとその戻り値の終了後に変更されることが価値に参加.
– 関数のパラメータは、参加です, プロシージャのパラメータは、値またはパラメータで渡すことができます.

5. 関数とプロシージャを使用して区別

関数は、関数名を経由してコールに値を返すハム他の手順は、手順はありませんでした.

*機能を使用してください
– 問題が戻るの結果 1 ユニークな値 (スカラー型, 文字列またはポインタ型).
– 計算式におけるCTCへの呼び出し.

*手順を使用します
– 問題の結果は、値または戻り値を返すか、データ型の構造体を返していません (配列, 記録, ファイル)
– コー​​ルCTCは計算式ではありません.

注目: ジョブが機能することによって行うことができれば、確か手順で行われます {使用しかし、より複雑な機能} しかし、そう手順を作成したプログラムは、関数によって行われた.

ボーランドパスカルのために 7.0 我々はそのようなプロシージャ·コールを呼び出すことができます. 必ずしも戻り値を取得できません. [オプション]メニューでこれを達成するために >拡大するコンパイラ宣言構文 (拡張構文), またはプログラムで翻訳を導かれるべき {$ X }. ない限り、, コンパイルするとき (タイプF9) パスカルは、エラーメッセージ "エラーになります 122: 無効な変数の参照」.

6. 再帰的なサブルーチンのように

パスカルにおけるCTCは自分自身を呼び出すことができます. いわゆるコール再帰呼び出し

次の例を考えてみましょう:
入力する 1 番号nとn!
I nは知っている! = 1 もし、n = 0の場合にはnは>我々が持っているN = 1!= N.(-1)!
機能のうちのn!

function giai_thua(n:integer):longint;
begin
	if n=0 then giai_thua:=1
	else giai_thua:=n*giai_thua(n-1);
end;

– 注意:
+ 再帰的な条件付きの終了再帰を使用している場合 (TH縮退). このような状況では、再帰をされ終了n = 0の考える. このプログラムの終わりのための条件が存在しない場合、我々は無限に繰り返されます.
+ 常に再帰呼び出しを持っている, コー​​ルgiai_thua上のTHの(-1);


原著: vietsource.net