目录

Pascal - 决策( Decision Making)

子程序 (Subprograms)

子程序是执行特定任务的程序单元/模块。 这些子程序组合在一起形成更大的程序。 这基本上被称为“模块化设计”。 子程序/程序可以调用子程序,称为调用程序。

Pascal提供两种子程序 -

  • Functions - 这些子程序返回单个值。

  • Procedures - 这些子程序不直接返回值。

功能 (Functions)

function是一组一起执行任务的语句。 每个Pascal程序至少有一个函数,即程序本身,所有最简单的程序都可以定义其他函数。

函数declaration告诉编译器函数的名称,返回类型和参数。 函数definition提供函数的实际主体。

Pascal标准库提供了许多程序可以调用的内置函数。 例如,函数AppendStr()附加两个字符串,函数New()动态地将内存分配给变量和更多函数。

定义一个函数 (Defining a Function)

在Pascal中,使用function关键字定义函数。 函数定义的一般形式如下 -

function name(argument(s): type1; argument(s): type2; ...): function_type;
local declarations;
begin
   ...
   < statements >
   ...
   name:= expression;
end;

Pascal中的函数定义由函数header ,局部declarations和函数body 。 函数头由关键字函数和赋予函数的name组成。 以下是函数的所有部分 -

  • Arguments - 参数建立调用程序和函数标识符之间的链接,也称为形式参数。 参数类似于占位符。 调用函数时,将值传递给参数。 该值称为实际参数或参数。 参数列表是指函数的类型,顺序和参数数量。 使用这种形式参数是可选的。 这些参数可以具有标准数据类型,用户定义的数据类型或子范围数据类型。

    出现在函数语句中的形式参数列表可以是简单的或下标的变量,数组或结构化变量,或子程序。

  • Return Type - 所有函数必须返回一个值,因此必须为所有函数分配一个类型。 function-type是函数返回的值的数据类型。 它可以是标准的,用户定义的标量或子范围类型,但它不能是结构化类型。

  • Local declarations - 局部声明是指标签,常量,变量,函数和过程的声明,它们仅适用于函数体。

  • Function Body - 函数体包含一组语句,用于定义函数的功能。 它应始终包含在保留字开头和结尾之间。 它是所有计算完成的函数的一部分。 必须有一个类型的赋值语句 - name := expression; 在函数体中为函数名赋值。 执行该函数时返回该值。 正文中的最后一个陈述必须是最终陈述。

以下是一个示例,说明如何在pascal中定义函数 -

(* function returning the max between two numbers *)
function max(num1, num2: integer): integer;
var
   (* local variable declaration *)
   result: integer;
begin
   if (num1 > num2) then
      result := num1
   else
      result := num2;
   max := result;
end;

函数声明 (Function Declarations)

函数declaration告诉编译器函数名称以及如何调用函数。 函数的实际主体可以单独定义。

功能声明包含以下部分 -

function name(argument(s): type1; argument(s): type2; ...): function_type;

对于上面定义的函数max(),以下是函数声明 -

function max(num1, num2: integer): integer;

在一个源文件中定义函数并在另一个文件中调用该函数时,需要函数声明。 在这种情况下,您应该在调用该函数的文件顶部声明该函数。

调用一个函数 (Calling a Function)

在创建函数时,您可以定义函数必须执行的操作。 要使用函数,您必须调用该函数来执行定义的任务。 当程序调用一个函数时,程序控制被转移到被调用的函数。 被调用的函数执行已定义的任务,当执行其返回语句或达到最后结束语句时,它将程序控制返回给主程序。

要调用函数,只需要传递必需的参数和函数名称,如果函数返回一个值,那么您可以存储返回的值。 以下是一个显示用法的简单示例 -

program exFunction;
var
   a, b, ret : integer;
(*function definition *)
function max(num1, num2: integer): integer;
var
   (* local variable declaration *)
   result: integer;
begin
   if (num1 > num2) then
      result := num1
   else
      result := num2;
   max := result;
end;
begin
   a := 100;
   b := 200;
   (* calling a function to get max value *)
   ret := max(a, b);
   writeln( 'Max value is : ', ret );
end.

编译并执行上述代码时,会产生以下结果 -

Max value is : 200 
↑回到顶部↑
WIKI教程 @2018