吾爱分享资源网

 找回密码
 立即注册
查看: 175|回复: 13

[易语言] 十章教程学会易语言第八章子程序的使用方法

  [复制链接]

1198

主题

1305

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11509
发表于 2017-9-30 20:13:28 | 显示全部楼层 |阅读模式
                   第8章 易语言子程序的使用方法
本章主要介绍“易语言”子程序的调用方法、子程序参数的使用方法以及参数属性的相关使用方法。
本章学习内容
8.1  新建子程序                 8.6  参数的参考属性
8.2  调用子程序                 8.7  子程序的返回值
8.3  与事件子程序的区别         8.8  课后练习
8.4  子程序参数              

8.5  参数的可空属性

将程序分割成较小的逻辑单元就可以简化程序设计任务,这些部件被称为子程序。子程序可用于压缩重复任务或共享任务,例如,压缩频繁的计算处理等等。
·        子程序可使程序划分成离散的逻辑单元,每个单元都比无子程序的整个程序容易调试及理解;

·        一个应用程序中的子程序,往往不必修改或只需稍作改动,便可以成为另一个程序的子程序。
8.1  新建子程序
下面我们就开始新建第一个自定义子程序。方法十分简单,一步一步跟我来吧!
QQ截图20170930195747.png
QQ截图20170930195800.png
QQ截图20170930195809.png
新建的子程序没有参数和变量,这需要操作者自行添加和自定义参数的数量以及每个参数的类型、可空、参考、数组属性。

特别应该注意的是,每个新建的子程序都不会被“易语言”或其它子程序自动调用,下面将讲解如何调用子程序。
8.2  调用子程序
前一节中讲了如何建立子程序,下面演示如何调用一个简单的子程序。
QQ截图20170930195941.png
子程序可以在其它事件子程序和新建子程序中多次被调用,也可以被其它程序集的事件子程序和新建子程序调用,就像单击“按钮1”,“_按钮1_被单击”被调用。要注意的是,子程序只能在本程序中使用。

每次调用子程序时,子程序中的所有语句都将被从第一条开始顺序执行,当执行到子程序尾部或者遇到“返回()”命令时即返回到调用此子程序语句的下一条语句处。
QQ截图20170930200019.png

子程序必须由其它事件子程序调用。子程序的调用方法与命令的调用方法完全一致。所谓事件子程序,就是“易语言”组件自带的触发事件。如:“_按钮1_被单击”。
8.3  与事件子程序的区别
虽然新建子程序和事件子程序的调用方法都一样,但它们之间也有一些不同之处。
QQ截图20170930200148.png
信息框看不到的原因是“_按钮1_被单击”子程序参数结构被改变,“易语言”就会把它当作新建子程序,和“按钮1”没有任何关系了,而新建子程序可以任意的添加参数。
8.4  子程序参数
参数和变量的使用方法一样,可以使用赋值语句在参数内临时存 储数据。参数有“名字”(用来引用参数所包含内容的词)、“数据类型”(确定参数能够存储数据的种类)、“可空”和“参考”。参数只可以在被定义的子程序中使用,相当于局部变量。
QQ截图20170930200259.png
QQ截图20170930200308.png
QQ截图20170930200320.png
QQ截图20170930200330.png
子程序如需要接收参数数据,必须先在子程序定义表中参数表部分定义与欲接收数据数目相同的参数。调用子程序时所传递过来的数据将被顺序地填入对应的参数中。如果所传递过来的数据与对应位置处的参数数据类型不一致,在可以互相转换时,系统将自动进行转换,否则会产生运行时错误。
1、子程序可以接收参数,所定义的各参数的数据类型及参数数目决定了该子程序所能够接收的参数数据的类型和数目,具有参数的子程序在被调用时必须提供与参数数目相同的数据。如上面的第2 步在调用子程序的同时就把编辑框1.内容编辑框2.内容作为参数数据对应地传递到了编辑框子程序内的参数1参数2  参数内;

