第六章子程序和函数.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章子程序和函数

第六章 函数和子程序 独立模块的子程序 独立模块的函数 局部变量与全局变量 STATIC选项和说明 过程的递归调用 块内子程序和块内函数 模块化程序实际的思想 独立模块的子程序(引例) 独立模块的子程序 QBASIC提供独立模块的子程序和函数,这种子程序和主程序不在同一个模块中。它以SUB语句开头,以END SUB结束; SUB 子程序名(形式参数) 子程序体 END SUB 子程序名最长可为40个字符。我们约定子程序名第一个字母用大写,子程序后可以没有形参,此时必须省略括号,变为: SUB 子程序名 形参的类型说明如下: 变量名1 AS 类型名,变量名2 AS 类型名,… 注:如果形参是实型,则AS语可以省略。 SUB和END SUB 之间的语句行称为子程序体,在子程序体内不可出现DATA语句,子程序体中的READ语句会到主程序体中的DATA语句中读取数据; 子程序不能嵌套定义,即在子程序体内不能再 出现SUB语句。 子程序的调用(CALL 语句) 子程序调用的两种形式: CALL 子程序名(实际参数) 子程序名 实际参数 实参的个数必须与所调用子程序中形参个数相同,实参和形参的类型必须按位置一一对应匹配,如果调用的子程序没有形参,则调用时子程序后面的一对括号必须省略,格式为: CALL 子程序名 或 子程序名; 实参可以是变量、常量、表达式; 主程序DECLARE语句表示本程序中将用子程序,如果在主程序中要调用两个子程序,则应有两个DECLARE语句。如果调用的子程序没有形参,但DECLARE 语句中子程序后的括号却不能少。DECLARE放在程序中所有可执行语句的前面。如果程序设计者未写DECLARE语句,则QBASIC会根据SUB语句所定义的子程序名和参数自动加上; DECLARE语句中括弧内参数的个数和类型与子程序形参的个数和类型一致。 在子程序中还可以调用子程序,也可以调用它自身(递归调用)。 子程序的输入 在QBASIC环境下,无论在哪个编辑窗口,只要在新一行键入子程序的初始行,如:SUB Star(n AS INTEGER),按回车键;如果已经输入主程序,将窗口Split,在其中的一个窗口中的主程序后键入子程序(该窗口中的主程序会自动清除,而且存盘后另一窗口主程序的前面加DECLARE SUB 子程序名);通过View菜单的SUBs…菜单项选择或激活要编辑的子菜单或主程序。 模块之间数据传递----虚实结合 主程序或其它调用子程序的程序块称为“调用程序”。 在调用子程序时调用程序的实参和被调用的子程序的形参之间的数据传递,称为“虚实结合”。 在高级语言中,虚实结合有两种方式。 (1)值传递方式:即实参把其值传递给形参,这种传递是“单向的”。 (2)地址传递方式:这种方式是半实参的地址传递形参,实参与形象共占同一存储单元。 按地址传递参数 按值传递参数 独立模块子程序举例 基本要求 掌握模块化子程序的定义和调用方法; 掌握模块之间数据的传递形式 独立模块的函数引例 模块化的函数 函数的调用 编写函数用于判断函数的自变量是否是素数,如果是素数,函数值为1,则打印YES;否则,函数值为0,打印NO。 按照证歌德巴赫猜想,一个大于5的偶数可以表示为两个素数的和。编写程序判断任意输入的两个数之间的所有偶数都可用两个素数的和表示。 子程序1:规范任意输入的数,使之符合歌德巴赫猜想的条件; 子程序2:利用循环结构,将每一个偶数表示为两个素数的和; 函数1:判断是否为偶数,如果是奇数,其值为1; 函数2:判断一个数是否为素数,如果是素数,其值为1 ; 局部变量引例 过程定义行中的STATIC选项 每当调用子程序或函数时,系统将为过程中用到的变量开辟存储单元,并对数值变量赋值0。当调用结束后,过程中的变量不再存在,即不在占有内存。 当指定STATIC选项后,过程中的所有变量将占有永久性的存储单元,但第一次调用时,系统为过程中的变量开辟存储单元,并对数值变量赋初值0,调用结束后,这些变量仍然存在,当第二次调用时,系统仍然使用原来的存储单元,上一次保存的值就是它的初值。 过程体中的STATIC选项 再过程体中可以使用STATIC语句指定过程体中的某些变量占有占有永久性的存储单元。 基本要求 掌握模块化函数的定义和调用方法; 掌握模块之间数据传递方式; 了解局部变量的概念。 过程递归调用的说明 一个问题要采用递归调用的方法来解决,必须符合一下三个条件:可以把要解决的问题转化为一个新的问题,而这个新的问题的解法仍与原来的解法相同,只是处理对象有规律的递增或递减; 可以应用这个转化过程使问题得到解决; 必定要有一个明确的结束递归的条件。 基本要求 掌握递归过程; 掌握块内子程序和块内函数的使用。 在调用一个子程序或函数

文档评论(0)

book1986 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档