原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106850097
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)
其他(编程相关)
前言
红胖子来也!!!
Basic语言是很老的语言了,比VB(Visual Basic还老)。
BASIC
BASIC(Beginners’ All-purpose Symbolic Instruction Code,又译培基),意思就是“初学者通用符号指令代码”,是一种设计给初学者使用的程序设计语言。
BASIC是一种直译式的编程语言,在完成编写后不须经由编译及连结等手续即可执行,但如果需要单独执行时仍然需要将其建立成执行档。
BASIC是由达特茅斯学院院长、匈牙利人约翰·凯梅尼(John G. Kemeny)与数学系教师托马斯·卡茨(Thomas E. Kurtz)共同研制出来的。1964年BASIC语言正式发布。第一个BASIC程序在1964年5月1日早上4时,由BASIC编译程序进行编译后成功运行。1975年,比尔·盖茨把它移植到PC上。
编译环境搭建
安装编译器
安装FreeBasic,主要用他来编译,如下图:
安装完后,打开命令行:
跳转到开发目录即可,
安装编辑环境
安装PowerBasic,主要用他的编辑器
打开编辑器:
下载地址
CSDN下载地址:https://download.csdn.net/download/qq21497936/12538533
软件打包下载地址:QQ群1047134658(点击“文件”搜索“Basic”,群内与博文同步更新所有可开源的源码模板)
编译器编译时错误解决
编译时报错,如下图:
主要是因为使用了未定义的变量,其实是语言规则不同,因为使用qb语言,所以需要加上参数“-lang qb”,即可,如下图:
运行环境
直接打开dos,跳转到目录,fbc命令会生成对应的exe直接运行即可。
基本语句
打印(PRINT)语句
示例1
PRINT "12345"
PRINT "Hello world"
示例2
PRINT "12345";"54321"
PRINT "Hello world"
示例3
PRINT "12345" "54321"
PRINT "Hello world"
TAB(TAB)语句
PRINT语句中使用TAB语句就类似于使用TAB键。
TAB(1)和TAB(2)没有起到作用
示例1
PRINT "123456789ANCDEF"
PRINT 1;TAB(1);2
PRINT 1;TAB(2);3
PRINT 1;TAB(3);4
PRINT 1;TAB(4);5
PRINT 1;TAB(5);6
PRINT TAB(3);"Y";TAB(9);"Z"
END
置数(DATA)语句
配合读数语句使用,称读数据(READ/DATA)语句。
请参照“读取READ语句”
读取(READ)语句
READ是读取data存储的数据,并不是我们习惯所认为的从屏幕上输入,同时变量要先定义才能使用。
示例1:读取数字
(字符串必须是$符号结尾)
DATA "12aaa345","11bbb11"
PRINT "READ ONE, SHOULD BE 12aaa345"
READ S
PRINT S
PRINT "READ ONE, SHOULD BE 11bbb11"
READ S
PRINT S
END
示例2:读取字符串
DATA "12aaa345","11bbb11"
PRINT "READ ONE, SHOULD BE 12aaa345"
READ S$
PRINT S$
PRINT "READ ONE, SHOULD BE 11bbb11"
READ S$
PRINT S$
END
示例2:先读取后置入数字
PRINT "READ ONE, SHOULD BE 12345"
READ S
PRINT S
PRINT "READ ONE, SHOULD BE 11111"
READ S
PRINT S
SLEEP
DATA "12345","1111"
END
示例3:读取数字
DIM D1 AS INTEGER
DATA 20,10
PRINT "READ ONE, SHOULD BE 20"
READ D1
PRINT D1
PRINT "READ ONE, SHOULD BE 10"
READ D1
PRINT D1
SLEEP
END
示例4:读取数字时,同时使用“:”进行其他操作
DATA 10,100,1000
READ T1,T2:T3=T1+T2
PRINT T1
PRINT T2
PRINT T3
READ T3
PRINT T3
END
示例5:读取字符串
DATA "aaa"
READ A$
PRINT A$
END
赋值(LET)语句
(注意:字符串默认结尾为$,否则认为是整数)
示例1
LET A$="12345"
PRINT A$
LET A=10
PRINT A
PRINT A*10
END
键盘输入(INPUT)语句
(注意,经测试,变量定义为A$,有金钱符号结尾,才被认为是字符串,否则认为是数字,而且输入错误,数字则默认为0)
示例1
PRINT "PLEASE INPUT A NUM:"
INPUT A
PRINT "YOU INPUT NUM:";A
END
示例2
PRINT "PLEASE INPUT A NUM:"
INPUT A$
PRINT "YOU INPUT NUM:";A$
END
恢复数据区(RESTORE)语句
示例1
DATA 1,2,3,4
READ A,B
PRINT A
PRINT B
RESTORE
READ A,B
PRINT A
PRINT B
END
无条件转移(GOTO)语句
(注意:之前的程序,每一行之前没有数字标签,使用GOTO加上去)
示例1
DATA 1,2,3,4
READ A,B
100
PRINT A
PRINT B
SLEEP
PRINT "GOTO AGAIN"
GOTO 100
END
条件转移(IF ~ THEN或IF ~ GOTO)语句
示例1
DATA 1,2,10
READ A,B,C
100
PRINT A*B: A=A*B
IF A PRINT A;">";C END 注释(REM)语句 示例1 DATA 1,2,10 READ A,B,C 100 REM "123456" PRINT A*B: A=A*B IF A PRINT A;">";C END 循环终了(NEXT)语句 与循环说明语句合成循环(FOR~NEXT)语句。 请参照“循环说明(FOR)语句” 循环说明(FOR)语句 示例1 INPUT N FOR I=0 TO N A=A+I PRINT "+";I;"=";A NEXT I PRINT A END 暂停(STOP)语句 stop是直接退出程序了。 示例1 PRINT "12345" "54321" STOP PRINT "Hello world" 转子(GOSUB)语句 示例1:目前未发现与GOTO语句的区别 DATA 1,2,3,4 READ A,B 100 PRINT A PRINT B SLEEP PRINT "GOTO AGAIN" GOSUB 100 END 返回(RETURN)语句 配合转子语句使用,调用子程序。 数组说明(DIM)语句 定义数组,定义的数组下标从1开始。 示例1 DIM A(6) DATA 1,2,3,4,5,6 READ A(1),A(2),A(3),A(4),A(5),A(6) PRINT "A(0),A(1),A(2),A(3),A(4),A(5),A(6)" PRINT A(0),A(1),A(2),A(3),A(4),A(5),A(6) PRINT "A(1),A(2),A(3),A(4),A(5),A(6)" PRINT A(1),A(2),A(3),A(4),A(5),A(6) PRINT "A(0);A(1);A(2);A(3);A(4);A(5);A(6)" PRINT A(0);A(1);A(2);A(3);A(4);A(5);A(6) PRINT "A(1);A(2);A(3);A(4);A(5);A(6)" PRINT A(1);A(2);A(3);A(4);A(5);A(6) END 结束(END)语句 结束程序。 程序实例 预读入加法程序 DATA 10,20 READ A,B PRINT A;"+";B;"=";A+B 定义数组并赋值 DATA 10,20,30,40 DIM D$(4) READ D$(1),D$(2),D$(3),D$(4) PRINT D$(1),D$(2),D$(3),D$(4) END 定义数组并循环赋值 (注意:数组定义,数组下标序号从1开始,目前普遍从0开始) DATA 6 DATA 0.01,0.01,0.01,0.02,0.02,0.2,0.03,0.03,0.03,0.04,0.04,0.04,0.05,0.05,0.05,6.1,6.2,6.3 READ M0 DIM T0(M0+1),D0(M0),J0(M0) FOR M=1 TO M0 READ T0(M),D0(M),J0(M) NEXT M FOR M=1 TO M0 PRINT "M=";M;",";T0(M);",";D0(M);",";J0(M) NEXT M END 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106850097