各种高级语言的差别.doc_第1页
各种高级语言的差别.doc_第2页
各种高级语言的差别.doc_第3页
各种高级语言的差别.doc_第4页
各种高级语言的差别.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC+这个环境能写C语言吗,与TC有什么区别当然能,C+兼容C,这也是造成C+不是完全面向对象的原因,也是它比java等完全面向对象语言的强大之处,运行效率高,程序灵活性好,当然java的开发效率高,VC可视化是和TC的最大区别VC+是C的集成开发环境.编辑工具,那么VC+又是什么语言开发的呢?当然是c很多语言的编译器都是用它自己写的vc+是用其他编译器编译的当然对于新出的语言,一般作者先用汇编或其它语言写一个最小编译器,再在其上增加功能,逐渐分层写出编译器移植到其它体系结构时就可以只用重写最小编译器蛋生鸡的问题再vc+环境下怎么去做c语言程序开发新建一个项目后 新一个文件 你把文件名写成.c就行了在VC环境下怎样区分是用C语言编写还是用C+,?后缀不同啊。一个是.c,一个是.cpp你可以看里面的代码有没有用到C+的语法来区分啊!怎么在vc+环境下编写c语言?第一步:打开VC+6.0;第二步:选择“文件”“新建”“工作区”“空白工作区”,然后为这个工作区起一个名字并选择存放路径,确定即可!之所以要用工作区,因为可以在工作区中新建很多工程,每个工程可以独立编译、连接、执行,互补干扰,而在学习C语言过程中,时常要编辑一些小程序,把它们按工程都存放在一个工作区里,非常方便于查看、执行和管理;第三步:右击刚才新建的工作区,添加工程,这里选择Win32 console Application并确定;第四步:在新建的工程中添加文件,选择C+ Source File,但是文件扩展名记得用“.c”;第五步:编辑源代码;第六步:单击工程,并选择执行,即可一次性完成编译、连接和执行工作,就可以看到程序运行结果了,当然也可以分步编译、连接、执行Turbo C是美国Borland 公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套 Turbo系列软件, 如TurboBASIC,Turbo Pascal, Turbo Prolog, 这些软件很受用户欢迎。该公司在1987年首次推出Turbo C 1.0 产品, 其中使用了全然一新的集成开发环境, 即使用了一系列下拉式菜单,将文本编辑、程序编译、连接以及程序运行一体化, 大大方便了程序的开发。1988年, Borland 公司又推出Turbo C1.5版本, 增加了图形库和文本窗口函数库等, 而Turbo C 2.0 则是该公司1989年出版的。Turbo C2.0在原来集成开发环境的基础上增加了查错功能, 并可以在Tiny模式下直接生成.COM (数据、代码、堆栈处在同一64K 内存中) 文件。还可对数学协处理器 (支持8087/80287/80387等)进行仿真。完美集成中文环境的精巧强大的C语言编程学习工具! 2009年的二级c语言上机是什么环境啊?dos tc2.0 ,windtc2.0还是vc6.0啊?从2007年起二级C上机应用软件就由Turbo C 2.0改为 Visual C+6.0了想问一下,VC+和VB的开发工具是什么语言编写的呢?一直很奇怪啊,C语言和VB语言什么的不是有开发工具么,那个工具是什么语言写的呢?再厉害的高手总不会一个记事本+N多代码就可以变成一个有界面的程序了吧?编译器的原始内核是汇编直接实现的。然后通过迭代的方式,用自己语言进一步实现自己的更完整的编译器。IDE只是一个开发环境,和编译器无关我知道c语言的编译器和连接器最早就是c语言编写的。一本书里看到的C语言系列都 编写的是什么?就是能编写出什么养的软件? 音乐盒? VC呢? VB呢?什么都可以。当然单纯的C去编写那些软件肯定会疯掉,需要用到一些工具包、开发环境之类的。如果是为了写windows应用程序的话vc和VB更简单一些。因为有MFC是不是所有的东西,比如现在用的游戏啊,网页啊,只要用vb.vf.vc.等软件能做出来的c语言也能编出来. 我知道C语言是语言.其他VC等是可视化的编程.用的也是C语言只是引用了类等概念.我想知道c语言的编程工具例如说turboc2.0等是不是也可以把VB等能编出来的东西编出来.甚至编得更好.?/?不能TC的运行环境是MS-DOS,也就是在有提示符c:的状态下运行,后面是黑屏提示符是白字.VB的运行环境是图形化界面,也就是窗口界面(WINDOWS界面),图形化界面可以显示的各种图片或图标在DOS环境下无法显示,例如:按钮菜单对话框等无法在DOS环境下显示出来的.因此,TC编不出VB,VC等能编出的东西.是,但是有点难度,C语言是一种中级语言,接近底层,可以对硬件进行操作,我们可以肯定的是,显示器上显示的东西都是由显卡控制的,显卡是硬件。C语言是可以进行控制的,这就是单片机和嵌入式都是以C语言为主的原因从软件层次来说,无论windows还是linux它们的内核都是用C和汇编写出来,C语言能编写内核当然能控制可视化显示了。一家之言,多多指教.VB,VC+,JAVA,C语言哪个更实用、流行,现在的操作系统还有游戏都是用什么编的啊?目前使用java的人最多,因为java的可移植性最好,可以在很多平台上直接移植使用,其次是c,因为c语言的效率在高级语言里是非常高的,也就是说它速度快,windows的大部分代码都是c语言写的。(c和java的使用率差的也不是很明显)。basic和c+没研究,不过从我自己 编写windows的窗体应用程序的感觉来看感觉用VB要简单些。VB、VC、VF、B语言、C语言、C+这几个有关联吗?basic就不要提了,几十年前就被淘汰了先说说VB吧: 建议不学VB,因为VB垃圾、简单至极、功能不全、开发出来的软件对系统资源依赖性强(俗话-运行的这么卡呢?)、以上原因导致VB已经被社会淘汰了,已经没有客户要买用VB开发出来的软件了。 VB的开发实际上就是在一个窗口里“画”按钮之类的东西,然后再在按钮里加代码,这个所谓“按钮”实际上是VB众多被称为“控件”的东西的其中之一,是别人为你编写好的,但这些“控件”是用什么编写的呢?,是用C+编写的(VB想要实现什么功能,必须先用C+做控件),所以有句话说的好“真正的VB高手其实是C+高手”,不学VB还有一个原因,就是他破坏你学习其他软件的思路,他的语法与其他流行软件的语法不一样,学完以后会有少许误入歧途的感觉。说说C语言:我学过C语言,它只能编写DOS程序,功能不是很强大,但却是基础,因为大部分流行的编程软件都与C语言的语法结构类似,一定要先学。C+:C语言进化而来的,有强大的功能,举例吧:软件: 微软的Office系列 Macromedia网页三剑客 - flash,dreamweaver,fireworks Adobe出的 超有名的作图软件 - PhotoShop 3D动画软件 - 3DMax .游戏: PC平台几乎所有的游戏 星际争霸、魔兽争霸、CS、帝国时代、跑跑卡丁车、传奇、魔兽世界.那数不胜数了,自己数吧:) 以上均出自C+之手,原因是C+靠近计算机底层,编写出来的程序对系统资源依赖较小,功能强大,运行速度快,比如你的两个朋友与你分别玩 用 VB、Java、与C+编写的“跑跑卡丁车”,你玩C+那款游戏已经跑玩结束了,发现你的两个朋友还没开始跑呢,那是相当的卡啊,所以这一系列的软件、游戏都会采用C+编写。 虽然C+很有优点,但是对于学习者来说应该是比较困难的一门语言。(再说明一点,C或C+属于语言,而VC - “Visual C+”是用来编写C或C+的工具)Java: 不可小视的编程语言,我举不出来用它编写的应用软件和游戏,因为它是商业编程语言,我之前举的C+开发的软件都是面向普通人的,而Java开发的软件大部分是面向事业单位、公司及企业的,它的功能同样强大,结构比C+清晰,学习起来比C+简单多了,并且是跨平台运行的程序,用Java开发出来的软件可以在世界几乎所有的系统上运行(包括Linux、掌上电脑、手机等),但正因为如此,使之运行时会比C+开发的软件要慢。 没接触过编程的人恐怕很少有人知道,我不知道楼主你年龄多大了,你学编程是因为兴趣还是因为职业?如果是因为职业,建议选择学习Java。VF: Visual FoxPro - 微软出的数据库编程软件,和以上都不一样,没必要考虑这个,并且近几年已经被微软淘汰,因为这个软件在世界上早已被 Sql-Server 和 Oracle 等数据库编程软件所取代。c,c+,vc 是一个系列basic(b),vb是一个系列foxbase,vf是一个系列b系列和c系列都是编程语言,一般学一种就行。好像b系列的好学一点,c系列的功能强一些。想学数据库,直接学vf就行最开始是B。然后是C。2个语言完全不同的。B,以后进化为VB,C,就进化为C+,VC和C+就是一个东西。 VF是数据库语言,和前面这些都不一样。VB,VC+,JAVA,C语言哪个更实用、流行,现在的操作系统还有游戏都是用什么编的啊?操作系统使用C语言。游戏大部分使用C+。Java是现在最流行的语言。企业级应用是用java开发的。java还可以开发手机游戏为什么VB很大内存而VC的开发工具只有几兆?因为VB要加载很多控件,而且这些控件在设计阶段都是有设置调试面界的,而VC里面相同的内容,是在你要用的时候才加载,并且绝大多数设置是在代码里完成的。这样它就可以节能很多资源。VB封装得太好(好得过头了),基本上实现了设计阶段就所见即所得了,这注定它更消耗资源。还有VB在设计阶段是解释执行的(而VC是编译执行),解释执行就要求把能加载的库都加了,自然就要大些我是一个C语言的初学者,请问在VC+中如何建立工程?如何编辑?VC+6.0 按下文件-新建-工程选Win32 Console Application,在右侧选存储地址,按默认项新建工程打开工程后按下control+N,新建C+文件,命名存储然后写入代码F7编译,在debug目录下找到exe文件,运行打开VC6.0点击左上角文件选择新建选择工程Win32 Console Application初学者一般都用的这个,之后在新建文件C/C+ Source File然后就可以编写程序了 我用的是VS2010,直接ctrl+shift+n,建立win32程序应用平台,之后在源文件上点右键,添加新项目,之后就很容易了现在企业开发java一般是用什么集成开发环境啊,谢谢?我从事了6年的java开发用的工具有 JBuilder ,Eclipse,NetBeen等其中以Jbuilder为主 ,版本从9.0开始 分别用了.x 和2006这几个版本的,如果考虑开发调试方便,请用Jbuilder 其调试功能强大,缺点是比Eclipse耗内存些!不过就现在的电脑配置是没问题的!而且不需要另外装太多插件。比如J2me的开发就已经整合在裏面了如果你所在公司比较大!考虑到版权因素,就用Eclipse! 这个是免费的!(JBuilder是破解的)Bug一词的原意是“臭虫”或“虫子”。但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“Bug”,这是怎么回事呢? 原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子Bug钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。 与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。遗憾的是,在中文里面,至今仍没有与“Bug”准确对应的词汇,于是只能直接引用“Bug”一词。虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。 所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。软件的错误全是厂家设计错误。那种说用户执行了非法操作的提示,是软件厂商不负责的胡说八道。用户可能会执行不正确的操作,比如本来是做加法但按了减法键。这样用户会得到一个不正确的结果,但不会引起bug发作。软件厂商在设计产品时的一个基本要求,就是不允许用户做非法的操作。只要允许用户做的,都是合法的。用户根本就没有办法知道厂家心里是怎么想的,哪些操作序列是非法的。 从电脑诞生之日起,就有了电脑BUG。第一个有记载的bug是美国海军的编程员,编译器的发明者格蕾斯哈珀(GraceHopper)发现的。哈珀后来成了美国海军的一个将军,领导了著名计算机语言Cobol的开发。 1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。 突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”1 从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)。模块测试?单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。 单元测试(模块测试)是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。 工厂在组装一台电视机之前,会对每个元件都进行测试,这,就是单元测试。其实我们每天都在做单元测试。你写了一个函数,除了极简单的外,总是要执行一下,看看功能是否正常,有时还要想办法输出些数据,如弹出信息窗口什么的,这,也是单元测试,老纳把这种单元测试称为临时单元测试。只进行了临时单元测试的软件,针对代码的测试很不完整,代码覆盖率要超过70%都很困难,未覆盖的代码可能遗留大量的细小的错误,这些错误还会互相影响,当BUG暴露出来的时候难于调试,大幅度提高后期测试和维护成本,也降低了开发商的竞争力。可以说,进行充分的单元测试,是提高软件质量,降低开发成本的必由之路。对于程序员来说,如果养成了对自己写的代码进行单元测试的习惯,不但可以写出高质量的代码,而且还能提高编程水平。一般认为,在结构化程序时代,单元测试所说的单元是指函数,在当今的面向对象时代,单元测试所说的单元是指类。以老纳的实践来看,以类作为测试单位,复杂度高,可操作性较差,因此仍然主张以函数作为单元测试的测试单位,但可以用一个测试类来组织某个类的所有测试函数。单元测试不应过分强调面向对象,因为局部代码依然是结构化的。单元测试的工作量较大,简单实用高效才是硬道理为什么要使用单元测试? 我们编写代码时,一定会反复调试保证它能够编译通过。如果是编译没有通过的代码,没有任何人会愿意交付给自己的老板。但代码通过编译,只是说明了它的语法正确;我们却无法保证它的语义也一定正确,没有任何人可以轻易承诺这段代码的行为一定是正确的。 幸运,单元测试会为我们的承诺做保证。编写单元测试就是用来验证这段代码的行为是否与我们期望的一致。有了单元测试,我们可以自信的交付自己的代码,而没有任何的后顾之忧。经验表明一个尽责的单元测试方法将会在软件开发的某个阶段发现很多的Bug,并且修改它们的成本也很低。在软件开发的后期阶段,Bug的发现并修改将会变得更加困难,并要消耗大量的时间和开发费用。无论什么时候作出修改都要进行完整的回归测试,在生命周期中尽早地对软件产品进行测试将使效率和质量得到最好的保证。 在提供了经过测试的单元的情况下,系统集成过程将会大大地简化。开发人员可以将精力集中在单元之间的交互作用和全局的功能实现上,而不是陷入充满很多Bug的单元之中不能自拔。测试代码编写多数讲述单元测试的文章都是以Java为例,本文以C+为例,后半部分所介绍的单元测试工具也只介绍C+单元测试工具。下面的示例代码的开发环境是VC6.0。产品类:class CMyClass public: int Add(int i, int j); CMyClass(); virtual CMyClass();private: int mAge; /年龄 CString mPhase; /年龄阶段,如少年,青年;建立对应的测试类CMyClassTester,为了节约编幅,只列出源文件的代码:void CMyClassTester:CaseBegin() /pObj是CMyClassTester类的成员变量,是被测试类的对象的指针, /为求简单,所有的测试类都可以用pObj命名被测试对象的指针。 pObj = new CMyClass();void CMyClassTester:CaseEnd() delete pObj;测试类的函数CaseBegin()和CaseEnd()建立和销毁被测试对象,每个测试用例的开头都要调用CaseBegin(),结尾都要调用CaseEnd()。接下来,我们建立示例的产品函数:int CMyClass:Add(int i, int j) return i+j;和对应的测试函数:void CMyClassTester:Add_int_int()把参数表作为函数名的一部分,这样当出现重载的被测试函数时,测试函数不会产生命名冲突。下面添加测试用例:void CMyClassTester:Add_int_int() /第一个测试用例 CaseBegin(); /1 int i = 0; /2 int j = 0; /3 int ret = pObj-Add(i, j); /4 ASSERT(ret = 0); /5 CaseEnd(); /6第1和第6行建立和销毁被测试对象,所加的是为了让每个测试用例的代码有一个独立的域,以便多个测试用例使用相同的变量名。第2和第3行是定义输入数据,第4行是调用被测试函数,这些容易理解,不作进一步解释。第5行是预期输出?错,ASSERT是VC的断言宏,也可以使用其他类似功能的宏,使用测试工具进行单元测试时,可以使用该工具定义的断言宏。示例中的格式显得很不简洁,2、4、5行可以合写为一行:ASSERT(pObj-Add(0, 0) = 0);但这种不简洁的格式却是老纳极力推荐的,因为它一目了然,易于建立多个测试用例,并且具有很好的适应性,同时,也是极佳的代码文档,总之,老纳建议:输入数据和预期输出要自成一块。建立了第一个测试用例后,应编译并运行测试,以排除语法错误,然后,使用拷贝/修改的办法建立其他测试用例。由于各个测试用例之间的差别往往很小,通常只需修改一两个数据,拷贝/修改是建立多个测试用例的最快捷办法。测试用例下面说说测试用例、输入数据及预期输出。输入数据是测试用例的核心,老纳对输入数据的定义是:被测试函数所读取的外部数据及这些数据的初始值。外部数据是对于被测试函数来说的,实际上就是除了局部变量以外的其他数据,老纳把这些数据分为几类:参数、成员变量、全局变量、IO媒体。IO媒体是指文件、数据库或其他储存或传输数据的媒体,例如,被测试函数要从文件或数据库读取数据,那么,文件或数据库中的原始数据也属于输入数据。一个函数无论多复杂,都无非是对这几类数据的读取、计算和写入。预期输出是指:返回值及被测试函数所写入的外部数据的结果值。返回值就不用说了,被测试函数进行了写操作的参数(输出参数)、成员变量、全局变量、IO媒体,它们的预期的结果值都是预期输出。一个测试用例,就是设定输入数据,运行被测试函数,然后判断实际输出是否符合预期。下面举一个与成员变量有关的例子:产品函数:void CMyClass:Grow(int years) mAge += years; if(mAge 10) mPhase = 儿童; else if(mAge 20) mPhase = 少年; else if(mAge 45) mPhase = 青年; else if(mAge mAge = 8; pObj-Grow(years); ASSERT( pObj-mAge = 9 ); ASSERT( pObj-mPhase = 儿童 ); CaseEnd();在输入数据中对被测试类的成员变量mAge进行赋值,在预期输出中断言成员变量的值。现在可以看到老纳所推荐的格式的好处了吧,这种格式可以适应很复杂的测试。在输入数据部分还可以调用其他成员函数,例如:执行被测试函数前可能需要读取文件中的数据保存到成员变量,或需要连接数据库,老纳把这些操作称为初始化操作。例如,上例中 ASSERT( .)之前可以加pObj-OpenFile();。为了访问私有成员,可以将测试类定义为产品类的友元类。例如,定义一个宏:#define UNIT_TEST(cls) friend class cls#Tester;然后在产品类声明中加一行代码:UNIT_TEST(ClassName)。下面谈谈测试用例设计。前面已经说了,测试用例的核心是输入数据。预期输出是依据输入数据和程序功能来确定的,也就是说,对于某一程序,输入数据确定了,预期输出也就可以确定了,至于生成/销毁被测试对象和运行测试的语句,是所有测试用例都大同小异的,因此,我们讨论测试用例时,只讨论输入数据。前面说过,输入数据包括四类:参数、成员变量、全局变量、IO媒体,这四类数据中,只要所测试的程序需要执行读操作的,就要设定其初始值,其中,前两类比较常用,后两类较少用。显然,把输入数据的所有可能取值都进行测试,是不可能也是无意义的,我们应该用一定的规则选择有代表性的数据作为输入数据,主要有三种:正常输入,边界输入,非法输入,每种输入还可以分类,也就是平常说的等价类法,每类取一个数据作为输入数据,如果测试通过,可以肯定同类的其他输入也是可以通过的。下面举例说明: 正常输入例如字符串的Trim函数,功能是将字符串前后的空格去除,那么正常的输入可以有四类:前面有空格;后面有空格;前后均有空格;前后均无空格。边界输入上例中空字符串可以看作是边界输入。再如一个表示年龄的参数,它的有效范围是0-100,那么边界输入有两个:0和100。非法输入非法输入是正常取值范围以外的数据,或使代码不能完成正常功能的输入,如上例中表示年龄的参数,小于0或大于100都是非法输入,再如一个进行文件操作的函数,非法输入有这么几类:文件不存在;目录不存在;文件正在被其他程序打开;权限错误。如果函数使用了外部数据,则正常输入是肯定会有的,而边界输入和非法输入不是所有函数都有。一般情况下,即使没有设计文档,考虑以上三种输入也可以找出函数的基本功能点。实际上,单元测试与代码编写是“一体两面”的关系,编码时对上述三种输入都是必须考虑的,否则代码的健壮性就会成问题。白盒覆盖上面所说的测试数据都是针对程序的功能来设计的,就是所谓的黑盒测试。单元测试还需要从另一个角度来设计测试数据,即针对程序的逻辑结构来设计测试用例,就是所谓的白盒测试。在老纳看来,如果黑盒测试是足够充分的,那么白盒测试就没有必要,可惜“足够充分”只是一种理想状态,例如:真的是所有功能点都测试了吗?程序的功能点是人为的定义,常常是不全面的;各个输入数据之间,有些组合可能会产生问题,怎样保证这些组合都经过了测试?难于衡量测试的完整性是黑盒测试的主要缺陷,而白盒测试恰恰具有易于衡量测试完整性的优点,两者之间具有极好的互补性,例如:完成功能测试后统计语句覆盖率,如果语句覆盖未完成,很可能是未覆盖的语句所对应的功能点未测试。白盒测试针对程序的逻辑结构设计测试用例,用逻辑覆盖率来衡量测试的完整性。逻辑单位主要有:语句、分支、条件、条件值、条件值组合,路径。语句覆盖就是覆盖所有的语句,其他类推。另外还有一种判定条件覆盖,其实是分支覆盖与条件覆盖的组合,在此不作讨论。跟条件有关的覆盖就有三种,解释一下:条件覆盖是指覆盖所有的条件表达式,即所有的条件表达式都至少计算一次,不考虑计算结果;条件值覆盖是指覆盖条件的所有可能取值,即每个条件的取真值和取假值都要至少计算一次;条件值组合覆盖是指覆盖所有条件取值的所有可能组合。老纳做过一些粗浅的研究,发现与条件直接有关的错误主要是逻辑操作符错误,例如:|写成&,漏了写!什么的,采用分支覆盖与条件覆盖的组合,基本上可以发现这些错误,另一方面,条件值覆盖与条件值组合覆盖往往需要大量的测试用例,因此,在老纳看来,条件值覆盖和条件值组合覆盖的效费比偏低。老纳认为效费比较高且完整性也足够的测试要求是这样的:完成功能测试,完成语句覆盖、条件覆盖、分支覆盖、路径覆盖。做过单元测试的朋友恐怕会对老纳提出的测试要求给予一个字的评价:晕!或者两个字的评价:狂晕!因为这似乎是不可能的要求,要达到这种测试完整性?语,老纳之所以提出这种测试要求,是因为利用一些工具,可以在较低的成本下达到这种测试要求,后面将会作进一步介绍。关于白盒测试用例的设计,程序测试领域的书籍一般都有讲述,普通方法是画出程序的逻辑结构图如程序流程图或控制流图,根据逻辑结构图设计测试用例,这些是纯粹的白盒测试,不是老纳想推荐的方式。老纳所推荐的方法是:先完成黑盒测试,然后统计白盒覆盖率,针对未覆盖的逻辑单位设计测试用例覆盖它,例如,先检查是否有语句未覆盖,有的话设计测试用例覆盖它,然后用同样方法完成条件覆盖、分支覆盖和路径覆盖,这样的话,既检验了黑盒测试的完整性,又避免了重复的工作,用较少的时间成本达到非常高的测试完整性。不过,这些工作可不是手工能完成的,必须借助于工具,后面会介绍可以完成这些工作的测试工具。单元测试工具现在开始介绍单元测试工具,老纳只介绍三种,都是用于C+语言的。首先是CppUnit,这是C+单元测试工具的鼻祖,免费的开源的单元测试框架。由于已有一众高人写了不少关于CppUnit的很好的文章,老纳就不现丑了,想了解CppUnit的朋友,建议读一下Cpluser 所作的CppUnit测试框架入门,网址是:/cpluser/archive/2004/09/21/111522.aspx。该文也提供了CppUnit的下载地址。然后介绍C+Test,这是Parasoft公司的产品。C+Test是一个功能强大的自动化C/C+单元级测试工具,可以自动测试任何C/C+函数、类,自动生成测试用例、测试驱动函数或桩函数,在自动化的环境下极其容易快速的将单元级的测试覆盖率达到100%。内的文字引自/softwares_testing_c_cpptest.htm,这是华唐公司的网页。老纳想写些介绍C+Test的文字,但发现无法超越华唐公司的网页上的介绍,所以也就省点事了,想了解C+Test的朋友,建议访问该公司的网站。华唐公司代理C+Test,想要购买或索取报价、试用版都可以找他们。最后介绍Visual Unit,简称VU,这是国产的单元测试工具,据说申请了多项专利,拥有一批创新的技术,不过老纳只关心是不是有用和好用。自动生成测试代码 快速建立功能测试用例 程序行为一目了然 极高的测试完整性 高效完成白盒覆盖 快速排错 高效调试 详尽的测试报告。内的文字是VU开发商的网页上摘录的,网址是:。前面所述测试要求:完成功能测试,完成语句覆盖、条件覆盖、分支覆盖、路径覆盖,用VU可以轻松实现,还有一点值得一提:使用VU还能提高编码的效率,总体来说,在完成单元测试的同时,编码调试的时间还能大幅度缩短。算了,不想再讲了,老纳显摆理论、介绍经验还是有兴趣的,因为可以满足老纳好为人师的虚荣心,但介绍工具就觉得索然无味了,毕竟工具好不好用,合不合用,要试过才知道,还是自己去开发商的网站看吧,可以下载演示版,还有演示课件。Msdn?MSDN 的全称是 Microsoft Developer Network。这是微软公司面向软件开发者的一种信息服务。一般情况下,很多人误认为 MSDN 为联机帮助文件和技术文献的集合。但事实上,这两者只占 MSDN 庞大计划的一小部分。MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDN WebCast、与 CMP 合作的 MSDN 杂志等等一系列服务。其中产品下载、在线电子教程、MSDN 杂志和技术紧急电话支援是要付费的,其余基本免费。当然, MSDN 杂志可以通过微软公司的网站免费观看或者下载(/msdnmag/)MSDN 涵盖了所有的可以被开发扩充的平台和应用程序,因此如微软公司的百科全书 Encarta,或者是各种游戏,是不包括在 MSDN 之内的,因为这些产品直接面向最终用户,没有进行程序开发的必要。用户接触到的最多关于 MSDN 的信息可能是来自于 MSDN Library。MSDN Library 就是通常人们眼中的 MSDN,涵盖了微软全套可开发产品线的技术开发文档和科技文献(部分包括源代码),也包括过刊的 MSDN 杂志节选和部分经典书籍的节选章节。MSDN Library 有 1.8 GB 左右,可以通过在线或者 MSDN 订阅(需付费)以脱机方式浏览。在线浏览的链接为/library/default.asp。每个时期,随着不同版本 Visual Studio 发布的时候,都会有对应的 MSDN Library 发布,而从最新版的 Visual Studio 发布之后,对应旧版本 Visual Studio 的 MSDN Library 会慢慢停止发布, 仅随该 Visual Studio 发布的 MSDN Library 以及后续的 MSDN Library 更新才可以被整合到最新版本的 Visual Studio 中。编译程序也叫编译系统,是把用高级语言编写的面向过程的源程序翻译成目标程序的语言处理程序。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。(1) 词法分析词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。(2) 语法分析编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。(3) 中间代码生成中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。(4) 代码优化代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。(5) 目标代码生成目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。目标代码有三种形式: 可以立即执行的机器语言代码,所有地址都重定位; 待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码; 汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。什么是程序开发?个人见解,程序开发就是为了解决实际的问题而运用开发工具编写代码的过程。简单说,就是写软件,写程序。程序开发分2种:一种是动态页面中不与数据库打交道,只是为了完成某一个特殊的操作,是在客户端即浏览者的电脑上运行的,比如java程序;另一种是要与数据库打交道,要从数据库中读取数据的,比如asp程序、JSP程序、PHP程序等;应用某种语言编写一组可以达到目的代码,即程序开发。请问想学程序开发,最基础的应该先学什么?首先接触C语言,不用学太深,基本控制要学会,链表之类的要懂得原理.然后可以去学C#或JAVA之类的面向对象语言.如果你想做底层或高级的开发,你可以选择C+ 期间要学好数据结构.数学,英语也很重要. 初学时,你可能感觉数学不重要,但等你想往底层发展时,你就会感觉数学有多么的重要.VisualStudio ?VisualStudio是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序。VisualBasic、VisualC+、VisualC#和VisualJ#全都使用相同的集成开发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了.NETFramework的功能,通过此框架可使用简化ASPWeb应用程序和XMLWebServices开发的关键技术。VisualStudio提供了一个全新的网页设计器(称为VisualWebDeveloper),其中包含了许多用于创建和编辑ASP.NET网页和HTML页的增强功能。该设计器提供了比在VisualStudio.NET2003中更简单、更迅速的Web窗体页创建方法。VF?visual foxpro 一种编程环境。 Visual FoxPro中的Visual的意思是“可视化”,该技术使得在Windows环境下设计的应用程序达到即看即得的效果。Visual FoxPro面向对象的开发环境使得无论是组织信息、运行、查询、创建集成的关系型数据库系统,还是编写数据库管理应用程序,都变得十分轻松。C+?C+这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C+是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。学习C+应该由易至难,循序渐进。以前经常有人说学习C+之前应该学习C语言。事实上那不是必须的,C+和C语言虽然有关系,但仍然是两种不同的语言。当然,在学习C+之前学习过其他编程语言是很有好处的。那会使学习C+的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来,不要急躁。要成为C+的高手,不是那么容易的,必须要花很大的努力。C语言?C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。1. C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C+的一大区别。 2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。 C语言指针 指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作也给它带来了很多不安全的因素。C+在这方面做了很好的改进,在保留了指针操作的同时又增强了安全性。Java取消了指针操作,提高了安全性,适合初学者使用VB?vb是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。Basic 实际上是一个短语的缩写,这个短语就是 Beginners All-Purpose Symbolic Instruction Code ,其中文意思为“初学者通用符号指令代码”。VC是什么?学VC是学什么?首先VC是一个软件(IDE集成开发环境)(编译、编辑、调试) C和C+。 WindowsSDK(软件开发工具) VC的灵魂:MFC(微软基础类库) ATL(ActiveX模板类库) 其他的SDK,如OpenGL,DirectX,ActiveMoive,DrawDib(WinG) VC是许许多多技术的综合,就好像少林72般绝技,一般在应用中学会其中很少一部分就够了。我们现在的目的,其实不过是学一套少林长拳。这套长拳应包括: 1、养成一种严谨的软件开发习惯,熟悉软件工程的基本原则。 2、C语言基础 3、C+最基本内容:类、继承性、封装性、多态性的概念 4、如何用向导建立一个程序框架 5、设计菜单 6、设计工具条 7、设计和使用对话框,熟悉最常用的对话框控件:按钮、静态文本、编辑框等 8、知道怎样新建类、成员函数、成员变量、消息处理函数。 9、了解最常用的Windows消息:如WM_PAINT(重绘窗口),鼠标按下、弹起、移动,初始化对话框,等。 10、了解最简单的GDI(图形设备接口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论