信息学竞赛Pascal语言:函数和过程(六)_杯赛竞赛-查字典奥数网
 
请输入您要查询的关键词

信息学竞赛Pascal语言:函数和过程(六)

2012-12-14 16:33:09     标签:信息学

查字典合肥奥数网讯:青少年信息学竞赛Pascal语言:函数和过程。

过程

1.过程的定义

procedure过程名(形式参数:参数说明);{也可以不带参数}

var

begin

...

end;

2.过程的调用

过程名(实在参数表);

例1:求n个自然数的最大公约数;

programgcd1;

constmaxn=100;

varn,i,gcd:integer;

a:array[1..maxn]ofinteger;

procedureenter;

begin

write('n=(<100)');readln(n);

fori:=1tondo

repeat

write('a[',i,']=');readln(a[i]);

untila[i]>0;

end;

procedurefind_gcd(x,y:integer);{定义过程}

varr:integer;

begin

r:=xmody;

whiler<>0do

beginx:=y;y:=r;r:=xmody;end

gcd:=y;

end;

procedureprint;

begin

writeln('GCD=',gcd);

end;

begin

enter;

gcd:=a[1];

fori:=2tondo

find_gcd(gcd,a[i]);

print;

end.

下一页阅读函数

函数

1.函数的定义

function函数名(形参表):函数类型;{————函数首部}

var{————局部变量说明部分}

begin{————函数体}

...{————函数语句}

...

函数名:=表达式

end;

2.函数的调用:

函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它可以出现在任何表达式可以出现的地方。

例如赋值语句的右边:

X:=函数名(实在参数表);{————X的类型与函数类型必须一致}

又,如果函数类型是boolean,则还可以出现在条件语句中,充当条件表达式:

if函数名(实在参数表)then……

例3:编一程序,求从10名同学中选出3名代表,有几种不同的选法。

(公式:C(m,n)=m!/n!*(m-n)!从m中选n)

programzohe1;

varm,n:integer;

c:longint;

functionfactor(x:integer):longint;{定义}

vari:integer;

p:longint;

begin

p:=1;

fori:=1toxdop:=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.

下一页阅读全局变量和局部变量

全局变量和局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

例4:全局变量和局部变量。

programlocal_global;

vari,k:integer;

proceduresub1;

vari,j:integer;

begin

i:=17;

writeln('iinsub=',i);

writeln('kinsub=',k);

end;

begin

i:=2;k:=9;

writeln('iinmain=',i);

writeln('kinsub=',k);

sub1;

writeln('iinmain=',i);

writeln('jinmain=',j);

readln;

end.

上述程序运行时将出现UnknownIdentfier;因为变量j在主程序中没定义。

当删除本语句时。运行结果如下:

iinmain=2

kinmain=9

iinsub=17

kinsub=9

iinmain=2

下一页阅读值参和变量参数

值参和变量参数

值形参——传值:调用时可用表达式代替形参,不该变实在参数的值。

变量形参——传地址:调用时必须用变量代替行参变量,改变实在参数的值。

例4:请看下列程序的运行结果。

programli3_10;

vara,b,c:integer;

proceduresub(x,y:integer;varz:integer);

begin

x:=x+1;y:=y+1;z:=x+y;

writeln('sub:x=',x:2,'y=',y:2,'z=',z:2);

end;

begin

a:=1;b:=4;c:=9;

writeln('main:a=',a:2,'b=',b:2,'c=',c);

sub(a,b,c);

writeln('main:a=',a:2,'b=',b:2,'c=',c);

sub(c+5,b*b,a);

writeln('main:a=',a:2,'b=',b:2,'c=',c);

readln;

end.

main:a=1b=4c=9

sub:x=2y=5z=7

main:a=1b=4c=7

sub:x=13y=17z=30

main:a=30b=4c=7

练习与作业

1、试编写一个将阿拉伯数字转换为中文大写数字的函数。(如中文状态不方便,可以替换为ABCDEFGHIJ)

2、输入一个长字符串和一个短字符串以及一个合适的整数,通过程序从指定位置用指定短字符串替换长字符串中的内容(要求编写过程来实现),最后输出新字符串。

往期最新阅读:信息学竞赛Pascal语言:循环结构程序设计(四)

信息学竞赛Pascal语言 数组与字符串(五)

更多内容,请参加查字典合肥奥数网“杯赛竞赛”频道。

