-
Notifications
You must be signed in to change notification settings - Fork 0
/
BB基础教程.txt
1426 lines (692 loc) · 36 KB
/
BB基础教程.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
第一章:简介
--------------------------------------------------------------------------------
一、BB的由来
BB是BBK BASIC的简称,是可以开发BBK电子词典程序的一种语言。这个语言采用Quick Basic的语法,方便朋友们开发程序。目前的编译器和连接器版本是1.5,大部分的功能已经支持,基本可以满足用户朋友开发程序的需要。
和QB相比较,BB大部分的语法和函数是一样的,当然也有不同的地方。详细的区别和练习。我们将在后面的文章中详细阐述。有QB编程经验的朋友使用BB将非常容易上手。BASIC是自学编程的最好语言,基本每个自学编程的高手,都有过学习BASIC的经历。因为BASIC本身具有高级语言的基本特性,比如:结构化程序设计,但有很简单。可以让初学编程的朋友把主要的精力放在对编程思想的领悟上,而不用过多的去关注所用语言本身的细节。
由于我们的词典用户,多数都是未接触过编程的学生朋友,为了很好的锻炼大家的逻辑思维能力,可以让大家能轻松体会编程的乐趣,我们公司组织专人开发了BBK BASIC这种可以开发在词典上运行的程序的编程语言。这个语言的后继版本将会推出可以在词典机上编程的版本,目前还必须在电脑上编程,生成的最终.BIN文件可以在词典机上运行。
目前已经支持的机型是9188/9288/9288T。其他机型的虚拟机将在后期提供。
二、BB的构成
目前BB还没集成的IDE开发环境。
开发环境是由编译器、连接器和基本库构成的。词典机的运行环境就很简单了,只需要一个BB虚拟机。
程序文件的编写可以使用任意的文本编辑器,例如:windows自带的记事本等。
编译器:BBasic.exe
你所写的BB程序需要经过这个可执行程序编译成虚拟机的汇编代码,汇编代码是以和你程序文件同名的.obj文件存放的。你所写的BB源程序可以以任何扩展名存放,标准的是.bas。
编译器的用法:BBasic.exe + 源程序文件
例如:你的源程序叫yzdel.bas,那么编译它的命令行为
BBasic.exe yzdel.bas
| |
| ————————源程序文件
——————————————编译器
编译后生成的目标文件是yzdel.obj
编译器有几个编译选项,下面分别介绍一下:
-opt:优化编译选项。将会优化你所写的程序,使程序的效率更高,容量更小。Ver1.4以后的编译器都支持本选项。
-r:反字节选项。这个选项的提供,是由于9188机型本身的一个问题,所以这个选项也只用在编译9188程序时。
-hr:保留注释代码选项。主要用来对比优化是否正确的。普通用户用不到这个选项,可以看懂BB汇编的用户可以
用这个选项查查看是否由于优化造成了你程序错误。
-nc:不连接公共段选项。这个选项任何人都禁止使用。主要用途是我用来调试单行代码生成的。
连接器:Blink.exe
编译后的.obj文件需要经过连接器连接成.bin文件才能最终被虚拟机解释执行。
连接器的用法:Blink.exe + objfile + binfile
例如:连接上面被编译的文件yzdel.obj成为可执行文件的命令行为
Blink.exe yzdel.obj 勇者斗恶龙.bin
| | |
| | ————被连接成的目标文件
| ———————————被连接的OBJ文件,由编译器生成
————————————————连接器
连接后的目标文件为.bin文件才可以被虚拟机识别
连接器的连接选项如下:
-r:反字节选项。这个选项的提供,是由于9188机型本身的一个问题,所以这个选项也只用在编译9188程序时。
基本库:StdLib.fls和StdLib.lib
StdLib.lib是基本库的索引文件,StdLib.lib是基本库的代码文件。
虚拟机:BB虚拟机.exe
用在词典机上的虚拟机,可执行由连接器生成的.bin文件。
三、BB的模拟器运行
为了方便程序在电脑上调试,我们提供了一个模拟器环境,模拟器的界面如下:
为了模拟屏幕大小不同的机型,模拟器窗口的大小是可以通过函数SETLCD(WID,HGT)来设置的。初始的大小是320×240的,所以若你开发的程序是9188/9288使用的话,就不需要重新设置模拟器的大小了。若你开发的机型是9288T的,就需要调用SETLCD(240,160),将模拟器窗口设置为9288T的屏幕大小。
模拟器目前还是固定执行sim\BBasic目录下的test.bin,因此要使你开发的程序可以在模拟上被执行,就必须将你生成的.bin文件copy到sim\BBasic下,并将文件名改成test.bin。
模拟器目前查找资源文件也是固定在sim\debug目录下进行的,所以若你的程序使用了资源文件,请将资源文件copy到该目录下。
完成了以上所有的动作后,即可通过调用sim\debug目录下的GamDev.exe来启动模拟器。
四、BB的词典机运行
BB的词典机环境,主要由对应机型的BB虚拟机.exe和对应机型的BBLoGo.bbs两个文件组成。
BB虚拟机.exe是BB程序可以在词典机上运行的关键程序。
BBLoGo.bbs是BB开头的那个图片,如下图所示:
想让你的BB程序在词典机上运行?只要将你的.bin文件copy到词典上的“系统\程序\目录”下,和BB虚拟机.exe文件放在同一个目录下,就OK了。很简单吧。^_^
第二章:基础知识
--------------------------------------------------------------------------------
一、数据类型
BB中支持整型(默认类型)、单精度浮点数和字符串三种数据类型。
整型:整型数和数学中的整数是一个概念,不过在计算机中整型数会根据各编译器的差异,而可表示的范围不同。数学中的整数可以是[-∞,+∞]中的任意整数,在BB中,整型数的是在[-2147483648,+2147483647]中的任意整数。
例如:1,-10,9等
单精度浮点型:可以理解成数学中的小数。当然概念是不完全等同的,但在写普通的程序时,不需要太深入的区分它们。在普通的程序中,你看到的小数,都可认为时浮点数。单精度浮点数的取值范围是 正值[+1.40129E-45,3.402823E+38] 负值[-3.402823E+38,-1.40129E-45]。
例如:1.05,3.1415926等
字符串:指在一对双引号之间的若干各字符集合。BB中的字符串最大长度是没有限制的,它只会受到你的程序所处环境的物理内存的影响。
例如:"hello world.","中华人民共和国"等
二、常量和变量
通俗的讲,常量就是在程序运行中不可改变的量;变量是用来存放数据的空间,因此在程序运行中,是可以随时根据需要改变其值的量。举个例子,变量就好比是一个礼品盒,你给朋友送礼物时,可以在这个盒子中放任何你想放的东西,而常量就好比是你放在礼品盒中的礼物,它是不会改变的。当你收到一个礼品盒时,它对你来说,就是一个变量,因为它里面可能放的是任何东西。而当你收到朋友送你的一本书时,这本书就是常量。
对于程序中的变量来说,有个当前值的概念,就是程序运行到某一时刻,变量的值。这就好比你这次用这个礼品盒包了个苹果给你的朋友,那这个苹果就是礼品盒的当前值。
在程序中,你所看到的整数,小数,字符串,都是常量。而变量是由特定的命名规则形成的符号串。对应的,程序中的常量和变量也是有3种类型,分别是整型、单精度浮点数和字符串。
常量例如:10,1.25,"I love BB."等。
变量例如:g_Variable
程序中变量实际是内存地址的名字,变量有特定的命名规则:
1、变量名是以字母开头,可用A~Z,0~9,下划线等组成的字符序列。例如g_Variable,i,name3等
2、序列长度不超过100个。
3、不允许使用关键字做变量名。如函数、语句等。
变量的定义:
目前BB还不支持使用AS定义变量类型,只能使用如下的方法定义。
Dim g_Life% 定义整型变量g_Life% (等价与Dim g_Life)
Dim g_Name$ 定义字符串变量g_Name$
Dim g_Modulus! 定义单精度浮点数变量g_Modulus!
三、算术运算
在数学中,我们有代数式,有各种运算,将这些概念引进到BB中,就成为算术运算符和算术表达式。
1、算术运算符
在BB中,我们只支持了+(加),-(减,取负),*(乘),/(除),MOD(模运算)5种运算符。
MOD是模运算即取余运算。
BB种的运算没有类型自动转换,请各位自己先进行类型匹配。
2、算术表达式
用算术运算符和括号将常量,变量及函数连接起来的式子称为算术表达式。
例如:3*X+X-2
3、字符串表达式
用字符串连接符(亦称串加值运算符)将字符串常量,字符串变量连接起来的式子称为字符串表达式。
例如:"BEIJING" + "2008"
四、程序构成
先看个例子:
'CIRCLE.BAS
'CALCULATING THE CIRCLE'S AREA AND THE LENGTH OF CIRCUMFERENCE.
Const PI = 3.14159
Dim r!,s!
Dim area!
Input "ENTER THE CIRCLE'S RADIUS:";r!
area = PI * r! * r!
s = 2 * PI * r!
Print "AREA = ";area!,"CIRCUMFERENCE = ";s
End
一个完整的程序程序包括:
(1)、注释
(2)、数据说明
(3)、数据输入
(4)、数据处理
(5)、结果输出
1、注释
语法:' 注释内容
作用:在程序中加入解释性的说明,可提高程序的可读性,方便自己修改BUG或别人阅读你的代码。
注释可单独成行,也可放到其他行后。编译器遇到注释不做任何处理,直接略去。
2、数据说明
语法:DIM 变量名(不支持AS)
作用:告诉编译器变量的数据类型,方便它进行不同的处理。
3、数据输入
详细的数据输入,在第三章的数据输入一节中会详细讲,这里不再重复。数据输入是给程序提供所需要的原始数据。
4、数据处理
对于输入的数据,根据问题的需要进行相应的处理,上例中,则是根据输入的圆的半径求圆的面积和周长。
5、结果输出
将程序计算得到的结果显示出来。
五、行标识符
行标识符(简称行标识)有行号和标识符两种形式。设置行标识的目的是标明转移之目标。
行号由1~40个数字组成,后面不必跟冒号。
标识符由1~40个字母或数字组成,必须以字母开头,并以冒号结束。
例如:
500 print "500是个行号"
GAMEOVER: End 'GAMEOVER是个标识符
第三章:I/O语句
--------------------------------------------------------------------------------
I/O语句即input/output语句,是站在计算机的角度看的输入输出操作语句。从计算机内将数据送到计算机外部设备叫“输出”;从计算机外部设备将数据送入计算机叫“输出”。
一、数据输出
输出语句用来将需要显示/保存的数据,向显示器、打印机或磁盘文件输出,供用户查看或保存。
1、屏幕显示语句(PRINT)
功能:在屏幕上显示数据
语法:PRINT [表达式1],[表达式2]...
说明:
<1>.表达式可以为一个,也可以为多个。同一个PRINT语句的各表达式之间可用分割符号(逗号,分号)隔开。
<2>.表达式可以是字符串,也可以是数值。若无表达式则输入空行。
<3>.使用逗号分割的表达式之间插入4个空格;使用分号风格的表达式之间无任何插入。
<4>.BB中的PRINT语句不具备计算功能。因此,只可以输出常量或变量的值。
例如:PRINT "A的当前值为:";A
2、打印输出语句(LPRINT)
BB不支持这个语句,这里不做介绍。
3、WRITE语句
BB不支持这个语句,这里不做介绍。
二、数据输入
输入语句是给程序提供需要处理的数据的。
1、赋值语句
功能:将一个数据赋给变量
语法:变量 = 表达式
说明:
<1>.QB中可以在赋值语句前使用LET,但基本所有的程序员都不使用这个关键字,所以BB中没有支持此关键字。
<2>.赋值语句中的“=”,叫做赋值号。
<3>.赋值号左边只能是变量,而不能是常量或表达式。因为我们知道,只有变量才是一个礼品盒,也只有礼品
盒才能用来包裹不同的东西(被赋值)。
<4>.赋值语句有运算功能,因此赋值号右边可以是表达式
<5>.一个赋值语句只能给一个变量赋值。
例如:level = 99
city = "北京"
2、键盘输入语句(INPUT)
功能:程序执行时从键盘输入数据
语法:INPUT "输入提示字语";变量列表
说明:BB中INPUT语句没做相应的数据类型检查。所以输入数据的类型和个数请在输入提示语中明确指出。
防止用户输入错误的数据。
例如:input "请输入你的年龄:";age
3、行输入语句(LINE INPUT)
BB不支持这个语句,这里不做介绍。
4、读数置数语句(READ/DATA)
功能:从DATA语句给出的数据中读取数据。
语法:READ 变量1,变量2,...变量N
.
.
.
DATA 数据1,数据2,...数据N
说明:
<1>.READ和DATA语句必须成对出现,但可以分开放。
<2>.DATA语句中的数据类型必须和READ语句中的变量类型一一对应。
<3>.READ语句中的变量个数不得多于DATA语句中的数据个数。
例如:
Dim name$,score
READ name$,score
PRINT name$,score
READ name$,score
PRINT name$,score
DATA "张三",89
DATA "李四",56
End
5、恢复读数据语句(RESTORE)
功能:从指定的DATA语句行重新读入数据。
语法:RESTORE [行标号]
说明:
<1>.RESTORE语句与READ-DATA语句配合使用,用于把“数据指针”恢复到指定的位置。
<2>.若RESTORE语句没有指定行号或行标号,则把数据指针恢复到第一个DATA语句中的第一个数据项。
三、键盘相关函数
1、KEYPRESS
功能:检测指定键的状态,若指定键按下返回1,否则返回0
语法:KEYPRESS(KEYCODE)
说明:
该函数检测到指定键的状态后立即返回,程序不会在函数内部停留等待。指定的KEYCODE是ASCII码。
例如:
'检测 A 是否按下
IF KEYPRESS(&h41) TEHN
PRINT "A 被按下"
ELSE
PRINT "A 未被按下"
END IF
'其中,&h41是A的ASCII
2、WAITKEY
功能:等待并返回一个按键的键值。
语法:WAITKEY()
说明:
该程序进入函数后,若没有按键按下,程序会一直在这个函数中等待,直到有按键按下才将被按下的键值返回。
四、屏幕操作语句
1、CLS语句
功能:清空屏幕
语法:CLS [0|1|2]
说明:
CLS后边所的带的数字,目前BB不做区分,都只执行一个功能。清空整个屏幕,并将输出光标定在(0,0)
2、LOCATE函数
功能:移动屏幕输出光标到指定位置。
语法:LOCATE(行,列)
说明:
<1>.QB中LOCATE是语句,在BB中以函数实现了。所以调用时,有部分差异。
LOCATE(0,0) 'BB中的调用
LOCATE 0,0 'QB中的调用
<2>.行列的计算方法是根据当前被设置的字体(BB中可通过FONT函数设置)的字符宽度和高度来计算的。
例如:当前被设置的字体是12×12的宋体字,则对应行列的象素坐标是:
行象素坐标 = 行 × 12
列象素坐标 = 列 × 6
3、PIXLOCATE函数
功能:移动屏幕输出光标到指定位置(象素坐标)
语法:PIXLOCATE(x,y)
说明:
<1>.本函数是QB没有而在BB中增加的。可以精确定位你的屏幕输出位置。
<2>.参数x,y就是你要将屏幕输出光标定位到的象素坐标位置。
<3>.注意,这个函数的参数顺序是和LOCATE不同的,LOCATE是先行坐标即Y坐标,而这个函数是先X坐标。
4、FONT函数
功能:设置当前的显示字体
语法:FONT(字体代号)
说明:
<1>.本函数是QB没有而在BB中增加的。可以丰富你的屏幕显示效果。
<2>.字体代号可以是:FONT_12SONG,FONT_12KAI,FONT_12HEI,FONT_16SONG,FONT_16KAI,FONT_16HEI,FONT_24SONG,FONT_24KAI,FONT_24HEI九种字体中的一种。以上9种字体实际只有宋体,楷体和黑体三种,而每种字体又分为12×12,16×16,24×24三种尺寸。
<3>.通过本函数设置字体后,会影响LOCATE函数的行列坐标计算。即不同的字体,使用相同的LOCATE参数,显示的内容也不一定是在相同的屏幕位置。
第四章:分支结构
--------------------------------------------------------------------------------
程序按照程序行的顺序执行,这种结构称为顺序结构。而有些问题需要根据调教的不同,执行不同的代码,这种结构称为分支结构。
一、块IF语句
功能:根据条件又选择的执行程序。
语法:
IF 条件 THEN
语句块1
ELSE
语句块2
END IF
说明:
<1>.IF THEN ELSE END IF为关键字。执行时,计算机首先判断条件是否为真,若为真则执行语句块1,否则执行语句块2。执行完后程序跳转到END IF的下一条语句执行。
<2>.语句块是以段程序,可以包含一条或多条语句。
<3>.上面的写法中,语句块1和语句块2比IF ELSE END IF靠右,这叫程序的缩排。这种格式右利于程序的可阅读性。
例如:
DIM a
Input "请输入A",a
IF a > 0 THEN
print "a > 0"
ELSE
print "a <= 0"
END IF
二、块IF语句的变形
1、省略ELSE语句
功能:确定语句块是否执行
语法:
IF 条件 THEN
语句块
END IF
说明:
执行时,计算首先判断条件是否为真。若为真,则执行语句块;否则,直接跳转到END IF后的语句执行。
例如:
DIM a
Input "请输入A",a
IF a = 0 THEN
print "a = 0"
END IF
2、增加ELSE IF语句
功能:提供多种选择
语法:
IF 条件1 THEN
语句块1
ELSE IF 条件2 THEN
语句块2
ELSE IF 条件3 THEN
语句块3
.
.
.
ELSE
语句块N
END IF
说明:
<1>.IF THEN END IF为必须项,其他为可选项。
<2>.执行时,计算机首先判断条件1是否成立,若成立,则执行语句块1;否则判断条件2是否成立,若成立,则执行语句块2;否则继续判断下一个条件,如果为真,则执行相应的语句块;若所有条件都为假,则执行ELSE下面的语句块N。执行完对应的语句块后,跳转到END IF后的语句继续执行。
例如:
DIM a
Input "请输入A",a
IF a > 0 THEN
print "a > 0"
ELSE IF a = 0 THEN
print "a = 0"
ELSE
print "a < 0"
END IF
三、关系表达式和逻辑表达式
在块IF语句中,我们使用了“条件”来作为判断标准。那么,条件都会由哪些东西构成呢?下面介绍几个基础知识。
1、逻辑量
逻辑量又叫布尔量,它只又两种值,“真”和“假”。
2、关系运算符
其实就是日常生活中的比较运算。在BB中,有如下几种符号:
符号 意义 等同的数学符号 例子
> 大于 > 5 > 3
< 小于 < 3 < 5
= 等于 = 1 = 1
>= 大于等于 ≥ 4 >= 4
<= 小于等于 ≤ 4 <= 4
<> 不等于 ≠ 1 <> 2
3、关系表达式
用关系运算符将两个算术表达式串联起来的式子,叫关系表达式。关系表达式的值为逻辑值。
例如:上面的例子中的关系表达式的值都为“真”。
4、逻辑运算符
逻辑运算符有:AND(逻辑与),OR(逻辑或),NOT(逻辑非);XOR(异或)等。BB只支持与或非三中逻辑关系运算。
NOT在程序中出现时,你可以理解为“”
具体意义,看下面。
5、逻辑表达式
用逻辑运算符连接关系表达式构成的式子,叫逻辑表达式。逻辑表达式的指为逻辑值。
例如:5 > 3 OR 1 = 1
AND(逻辑与)表达的意义是,当用AND连接的前后两个关系表达式都为真时,这个逻辑表达式的值才为真;其中有一个关系表达式的值为假的话,这个逻辑表达式的值就为假。AND在程序中出现时,你可以理解为“并且”。
例如:5 > 3 AND 1 = 1的值为真,而5 > 3 AND 1 < 1的值为假。
按照我说的理解方法:
5 > 3 AND 1 = 1是这样理解的:5大于3并且1等于1,这句话本来就是对的。所以为真。
而
5 > 3 AND 1 < 1是这样理解的:5大于3并且1小于1,这句话本来就是错的。所以为假。
OR(逻辑或)表达的意义是,当用OR连接的前后两个关系表达式中有一个为真,这个逻辑表达式的值就为真。只有当两个关系表达式都为假时,这个逻辑表达式的值才为假。OR在程序中出现时,你可以理解为“或者”。
例如:5 > 3 OR 1 < 0 的值为真,而5 < 3 OR 1 < 0 的值为假。
按照我说的理解方法:
5 > 3 OR 1 < 0是这样理解的:5大于3或者1<0,感觉这句话是对的吗?当然是对的。因为5确实大于3嘛。
而
5 < 3 OR 1 < 0是这样理解的:5小于3或者1小于0。呵呵,明显是错的。所以为假。
NOT(逻辑非)表达的意义是,当用NOT修饰一个关系表达式时,这个关系表达式的值和它本来的刚好相反。当NOT在程序中出现时,可以对它后面的关系表达式中的关系运算符加个不来理解。
例如:NOT 5 > 3的值为假,因为5>3为真,使用NOT修饰后,取它的反值,就称假了。
按照我说的理解方法:
NOT 5 > 3是这样理解的:5不大于3,这里给后边的>关系运算符加个不,就是不大于。感觉如何呢?
四、块IF语句的嵌套
在一个块IF语句中包含另一个块IF语句,称为块IF语句的嵌套。嵌套可以是多重的。即在一个块IF语句中嵌套另一个块IF,而在另一个块IF中,又可以嵌套其他的块IF。
但需要注意的是,嵌套必须完全包住,不能出现相互骑跨。
块IF语句嵌套的标准格式如下:
IF 条件1 THEN
语句块1
IF 条件11 THEN
语句块11
ELSE
语句块12
END IF
ELSE
语句块2
IF 条件21 THEN
语句块21
ELSE
语句块22
END IF
END IF
例如:
DIM a
Input "请输入A",a
IF a = 0 THEN
print "a = 0"
ELSE
IF a > 0 THEN
print "a > 0"
ELSE IF a < 0 THEN
print "a < 0"
END IF
END IF
五、无条件跳转语句GOTO
功能:改变程序执行的顺序,无条件转移到语句标号所指定的程序行。
语法:GOTO 语句标号
说明:
在现代程序设计中,要求限制GOTO语句的使用,因为它不符合结构化程序设计的原则。尽量不要使用它。
第五章:循环结构
--------------------------------------------------------------------------------
在程序设计中,经常会遇到一些有规律的重复多次的计算问题。例如:求从1加到100的和。若采用顺序结构编程,语句重复性大,程序显得的繁琐、冗长。循环结构的引入能有效的实现重复计算的编程问题。
在QB中支持FOR~NEXT;WHILE~WEND;DO~LOOP三种循环结构,但在实际编程中,这三种结构又是互通可以相互转化的。所以BB中目前只支持了WHILE~WEND结构。另外两种循环结构目前还未支持。
一、WHILE~WEND
功能:依据给定的条件执行循环
语法:WHILE 逻辑表达式
语句块
WEND
说明:
当逻辑表达式为真时,执行循环体中的语句块。因此,在循环体内,一定要对逻辑表达式重新赋值,否则就是
无穷循环,也叫死循环。
例字:求从1加到100的和。
DIM i,sum
i = 1
sum = 0
While i < 101
sum = sum + i
i = i + 1
Wend
print "sum = ";sum
二、多重循环
与分支结构类似,循环也可以嵌套。在程序设计中,循环的嵌套时经常使用的一种结构。作为循环,按结构化程序设计的原则,要求循环具有单入口,单出口。所谓单入口单出口,是指循环必须从循环的起始语句开始执行,然后正常结束。
在循环语句的循环体内包含另一个循环语句,这就是多重循环。多重循环也称为循环嵌套。在多层循环中,外面的大循环叫外循环,里面的小循环叫内循环。
例如:计算乘法口诀表
DIM I,J,AMA
I = 1
WHILE I < 10
J = I
WHILE J < 10
AMA = I * J
LOCATE(I,J*3)
PRINT AMA
J = J + 1
WEND
I = I + 1
WEND
第六章:字符串
--------------------------------------------------------------------------------
程序设计中,经常会遇到要处理非数值的情况,比如:文本记事、人事管理,图书检索等。这些需求,程序处理的对象都是非数值的字符串。
字符串的定义和字符串变量的定义方法,前面都已经给出了。这里不在赘述。
一、字符串的比较
两个数值可以进行比较,比如:5>3,同样两个字符串也可以进行比较。
在BB中的字符串比较规则,是和QB一样的。字符的大小比较,是对其在计算机内部的ASCII码值进行比较。而字符串的比较,是在字符比较的基础上进行定义的。如下:
字符串的比较,是从各自的第一个字符开始,逐个字符进行比较,如果所有的字符完全相同,则这两个字符串就相等。如果出现了不同的字符,就以这两个不同的字符的大小,决定字符串的大小。
例如:"THE" > "THAT" "LAGLE" > "LANGE"
说明:
1、若两个字符串相应的字符都相同,而其中一字符串长一些,则以长者为大。
2、空格也是字符,所以也参与比较,并且它是最小的可显示ASCII。所以," Z" < "A"
二、字符串函数
这部分函数尚未提供,以后有需求再提供并写相关的说明
第七章:数组
--------------------------------------------------------------------------------
数组,是一组具有相同类型的变量集合。该组变量具有相同的名称,但有不同的下标。他们总是成批出现,彼此之间保持着一定的顺序,需要进行相同的处理。
一、数组变量的定义
一维数组变量的定义和普通变量定义基本相同,唯一不同的是,定义数组变量时,需要在变量后边加上括号,并在括号内指定数组元素的个数。
例如:DIM g_Single% 定义单个整型变量 DIM g_Array%(10) 定义10个整型元素的数组变量
DIM g_Single! 定义单个单精度变量 DIM g_Array!(10) 定义10个单精度浮点数元素的数组变量
DIM g_Single$ 定义单个字符串变量 DIM g_Array$(10) 定义10个字符串元素的数组变量
多维数组变量的定义和一维的定义类似,只是有几维就在变量名后边加几个括号,并指明该维的元素个数。
例如:DIM g_Array%(10)(10) 定义一个10×10的整型二维数组。
DIM g_Array%(2)(10)(10) 定义一个2×10×10的整型三维数组。
注意:在BB中和QB不同,数组定义时,不允许在括号中使用"TO"来指定数组维的上下界。由于在BB中还没提供OPTION BASE语句,所以BB中的数组的下界都是从0开始的。
二、数组相关函数
目前尚未提供。
第八章:过程
--------------------------------------------------------------------------------
过程是指可以根据所给参数(或无参数),可以完成指定功能的一段可被重复调用的一段代码块。在BB中和QB相同,过程分为自定义函数(FUNCTION)和子程序(SUB)两种类型。
一、函数(子程序)声明语句 DECLARE
功能:说明引用的过程和调用过程时传递的参数。