文档介绍:本章要点:
过程与函数的定义
过程与函数的参数
常用的过程与函数
过程与函数的嵌套与递归
第5章过程与函数
基本概念
过程与函数是程序设计语言中的重要概念,也是实现结构化程序设计思想的重要手段。结构化程序设计思想的要点之一就是对一个复杂问题采用“分而治之”的策略——模块化。把一个较大的程序划分成若干个模块,每个模块只完成一个或若干个功能。每个功能可以用一个程序段来实现,这个程序段称为子程序。根据子程序是否有返回值可分为过程与函数两种。­
函数是由变量声明部分与可执行语句组成的独立实体,用以完成一定的功能。它的主要特点是在函数执行后可以方便地返回所需值,在某些情况下使用比较简单。
函数的定义与使用
函数也是一段相对独立的程序段,可读取参数、执行一系列语句并改变其参数的值。
定义函数的格式为:
函数的定义与使用(1)
Function <函数名> [ ( <形参表> ) ] :< 返回类型>;
[<局部声明> ]
begin
[ < 语句列> ] ;
end;
以保留字Function开头的第一行,称为函数首部,其余部分称为函数体。
1. 函数首部
函数名使用与变量名相同的命名规则,一个函数只能有一个函数名。形参表由若干个形式参数组成,它指明了可以传递给函数参数的个数和类型。所有的形式参数必须说明类型,相同类型的形参之间用逗号隔开,不同类型的形参之间用分号隔开。函数必须规定函数返回值的类型,函数返回值通过函数名或Result(隐含变量)带回。
函数的定义与使用(2)
2. 函数体
函数体是一个程序段。由局部声明部分和可执行部分组成。可执行部分由begin 开始,以end结束,end 后面必须跟一个分号。在局部声明部分定义函数所需的常量、变量、类型等,该部分声明的常量、变量、类型只能在函数内部使用。在可执行部分根据函数的功能编程,而且在执行语句中至少要给函数名预定义的Result赋值一次,以便在函数执行结束后函数值带回到主程序中去。
3. 函数的调用
函数的调用比较简单,调用格式为:
函数名(<实参表>);
更常用的方法是直接将函数返回值直接赋值给变量,当然要注意类型兼容。
例如声明一个Max函数:
function Max(a:real;b:string):boolean;
则在调用Max函数时必须有两个参数,而且参数类型必须相兼容,返回值赋值也要注意类型兼容。
函数的定义与使用(3)
2. 函数体
函数体是一个程序段。由局部声明部分和可执行部分组成。可执行部分由begin 开始,以end结束,end 后面必须跟一个分号。在局部声明部分定义函数所需的常量、变量、类型等,该部分声明的常量、变量、类型只能在函数内部使用。在可执行部分根据函数的功能编程,而且在执行语句中至少要给函数名预定义的Result赋值一次,以便在函数执行结束后函数值带回到主程序中去。
3. 函数的调用
函数的调用比较简单,调用格式为:
函数名(<实参表>);
更常用的方法是直接将函数返回值直接赋值给变量,当然要注意类型兼容。
例如声明一个Max函数:
function Max(a:real;b:string):boolean;
则在调用Max函数时必须有两个参数,而且参数类型必须相兼容,返回值赋值也要注意类型兼容。
函数的定义与使用(4)
【例5-1】定义一个求两个实数中较大数的函数,并利用该函数求三个实数中的最大值。
分析:定义一个新的函数,函数名为Max(),该函数的功能是对两个实数求出最大值,输入的参数是两个实数x、y,注意输入量不能为其他类型的常量或变量,输出z是两个实数中较大的一个值,在程序中可以利用IF语句实现两数的比较。
求三个数中的最大值可以先求两个数中的最大值,再与第三个数做比较,大者为三个数中的最大值。
启动Delphi ,新建一个工程,在其中添加标签Label,Label2,将两标签的Caption属性值分别改为“输入三个实数”和“三个数中的最大值是”,并适当更改字体属性。添加四个编辑框,默认名分别为Eidt1、Eidt2、Edit3、Edit4,将它们的Text属性值均改为“0”,再添加一个按钮Button1并将其Caption属性值改为“比较”界面,将组件按适当位置摆放,如图5-1所示。
函数的定义与使用(5)
双击“比较”按钮,()过程中添加变量定义语句和事件处理语句。
procedure (Sender: TObject);
var a,b,c:real;
begin
a:=strtofloat(edit