TC官方合作论坛

标题: 【基础篇】8、2013大量语法错误,让新手快速上路 [打印本页]

作者: 龍吟达人    时间: 2012-10-16 08:23
标题: 【基础篇】8、2013大量语法错误,让新手快速上路
根据大部分新手的需求,以及之前提到的十四大常见语法错误再次进行总结,帮助新手快速处理语法错误。我想在有了第三章提到的编程十要素以及这里的语法纠正,相信很多新手都能慢慢进入到TC编程的领域了,在此祝大家能学有所成,快速变成编程高手!
一、语法配对问题:
  这里提到的配对也就是说有前必有后,在整个代码中他们是相辅相成、缺一不可的,那么常见的这些语法有哪些呢?
  1、if(如果)语句、while(循环)语句、select(选择)语句、repeat(重复)语句、for(遍历)语句---(流程语句);
  2、命名空间定义语句、函数。
  在以上这些语句中他们的格式是必须要配对的,下面我们通过一个正反事例来进行说明:
  正确语句:

  1. int mark
  2. if(mark==0)
  3.   help.messagebox("mark等于0")
  4. else
  5.   help.messagebox("mark不等于0")  
  6. endif



  7. 整型 标记
  8. 如果(标记==0)
  9.     辅助.消息框("标记等于0")
  10. 否则
  11.     辅助.消息框("标记不等于0")  
  12. 如果结束
复制代码
错误语句:
  1. int mark
  2. if(mark==0)
  3.   help.messagebox("mark等于0")
  4. else
  5.   help.messagebox("mark不等于0")  



  6. 整型 标记
  7. 如果(标记==0)
  8.     辅助.消息框("标记等于0")
  9. 否则
  10.     辅助.消息框("标记不等于0")  
复制代码
注:在此缺少了if(如果)语句的结束语:endif或如果结束错误语句在启动调试会在输出框弹出错误信息:发现没定义的字符’功能结束‘
总结:从上面的例子可以看出流程语句的配对,在编程中是必不可少的一部分,一旦缺少则无法编译通过生成EXE。他们就相当于有开始就有结束,再如:命名空间定义语句,有namespace(空间) 就有endnamespace(空间结束);函数,有函数的定义就有函数的返回值以及函数的结束。所以在以后的编程过程遇到了编译不通过就可以进行这方面的检查,看是否是由于粗心忘记写了,导致这一问题的发生。

二、层次问题:
   很多新手,在初次学习的时候由于没有弄明白层次问题,导致各种问题的产生:
   下面也通过一个实例说明:




  1. 空间 教程//定义默认空间
  2. 整型 标记
  3. 如果(标记==0)
  4.     辅助.消息框("标记等于0")
  5. 否则
  6.     辅助.消息框("标记不等于0")  
  7. 如果结束
  8. 功能 逻辑型 开始_点击()

  9.     返回 真 //函数返回语句
  10. 功能结束
  11. 空间结束 //空间结束语句
复制代码
进行编译,错误提示:发现没定义的字符'如果(标记==0)' ,新手一看到这个错误就说,我这配对没有问题啊,怎么还提示这个呢?
从这个例子中我们可以看出,新手根本没有弄明白命令应该往什么地方写,导致将语句放置了函数外。而正确的例子应该是这样的:
  1. 空间 教程//定义默认空间

  2. 功能 逻辑型 开始_点击()
  3.     整型 标记
  4.     如果(标记==0)
  5.         辅助.消息框("标记等于0")
  6.     否则
  7.         辅助.消息框("标记不等于0")  
  8.     如果结束
  9.     返回 真 //函数返回语句
  10. 功能结束

  11. 空间结束 //空间结束语句
复制代码
总结:函数应该在空间里面,而编写的命令应该在函数的里面,定义的变量应该在空间里面。

三、符号问题:
  在TC编程中,我们知道TC是可以中英文进行编程的(即可英文编程又可中文编程),而在符号问题方面,TC依旧是采用了英文符号,并非是在中文输入法下输入的符号。
    下面我们也通过一个例子说明:
  1. 空间 教程//定义默认空间

  2. 功能 逻辑型 开始_点击()
  3.     整型 标记
  4.     如果(标记==0)  //这里出错了!!!
  5.         辅助.消息框("标记等于0")
  6.     否则
  7.         辅助.消息框("标记不等于0")  
  8.     如果结束
  9.     返回 真 //函数返回语句
  10. 功能结束

  11. 空间结束 //空间结束语句
