找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3047|回复: 10

【VFB】VisualFreeBasic:VisualBasic6望尘莫及之短路逻辑

[复制链接]

51

主题

31

回帖

648

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
506 个
贡献
1 次
宅之契约
0 份
在线时间
23 小时
注册时间
2017-12-26
发表于 2020-1-18 17:47:30 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
VisualBasic6:微软出品、简单易用,虽然几十年前的,依旧生命顽强,以下简称:VB6

VisualFreeBasic:集合VB6的易用和采用c语言的优点及编程底层操作,VB6高手的进阶语言,以下简称:VFB


有种逻辑操作符叫:短路。顾名思义就是路径比较短,那换成代码执行就更高效率了。这是VB6不存在的。

正常逻辑是:And、Or
短路逻辑是:AndAlso、OrElse

本来VFB比VB6代码执行效率高很多,有了这个更能加速。例题:
  1. '平常写法
  2. If 表达式a And 表达式b Then ok
  3. '短路逻辑
  4. If 表达式a AndAlso 表达式b Then ok
复制代码
看上去一样,但实际上是不一样的,等效下面的语句
  1. If 表达式a Then
  2.         If 表达式b Then  ok
  3. End If
复制代码
平常写法的特性:表达式a表达式b 必须都要在计算得出结果后再进行And方式的逻辑比较,才能判断出条件是否成立。
短路写法的特性:表达式a 如果不成立,那么 表达式b 就不需要再进行计算了——已经足以判断出条件不成立了。而如果 表达式a 成立,则依然要计算 表达式b 的结果。

最有说明的应用就是数组,判断是不是发生越界访问了:
  1. If UBound(BB) >= 5 AndAlso BB(5) > 0 Then
复制代码
平常写法会因为数组太少而发生代码出错,短路写法则不会发生这问题。

上述例子用的是逻辑与的短路写法“AndAlso”,下面我们来介绍逻辑或的短路写法“OrElse”

平常写法的特性:所有表达式必须都要在计算得出结果后再进行Or方式的逻辑比较,才能判断出条件是否成立。
  1. If 表达式a Or 表达式b Or 表达式c Then ok
复制代码
短路写法的特性:先计算 表达式a 的结果,成立就直接OK,不成立则按顺序接着计算 表达式b ,如果成立则同样OK;表达式a表达式b 如果都不成立,则计算 表达式c ,如果成立则OK,否则进入Else块或者结束。
  1. If 表达式a OrElse 表达式b OrElse 表达式c Then ok
复制代码
以上只是冰山一角,更多发现,期待你自己使用VFB。


重新排版by @0xAA55
回复

使用道具 举报

1

主题

16

回帖

131

积分

用户组: 小·技术宅

UID
5585
精华
1
威望
7 点
宅币
95 个
贡献
0 次
宅之契约
0 份
在线时间
12 小时
注册时间
2020-2-5
发表于 2020-3-17 20:20:11 | 显示全部楼层
对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给初学者用的,它真的配不上。
回复 赞! 1 靠! 0

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24217 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2020-1-19 20:47:32 | 显示全部楼层
这个AndAlso其实就是C语言的 && ,OrElse则是C语言的 || 。其实可以不必出现在Basic系语法里,因为编译器可以做到识别你的需求,然后避免进行后续的判断。

反过来,多了这个AndAlso、OrElse会让Basic语言变得啰嗦。这些地方,C语言使用运算符比较方便,比如 & 和 && 、| 和 ||的对比。但Basic大可不必走这一套。

不应该“你有我有”,要发挥各个语言各自的长处。就这一点,我更喜欢原生的VB6的语法,而不太喜欢VFB的语法。我感觉那还不如我写C呢。
回复 赞! 0 靠! 1

使用道具 举报

51

主题

31

回帖

648

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
506 个
贡献
1 次
宅之契约
0 份
在线时间
23 小时
注册时间
2017-12-26
 楼主| 发表于 2020-1-20 17:46:27 | 显示全部楼层
0xAA55 发表于 2020-1-19 20:47
这个AndAlso其实就是C语言的 && ,OrElse则是C语言的 || 。其实可以不必出现在Basic系语法里,因为编译器可 ...

凭什么 C语言里有就不叫啰嗦, B语言里有就叫啰嗦, C语言里的好处,B语言学习来用,有错吗?
有好东西我们要学来用,而不是放弃自己去用别的。
回复 赞! 靠!

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24217 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2020-1-21 14:28:15 | 显示全部楼层
勇芳软件 发表于 2020-1-20 17:46
凭什么 C语言里有就不叫啰嗦, B语言里有就叫啰嗦, C语言里的好处,B语言学习来用,有错吗?
有好东西我 ...

1、我没说要放弃自己去用别的。Basic系可以做到让编译器自动识别逻辑与或非是按位还是按逻辑的,并且也可以在需要按逻辑处理的时候应用短路逻辑。

2、在C语言里面可以直接用符号表示的,在Basic里非要用单词表示,这不是啰嗦是什么?
回复 赞! 靠!

使用道具 举报

51

主题

31

回帖

648

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
506 个
贡献
1 次
宅之契约
0 份
在线时间
23 小时
注册时间
2017-12-26
 楼主| 发表于 2020-3-19 22:06:14 | 显示全部楼层
smitest 发表于 2020-3-17 20:20
对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给 ...

【BASIC是给初学者用的】这句我不认同,我认为是易用,而非初级。应该是容易学习,适合人类思维(相对于C语言)C语言是纯粹为编程而生的语言,处处为电脑内部原理考虑,因此对初学来说就是个天书,B语言是人性化多了,处处为人考虑。 以前 VB 比较弱,给人带来了初级的印象,而 FB 就不同。
回复 赞! 靠!

使用道具 举报

30

主题

210

回帖

2772

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
2153 个
贡献
206 次
宅之契约
0 份
在线时间
478 小时
注册时间
2016-7-12
发表于 2020-3-19 22:27:20 | 显示全部楼层
勇芳软件 发表于 2020-3-19 22:06
【BASIC是给初学者用的】这句我不认同,我认为是易用,而非初级。应该是容易学习,适合人类思维(相对于C ...

Basic偏向数学逻辑,c语言偏向程序逻辑
回复 赞! 靠!

使用道具 举报

30

主题

210

回帖

2772

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
2153 个
贡献
206 次
宅之契约
0 份
在线时间
478 小时
注册时间
2016-7-12
发表于 2020-3-19 22:28:41 | 显示全部楼层
smitest 发表于 2020-3-17 20:20
对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给 ...

basic作为快速开发和数学演示上还是很人性化的。
回复 赞! 靠!

使用道具 举报

4

主题

36

回帖

667

积分

用户组: 大·技术宅

UID
7138
精华
0
威望
17 点
宅币
578 个
贡献
15 次
宅之契约
0 份
在线时间
63 小时
注册时间
2021-5-11
发表于 2021-5-26 12:14:35 | 显示全部楼层
Ayala 发表于 2020-3-19 22:28
basic作为快速开发和数学演示上还是很人性化的。

basic人话更多,阅读方便,编写麻烦.
回复 赞! 靠!

使用道具 举报

9

主题

176

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
6
威望
441 点
宅币
8664 个
贡献
850 次
宅之契约
0 份
在线时间
337 小时
注册时间
2018-9-19
发表于 2021-5-31 10:52:07 | 显示全部楼层
smitest 发表于 2020-3-17 20:20
对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给 ...

AndAlso和OrElse最初就是巨硬发明的,是VB.NET语法,FB只不过跟着它学而已。
回复 赞! 靠!

使用道具 举报

1

主题

159

回帖

618

积分

用户组: 大·技术宅

UID
7535
精华
0
威望
0 点
宅币
458 个
贡献
0 次
宅之契约
0 份
在线时间
70 小时
注册时间
2021-10-16
发表于 2022-5-17 10:23:09 | 显示全部楼层

你们懂的,楼主好人
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-16 22:45 , Processed in 0.046466 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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