函数和过程

[复制链接]
发表于 2023-12-22 17:46:04 | 显示全部楼层 |阅读模式
过程

1.过程的定义
procedure 过程名(形式参数:参数说明);{也可以不带参数}
var
begin
...
end;
2.过程的调用
过程名(实在参数表);
例1:求n个自然数的最大公约数;
program gcd1;
const maxn=100;
varn,i,gcd:integer;
    a:array[1..maxn] of integer;
procedure enter;
begin
write('n=(<100)');readln(n);
for i:=1 to n do
repeat
write('a[',i,']=');readln(a);
until a>0;
end;
procedurefind_gcd(x,y:integer);{定义过程}
var r:integer;
begin
r:=x mod y;
while  r<>0 do  
  beginx:=y;y:=r;r:=x mod y; end
gcd:=y;
end;

procedure print;
begin
writeln('GCD=' ,gcd);
end;
begin
enter;
gcd:=a[1];
for i:=2 to n do
find_gcd(gcd,a);
print;
end.
8.2 函数
1.函数的定义
function 函数名(形参表):函数类型; { ————函数首部}
var {————局部变量说明部分}
begin {————函数体}
... {————函数语句}
...
函数名:=表达式
end;
2.函数的调用:
函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它可以出现在任何表达式可以出现的地方。
例如赋值语句的右边:
X:=函数名(实在参数表); {————X的类型与函数类型必须一致}
又,如果函数类型是boolean,则还可以出现在条件语句中,充当条件表达式:
if 函数名(实在参数表) then ……例3:编一程序,求从10名同学中选出3名代表,有几种不同的选法。
(公式:C(m,n)=m!/n!*(m-n)!从m中选n)
program zohe1;
var m,n:integer;
    c:longint;
function factor(x:integer):longint;{定义}
var i:integer;
p:longint;
begin
p:=1;
  for i:=1 to x do p:=p*i;
  factor:=p;{这个语句必须}
end;
begin
write('m,n=');readln(m,n);
c:=factor(m) div (factor(n)*factor(m-n));{调用}
writeln('c(',m,',',n,')=',c);
end.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表