43
2025-04-25
来源:马尔文
本文摘要
先分享一个好消息,从2024年10月发布的HighScore 5.3版本开始,脚本功能将扩展到无Plus功能的HIghScore软件版本,因此从本篇文章开始本系列更名为《HighScore脚本入门》。
在本系列的第一篇文章中介绍了HighScore Plus 软件的脚本支持功能,并展开说明了脚本语言的程序结构和数据类型及常规的赋值和运算语句。本篇我们来说一说脚本程序代码中的流程控制。
流程控制 条件语句
程序执行中,有时候需要判断某个条件是否满足,根据判断结果实施不同的操作,这就需要条件语句来实现。Pascal语言中条件语句主要有if语句和case语句。
if 语句的最基础格式如下:
if 判断条件 then 满足条件的处理语句;
图1. if...then 语句
if...then 语句后面可以跟一个可选的 else 语句,格式如下,注意,此时 then 后的语句不能加分号,因为 if 语句还没结束。
if 判断条件 then 满足条件的处理语句 else 不满足条件的处理语句;
图2. if…then…else语句
then 和 else 后面的处理语句中可以再嵌套 if语句,特别是 else 后面,可以形成 if…then…else if…then…else if…then…else的多支路语句。但一定要小心使用嵌套!有可能程序运行结果不是你所预期的那样。
图3. if…then…else if…then…else if…then……else多支路语句
当支路越来越多时,用嵌套的 if 语句就显得太繁琐。如果多支路的选择是由同一个变量或表达式的不同结果值所决定的,其实也可以用 case 语句来实现,而且更显简洁、清晰。如图3的例子,用 case 语句可以改写成:
图4. case多支路语句
流程控制 循环语句
程序执行中,需要多次规律性的重复处理时,特别是一些数组的运算处理时,就需要用到循环语句。Pascal 语言中循环语句主要有while…do 语句、repeat…until 语句和 for…do 语句。
while…do 语句的基础格式如下:
while 判断条件 do 循环体语句;
每轮循环之前,都先进行条件判断,当判断条件满足时,则执行循环体;当判断条件不满足,则结束循环。循环体可以是单个语句,也可以是由 begin 和 end;包含起来的程序块,但其语句中一定要包含有能改变判断条件控制变量的语句,能使判断条件不满足,以免形成死循环。
图5. while…do循环语句
与 while…do 语句相反,repeat…until 语句是先执行循环体,然后再看判断条件是否满足,如果满足则结束循环,所以循环体至少会被执行一次。循环体可以是单个语句,也可以由多个语句组成,但不必用 begin 和 end;包含起来,repeat 和 until 本身具备包含程序块的功能。其基础格式如下:
repeat 循环体语句 until 判断条件;
图6. repeat…until循环语句
while…do 语句和 repeat…until 语句中循环次数不定,根据某一条件来决定是否继续循环,如果要进行固定次数的循环,可以用 for…do 语句:
for 计次变量:=初始值 to 终止值 do 循环体;
for 计次变量:=初始值 downto 终止值 do 循环体;
其中,计次变量一般为整数类型(也可以是字符类型);第一轮循环时,计次变量被赋予初始值,此后每轮循环计次变量都会递增(to 关键字)或递减(downto 关键字)1;如果计次变量没超过终止值,则执行循环体,否则结束循环。
循环体内还可以用 continue 和 break 这两个关键字对循环做额外的控制,上述的三种循环语句内都可使用,一般配合条件语句决定什么情况下要 continue 或 break;continue 起效时,在该轮次循环内,循环体里在其后的语句将不再执行,而是立即进行下一轮次循环是否进行的条件判断;break 则直接就此结束循环;它们的影响范围只在它们所处的那一层级的循环语句。
图7. for…do循环语句
for…do 语句还有一种特殊形式的for…in…do 循环,本文不再赘述,感兴趣的可以移步Free Pascal wiki了解。
较为复杂的运算,可能会用到循环语句的嵌套,Pascal语言中允许任何类型的循环语句嵌套于任何类型的循环语句内。
图8. 循环语句嵌套
版权与免责声明:
① 凡本网注明"来源:中国粉体网"的所有作品,版权均属于中国粉体网,未经本网授权不得转载、摘编或利用其它方式使用。已获本网授权的作品,应在授权范围内使用,并注明"来源:中国粉体网"。违者本网将追究相关法律责任。
② 本网凡注明"来源:xxx(非本网)"的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,且不承担此类作品侵权行为的直接责任及连带责任。如其他媒体、网站或个人从本网下载使用,必须保留本网注明的"稿件来源",并自负版权等法律责任。
③ 如涉及作品内容、版权等问题,请在作品发表之日起两周内与本网联系,否则视为放弃相关权利。