点击显示
上一篇:信息学竞赛Pascal语言:子界与枚举类型(七)
下一篇:信息学竞赛Pascal语言 数组与字符串(五)
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关文章
热门文章
最新文章
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •   信息学竞赛Pascal语言:函数和过程(六)_杯赛竞赛-查字典奥数网
     
    请输入您要查询的关键词

    信息学竞赛Pascal语言:函数和过程(六)

    2012-12-14 16:33:09     标签:信息学

    查字典合肥奥数网讯:青少年信息学竞赛Pascal语言:函数和过程。

    过程

    1.过程的定义

    procedure过程名(形式参数:参数说明);{也可以不带参数}

    var

    begin

    ...

    end;

    2.过程的调用

    过程名(实在参数表);

    例1:求n个自然数的最大公约数;

    programgcd1;

    constmaxn=100;

    varn,i,gcd:integer;

    a:array[1..maxn]ofinteger;

    procedureenter;

    begin

    write('n=(<100)');readln(n);

    fori:=1tondo

    repeat

    write('a[',i,']=');readln(a[i]);

    untila[i]>0;

    end;

    procedurefind_gcd(x,y:integer);{定义过程}

    varr:integer;

    begin

    r:=xmody;

    whiler<>0do

    beginx:=y;y:=r;r:=xmody;end

    gcd:=y;

    end;

    procedureprint;

    begin

    writeln('GCD=',gcd);

    end;

    begin

    enter;

    gcd:=a[1];

    fori:=2tondo

    find_gcd(gcd,a[i]);

    print;

    end.

    下一页阅读函数

    函数

    1.函数的定义

    function函数名(形参表):函数类型;{————函数首部}

    var{————局部变量说明部分}

    begin{————函数体}

    ...{————函数语句}

    ...

    函数名:=表达式

    end;

    2.函数的调用:

    函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它可以出现在任何表达式可以出现的地方。

    例如赋值语句的右边:

    X:=函数名(实在参数表);{————X的类型与函数类型必须一致}

    又,如果函数类型是boolean,则还可以出现在条件语句中,充当条件表达式:

    if函数名(实在参数表)then……

    例3:编一程序,求从10名同学中选出3名代表,有几种不同的选法。

    (公式:C(m,n)=m!/n!*(m-n)!从m中选n)

    programzohe1;

    varm,n:integer;

    c:longint;

    functionfactor(x:integer):longint;{定义}

    vari:integer;

    p:longint;

    begin

    p:=1;

    fori:=1toxdop:=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.

    下一页阅读全局变量和局部变量

    全局变量和局部变量

    在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

    例4:全局变量和局部变量。

    programlocal_global;

    vari,k:integer;

    proceduresub1;

    vari,j:integer;

    begin

    i:=17;

    writeln('iinsub=',i);

    writeln('kinsub=',k);

    end;

    begin

    i:=2;k:=9;

    writeln('iinmain=',i);

    writeln('kinsub=',k);

    sub1;

    writeln('iinmain=',i);

    writeln('jinmain=',j);

    readln;

    end.

    上述程序运行时将出现UnknownIdentfier;因为变量j在主程序中没定义。

    当删除本语句时。运行结果如下:

    iinmain=2

    kinmain=9

    iinsub=17

    kinsub=9

    iinmain=2

    下一页阅读值参和变量参数

    值参和变量参数

    值形参——传值:调用时可用表达式代替形参,不该变实在参数的值。

    变量形参——传地址:调用时必须用变量代替行参变量,改变实在参数的值。

    例4:请看下列程序的运行结果。

    programli3_10;

    vara,b,c:integer;

    proceduresub(x,y:integer;varz:integer);

    begin

    x:=x+1;y:=y+1;z:=x+y;

    writeln('sub:x=',x:2,'y=',y:2,'z=',z:2);

    end;

    begin

    a:=1;b:=4;c:=9;

    writeln('main:a=',a:2,'b=',b:2,'c=',c);

    sub(a,b,c);

    writeln('main:a=',a:2,'b=',b:2,'c=',c);

    sub(c+5,b*b,a);

    writeln('main:a=',a:2,'b=',b:2,'c=',c);

    readln;

    end.

    main:a=1b=4c=9

    sub:x=2y=5z=7

    main:a=1b=4c=7

    sub:x=13y=17z=30

    main:a=30b=4c=7

    练习与作业

    1、试编写一个将阿拉伯数字转换为中文大写数字的函数。(如中文状态不方便,可以替换为ABCDEFGHIJ)

    2、输入一个长字符串和一个短字符串以及一个合适的整数,通过程序从指定位置用指定短字符串替换长字符串中的内容(要求编写过程来实现),最后输出新字符串。

    往期最新阅读:信息学竞赛Pascal语言:循环结构程序设计(四)

    信息学竞赛Pascal语言 数组与字符串(五)

    更多内容,请参加查字典合肥奥数网“杯赛竞赛”频道。

    点击显示
    上一篇:信息学竞赛Pascal语言:子界与枚举类型(七)
    下一篇:信息学竞赛Pascal语言 数组与字符串(五)
    推荐文章
    猜你喜欢
    附近的人在看
    推荐阅读
    拓展阅读
    相关文章
    热门文章
    最新文章
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •