数学建模社区-数学中国

标题: 关于if结构使用的注意事项 [打印本页]

作者: 森之张卫东    时间: 2015-9-5 20:04
标题: 关于if结构使用的注意事项


关于if结构使用的注意事项

if结构是非常灵活的,它必须含有一个if语句和一个end语句。中间可以有任意个elseif语句,也可以有一个else语句。联合它的这些特性,我们可以创建出我们需要的各种各样的选择结构。

还有if语句是可以嵌套的。如果if结构完全是另一个if结构的一个语句块,我们就称两者为嵌套关系。下面是两个if语句的嵌套。

if x > 0

...

if y < 0

...

end

...

end

MATLAB翻译器经常把把已知的end语句和它最近的if语句联合在一起,所以第一个end语句和if y<0最靠近,而第二个endif x>0最接近。对于一个编写正确的程序,它能工作正常。但如果程序员编写出错误,它将会使编译器出现混淆性错误信息提示。例如,假设我们编写一个大的程序,包括如下的一个结构:

...

if (test1)

...

if (test2)

...

if (test3)

...

end

...

end

...

end

这个程序包括了三个嵌套的if结构,在这个结构中可能有上千行的代码。现在假设第一个end在编辑区域突然被删除,那么MATLAB编译器将会自动将第二个end与最里面的if (test3)结构联合起来,第三个end将会和中间的if(test2)联合起来。当编译器翻译到达文件结束的时候,那将发现第一个if(test1)结构将永远没有结束,然后编译器就会产生一个错误提示信息,即缺少一个end。但是,它不能告诉你问题发生在什么地方,这就使我们必须回过头去看整个程序,来找问题。

在大多数情况下,执行一个算法,即可以用多个else if语句,也可以用if语句的嵌套。在这种情况下,程序员可以选择他喜欢的方式。

3.4
给出等级分数

假设我们要编写一个程序,输入一个数值分数,输出等级分数,即是A级,B级和C

grade > 95A

95 ≥ grade > 86B

86 ≥ grade > 76C

76 ≥ grade > 66D

66 ≥ grade >0F

用两种方式写出这个程序,第一种方式用多个elseif语句,第二种方式用if的嵌套。

答案:

(a)用多个elseif语句

if grade > 95.0

disp('The grade is A.');

elseif grade > 86.0

disp('The grade is B.');

elseif grade >76.0

disp('The grade is C.');

elseif grade > 66.0

disp('The grade is D.');

else

disp('The grade is F.');

end

(b)if嵌套结构

if grade > 95.0

disp('The grade is A.');

else

if grade > 86.0

disp('The grade is B.');

else

if grade > 76.0

disp('The grade is C.');

else

if grade > 66.0

disp('The grade is D.');

else

disp('The grade is F.');

end

end

end

end

从上面的例子中,我们可以看到如果有多个选项的话,在一个if结构中用到多个else if语句将会比if的嵌套结构简单的多。


好的编程习惯

对于有许多选项的选择结构来说,最好在一个if结构中使用多个elseif语句,尽量不用if的嵌套结构。




作者: 转角遇到你    时间: 2015-9-6 11:37
很棒。。。

作者: 转角遇到你    时间: 2015-9-6 11:37
很棒。。。

作者: 一束阳光    时间: 2015-9-7 13:43
顶一下,辛辛苦苦,别沉了呀

作者: amirmars    时间: 2015-9-18 17:00
基础知识,不错





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5