2、参数仅能在子程序内部使用,使用方法等同于变量。
8.5  参数的可空属性
参数可空,从表面上就能理解它的意思。就是在调用子程序时,可以不提供在子程序中被定义成可空的参数任何数据。看看下面。
QQ截图20170930200435.png
如果本属性为真,那么在调用本子程序时,调用方可以不为此位置处的参数传递数据。主要用作支持具有默认值的参数,也可以在为子程序添加了新参数后又不想去更改以前调用此子程序的语句时使用。
8.6  参数的参考属性
参考就是在调用一个子程序之前设置一个提供参数数据的变量的值,在子程序中相对应的参数值被改变,调用后这个变量值同时被改变。
QQ截图20170930200528.png
QQ截图20170930200537.png
QQ截图20170930200551.png
QQ截图20170930200600.png
QQ截图20170930200611.png
QQ截图20170930200620.png
设置系统为当前子程序参数传递数据时是否为传递指向数据的指针。如果所传递过来的参数数据为数组用户定义数据类型库定义数据类型字节集型、文本型数据,则无论此属性是否为真,都将传递指针。如果所传递过来数据的类型与相应位置处参数的数据类型不一致但可以相互转换,譬如将“整数型”数据传递到“小数型”的参数中,则在数据被实际传递前,系统将首先自动将“整数型”数据转换为“小数型” 数据,然后再进行传递。因此在这种情况下,即使本属性为真,系统也无法传递指向原参数数据的指针,只能传递数据本身。如果系统将数据指针成功地传递过来,那么在子程序中对此参数的内容的更改将会相应地反映到调用子程序时所提供的参数数据上。
8.7  子程序的返回值
子程序可以返回数据,但必须首先定义返回数据的类型,并且在程序中使用“返回()”命令进行返回。

QQ截图20170930200750.png
QQ截图20170930200810.png
QQ截图20170930200827.png
每次调用子程序时,子程序中的所有语句都将被从第一条开始顺序执行,当执行到子程序尾部或者遇到“返回”命令时即返回到调用此子程序语句的下一条语句处。
8.8课后练习
(1)练习子程序的建立与调用。
QQ截图20170930200948.png
(2)练习编写用子程序的方式表示两数相加,返回和的例程。
QQ截图20170930201028.png
QQ截图20170930201116.png
(3)用子程序的方式表示判断两个数谁大,并返回最大数。
QQ截图20170930201237.png
在“_按钮1.被单击”子程序下输入以下程序代码:
信息框 (谁最大 (到数值 (编辑框1.内容), 到数值 (编辑框2.内容)), 0, )
在“和是几”子程序下输入以下程序代码:
.如果 (数1 > 数2)
    返回 (数1)
.否则
    返回 (数2)

最后按“F5键”试运行一下。


本章到此结束 记得完成课后习题加深理解
下章预告:易语言的易模块讲解







上一篇:十章教程学会易语言第七章组件如何使用
下一篇:十章教程学会易语言第九章易模块的安装使用方法

0

主题

182

帖子

369

积分

中级会员

Rank: 3Rank: 3

积分
369
发表于 2018-4-12 14:02:39 | 显示全部楼层
学到了不少知识

0

主题

189

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2018-4-14 11:20:52 | 显示全部楼层
谢谢楼主发布

0

主题

185

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
发表于 2018-4-26 18:03:27 | 显示全部楼层
不错不错,楼主您辛苦了。。。

0

主题

190

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
发表于 2018-5-4 02:00:53 | 显示全部楼层
很不错的哦,支持,加油

0

主题

188

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2018-5-4 15:20:30 | 显示全部楼层
可以的~!

0

主题

194

帖子

408

积分

中级会员

Rank: 3Rank: 3

积分
408
发表于 2018-5-14 04:17:53 | 显示全部楼层
大佬厉害

0

主题

207

帖子

448

积分

中级会员

Rank: 3Rank: 3

积分
448
发表于 2018-5-27 12:18:57 | 显示全部楼层
我是来刷分的,嘿嘿

0

主题

203

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
发表于 2018-5-30 04:11:42 | 显示全部楼层
1111111111111

0

主题

193

帖子

402

积分

中级会员

Rank: 3Rank: 3

积分
402
发表于 2018-6-9 13:55:09 | 显示全部楼层
分析一波,谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱分享资源网 ( 苏ICP备17042175号 | 苏公网安备 32108102010177号 )

GMT+8, 2018-12-14 21:01 , Processed in 0.144447 second(s), 38 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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