《易语言简易图解教程_第8章.pdf》由会员分享,可在线阅读,更多相关《易语言简易图解教程_第8章.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、163将程序分割成较小的功能单元就可以简化程序设计任务,这些功能单元被称为子程序,可以把共享的或常调用的功能置于子程序中,达到简化程序设计、方便代码重用和提高程序维护效率的目的,这是结构化程序设计的主要特征之一。子程序可把程序划分成相对独立的功能单元,每个单元都比无子程序的整个程序容易调试和理解;一个应用程序中的子程序,往往不必修改或只需稍作改动,便可以成为另一个程序的子程序。本章主要介绍易语言子程序的创建和调用、子程序参数的使用以及参数属性的设置方法。第第第第 8 8 8 8 章章章章 易语言的子程序易语言的子程序易语言的子程序易语言的子程序本章学习内容本章学习内容:8.1新建子程序8.6参
2、数的参考属性8.2调用子程序8.7子程序的返回值8.3两类子程序的区别8.8课后练习8.4子程序参数8.5参数的可空属性1648.18.18.18.1新建子程序新建子程序新建子程序新建子程序下面我们就开始新建第一个自定义子程序。方法十分简单,一步一步跟我来吧!将光标移到代码编辑行,右键单击,在弹出菜单中选择“新子程序”命令,就可以新建子程序。首先在启动窗口添加 一 个 按钮,默认名称为“按钮1”。双击按钮 1 进入代码 编 辑 界面。另一种更快捷的方法是,在代码编辑区获得焦点时,同时按下“Ctrl 键”和“N 键”,也可以新建子程序。新建子程序的默认名称为“子程序 1”,依此类推。第三种方法,
3、到主菜单上。选择“插入”“新子程序”命令也可新建子程序。1658.28.28.28.2调用子程序调用子程序调用子程序调用子程序注意:注意:在 同 一个程序集中,子 程 序 名 不能重复。特别在 修 改 的 时候,易语言会提 示 并 修 改已 经 被 使 用过的名称。“子 程 序1”已经存在,当另一个子程序 被 修 改 成“子 程 序 1”时,易语言弹出出错提示。被易语言修改的子程序名。新建的子程序没有参数,这需要操作者自行添加所需数目的参数并设置参数的类型以及参数的可空、参考和数组等属性。特别应该注意的是,每个新建的子程序都不会被易语言或其它子程序自动调用,下面将讲解如何调用子程序。前一节中讲
4、了如何建立子程序,下面演示如何调用一个子程序。166在“子程序 1”中添加代码:信息框(“你好!我是信息框。”,#信息图标,)在“_按钮1_被单击”事件子程序中添加程序代码“子程序 1()”或直接复制名称,将其粘贴过来。在“按钮 2”事件子程序中添加代码 子程序 1()。同 一 个子 程 序 可 以被多次调用。一个子程序可以在事件子程序和其它新建的子程序中多次被调用,也可以被其它程序集的事件子程序和新建的子程序调用。要注意的是,在本程序中定义的子程序只能在本程序中使用。每次调用子程序时,子程序中的所有命令都将从第一条开始顺序执行,当执行到子程序尾部或者遇到“返回”命令时即返回到调用此子程序命令
5、的下一条命令处。按 F5 键运行程序,分别单击“按钮 1”和“按钮 2”,都能弹出“子程序 1”里的信息框。1678.38.38.38.3两类子程序的区别两类子程序的区别两类子程序的区别两类子程序的区别把“子程序 1”修改为“信息框子程序”。上节中提到了子程序名称的问题,这里我们还要提一个小建议。当要修改一个子程序名称时,应该直接到这个子程序的定义位置进行修改。这样可以使调用它的程序代码同步修改该子程序的名称,如上图所示。这可以避免因调用无效子程序导致的编译错误。这 里 的“子程序 1”同时被修改为 信息框子程序。大家可以看到,子程序必须由其它子程序调用才能被执行。子程序的调用方法与命令的调用
6、方法完全一致。虽然新建的子程序(自定义子程序)和事件子程序的调用方法一样,但它们之间也有一些不同之处。1688.48.48.48.4子程序参数子程序参数子程序参数子程序参数光标选中子程序名称,按 Enter 键添加一个参数。这是“_按钮 1_被单击”子程序的原型,没有参数。输入参数名称并设置类型。最后按F5 键运行程序,单击“按钮 1”,信息框不见了。信息框看不到的原因是“_按钮 1_被单击”子程序参数结构被改变,易语言就会把它当作新建的子程序,和“按钮 1”没有任何联系了,而新建子程序可以任意的添加参数。请大家自行总结一下新建的子程序和事件子程序的区别。参数和变量的使用方法一样,可以使用赋值
7、语句在参数内临时存储数据。参数有参数名参数名(用来在程序中引用一个参数)、数据类型数据类型(确定参数能够存储数据的种类)以及“可空”和“参考”等属性。参数只能在定义它的子程序中使用,相当于局部变量。169把 8.3 中“_ 按钮 1_被单击”事件子程序的“参数 1”删除。在“信息框子程序”添加两个文本型参数“参数 1”和“参数 2”。参数的“类型”属性可为空。如果空,默认为整数型整数型。按 F5 键,程序无法运行,在输出面板中可以看到出错提示。这就说明我们还要在调用上述子程序时提供具体的参数。用光标选中此行并双击,在括号内添加“,”号,按 Enter键。看到了吗?调用子程序的命令前 多 了 个
8、“”号,我们可以将它展开。展 开 的 方法:直接双击或用键盘上的右光标键。170参数提示和实际参数的内容是互相对应的,在上面添加文本型数据“易语言”,当程序运行时,下面“参数 1”保存的数据就是“易语言”。接下来我们在程序中为子程序提供具体的参数数据。用“Ctrl+Tab”组合键切换到界面设计状态,在窗体上添加两个标签和两个编辑框,并将标签的标题属性设置为“输入 123”,提示用户。这是前面提到的“按钮 1”,下面的是“按钮 2”。标 签 的 标题在此处设置。切换到代码编辑状态,在子程序调用处,分别为两个参数提供数据(编辑框提供的文本型数据)。171子程序如需要接收参数数据,必须先在子程序定义
9、处的参数表部分定义所需的参数。调用有参数的子程序时所传递过来的数据将被顺序地填入对应的参数中。如果传递过来的数据与对应位置处的参数数据类型不一致,在可以互相转换时,系统将自动将传递过来的数据转换成对应参数的数据类型后再赋值给该参数;如果不能转换,就会产生运行时错误。如上面的第 2 步在调用子程序的同时就把“编辑框编辑框 1.1.内容内容”和“编辑框编辑框 2.2.内容内容”作为参数数据对应地传递到了编辑框子程序编辑框子程序内的两个参数“参数参数 1 1”和“参数参数 2 2”内。修改“信息框 子 程序”代码。按 F5 键运行程序,在“编辑框 1”和“编辑框 2”中输入“123”,单击“按钮 1
10、”,第一个信息框被弹出。你也可以输入其它的数据,看一看效果。1728.58.58.58.5参数的可空属性参数的可空属性参数的可空属性参数的可空属性参数可空,就是说该参数是可选的,从字面上就能理解它的意思。就是在调用子程序时,可以不提供该参数所需的数据。看看下面的例子。如果某个参数的“可空”属性为真,那么在调用本子程序时,可以不给此参数传递数据。可空的参数主要用于支持具有默认值的参数;另外,如果给某个子程序添加了新参数却又不想去更改以前调用此子程序的代码,那么只要将新参数设置为可空参数就行了。将“参数2”可空属性选中。方法是,选中该处单元格再单击或选中后按空格键。把调用处的“参数 2”删除。17
11、38.68.68.68.6参数的参考属性参数的参考属性参数的参考属性参数的参考属性打个比方,你家的门锁有两把钥匙,分别由两个人拿着。不管是哪一个人都可以打开房门,改变家里家具的摆放位置。如果子过程的参数具有“参考”属性,那么,当调用子程序时负责提供该参数数据的是一个变量的话,在子程序中修改了该参数的值,那个变量的值也会跟着被改变。在“_按钮 1_被单击”事件子程序中添加两个局部变量。把编辑框提供的文本型数据转换到整数型。注意:注意:文本型数据默认具有参考属性,所以此例中为了演示参数的参考属性,把文本型数据转换到整数型。添加信息框,显示调用子程序后,“变量 2”的值。174 添 加 代码,修改“
12、参数 2”的值。将“信息框子程序”两个参数的类型改为整数型。在代码行前设置断点。注意:注意:为了更好地了解程序的运行过程,可以通过在关键代码行前设置断点的方法来跟踪代码行的执行情况。按 F5 键运行程序,在启动窗口的编辑框中输入“123”,单击“按钮 1”。设置断点的方法:用光标选中将被设置断点的代码行,再按 F9 键。窗口消失,程序停止,一个断点变黄。这就说明在“_按钮 1_被单击”事件子程序中,第一个断点处的“信息框子程序”将被执行。175再按 F5 键,“信息框子程序”里的代码被执行。说明子程序已经被调用。“参数 2”的值被改变。“参数 1”的值是“变量1”的值。两个条件都成立。再按 F
13、5 键,断点变为红色,弹出条件成立的信息框。单击“确定”按钮。程序又跳到了“信息框子程序”被调用处的下一行代码处,说明“信息框子程序”执行完毕。由于运行开始时“编辑框 1”内的数据为空文本,转换到整数后为“0”。再按 F5 键,弹出“_按钮 1_被单击”事件子程 序 中 的 信 息框。即使“参数 2”的数据被改变,“变量2”仍保存原值。“参数 2”没有设置参考。1768.78.78.78.7子程序的返回值子程序的返回值子程序的返回值子程序的返回值当使用变量向子程序的参数传递数据时,如果所传递过来的变量为数数组组、用户定义数据类型用户定义数据类型、库定义数据类型库定义数据类型、字节集型字节集型或
14、文本型文本型,则无论参数的“参考”属性是否为真,都将是传递变量的指针(即该变量的内存地址),这样在子程序中改变该参数的值时相应变量的值也会被改变;如果所传递过来的变量类型与相应参数的数据类型不一致但可以相互转换,譬如将整数型变量传递到小数型的参数时,则在数据被实际传递前,系统将首先自动将整数型变量的值转换为小数型数据,然后再进行传递,在这种情况下,即使参数的“参考”属性为真,系统也无法传递指向原变量的指针,只能传递经过类型转换后的变量的值。如果系统将数据指针成功地传递过来,那么在子程序中对此参数内容的更改将会相应地反映到调用子程序时负责提供相应参数数据的变量上。单击“确定”按钮,代码运行结束。
15、关闭程序,然后设置“参数 2”的参考属性,设置“参数 2”的参考属性的方法类似可空属性的设置,在参数定义表“参考”栏相应空格内单击使之出现一个“”号。按 F5 键运行。最后信息框显示“变量 2”的值和“参数 2”的值是相同的。子程序可以返回数据,称为返回值,但必须首先定义返回值的类型,并且要在子程序中使用“返回”命令进行返回。177“返回值”变量用来保存“信息框子程序”返回的整数型数值。参数 2 123信息框(“参考的使用方法。”#换行符 “变量 2=”到文本(变量 2),0,)将“信息框子程序”的返回值类型设置为整数型。删除下面两行代码。在“_按钮 1_被单击”事件子程序中添加名称为“返回值
16、”的整数型变量。在“信息框子程序”的每个分支处添加返回命令。将“信息框子程序”里的两个“信息框”命令复制到“_按钮 1_被单击”子程序的判断语句中。最后按 F5 键运行程序。1788.88.88.88.8 课后练习课后练习课后练习课后练习(1)练习子程序的建立与调用。调用一个子程序时,子程序中的所有命令将从第一条开始顺序执行,当执行到子程序尾部或者遇到“返回”命令时即返回到调用此子程序命令的下一条命令处。当一个子程序有返回值时,如果需要使用该返回值,可以把子程序调用命令嵌在其它命令中,如“变量1=变量 2+子程序名(参数)+变量 3”(这里假设“子程序名(参数)”有返回值),也可以建立一个与该
17、返回值数据类型相同的变量来接收该返回值,即使用“变量名=子程序名(参数)”的形式(“=”在这里是赋值号)。新建“Windows 窗口程序”添加一个按钮。添加如图上的代码。完成后运行一下程序看看。这两个地方添加什么值,才可以使程序运行,并且能够正确显示呢?请大家来将这两个命令补充完整。179,(2)练习编写用子程序的方式表示两数相加,返回和的例程。新建易程序,放两个编辑框组件与一个按钮组件,双击按钮组件,进入程序代码界面。新建一个子程序,名称为:“和是几”。加入两个数。参数类型为整数型。返回值类型为整数型。在“_按钮 1_.被单击”事件子程序下输入以下程序代码:信息框(和是几(到数值(编辑框 1
18、.内容),到数值(编辑框 2.内容),0,)在“和是几”子程序下输入以下程序代码:返回(数 1+数 2)最后按 F5 键运行程序看看。180(2)用子程序的方式编写判断两个数大小的程序,并返回最大数。新建易程序,放两个编辑框组件与一个按钮组件,双击按钮组件,进入程序代码界面。新建一个子程序,名称为:“谁最大”。加入两个数。参数类型为整数型。返回值类型为整数型。在“_按钮 1.被单击”子程序下输入以下程序代码:信息框(和是几(到数值(编辑框1.内容),到数值(编辑框2.内容),0,)在“和是几”子程序下输入以下程序代码:如果(数 1 数 2)返回(数 1)否则返回(数 2)如果结束最后按 F5 键运行程序。大家再留意一下,“如果”命令还有这种形式的,这种形式的“如果”命令虽然占的代码行稍多,但逻辑很清晰,提倡大家以后在使用“如果”命令时多使用这种形式。