函数过程讲解:
函数与过程是用来定义实现某个特定功能的代码集中块,如标准函数abs(绝对值),sqr(平方)等,在系统中已定义,可以直接引用。有时,我们在编程时,也需要定义一些特定功能的函数或过程,就可以自已来定义。
例1:定义一个求两个数之间较大的数的函数。输入a和b,输出a和b中较大者。
用函数实现:函数会返回一个值,在定义地,必段把返回值的类型也定义好。
var
a,b:integer;
function max(a,b:integer):integer{定义函数,a,b为两个形式参数}
begin
if a>b then
max:=a
else
max:=b;
end;
begin{主程序}
编写函数其功能是计算一个字符串readln(a,b);
writeln(max(a,b));{调用函数,此处a,b已从键盘读入值,为两个值参,必须用两个已知值来调用,即用值参来调用形参,两种参数在类型上和数量上必须一一对应}
end.
用过程来实现:
var
a,b,maxab:integer;
procedure max(a,b:integer);
begin
if a>b then
maxab:=a
else
maxab:=b;
end;
begin
readln(a,b);
max(a,b);{调用过程}
writeln(maxab);{maxab为一个全局变量,它值在max过程中进行了处理,在主程序中可以直接引用,对于全局变量和局部变量下面会讲解}
end.
全局变量、局部变量、变参、值参的区别:
例2:定义一个交换两个值的过程。
var
a,b,c:integer;{全局变量}
procedure swap(a,b:integer);{作为参数的局部变量,当与全局变量名称一样时,它的值不影响全
局变量的值}
var
tmp,c:integer;{局部变量,此处的c没有实际意义,是用来讲清楚全局与局
部变量的}
begin
tmp:=a;
a:=b;
b:=tmp;
c:=0;
end;
begin
a:=1;b:=2;c:=3;
swap(a,b);
writeln(a,'',b,'',c);
end.
输出结果为:
123
即a还是1,b还是2,c还是3,过程中的局部变量的交换、赋值是不会影响到全局变量的值,它只是在swap过程中起作用。程序执行时,先给a,b,c赋值,再执行语句swap(a,b),调用过程swap,在swap过程中的变量a变为2,b变成3,c变成0,当执行完swap过程后,返回到主程序,此时过程中的局部变量a,b,c,tmp全部失效,a,b,c的值又回到全局变量a=1b=2c=3了。
如果要例a,b的值影响到全局变量时,可以采用变参,程序代码如下:
var
a,b,c:integer;
procedure swap(var a,b:integer);{加了var后,a,b定义为变参,它的值会传回给值参} var
tmp,c:integer;
begin
tmp:=a;
a:=b;
b:=tmp;
c:=0;
end;
begin
a:=1;b:=2;c:=3;
swap(a,b);{此处的a,b为值参}
writeln(a,'',b,'',c);
end.
输出结果为:
213
执行过程为:a,b,c赋初值,再调用swap(a,b),此时因为过程swap中的两个参数定义为变参了,在运行s
wap过程代码中,a,b值的交换会传回给值参a,b,所以过程执行完后,a,b的值变为21了,但c是过程中的局部变量,c的值仍然为3。
枚举与子界:
type
day=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);{定义day为枚举型变量,它只有7个值。与pascal系统中自带的变量类型一样,如integer,boolean的使用,只需把某个变量定义day类型};
num:1..9;{子界类型,num类型数据有9个值}
var
dd:day;
a:num;
begin
dd:=sunday;{不能给dd赋枚举的7个变量以外的值}a:=2;{不能给a赋值为1-9以外的数值}
枚举与子界只是规定了一种数据,与integer等数据类型变量是一样的使用。
函数、过程、递归、子界等,多看看书,碰到不能理解的数学问题就跳过,重点掌握使用的原理,熟读书本,并请完成以下作业:
第四章:函数与过程、枚举、子界类型(重点掌握形参、实参和递归)
1、定义一个求两个数之间较大的数的函数。输入a和b,输出a和b中较大者。
2、用一个过程求两个数之间的较大的值。(参数用形参,借此区分值参和形参的区别)。
3、区分形参、实参和全局变量、局部变量。请写出P124页的5.19的输出结果。
4、用递归形式求n!。
5、完成书上P110上的汉诺塔游戏.
6、顺序读入字符,以’?’结束,然后以和输入相反的次序输出读入的字符,用递归过程作。
7、完成书本上P129,P130,P133上的示例。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论