QQ登录

只需要一步,快速开始

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

自定义函数

[复制链接]
字体大小: 正常 放大

413

主题

36

听众

1854

积分

升级  85.4%

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

    [LV.8]以坛为家I

    社区QQ达人

    群组2015国赛冲刺

    群组2016美赛公益课程

    群组国赛讨论

    群组第三届数模基础实训

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2015-9-15 23:20 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    自定义函数
    在第三章中,我们强调了好的编程习惯的重要性。我们进行开发的基本手段是自上而下的编程方法。在自上而下的编程方法中,它开始于对所要解决问题的精确陈述定义输入量和输出量。下一步,我们在进行算法的描述,然后把算法分解成一个一个的子问题(分而治之思想)。再然后,程序员把这一个个子问题进行再一次的分解,直到分解成简单而且能够清晰理解的伪代码。最后把伪代码转化为MATLAB代码。
    尽管我们在前面的例子中,按照上面的步骤进行了编程。但是产生的结果在某种程度上还是受限制的。因为我们必须把每一个子问题产生的MATLAB代码嵌入到一个单独的大程序中。在嵌入之前我们无法对每一次子问题的代码进行独立地验证和测试。
    幸运的是,MATLAB有一个专门的机制,在建立最终的程序之前用于独立地开发与调试每一个子程序。每一个子程序都可以独立函数的形式进行编程,在这个程序中,每一个函数都能独立地检测与调试,而不受其他子程序的影响。良好的函数可以大大提高编程的效率。它的好处如下:
    1.子程序的独立检测
    每一个子程序都可以当作一个独立的单元来编写。在把子程序联合成一个的大程序之前,我们必须检测每一个子程序以保证它运转的正确性。这一步就是我们熟知的单元检测。在最后的程序建立之前,它排除了大量的问题。
    2.代码的可复用性
    在许多的情况下,一个基本的子程序可应用在程序的许多地方。例如,在一个程序的许多地方,要求对一系列按由低到高的顺序进行排序。你可以编一个函数进行排序,然后当再次需要排序时可以调用这个函数。可重用性代码有两大好处:它大大提高了整体编程效率,它更易于调试,因为上面的排序函数只需要调试一次。
    3.远离意外副作用
    函数通过输入参数列表(input argument list)从程序中读取输入值,通过输出参数列表(output argument list)给程序返回结果。程序中,只有在输入参数列表中的变量才能被函数利用。函数中,只有输出参数列表中的变量才能被程序利用。这是非常重要的,因为在一个函数中的突发性编程错误只会发生错误的函数的变量。
    一旦的一个大程序编写并发行,它还要面临问题就是维护。程序的维护包括修补错误,修改程序以适应新或未知的环境。作维护工作的程序员在一般情况下不会是程序的原作者。如果程序编写的不好,改动一处代码就可能对程序全局产生负面影响。这种情况的发生,可能是因为变量在其他部分被重新定义或利用。如果程序员改变这个变量,可能会导致后面的程序无法使用。
    好的函数的应用可以通过数据隐藏使问题最小化。

    在主函数中的变量在函数中是不可见的(除了在输入变量列表中的变量),在主程序中的变量不能被函数任意修改。所以在函数中改变变量或发生错误不会在程序的其他部分发生意外的副作用。
    好的编程习惯
       把大的程序分解成函数,如有很多的好处,例,程序部分的独立检测,代码的可复用性,避免意想不到的错误。





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

    0

    主题

    10

    听众

    15

    积分

    升级  10.53%

  • TA的每日心情
    奋斗
    2016-11-7 12:40
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    邮箱绑定达人

    群组2016国赛备战群组

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-5-22 00:42 , Processed in 0.423471 second(s), 56 queries .

    回顶部