复制代码
启动编译后,错误提示:当前条件表达式'(标记==0)'没有用成对的括号括起来或者是'('(闭括号)后出现多余符号
从这一例子中我们得到正确的答案是括号应该是英文状态下输入的括号,若是中文输入则会直接报错,那么在以后编程中大家就需要注意区分符号是否用错了导致这一问题的发生,需要区分的常见符号有:逗号(,)、小括号(())。

四、数据类型问题:
在我们进行数据的赋值以及定义函数时就需要考虑到数据类型的问题,他们可以说也是需要配对的,如:
  1.     整型 标记1=3,标记2=4  //[定义2个整型变量分别给赋值]
  2.     字符型 标记           //[定一个字符型变量]   
  3.     标记 = 标记1 + 标记2  //[理想状态下认为:标记1和标记2相加的值赋给标记这个变量]
复制代码
启动编译后,错误提示:'标记 = 标记1 + 标记2'等号两边数据类型不一致
从上面的代码中我们可以得知,当两个类型一样的数据进行相加时这是可以的,而将他们相加的值赋给一个数据类型是字符型的变量是不行的,会产生数据类型不一致。前面提到了为什么数据类型相加是可以的,因为通过优先级可以知道,程序先运行了相加之后再赋值的,而在编译的时候提示的是赋值这里出错了,所以相加是没有问题的。
那么我们应该如果进行改正呢?
方法一:(通过改变标记这个变量的数据类型达到了这一目的)
  1.     整型 标记1=3,标记2=4  //[定义2个整型变量分别给赋值]
  2.     整型 标记           //[定一个整型变量]    这里进行变换
  3.     标记 = 标记1 + 标记2  //[标记1和标记2相加的值赋给标记这个变量]
复制代码
方法二:(通过将他们相加的值进行数据类型转换达到这一目的)
  1.     整型 标记1=3,标记2=4  //[定义2个整型变量分别给赋值]
  2.     字符型 标记           //[定一个字符型变量]   
  3.     标记 = 转换.整型转字符型(标记1 + 标记2)  //[标记1和标记2相加的值进行转换后再赋给标记这个变量]
复制代码
  我们不仅仅在变量方面要注意到数据的类型,在函数我们也需要注意到这些问题,下面我们看一个函数的例子:
  1. 功能 整型 两数相加()
  2.     整型 数据1,数据2,总数  //定义三个整型数据变量,前2个用于相加,后面这个用于接收他们的和
  3.     数据1 = 10 //给数据1赋初始值,其默认值为0
  4.     数据2 = 15 //给数据1赋初始值,其默认值为0
  5.     总数 = 数据1 + 数据2  //将数据1和数据2的值相加之后赋值给总数
  6.     辅助.消息框(转换.整型转字符型(总数)) //由于总数是整型的,而消息框的参数需要字符型,所以需要进行转换。
  7.     返回 真 //函数返回语句
  8. 功能结束
复制代码
启动编译后,错误提示:return语句的返回类型与函数声明的返回类型不一致。
当出现这个提示的时候,我们就直接看输出框给出的行数,找到这行后看接着看这个函数定义(也就是函数声明)的数据类型是什么,从这里我们可以看出,它是整型的数据,然后我们与刚提示行的返回的这个数据类型对比,它返回的是真,真假数据是属于逻辑型的范畴,所以我们知道返回的数据类型错了,那么我们应该如何改呢?
根据函数的整个运行来看,它是需要进行两个数相加后输出结果,应该是不需要返回任何数据,那么我们在这个返回上加可以随便填写数据了,返回的只要是整型的数据就可以,如:返回 0  、返回  总数  、 返回 118   这些都是可以的。
根据上面的问题大家就可能会想,那么它什么时候起到作用呢?接着我们再来看一个例子:

  1. 空间 教程//定义默认空间

  2. 功能 整型 两数相加()
  3.     整型 数据1,数据2,总数  //定义三个整型数据变量,前2个用于相加,后面这个用于接收他们的和
  4.     数据1 = 10 //给数据1赋初始值,其默认值为0
  5.     数据2 = 15 //给数据1赋初始值,其默认值为0
  6.     总数 = 数据1 + 数据2  //将数据1和数据2的值相加之后赋值给总数
  7.     返回 ? //这里应该返回什么数据呢?
  8. 功能结束

  9. 功能 逻辑型 开始_点击()
  10.     ? 获取总数  //这里的数据类型是什么呢?
  11.     获取总数 = 教程.两数相加()
  12.     如果(获取总数>0)  
  13.         辅助.消息框(?) //这里怎么填写呢?
  14.     否则
  15.         辅助.消息框("调用不成功!")
  16.     如果结束
  17.     返回 真 //函数返回语句
  18. 功能结束

  19. 空间结束 //空间结束语句
