Hue1 := [Blue, Succ(C)];
I := Sqr(J) - I * K;
Shortint(MyChar) := 122;
TByteRec(W).Hi := 0;
MyString[I] := 'A';
SomeArray[I + 1] := P^;
TMyObject.SomeProperty := True;
Procedure and Function Calls(过程和函数调用)
过程调用包含过程名(有或没有限定符),后面跟参数列表(若需要的话)
PrintHeading;
Transpose(A, N, M);
Find(Smith, William);
Writeln('Hello world!');
DoSomething();
Unit1.SomeProcedure;
TMyObject.SomeMethod(X,Y);
当启用扩展语法时({$X+}),调用函数也可以像调用过程那样,它被当作语句:
MyFunction(X); variable能被函数名取代, 。例子包括参考Procedures
- 31 -
Syntactic elements
当这样调用函数时,它的返回值被忽略。
关于过程和函数的更多信息,请参考Procedures and functions。
Goto Statements(Goto语句)
goto语句格式如下
goto label
它把程序(执行)转移到指定标签所标记的语句。要标记一个语句,你必须首先定义这个标签,然后把这个标签和一个冒号放在语句的前面来标记它:
label: statement
像这样声明标签:
label label;
你能一次声明多个标签:
label label1, ..., labeln;
标签可以是任何有效标志符,也可以是0到9999之间的任何数值。
标签声明、标记的语句和goto语句必须属于同一个块(参考Blocks and scope),因此,不能跳入一个过程或函数中,也不能从一个过程或函数中跳出。在一个块中,不能使用相同的标签标记多个语句。 比如,
label StartHere;
...
StartHere: Beep;
goto StartHere;
创建一个重复调用Beep过程的无限循环。
通常,在结构化编程中不鼓励使用goto语句,但有时使用它来退出嵌套循环,像下面的例子。 procedure FindFirstAnswer;
var X, Y, Z, Count: Integer;
label FoundAnAnswer;
begin
Count := SomeConstant;
for X := 1 to Count do
for Y := 1 to Count do
for Z := 1 to Count do
if ... { some condition holds on X, Y, and Z } then
goto FoundAnAnswer;
... {code to execute if no answer is found }
Exit;
FoundAnAnswer:
... { code to execute when an answer is found }
end;
注意:我们使用goto来跳出一个嵌套循环。永远不要跳入一个循环或其它结构语句,这会导致不可预知的结果。
- 32 -
Syntactic elements
Structured Statements(结构语句)
Structured Statements: Overview(概述)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-20.html
马大哈又开始扯淡了
错了应该是世界第一