Virtools脚本语言(VSL)教程 - 语句
<p>
</p>
<h3>条件语句</h3>
<h4>
<a name="TOC-if-else-"></a>if else 语句</h4>
<p>如果一个逻辑条件为true,使用if 语句来执行特定的语句,你可以可选择性使用else子句来执行其它语句如果条件为false。if语句看起来如下:</p>
<p>if (<em>condition</em>) {<em>statements1</em>}[else {<em>statements2</em>}]</p>
<p>实例:</p>
<pre>bool CheckTextureSquare(Texture tex)<br>{<br> if (tex.GetHeight() == tex.GetWidth())<br> {<br> bc.OutputToConsole("Texture ok.");<br> return true;<br> }<br> else<br> {<br> bc.OutputToConsole("Error, texture is not square.");<br> return false;<br> }<br>}
<h4>
<a name="TOC-switch-"></a>switch 语句</h4>
<p>switch语句运行程序判断表达式并试图去将表达式的值与case标签进行匹配。如果找到匹配,程序执行相关语句。表达式必须是判断整数类型。switch语句的语法如下:</p>
<p>switch (<em>expression</em>){ case<em>label</em>:<em>statement</em>; [break;] case<em>label</em>:<em>statement</em>; [break;]... [default :<em>statement</em>;] }</p>
<p>实例:</p>
<pre>void GetVectorDirection(int direction, Vector vec)<br>{<br> switch(direction)<br> {<br> case 0 :<br><span>// North</span>
vec.Set(0,1,0);
break;<br><br> case 1 :<br><span>// East</span>
vec.Set(1,0,0);
break;<br>
case 2 :
<span>// South</span>
vec.Set(0,-1,0);
break;<br>
case 3 :
<span>// West</span>
vec.Set(-1,0,0);
break;<br>
default :
bc.OutputToConsole("error, bad direction number.");
break;
}
}
<h3>
<a name="TOC-2"></a>循环语句</h3>
<h4>
<a name="TOC-for-"></a>for 语句</h4>
<p>for语句的语法如下:</p>
<p>for ([<em>initialExpression</em>]; [<em>condition</em>]; [<em>updateExpression</em>]) {<em>statement block</em>}</p>
<p>for语句重复执行语句块(statement block),直到条件(<em>condition</em>)判断值为0。初始表达式(initialExpression)、条件(condition)及更新表达式(updateExpression)字段均为可选。</p>
<p>initialExpression在for语句的其它元素之前被执行,常用来初始化循环的索引。它可以包含声明或赋值。<br><br>condition在该循环的给定迭代执行之前被执行,包括第一次迭代。它是一个判断整数类型的表达式。<br><br>updateExpression在循环每一次迭代结束时被判断。它经常是一个赋值或增值表达式。</p>
<p>实例:</p>
<pre>float Average(IntArray array)<br>{<br> float total = 0;<br> int arraySize = array.Size();<br><span>// Add all integers</span>
for (int i = 0; i < arraySize; ++i)
total += array[i];
return total/arraySize;
}
<h4>
<a name="TOC-do-while-"></a>do-while 语句</h4>
<p>do-while语句重复执行直到指定的条件被判断为false。do-while语句的语法如下:</p>
<p>do {<em>statement</em>} while (<em>condition</em>);</p>
<p>语句在条件被检测之前就执行了一次。如果条件返回true,语句再执行一次。</p>
<p>实例:</p>
<pre>void MakeItAtLeastOnce(int i)<br>{<br> do<br> {<br> --i;<br><span>// MakeIt ...</span>
}
while (i > 0);
}
<h4>
<a name="TOC-while-"></a>while 语句</h4>
<p>while语句让你重复一段语句直到指定的条件被判断为false。while语句的语法如下:</p>
<p>while (<em>condition</em>) {<em>statements</em>}</p>
<p>实例:</p>
<pre>int Factorial(int n)<br>{<br> int res = 1;<br> while (n > 1)<br> {<br> res *= n--;<br> }<br> return res;<br>}
<h4>
<a name="TOC-break-"></a>break 语句</h4>
<p>使用break语句来终止一个循环或switch语句。</p>
<p>实例:</p>
<pre>void FindIndex(IntArray array, int value)<br>{<br> int size = array.Size();<br> int i = 0;<br> for (;i < size; ++i)<br> if (array[i] == value)<br> break; <span>// We don't have to search anymore ...<br> // exit the for loop<br></span>
<span>// And continue processing here...</span> <br>}
<h4>
<a name="TOC-continue-"></a>continue 语句</h4>
<p>你只能在循环语句内使用continue语句。执行continue语句停止当前循环,并从该循环的起点处继续程序流程。</p>
<p>实例:</p>
<pre>struct person<br>{<br> bool men;<br> int age;<br>};<br><br>float AverageMenAge(person parray[3])<br>{<br> int nbMen = 0;<br> float averageAge = 0;<br> for (int i = 0; i < 3; ++i) <br> {<br> person p = parray[i];<br> if (!p.men)<br> continue; <span>// Go to next iteration</span>
++nbMen;
averageAge += p.age;
}
if (nbMen)
return averageAge/nbMen;
return -1;
}
</pre></pre></pre></pre></pre></pre></pre>