switch结构 switch结构是另一种形式的选择结构。程序员可以根据一个单精度整形数,字符或逻辑表达式的值来选择执行特定的代码语句块。 switch (switch_expr) case case_expr_1, Block1 case case_expr_2 Block2 ... otherwise, Blockn end 如果switch_expr的值与case_expr_1相符,那么第一个代码块将会被执行,然后程序将会跳到switch结构后的第一个语句。如果switch_expr的值与case_expr_2相符,那么第二个代码块将会被执行,然后程序将会跳到switch结构后的第一个语句。在这个结构中,用相同的方法来对待其他的情况。otherwise语句块是可选的。如果它存在的话,当switch_expr的值与其他所有的选项都不相符时,这个语句块将会被执行。如果它不存在,且witch_expr的值与其他所有的选项都不相符,那么这个结构中的任何一个语句块都不会被执行。这种情况下的结果可以看作没有选择结构,直接执行MATLAB语言。 如果说switch_expr有很多值可以导致相同代码的执行,那么这些值可以括在同一括号内,如下所示。如果这个switch表达式和表中任何一个表达式相匹配,那么这个语句块将会被执行。 switch (switch_expr) case {case_expr_1, case_expr_2, case_expr_3}, Block1 otherwise, Block n end switch_expr和每一个case_expr既可以是数值,也可以是字符值。 注意在大多情况下只有一个语句块会被执行。当一个语句块被执行后,编译器就会跳到end语句后的第一个语句开始执行。如果switch表达和多个case表达式相对应,那么只有他们中的第一个将会被执行。 让我们看一个简单的关于switch结构的例子。下面的语句用来判断1到10之间的数是奇数还是偶数。它用来说明一系列的case选项值的应用和otherwise语块的应用。 switch (value) case {1, 3, 5, 7, 9}, disp('The value is odd.'); case {2, 4, 6, 8, 10}, disp('The value is even.'); otherwise, disp('The value is out ofrange.'); end
try/catch结构的应用
try/catch结构是选择结构的一种特殊形式,用于捕捉错误。一般地,当一个MATLAB程序在运行时遇到了一个错误,这个程序就会中止执行。try/catch结构修改了这个默认行为。 如果一个错误发生在这个结构的try语句块中,那么程序将会执行catch语句块,程序将不会中断。它将帮助程序员控制程序中的错误,而不用使程序中断。 Try/catch结构的基本形式如下: try TryBlock catch CatchBlock end 当程序运行到try/catch语句块,在try语句块中的一些语句将会被执行。如果没有错误出现,catch语句块将会被跳过。另一方面,如果错误发生在一个try语句块,那么程序将中止执行try语句块,并立即执行catch语句块。 下面有一个包含try/catch结构程序。它能创建一个数组,并询问用户显示数组中的哪能一个元素。用户提供一个下标,那么这个程序将会显示对应的数组元素try语句块一般会在这个程序中执行,只有当try语句块执行出错,catch语句块将会发生错误。 % Initialize array a = [ 1 -3 2 5]; try % Try to display an element index = input('Entersubscript of element to display: '); disp(['a(' int2str(index)') = ' num2str(a(index))] ); catch % If we get here an erroroccurred disp( ['Illegal subscript:' int2str(index)] ); end 这个程序的执行结果如下: >> try_catch Enter subscript of element to display: 3 a(3) = 2 >> try_catch Enter subscript of element to display: 8 Illegal subscript: 8
测试3.2本测试提供了一个快速的检查方式,看你是否掌握了3.4的基本内容。如果你对本测试有疑问,你可以重读3.4,问你的老师,或和同学们一起讨论。在附录B中可以找到本测试的答案。 根据下面的描述编写对应的MATLAB语句。 1. 如果x大于等于0,把x的平方根赋值于变量sqrt_x,并打印出结果。否则,打印出一条关于平方根函数参数的错误信息。并把sqrt_x归零。 2. 变量fun由n/m计算得到,如果m的绝对值小于1.0e­300,打印出除数为0,否则计算并打印出fun值。 3. 租用一个交通工具前100公里0.50美元每公里,在下面的200公里中2.30美元每分钟,越过300公里的部分一律按0.20美元每公里。已知公里数,编写对应的MATLAB语句计算出总费用和平均每公里的费用。 检测下面的matlab语句,是对是错?正确的,输出结果如何,错误的,错在哪里? 4. if volts > 125 disp('WARNING: High voltageon line.'); if volts < 105 disp('WARNING: Lowvoltage on line.'); else disp('Line voltage iswithin tolerances.'); end 5. color = 'yellow'; switch( color); case 'red', disp('Stop now!'); case 'yellow', disp('Prepare to stop.'); case 'green', disp('Proceed throughintersection.'); otherwise, disp('Illegal colorencountered.'); end 6. if temperature > 37 disp('Human body temperatureexceeded.'); elseif temperature > 100 disp('Boiling point ofwater exceeded.'); end
|