复制代码
从上面的例子,我给出了几个问号需要大家进行完善,在我还没给出答案之前,大家先自己去完善好了,再接着往下看。
根据上面例子剖析:
首先我们看两数相加这个函数,函数和上面那个例子差不多,只是去掉了弹出消息框这个命令,返回的数据填写什么这个时候我们还不清楚,但我们知道这个相加的数的结果是整型数据,这个很关键,那么接着我们看开始这个函数,大家都知道,开始函数是一个点击事件函数,也就是所谓的入口函数,程序将从这里开始往下执行,到了这里根据数据类型配对问题,我们很显然就知道刚相加的数据类型是整型的,那么我们肯定也用一个整型的数据去接收它,那这里就应该填写一个整型。
其次,我们看到了这里是一个函数的调用,它调用了两数相加的函数,并用刚定义的这个整型变量接受它,那么我们就很快的知道,它是想通过调用相加函数返回的值给刚定义这个变量,那刚才的两数相加函数的返回值肯定就是总数。
最后,我们进行对这个返回的数据进行判断,用到了如果(if)语句,判断这个得到的数据是否大于0,下面也是一个问号,它应该是弹出就是两个数据和的消息框。
填写完善之后:

  1. 空间 教程//定义默认空间

  2. 功能 整型 两数相加()
  3.     整型 数据1,数据2,总数  //定义三个整型数据变量,前2个用于相加,后面这个用于接收他们的和
  4.     数据1 = 10 //给数据1赋初始值,其默认值为0
  5.     数据2 = 15 //给数据1赋初始值,其默认值为0
  6.     总数 = 数据1 + 数据2  //将数据1和数据2的值相加之后赋值给总数
  7.     返回 总数 //这里应该返回什么数据呢?
  8. 功能结束

  9. 功能 逻辑型 开始_点击()
  10.     整型 获取总数
  11.     获取总数 = 教程.两数相加()
  12.     如果(获取总数>0)
  13.         辅助.消息框(转换.整型转字符型(获取总数)) //由于总数是整型的,而消息框的参数需要字符型,所以需要进行转换。
  14.     否则
  15.         辅助.消息框("调用不成功!")
  16.     如果结束
  17.     返回 真 //函数返回语句
  18. 功能结束

  19. 空间结束 //空间结束语句
复制代码
总结:数据类型在传递时需要保持一致。

五、事件函数问题:
   在TC软件中我们可以设计自己程序的界面内容,如:开始按钮、停止按钮、下拉框、启动热键等等,只要是工具箱有的东西都可以在界面上添加进来使用。这里就很多人有点困惑了,他们是如何和代码相关的呢?是什么使得他们能够进行相连?为什么我写的代码只能在开始按钮有效果,我自己添加的按钮却无法执行里面的命令?为什么我的初始化函数没有效果?  带着上面这些问题我们接着往下看:
  首先,我们新建一个项目,项目名称名字随意,然后将上面的开始按钮和退出按钮删除,将代码里面的开始函数和退出函数也删除了,只留下空间名和空间结束语,下面我们来到界面设计上进行对界面设计,在右侧上将工具箱激活,找到按钮,点击一下按钮,然后鼠标移动到设计的界面处再点击一次,这样一个按钮就添加进入了这个界面中,这个时候我们启动调试,生产的EXE界面中我们可以看到界面上多了一个按钮。
  其次,我们关闭EXE回到设计界面上,选中这个按钮,点击右键,弹出属性,再点击属性,之后看右侧的属性栏,我们可以看到这里呈现出了这个按钮的名称、文本、有效、坐标等等相关参数,这个就是按钮的属性,假如我们想给这个按钮改名,那么你只要在文本重新输入你需要的内容,然后按回车或者鼠标焦点离开这个输入框后你就能发现界面上的名称改变了,其它的属性都可以在这里改。
  最后,我们的目的是建立一个能够响应的事件函数,那么我们先将这个按钮的名称改为开始,然后在属性框的最下面这里有一个事件,点击空白下拉框会弹出一个添加,然后点击添加,这个时候就直接来到了代码区域,这个时候我们只要在这个函数内写命令,编译生成的EXE后点击开始按钮就可以直接这个我们命名的开始函数的内容了。这样界面的按钮就和代码搭上了关系。
注意点:很多时候我们都可能会用到初始化和销毁函数,那么我们是不是直接在代码里面写上初始化和销毁就起作用呢?其实这样并未达到效果,他们也和界面的按钮一样,会产生一个事件,那么我们如何添加这些事件呢?
方法:在设计界面上(也就是没有任何工具的地方)点击空白处,然后右键弹出的属性,点击之后在右侧我们就可以看到这里有初始化等事件,只要从这里进行添加之后,再在他们里面写上我们需要的命令即可。
[attach]5794[/attach]
总结:只要涉及与界面工具相关的函数,需要在界面上添加这些事件,并且这些事件函数只能在主空间出现,但可以在他们的函数中调用跨空间的函数或者主空间其它普通函数。

