[帕斯卡尔 – TUT] 帖子 7: 子程序

1. 使用子程序的优点(CTC)

– 该方案有许多段每个段执行特定功能{ 同时,我们用它来使段反恐委员会}
– 在程序, 有必要建立通道走, 反复数次在不同的地方. 为了避免不必重写该段,它通常被分为几种四氯化碳程序
– 使用四氯化碳作为一个可以轻松连接主程序装配前检查它的有效性的另一个便利. 因此,错误的识别和作出调整,该计划将更为有利.
=> CTC是全面实施方案或特定功能的一个片段. 在Turbo Pascal的, 有 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.

因此,反恐委员会宣布位于该声明的末尾
该. 声明和函数调用
– 声明:

		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);

例:
tong(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的程度. 反恐委员会经过公式变量将不复存在.
例:

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当对应类型的传输参数参数.
例:

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被改变后,被排除在价值变动.
– 加入治疗: 背后khia报纸上的参数,而var关键字. 这些参数可以是实数值, 不变, 变量. 加入董事会可能会改变,但最终CTC CTC后返回其值与原.
– 函数参数总是按值传递, 中的过程中的参数可以是涉及或参数值.

5. 区分使用函数和过程

该函数的功能通过函数名返回一个值到该呼叫等程序,不再程序.

*使用功能
– 问题回报结果 1 独特的价值 (标量类型, 字符串或指针类型).
– 反恐委员会应在计算表达式调用.

*使用过程
– 这个问题的结果没有返回值或返回值或返回结构化数据类型 (排列, 记录, 文件)
– 四氯化碳呼叫是不是在计算表达.

注意: 如果作业可以通过函数来​​完成,他们一定会做的过程 {然而,要使用功能时比更复杂} 但是一个程序,使得它不太可能的步骤,通过函数进行.

Borland的帕斯卡尔 7.0 可调用函数作为过程调用. 不一定能得到的返回值. 要在选项菜单中实现这一点 >编译器应该声明扩展语法 (扩展语法), 或者在程序应该已编制指南 {$ X +}. 除非, 编译时 (打字F9) 帕斯卡尔将是错误消息“ 122: 无效的变量引用“.

6. 子程序的递归计算

CTC一个Pascal中可以调用本身. 像那样的呼叫被称为递归调用

考虑下面的例子:
进入 1 n和n!
我们已经知道N.! = 1 如果n万一= 0 N>= 1我们有N!= N。(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. 如果有截至这一计划,我们将无限重复没有条件.
+ 总是有递归, 在TH在电话giai_thua(N-1);


原创文章: vietsource.net