QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1185|回复: 4
打印 上一主题 下一主题

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

[复制链接]
字体大小: 正常 放大
回帖奖励 3 点体力 回复本帖可获得 3 点体力奖励! 每人限 1 次(中奖概率 50%)

413

主题

36

听众

1854

积分

升级  85.4%

  • TA的每日心情
    开心
    2019-9-18 21:55
  • 签到天数: 258 天

    [LV.8]以坛为家I

    社区QQ达人

    群组2015国赛冲刺

    群组2016美赛公益课程

    群组国赛讨论

    群组第三届数模基础实训

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2015-9-5 20:04 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta


    关于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的嵌套结构。



    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学中国版主团队!

    14

    主题

    9

    听众

    436

    积分

    升级  45.33%

  • TA的每日心情
    奋斗
    2015-9-12 07:30
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    社区QQ达人

    回复

    使用道具 举报

    14

    主题

    9

    听众

    436

    积分

    升级  45.33%

  • TA的每日心情
    奋斗
    2015-9-12 07:30
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    社区QQ达人

    回复

    使用道具 举报

    0

    主题

    13

    听众

    473

    积分

    升级  57.67%

  • TA的每日心情
    奋斗
    2016-7-31 18:28
  • 签到天数: 72 天

    [LV.6]常住居民II

    自我介绍
    本科生

    社区QQ达人

    群组第一期sas基础实训课堂

    回复

    使用道具 举报

    amirmars        

    0

    主题

    11

    听众

    8

    积分

    升级  3.16%

  • TA的每日心情
    开心
    2015-9-21 11:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    自我介绍
    hello
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-21 06:57 , Processed in 0.691614 second(s), 75 queries .

    回顶部