六、插件使用问题:

   大部分的人在刚接触插件的时候都觉得太难了,其实插件和TC命令一样,只是我们不在用TC给出的命令,而是用插件给出的命令。而插件的命令需要在主空间加入一个头文件,这个头文件用于包括外部的插件接口,并给这个接口定义一个名称,然后根据这个名称去调用插件的命令。那么我们在使用插件的时候需要以下步骤,掌握了以下步骤,那么你就可以轻松的使用插件:

以后遇到了问题的地方,再为大家进行更新!!! 暂时更新完毕。


作者: 龍吟达人    时间: 2012-10-16 08:23
占楼备用
作者: 05windows    时间: 2012-11-2 23:49
如此好贴 为何不顶
作者: chl1111    时间: 2012-11-8 21:24
说的太好了,学了N多知识,谢谢老师.
作者: feng123144    时间: 2012-11-18 11:21
看来新人太少了,这么详细的新帖都没有人顶
作者: lzq5628989    时间: 2012-11-20 11:03
顶个~好东西
作者: TC管理员    时间: 2012-11-21 15:50
顶啊
作者: dx412801    时间: 2012-11-21 15:52
好贴必须顶
作者: gcyasd    时间: 2012-11-21 16:06
收藏了,慢慢看,顶个!
作者: kk595    时间: 2012-11-28 10:02
不错  写的很详细了、、、
作者: 智盛辅助软件    时间: 2012-12-1 01:48
写的不错 支持一下
作者: 15925618    时间: 2012-12-3 01:57
看看TC呢
作者: crossly    时间: 2012-12-3 14:46
好贴 为何不顶
作者: zkm998    时间: 2012-12-3 14:56
回复 1楼龍吟达人的帖子

这个必须顶
作者: lixupeng    时间: 2012-12-3 18:03
谢谢分享!
作者: sport431    时间: 2012-12-4 15:14
不错
作者: wukuanaixieyan    时间: 2012-12-5 14:21
好好好好好好好
作者: 43283505    时间: 2012-12-7 00:42
绝对要顶
作者: zhou1033675108    时间: 2012-12-7 08:28
顶起
作者: 吴磊    时间: 2012-12-8 06:16
看看后边还说了什么
作者: lgrhpp    时间: 2012-12-10 21:43
说的太好了
作者: zyz0112    时间: 2012-12-11 17:23
学习下
作者: action520    时间: 2012-12-11 22:46
回复 1楼龍吟达人的帖子

这些都是我经常出现的错误
作者: shaozio    时间: 2012-12-12 13:58
好贴,一定要学习
作者: monevil    时间: 2012-12-12 21:35
123456846+2
作者: 木人    时间: 2012-12-13 02:59

作者: qianc    时间: 2012-12-18 10:33
好东西啊
作者: qq435641922    时间: 2012-12-21 16:34
aaaaaa
作者: wubai66    时间: 2012-12-23 02:06
好东西哦
作者: gaejyie    时间: 2012-12-25 22:34
新手来学习下
作者: yujingmao    时间: 2012-12-29 13:36
初学者之友
作者: 908174400    时间: 2012-12-31 23:50
都    是是
作者: tcwsy    时间: 2013-1-2 22:54
看看插件如何使用
作者: yehui    时间: 2013-1-3 08:54
回复 1楼龍吟达人的帖子

花花花花花花
作者: yehui    时间: 2013-1-3 09:01
貌似挺有用.........
作者: 雨碎江南    时间: 2013-1-4 20:34
好啊好哦
作者: aoxue    时间: 2013-1-7 20:08
学习下
作者: coocooxy    时间: 2013-1-7 20:25
学习了
作者: 大龙    时间: 2013-1-9 09:28
1
111111111111
作者: armlin    时间: 2013-1-12 09:42
回复 1楼龍吟达人的帖子

占楼备用
作者: 0902wxj    时间: 2013-1-17 19:11
学习中
作者: zxc947474    时间: 2013-1-21 17:37
大部分的人在刚接触插件的时候都觉得太难
作者: liye0326    时间: 2013-1-25 13:21
回复 1楼龍吟达人的帖子

