第一篇:编程习惯和方法
1.1 编程思路
[打桩] : 从设计的角度出发解决问题,而不是想到一个算法,解决一个功能或部件,一般需,确
定是否发现到类,发现到类,确定需要那些属性,确定那些方法;
[用例]: 作单独得测试用例验证自己的算法,实现类的局部逻辑;
[集成]: 通过测试用例的验证,集成实现类,或模块;
1.2 如下编程习惯 – 纠正
通过频繁的使用编译器来找错误,或验证程序 不是合格程序员;
滥用对象,方法的实现 临时变量泛滥,for, 等语句块中临时变量泛滥
方法实现没有划分逻辑段的概念,一气呵成。
任务的完成过程中,产生一堆的过程代码,提交正式代码100行,耗用了5000行代码试验
[人海战术,投入产出比太大]
一个功能函数实现,到处出现,没有统一的出处概念, 维护成本
没有节约内存使用管理意识,泄露太多
一碰到问题就问,没有主动思考意识,主观能动性较差
一个函数几百上千行,成了超级函数,没有模块意识;
函数的形参庞大,没有结构意识
c/c++ 体系理解不清,程序中混乱使用;内存分配,动态数组
发现难点,复杂得地方 绕开,或简单处理一下;
编译问题的解决主观能动性不够,一碰到问题头就大,就问别人;
一个错误多次出现
喜欢做难的挑战的任务,消极对待简单的任务,或不屑做简单的无难度的任务
工作个性化,从网上参考来的代码没有消化整理,就使用,界面风格偏离太远
代码写完回头改规范
一个函数的逻辑实现不彻底,总总修修补补
技术泛滥使用,追求时髦的技术
缺少耐心看msdn,objectarx 英文资料
界面没有美观好用的意识,只为实现功能,设计不够人性化
程序缺少资源节约习惯,类的资源消耗庞大. 程序错误提示框 提示信息模糊不清,太吝啬表达,或提示太程序员语气化;
追求使用一些晦涩的,高难度技巧的代码
没有使用枚举的习惯,一大堆 int 值
非修改维护的代码(新任务),提交任务时残留大量自己注释掉的过程代码;
获取容器中的元素,没有验证容器的size,直接硬获取
类,方法 的命名虽然遵循规范,但命名晦涩,不准确。
没有构造函数初始化成员属性的习惯,包括临时变量也没有初始化习惯;
结构体中出现 对象,诸如 Cstring 等非原生数据类型
类的属性习惯 public,1.3 bug维护认识
简单的开发任务中,也能有大道理,合格的程序员简单的功能同样做的伟大。[精耕细做] Bug 维护是程序员成长的捷径
第二篇:编程学习心得和方法
雪中悍刀行 http://bmdqw.com/
编程学习心得和方法
说到编程,很多人首先会想到C、C++,JAVA,DELPHI。没错,这些都是现今最流行的计算机程序语言,它们各有特色。然而事实上是,不为人知而且比它们更好更出色的语言有很多。它们得以流行的原因有很多,其中最重要的一点是,它们在计算机语言的发展历史上有重要的划时代意义。特别是C的出现,将软件编程引入了真正的可视化编程。很多新语言的出现,解决了当时不能解决又不得不解决的问题。
另外,这些语言的确是出色的,它们不但易学,更是易用,这也是它们得以流行的一大原因。大家的支持,和个别系统和开发公司对它们的支持,以及它们的开发组件和类库众多和广大推广的原因,也使得它们当今数一数二的计算机语言。
编程语言不只有这些,计算机语言还有很多分类,其中,网络编程也属于其一。广为人知的编程语言有ASP,JSP,还有PHP。当然,还有脚本语言,比如ASP用的VBscript,还有在客户端流行的Javascript。其中,ASP(asp.net)基于VB(vb.net),JSP基于JAVA。现今已经发展出各种各样的编程语言,并且,它们大多采用了英文编写,单是关键字和标准类库就要我们花时间去记忆和识别,最后,还得去灵活运用更多的东西。所以,我们想一次性学习它们,这是不可能的事情,尽管大多语言很相似,你也不可能做到的。事实上,很少有人能够学习全部,大多都只能擅长某一种。
即便是高级编程人员,像那些为开发软件工作的类库和组件高手,他们也不敢说自己精通每一种语言。事实就是这样,每一种语言有着它们相似而又不同的语法,它们有着不同的关键字,发展出了各种各样的类库,它们的函数或者方法的声明定义都有不同,更多的差异不为我们所知。
每一种语言,它都有着太多的东西需要我们去理解和记忆,我们没有时间和精力做得太多。对于初学者,我们最不应该急于求成,更不要试图一次性学习所有语言。事实上,我们可以选取某种语言学习。每一种语言都有着自己的强大功能,好的语言能够完成所有事情,所以,你不要担心学习一种语言不够全面这样的问题。
当你能够得心应手掌控你学习的一种语言后,你回过头来再去学习其他语言时,你可能会发现,原来,这些语言是那么的相近。这个时候,你再去学习它们,我想,那真是很愉快的事情,大概,那个时候,你会笑出声来。
我们知道,从某种意义来说,各种语言都有很多类似的地方,这大概是因为所有的语言开发都是基于已有语言创造的,开发者也出于对大家的尊重,考虑到易于学习等等原因,他们选择了几乎是相同的语法来定义这些新语言。可以说,所有语言都是基于已有语言开发的,没有人能够聪明到突发其想,更不可能一夜之间发明出一种完全不同的外星语。
基于语言再开发语言,这么做能给使用者带来了一次学习,全部学会的好处。当然,最
大的好处莫过于新的语言肯定比之前的语言更加好用简单,功能也更全面强大。某种意义上讲,开发新的语言就是在更新旧语言的错误和不足,最后发展出新语言。
其实,每一种语言的区别大多只在于关键字的区别,还有一些语法上的区别。事实就是这样,很多语言之所以不同,就因为它们的关键字不同。就像你吃饭一样,中国人用筷子,外国人却不是。这些都没有改变吃饭的实质,我们都能完成一样的事情,那就是吃饭。说了这么多,话题也扯得太远了,回过头来吧。说了这么多,我无非是想说,所有的计算机语言都是相通的,你只要学会一种,学习其他的就是轻易而举的事情。所以,你用不着同时学习几种语言。
如果你不按照我的建议这么做,我想劝告你,你将会一样也学不会,至少,你永远不能擅长于编程,更别说精通。每一种语言都是经历了无数年代,最后由开发者总结而来,不是一个人能够轻易学完的,事实上,每一种语言都有开发和支持它们的公司和软件,每一天都有更多的新东西出现,你的时间不应该花在学更多的语言,应该是学习它们的变化。
现在的软件开发早已经不再是手工编程那么复杂化了,大多情况下,我们只要会语法,只要知道类库和开发软件支持的类库和组件,我们就能够编程,但这都只是开发,说不上什么精通不精通。用软件开发软件做软件,很像拼图和画画,你只要学会画就行。
你如果只想开发软件,忽略了语言的基础,我想说的是,你的软件永远不会更好更快。即便如此,你也得花时间去学习你所要用的开发软件的一切,包括那些扩展的组件和类库。另外,请不要忘了,软件开发出来后,还得改进,你是否能够让软件更自动化,能够自己检查错误,也或者,你能让它多线程工作呢?
其实,我们很难在不同的语言相似中区分它们的异同,也不可能同时掌握相同功能下,却有着不同的类库和不同的实现方法中去运用自如。
好了,我现在要说说学习编程的一些简单方法和步骤,今天将是第一章,也是一个开始。大概,你可能会用上小半年的时间去学习它,也或者更久,我希望是这样。
首先,我们应该学习一下计算机的基础,包括硬件基础,特别是计算机的各种发展史。之后,我们要理解计算机的工作原理,我们得知道,计算机依靠什么方法进行运算。
如果一个软件开发者,他开发了众多软件后,回过头还不知道计算机原理,那真好笑的事情,真不知道,他是怎么做软件的。当然,这样的人或许比我们聪明多了,因为他知道什么重要,什么次要。当今的社会,专业才是真,每个行业都有无数学习对象,你能全部学会吗?
其次,你应该着手学习汇编。或许,有人认为这是乎过早了一点。的确,你很有可能会无从下手,这个时候,你可以先大致了解一下,跳过这一步,往后再来学习。
之后,你应该做的是,选择自己想学的语言,或许,应该在C(c++)或者JAVA之间选择一种。当然,你要是只学习网络编程,可以在ASP和PHP之间选择,至于Javascript之类的脚本,你可以最后来学习。
你已经选好要学习的语言了吧?现在,就去选择几本上好的相关基础书籍吧。照我说的去做,你只能选择最为基础的只介绍语法的书,这个时候,你可千万别去看软件设计的书,也别去动那些设计软件。这一点,你千万要做到,朋友,不要急于求成。
好了,选好了书籍了吗?你的书籍一定是最为基础的才行,确定这些后,你应该看书了,对了,看的时候还得记下笔记,最好能够把每一个知识点记下,特别是关键的东西。这个过程是很难熬的,你千万不要急躁,另外,你如果从来没有接触过编程语言,你就更应该慢慢来,你应该花上半天时间学习一个章节。或者,之后的几个章节,你得花上更多时间。我想告诉你,朋友,越到后面越难,编程可不是吃饭那么简单,每个人都得花上很多年的时间学习它。
这个过程中,你还得注意,千万不能跳过看不懂的东西,是的,你可以到网上也或者是找朋友请教,这是很好的办法。只有当你弄明白了一个知识点后,你才能继续学习。也不要急着就学习用开发软件做软件,千万记住这一点。你现在是在学习语法。是的,语法这一关,你得用心,而且得认真对待,还得过关。你想不种豆就有豆子收,世上可没这种好事情,除非你偷别人的,那还是自己的吗?更何况,你是要为自己学习。收获都是要时间的,成熟都需要时间。现在,趁你还在学习语法的时间,你们来简单提一下语法吧。
关于基础语法,大概有几个方面,当然了,每种语言各有不同,不过,大体都一样。
一、语言本身的发展史和特点
其实,这一点,在我们选择某种语言的时候就应该提前了解。我在这里只想给大家说说自己的心得。
其中,JAVA的好处,一次编写,永远运行。它的最大好处不只这些,大家最喜欢的是,它可以在不同的环境下工作。是的,它不只是在计算机上能够运行,它同样能够在数码产品上运行,只要相应的机器上有JAVA虚拟机,JAVA软件就能运行,而且我们不必为不同的机器而修改我们的软件源码。
JAVA这个语言是九十年代才出现的,它由SUN公司开发,它的发展也算是飞快的。它的设计初衷是要在网络上应用。然而,它却不巧的成为了能够运行在更多环境下的语言,可以说,也正因为这一点,它才得以流行。当然,它的确也成就了网络,它的出现为网络编程带来了更多的功能和应用。
事实上,当今的网络应用中,JAVA、FALSH、JS、ActiveX这些小程序或者说是脚本插件,它们真是功不可没。另外,JAVA小程序比其他脚本或者插件都要安全,因为它的运行都在虚拟机下完成,不允许超越出去操控机器本身。
JAVA已经发展到了JAVA2,它已经深入计算机编程,特别是同时应用在网络和数码产品上。没什么好说的,它和C很相似,事实就是,它是基于几大语言开发的,它去除了许多语
言中难懂的语法。特别是,它没有了指针,它还能自己检测错误。
如果你觉得C太难,又想制作可以在数码产品上运行使用的软件,比如NOKIA手机的S60系统下的软件什么的,可以学习JAVA。
至于C语言,现在已经有三个版本,C、C++、C#。多的不说,这个语言是现在的主流,大多软件都靠它。三种版本的区别在于,第一个主要是采用旧式的结构化模式编写,C++最大特色是面向对象,至于最后的C#,它基于.net。
C语言成功之处在于,它的出现,简化了软件开发流程,易于学习和编写,另外,它最大的特点在于,它既是基础语言,又是高级语言,或者说,它就是中级语言。作为基础,它能够操控基层的东西,比如内存、计算机硬件本身。事实上,很多硬件驱动都由它制作而成。另外,UNIX的内核曾经都是用它做的,可见它非同一般。可以说,C几乎能够完成所有的计算机功能,当然,不是太绝对。对于一些更基础的东西,大多用汇编搞定。另外,你还得明白这么一点,越是基础的东西,要用更加基础的语言去实现。各种数码电器包括电脑系统都不会用这些高级语言编写,有着更深的东西不为人知,我们只有继续学习才能搞精这一切。现在,我们只要学习自己的语言就行。
以这里,我还得说说VC,当然,还有VB。事实上VC和VB是微软公司的产品,我个人认为,VB就是在C的基础上产生的。C语言可以轻松更改成其它语言,这也是它很厉害的一个地方。事实上,像大多的基础语言一样,C的本身语言特点让它有这样的能力这么做。我们能够用C的一些关键字设计出各种函数和库,它们当然可以和VB和其他语言的函数和类库同名,某种意义上说,就因为语言之间的类似造就了它们之间的相互转化。
同样的,它也能像高级语言一样工作,前提就是,你要自定义自己的函数库和类库。这一点,就是学习编程语言的难点之一。
VC和VB已经发展成了.net版本,ASP就是从VB而来,如今,也有了ASP.net。
很多初学者大概不知道VC和VB是什么,事实就是,它们是微软的软件,很简单,它们只是软件。这么理解大概会好一些,是这样吧。
C语言的开发软件有很多,最著名的莫过于VC++_NET和C++BUILDER,是的,C语言并非某个公司和个人的专属产品。
DELPHI,这个语言可能没有C和JAVA出名,但事实上,它是一种很不错的高级语言,能够制作各种软件,而且它比我们想象中更加简单。DELPHI属于BOLAND公司的产品,开发软件是DELPHI BUILDER,是的,BOLAND公司的开发软件一直被人们称道,这是因为,它为我们提供了各种各样的组件,可以说,我们只要半天时间就可以用BOLAND公司的软件轻松做出功能强大的软件。包括C和JAVA BUILDER。
VB并不是语言,我把它单独列出来,只是说,我们可以单独学习它来制作软件。事实上,不少的游戏都由它开发,可见它的功能比想象中强大。还有一点,它和BORLAND公司的开发软件真是太像了,它给大家提供了很多基于WINDOWS的组件,可以超快开发软件。如果是学习网络编程,你可以选择ASP或者PHP,也或者JSP。ASP(NET)的特点是,它出自微软的VB,用VBscript脚本以及VB(DLL)的ActiveX组件构成。它需要运行在安装了IIS的WINDOWS服务器上。ASP(NET)站点的最大好处在于,可以在任何可以显示的浏览器上正常动作,所有的脚本代码运行和数据处理都在IIS服务器上完成,我们不必担心客户端是否支持的问题。另外,ASP源码不会传到客户端,某种意义上可以防止别人看到你的代码。学习ASP,你还得慢慢学习ActiveX组件,有的人可能会感到惊讶,比如数据库连接或者分页功能,在ASP看来,实现这些东西真是太过简单了。也有的人会搞不明白,为什么语法里没有这些东西,ASP上却有这些,事实上,朋友,ASP支持DLL组件,也就是说,只要你是编程高手,你可以用其他的开发软件,比如VB,为你的ASP自创组件。
组件很像编程中的类库,一般来说,我们不必去细验它们是什么,又怎么工作,我们只要去运用它就行。现在的情况就是,各种语言都有第三方的支持,也就是组件和插件,你可以从别的公司或者网上获取,这样的好处在于,你不必自己编写更多的东西,却能够用别人的成就完成各种工作。比如上传文件和下载等等。
好了,关于怎么做组件什么的,你可以学习编程。但如果是聪明人,你不会这么做,因为你没有时间和精力学太多。要知道,你要吃饭,最多是自己种地买碗筷,你用不着自己造碗筷,更用不着去管什么桌子凳子。只要你会工作,用钱就能搞定一切。编程也是这样,你只要会用就行,除非你真把自己当博士,也或者,你还真想什么都弄精,那不成了神精,或者当神仙或者机器去吧,凡人是没那本事了,你不过几十年的光阴可以用耶。
学习就是学习精要,而不是概要;学习更不是全面,而是专业。八十年代出生的人大多受了蒙蔽,人人只知道当科学家或者天才,也或者都想做事完美。告诉你,完美过气,要完美的,回家种地去吧。
关于PHP和JSP,我个人不是很懂,所以,我不会过多提及。
另外,学习网络编程的朋友,你得选去学习一下XHTML标准,你也要按照这个标准行事。你也不要只学会用网格做网页,要知道,现在大多数情况下在抛弃它了,我们用CSS实现更多功能。
学习是一步步来的,现在,你只管学习语法,在后面,我会提示你怎么做的,每一步,我都有介绍。
另外,不知道有人是不是误会我的意思了,网络编程,可从来没有说,像HTML或者网页设计属于这个范畴。所以,连HTML都不懂的,先回去学习网页制作和设计吧。当然,没必要还学什么FLASH,你又不当美工。当美工的,还是不要学网编的好,学得多了,小心你什么都不精。告诉你,专一才能研究直到精通。
二、数据类型,变量,常量,数组
数据类型是最为基础的语法,每种语言都有相似或者相同的数据类型。我们应该理解什么是数据类型,也就是学习和记住所学的语言里包含哪些数据类型。从某种意义上说,数据类型属于简单的类。
每种语言的数据类型有所不同,你只需记住自己学习的语言的类型定义就行了。通用的基础常用数据类型有字节型、整型、字符型、浮点型、双精度型、布尔型。当然,数据类型还有更多。
其中的C、C++里面,有些类型在不同的系统里有不同的范围,比如在32位和64位系统里,有2字节和4字节长度范围区分。
变量和常量,还有数组,各种语言都基本相同,你只用记住如何声明和初始化。另外,你得养成先声明再初始化的习惯,这符合更多语言的变量声明语法,也更为标准,不易出错。另外,变量的声明要符合标准,不能用关键字做变量名,一般来讲,变量只能以字母开头,还只能是字母、数字和下划线构成。有的语言区分大小写,千万注意这个问题。
另外,变量还有局部和全局之分,你得搞清楚什么时候属于什么类型。局部变量只会局部存在,有的语言在某些范围内不能有重复相同的变量和局部变量,但有的语言却可以。我们要理解什么是数组,特别是多维数组。还有一点,数组的超始是零,认识到这一点是非常重要的。最后,字符串属于特殊的数组。
三、运算符
计算机语言的初衷就是用来计算,自然要有运算符。
最常见常用的自然是算术运算符,加减乘除。在这里,我们要记住递增递减,赋值运算,还有模运算。
位运算符:或,与,非,异或,各种位移。
位逻辑运算符:按位或,按位与,按位非,按位异或,关系运算符:大于,小于,等于,不等于,大于等于,小于等于
布尔逻辑运算符:逻辑或,逻辑非,异或,相等,不相等,三元运算符
赋值运算符:注意有的语言= 和==的区别
之后是运算符的优先级,我们可以用各种括号控制优先级,其实这和数字上的运算很相似。
四、程序控制语句
程序控制语句用于判断和跳转,其中最常见的有以下几种。
条件语句:if-else-if 在这里,有几种不同变化,大体相同
Switch(){case…break….default}
循环语句:do...while while {} for(;;)
跳转语句:Goto break continue return
五、其他。
在这里,我不再过多举例,其实,这里有最重要的东西没有讲,比如类,函数,继承,指针,异常处理,多态,多线程。这中间还有构造函数,解析函数等等。这些可以说是语法中的重点和难点,所有语言之所以成语言,也就是它们有着这些特性。
大概,你已经看完了几个章节内容。现在,你已经对编程有了基础认识。好了,你在这个时候,可以找两本简单事例的书籍了,你可以一边学习一边写程序。
是的,如果可以,你应该用记事本这样的工具来编程。当然,要在自己的电脑上运行你的程序还得安装好相应的软件,比如ASP(NET)的IIS,ASP.net 还得安装.net,JAVA的JDK,至于C语言,你可以安装VC,也或者C++BUILDER,这个时候,你就要学习如何配置自己的电脑并且如何运行这些程序。
千万不要被相应的软件吓住,是的,每种软件开发工具比你想象中还要复杂,告诉你,它们比看起来还可怕。不过,那只是现在的情况下,不用担心,总有一天,你能够轻易运用它们,到时候,不是它吓你,而是你吓它了。
你应该做的范例只是用来显示或者计算,如果是网络编程,你应该提前学习一下网络设计软件,像Dreamweaver。
(好了,今天就到这里,我想,下次再继续吧。欢迎到我的网站交流)
本文由整理。
第三篇:数控编程的方法[范文]
数控编程的方法
在数控加工企业来说,编程直接影响着数控设备系统的进程,数控程序怎么样编程,在这方面还需要进一度加强人员培训。
1、首先学习数控编程需要几个基本的条件:
① 学习编程的人员一般要具有相应的数控设备编程基础。
② 学习编程的人员应该通过专门的机构进行良好的培训。
③ 在培训过程中要有积累经验的思想和意识。
2、选择培训的因素
① 在使用教材上面,数控设备一般通过CAD/CAM软件的图形编程,在培训操作过程中,应注重编程实用技术的编程方法,使初学者一目了然。
② 数控编程是一个分阶段的过程,由于初学者接受的能力和基础不同,可从应用编程的某
个角度进行分类,使初学者在感觉上易懂。
3、编程方法和技巧
① 在短期内集中学习一个编程目标,并能进行实际操作和现场演示,以达到数控设备编程
过目不忘的效果。
② 对初学者来讲,软件部分还应该分类,这样可提高阅读效率,而且有助于初学者记忆。③ 在编程过程中应该注意现场实践的操作,培训初学者的仔细,严谨的工作意识。
④ 初学者在数控设备编程实际操作中,如果遇到问题应该有记录的学习习惯,在积累中不
断探索和提升自己的编程水平。
第四篇:Matlab编程习惯总结
好的编程习惯
为了增强程序的可读性,在if 结构体开头缩进两格或更多的空间。编程隐患
确保变量名的前三十一个字符是独一无二的,否则,MATLAB 将辨认不出两变量的不 同。编程隐患
如果变量名与MATLAB 中的函数或命令重名,那么这个函数或命令将不能被访问 好的编程习惯
给你的变量起一个描述性的且易于记忆的变量名。例如,货币汇率可以exchange_rate 为变量名。这种方法将使得你的程序更加明确且易于理解。好的编程习惯
在每次用到一个变量时,我们要确保变量名的大小写的精确匹配。在变量名中只使用
小写字母是一个好的编程习惯。好的编程习惯
在MATLAB 赋值语句后加上一个分号来禁止变量值在命令窗口(The Command Windows)的重复。这将大大提高编译的速度。好的编程习惯 如果你在调试程序时需要检测一个语句的结果,可能把句后的分号去掉,这样结果将
会出现在命令窗口(The Command Windows)。编程隐患
不要重定义有意义的预定义变量。否则将后患无穷,制造成出小而难以发现的错误。编程隐患
fprintf 函数只能复数的实部,所以在有复数参加或产生的计算中,可能产生错误的结 果。好的编程习惯
如果数据需要在MATLAB 和其他程序之间交换使用,那么以ASCII 格式存储数据。
如果只在MATLAB 中使用那么,应以mat 文件的形式存储数据。好的编程习惯
以“dat”的扩展名保存ASCII 数据文件,以区别于以“mat”为扩展名的mat 文件。编程隐患
在你的MATLAB 代码中,仔细区分数组运算和矩阵运算。数组乘法和矩阵乘法极易混 淆。好的编程习惯 当你读取和写入数据时,使用适当的单位
自上而下的编程方法是我们正规编程设计的基础。1.清晰地陈述你所要解决的问题
编写的程序大多数情况下要满足一些感觉上的需要,但这种需要不一定能够被人清晰地
表达出来。例如,用户需要一个解线性方程组的表达式。像这样的要求就不够清楚,程序员
就很难编出一个使他满意的程序。他必须弄清楚要有多少问题需要解决?在这些方程式中有
没有对称的形式使我们的开发变得简单?程序设计者必须和使用者讨论所需的程序,他们必
须要对完成的任务有一个精确细致的描述。对问题清晰的描述可以防止误解,并且能够帮助
程序员合理的组织他的思想。上面的例子对问题合适的陈述应为: 设计一个用于解决联立线性方程组的程序,这些方程中未知数的系数为实数,最多有 20 个未知数。
2.定义程序所需的输入量和程序所产生的输出量
指定输入量和输出量,只有这样新的程序才能适应全过程计划。在这个例子中方程式的
系数可能有其预先存在的顺序,我们的新程序必须能按照顺序读取它们。相似地,也需要产 生出这个程序所要求的结果,即输出量,我们还要以一定的格式打印出来。
3.设计你的程序得以实现的算法
算法是指为某个问题找到答案一步接一步的程序。在这个阶段自上而下的编程方法发挥
了作用。编程设计者开始对这个问题进行逻辑划分,把它逐步分解为一个又一个子工作。这
个过程叫做分解(decomposition)。如果一些子工作还是比较大,设计者还可以把他它分解成
更小的块。这个过程将会继续到问题被分解成许多简单且易理解的小块为止。
在问题被分解成小块之后,每一个小块要被进一步的求精,这个过程叫做逐步求精
(stepwise refinement)。在这个过程中,设计者开始于对本小块代码总括性的描述,然后开始
一步一步地定义所需的函数,越来越具体,直到他能够转化为MATLAB 语句。逐步求精的
过程中,我们要用到的伪代码将会在下节为大家介绍。
在算法开发过程中,这个方法是非常有用的。如果设计者真正理解了解决问题这个些步
骤,他将会对问题进行分解和逐步求精。4.把算法转化为代码 如果分解和逐步求精的过程已经顺利完成,那么这一步将会异常地简单。所有程序员都
会将伪代码一句一句地转化为合适地MATLAB 语句。5 检测产生的MATLAB 程序
这一步是真正的拦路虎。首先,程序的每一部分将会被单独地检测,如果有可能的话,整个程序还要被检测一遍。在我们检测程序时,我们必须证明所有合法输入数据值都能够正
常运行。用标准的输入值检测程序,看它是否产生了值。如果在一个程序中执行的算法包含
了不同的分支,你必须检测每一个分支,以保证产生正确的答案。大程序在交付大众使用之
前,必须经过一系列地检测(图3.2)。检测的第一步有时被称为单元检测(unit testing)。在单
元检测过程中,程序的子程序将会被独立地检测以证明它的正确性。当单元检测结束之后,这个程序将进行一系列的组合,把独立的子程序联合产生出最后的程序。程序第一步的联合
通常只包括很少的子程序。通过组合这些子程序,经常用检查子程序或函数之间的联系。在
一系列地组合过程中,越来越多的子程序被加了进来,直到整个程序的完成。在每一次组合 的过程中,每一个错误都会被发现并在进行下一次组合之前纠正过来。好的编程习惯
在我们检测两数值是否相等时一定要小心,因为round off 错误可能会使两个本来应该
相等的值不相等了。这时你可以在round off 错误的范围内它是不是近似相等。好的编程习惯
if 结构体经常缩进2 到3 个空格,以增强程序的可读性。好的编程习惯
对于有许多选项的选择结构来说,最好在一个if 结构中使用多个elseif 语句,尽量不用 if 的嵌套结构。好的编程习惯
对于for 循环体总是要缩进两个或更多空格,以增强程序的可读性。好的编程习惯
在循环执行开始之前,总是要预先分配一个数组,这样能大大增加循环运行的速度。好的编程习惯
那种既可以用向量可以解决的问题,也可以用循环解决的问题,最好用向量解决,这
是因为向量执行的速度快。好的编程习惯
把大的程序分解成函数,有很多的好处,例如,程序部分的独立检测,代码的可复用
性,避免意想不到的错误。好的编程习惯
最是把全局变量声明在函数的开头,这样可以区别于本地变量。好的编程习惯
在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量。好的编程习惯
在两次函数调用之间有持久内存保存本地数据。好的编程习惯
用子函数或私有函数来隐藏特殊目的的函数,这些隐藏的函数只能被其他函数调用。
隐藏这些函数防止了它们偶然的使用,也能防止与其他公共函数重名时发生的冲突。编程隐患
当我们应用关系运算符对复数运算时,一定要小心。关系运算符>,<,<=或>=只比较
复数的实部,而不是它们的模。如果你要用这些关系运算符对一复数进行运算,比较两复 数的模将更加常见。好的编程习惯
用char 函数创建二维字符数组,我们就不用担心每一行的长度不相同了。好的编程习惯
当你访问一单元阵列时,不要把()与{}混淆。它们完全不同的运算。编程隐患
不要创建一个与已存在的数字数组重名的元阵列。如果得名了,MATLAB 会认为你把
单元阵列的内容赋值给一个普通的数组,这将会产生一个错误信息。在创建单元阵列之前,确保同名的数字数字数组已经被删除。编程隐患
应用函数text 从ascii 文件中按行格式读取数据,这个ascii 文件可能是其他语言生成的,或是由其他的应用程序生成的,例如表格。好的编程习惯
除非我们必须与非MATLAB 程序进行数据交换,存储和加载文件时,都应用mat 文
件格式。这种格式是高效的且移植性强,它保存了所有MATLAB 数据类型的细节。好的编程习惯
对于那些必须进行人工检查的数据,或对于那些必须在不同的计算机上运行的数据,用格式化文件创建数据。对于那些不需要进行人工检查的数据且在相同类型的计算机创建
并运行的数据,用无格式文件创建数据,当I/O 速度缓慢时,用格式化文件创建数组。
第五篇:多文件编程方法总结
编写一个程序如下:
#include
}
void main(){
}
/*此时程序较少看上去也不会觉得乱,但是如果程序很多就比较乱了。作如下多文件编程,看着方便且易于移植*/
我们需要建立如下文件,并放在同一目录下:
1.main.c 2.main.h 3.delay.c 4.delay.h
此时,main.c中写: #include
while(1){ } delay(100);while(1){ } delay(100);unsigned char i,j;for(i=k;i>0;i--)for(j=110;j>0;j--);} main.h中: #ifndef _main_h #define _main_h #include
#endif
delay.c中: #include
void delay(unsigned char k){
} unsigned char i,j;for(i=k;i>0;i--)for(j=110;j>0;j--);delay.h中: #ifndef _delay_h #define _delay_h
void delay(unsigned char k);
#endif
这样就可以实现同样的功能了。
这就是一般的格式,大家在学习的过程中可以可以直接套用.这样以后一直也很方便.