大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal入门>>过程和函数(子程序)         本站全文搜索: 友情提示:

过程和函数(子程序)
http://www.mydrs.org  8/23/2001  大榕树


一、子程序设计的需要:
1.细化算法的过程,可以将每一个子问题运用一段相对独立的小程序来解决;
2.一些具有相同或功能相似的程序段在程序中的不同位置反复出现,可以将这样的程序段做成一个整体,用一个标识符给它起一个名字,凡是需要这个程序段的地方只要简单地引用其标识符即可。
3.子程序包括过程和函数两种形式。
二、函数
1.标准函数 :由Pascal定义的函数。如我们熟悉的ord,chr等,程序员编程时直接引用就行了。
2.自定义函数:由程序员在程序中定义后再使用。
(1)自定义函数的定义
function 函数名(形参表):函数类型; { ————函数首部}
var {————局部变量说明部分}
begin {————函数体}
... {————函数语句}
...
函数名:=表达式
end;
(2)函数的调用:函数在语法上相当于一个表达式,所以,调用时,函数不能独立成为一个语句;它可以出现在任何表达式可以出现的地方。
例如赋值语句的右边:
X:=函数名(实在参数表); {————X的类型与函数类型必须一致}
又,如果函数类型是boolean,则还可以出现在条件语句中,充当条件表达式:
if 函数名(实在参数表) then ……
(3)例:编写一个函数,返回布尔值判别输入三个字符是按序或无序排列。程序中若输入abc则显示顺序排列,若输入cba则显示逆序排列,其他情况显示无序排列,当输入***程序结束。(pfun1.pas)
三、过程
1.标准过程:由Pascal定义的过程。如我们熟悉的read,write等,程序员编程时直接引用就行了。
2.自定义过程:由程序员在程序中定义后再使用。
(1) 过程的定义
procedure 过程名(形式参数表); {————过程首部}
var {————说明部分}
begin {————过程体}
...
...
end;
(2)过程的调用:过程在语法上相当于一个语句,所以,调用时,直接写下就行:
过程名(实在参数表);
(3)例1:某部队举行一次军事演习,A、B两队约好在同一时间从相距100公里的各自驻地出发相向运动。A队的速度为10公里/小时,B队的速度为8公里/小时。一通讯员骑马从A地同时出发为行进中的两队传递消息,速度为60公里/小时。每遇一队立即折回驶向另一队,当两队距离小于0.5公里时,停下来不再传递消息。求此时通讯员跑了多少趟(从一队到另一队为一趟)?(p118.pas)
(4)例2:已知二个合数A=18和B=96,键入N个[10,400]之间的自然数,求这N个数中所有合数与A、B的最大公约数。(p120.pas)

四、子程序中的参数
1.局部变量和全局变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
2.变量的作用域
(1)变量的作用域和它被定义的位置有关:
在哪里被定义,它的作用范围就在那里:全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序
(2)全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
3.值形参和变量形参
值形参——传值
变量形参——传地址
4.例3:作用域的示例ppro4.pas和ppro5.pas
五、综合练习 (ppro8.pas)
前提知识:计算任意三角形(三条边的长度分别为a、b、c)的面积S可以用海伦公式:
S=sqrt((x-a)(x-b)(x-c))
其中:x=(a+b+c)/2
题目描述:从键盘输入三个数,判断以这三个数为边能否组成一个三角形,若不能,则给出适当信息;若能,则输出是否为等边、等腰或直角三角形,并输出其面积。
编程要求:
1. 将从键盘输入三个数设计成一个过程,过程名为input,带三个变量参数a,b,c;
2. 将判断三个数能否组成三角形(包括是什么三角形)设计成一个函数,函数为ang,参数为在input中接收到的三个数,返回的值表明了能否组成三角形或三角形的类型;
3. 将计算三角形面积设计成一个函数,函数名area,带三个值参数,返回的值为三角形的面积;
4. 要求使程序的主程序的结构明快些,并要求在程序中的适当的说明。


来 源:NOI信息学竞赛(http://noi.stinfo.net)
共有4028位读者阅读过此文

  • 上篇文章字符串
  • 下篇文章枚举算法入门

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8306]
    2. 七类高中生具有保送资格 [5910]
    3. NOI2006获奖选手名单 [4955]
    4. 关于举办NOIP2006模拟赛的通告 [4106]
    5. Turbo Pascal各语句运行速... [3594]
    6. Turbo王者归来新Delphi免费... [3181]
    7. IOI2006我国4名选手全部获得金... [2945]
    8. 关于APIO2007与IOI2007... [2763]
    9. noip倒计时 by 枯叶蝴蝶 [2683]
    10. 朱泽园:思想上的金牌更重要 [2168]
    过程和函数(子程序)
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号