学习中
作者: tutoulaoli    时间: 2013-1-26 12:24
非常感谢
作者: shadow    时间: 2013-1-26 13:21
看看,,讲的很好啊
作者: JSDYWZ    时间: 2013-1-31 16:06
说的太好了,谢谢老师
作者: 风度点点    时间: 2013-2-1 21:16
经常更新下,现在版本更新好些地方不一样了
作者: ce2860    时间: 2013-2-2 09:17
回复 1楼龍吟达人的帖子

111111111111111
作者: xiao00hei00    时间: 2013-2-3 14:04
围观学习
作者: bingojay    时间: 2013-2-6 09:10
还有吗???
作者: jsdai    时间: 2013-2-13 10:30
要学习下
作者: a0220741    时间: 2013-2-19 15:13
kkkkkkkkkkkkkkkkkkkkkkkkkkk
作者: ma3yu    时间: 2013-2-21 09:42
回复 1楼龍吟达人的帖子

赚取TC币
作者: lxf52998091    时间: 2013-2-23 21:53
好贴必须顶
作者: bb1170    时间: 2013-2-23 23:42
新手让看吗
作者: dengskylang    时间: 2013-2-25 20:05
虽然看的不是很懂。支持一下
作者: zc317414    时间: 2013-2-26 08:37
学习
作者: yangkaia18    时间: 2013-2-26 21:32
1111111111111111
作者: jianqiumy    时间: 2013-2-28 16:34
版主厉害啊,对新手很有用,辛苦了,谢谢
作者: xianjixin    时间: 2013-3-1 00:59
很好很厉害的东西
作者: j343230047    时间: 2013-3-7 22:20
太好了!
作者: ycyibin    时间: 2013-3-8 10:58

作者: 中华·    时间: 2013-3-8 19:42
学习了
作者: 无奈的泡泡    时间: 2013-3-8 21:53
学习中
作者: 我又来了    时间: 2013-3-9 11:50
0000000000000000
作者: 2625691919    时间: 2013-3-11 03:33
受教了,谢谢
作者: zhmap    时间: 2013-3-11 10:25
好东西,谢谢
作者: 121643487    时间: 2013-3-11 15:39
0 0
作者: laowantong    时间: 2013-3-11 23:04
dingddddd
作者: ysjj666    时间: 2013-3-12 02:13
顶顶顶
作者: gwq2204    时间: 2013-3-12 09:09
顶个~好东西
作者: nxjclement    时间: 2013-3-12 19:09
好 好 好
作者: xyq502674    时间: 2013-3-12 23:08
部分的人在刚接触插件的时候都觉得太难了,
作者: 276402378    时间: 2013-3-12 23:16
看看了,学习了,
作者: wawawahahaha    时间: 2013-3-13 01:58
学习下
作者: 歪不歪    时间: 2013-3-13 20:18
一定要看
作者: xljaitc    时间: 2013-3-14 08:29
学习学习
作者: fuwa505    时间: 2013-3-14 15:32
顶顶
作者: msyycb    时间: 2013-3-15 10:10
顶!学习了!
作者: 825274607    时间: 2013-3-15 18:02
瞧一瞧
作者: 306175641    时间: 2013-3-16 10:20
学习插件使用
作者: loveyun149    时间: 2013-3-16 12:12
回复 1楼龍吟达人的帖子

继续学习
作者: htzliubin    时间: 2013-3-17 18:22
学习太慢,也要坚持
作者: zklsndd    时间: 2013-3-17 21:06
11111111
作者: laowantong    时间: 2013-3-18 08:27
书读百遍
作者: 510119637    时间: 2013-3-18 09:08
学习
作者: 简单的生活    时间: 2013-3-19 00:20
必须顶
作者: kelei0322    时间: 2013-3-19 19:49
很好的教程,谢谢分享........
作者: lidongxu    时间: 2013-3-20 07:49
学习
作者: julele    时间: 2013-3-20 18:11
学习
作者: woailiemo167    时间: 2013-3-21 16:51
回复观看,万恶的验证码
作者: li7762456    时间: 2013-3-22 09:47

作者: a5504294    时间: 2013-3-23 21:39
l扩大的呢
作者: tuan307818    时间: 2013-3-24 20:40
5665555
作者: yyyyjx    时间: 2013-3-26 23:18
来温故~~而知新
作者: stabyou    时间: 2013-3-27 10:57
万恶的回复!
作者: youranlyly    时间: 2013-3-27 21:31
得好好学习!
作者: zhaofanuo    时间: 2013-3-28 18:00
确实学到了一些东西,也有一些是自己犯过的错误,谢谢了!
作者: sanboo2007    时间: 2013-3-30 07:39
有时间慢慢看
作者: hfexcellent1228    时间: 2013-4-3 00:38
学习了!




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1