版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、测量程序设计教案1一 、编程语言概述:2010 年3月编程语言排名排名2010年3月排名2009年3月编程语言占比2010年3月变动2009年3月11Java17.509%-2.29%22C17.279%+1.42%34PHP9.908%+0.42%43C+9.610%-0.75%55(Visual) Basic6.574%-1.71%67C#4.264%-0.06%76Python4.230%-0.95%89Perl3.821%+0.40%910Delphi2.684%-0.03%108JavaScript2.651%-0.96%1111Ruby2.327%-0.27%1232Objecti
2、ve-C1.970%+1.79%13-Go0.921%+0.92%1415SAS0.769%-0.03%1513PL/SQL0.737%-0.31%1622MATLAB0.661%+0.20%1717ABAP0.639%+0.00%1816Pascal0.603%-0.13%1919ActionScript0.594%+0.11%2027Fortran0.563%+0.24%十年趋势编程语言排名2010年3月排名2006年3月排名2000年3月Java113C222PHP3414C+431(Visual) Basic554C#6722Python78-Perl865Delphi997JavaS
3、cript101013二、掌握程序设计规范1、基本步骤问题描述按照一定的逻辑顺序将所要解决的实际问题描述清楚,重点要描述如下信息(1)已知信息:包括公共信息和输入的信息;(2)未知信息:计划求解的问题的结果。算法设计解决一个具体问题时通常有多种算法供选用,因此有必要知道哪一种算法是最好的,这就需要对算法执行效率进行分析。算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。因此算法的复杂性包括时间效率和空间效率两个方面,分别称为时间复杂性
4、(time complexity)和空间复杂性(spaee complexity)。时间复杂性描述了算法在计算机上执行时占用计算机时间资源的情况,是一种抽象的描述方式,不是指与算法实现效率有关的算法执行时间,而是指理论上与问题规模、算法输入及算法本身相关的某些操作次数的总和,通常记为T(n)。问题规模逐渐增大后时间复杂度的极限形式称为渐进时间复杂性(asymptotic time complexity),渐进时间复杂性确定了算法所能解决问题的规模,通常用来分析随着问题规模的加大,算法对时间需求的增长速度。比较时间复杂性时经常使用这样的表达方式:如果存在一个常数C>0,一个算法能够在Cn2
5、的时间内处理完规模大小为n的输入,则该算法的时间夏杂性记为O(n2),称作n2级。不言而喻,对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法时追求的一个重要目标;另一方面,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选用算法适应遵循的一个重要准则。因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。简言之,在算法学习过程中,我们必须首先学会对算法的分析,以确定或判断算法的优劣,通常以时间复杂性来衡量,时间复杂性越低,对应的算法就越优。算法:算法就是为了解决一个特定的问题而采取的确定的、有限的、按照一定次序进行的、缺一不可的执行步骤。按照执行的动作和
6、动作执行的顺序解决问题的过程称为算法。任何一个问题的结论都是按照指定的顺序执行一系列动作的结果。如果没有认真研究实际的问题,就提出一些不成熟的算法,并以此编写程序就可能出现错误或疏忽。下例说明了正确地指定动作执行顺序的重要性。某个学生从起床到上课这个过程的算法是:起床、洗梳、出早操、吃早饭、晨读、上课。上述过程能够使这个学生保持良好的精神状态去上课,为正确地作出关键性决策奠定了基础。假如以不同的顺序执行这些步骤就会得到不同的结果。算法作为对问题处理过程的精确描述,应该具备如下特性:1)有穷性:是指解决问题应在“合理的限度之内”,即一个算法应包含有限次的操作步骤,不能是无限的进行(死循环)。因此
7、在算法中必须指定一个结束的条件。2)唯一性:算法中的每一个步骤都必须是确定的,只有一个涵义,不允许存在二义性。3)有零个或多个输入:当计算机为解决某类问题,要求从外界获取必要的原始数据时就需要输入原始数据。当然也有可能计算机解决问题时的数据是在算法内设定的,这时则不需要从外界获取数据。4)有一个或多个输出:利用计算机的目的就是为了求得对某个事务处理的结果,这个结果必须被反映出来,这就是输出结果。没有输出的算法是没有实际意义的。5)正确性:算法的每一个步骤能够在计算机上被有效的执行,并得到正确的结果。算法中所有的运算都必须是计算机能够实现的基本运算。不是所有的算法都适合于计算机上执行,能够在计算
8、机上执行的算法就是计算机算法。计算机算法可以分成两大类:数值运算算法(例如:求方程根、定积分等)和非数值运算算法(例如:人事管理、学生成绩管理等)。复杂度解决一个具体问题时通常有多种算法供选用,因此有必要知道哪一种算法是最好的,这就需要对算法执行效率进行分析。算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。因此算法的复杂性包括时间效率和空间效率两个方面,分别称为时间复杂性(time complexity)和空间复杂性(spaee c
9、omplexity)。时间复杂性描述了算法在计算机上执行时占用计算机时间资源的情况,是一种抽象的描述方式,不是指与算法实现效率有关的算法执行时间,而是指理论上与问题规模、算法输入及算法本身相关的某些操作次数的总和,通常记为T(n)。问题规模逐渐增大后时间复杂度的极限形式称为渐进时间复杂性(asymptotic time complexity),渐进时间复杂性确定了算法所能解决问题的规模,通常用来分析随着问题规模的加大,算法对时间需求的增长速度。比较时间复杂性时经常使用这样的表达方式:如果存在一个常数C>0,一个算法能够在Cn2的时间内处理完规模大小为n的输入,则该算法的时间夏杂性记为O(
10、n2),称作n2级。不言而喻,对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法时追求的一个重要目标;另一方面,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选用算法适应遵循的一个重要准则。因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。简言之,在算法学习过程中,我们必须首先学会对算法的分析,以确定或判断算法的优劣,通常以时间复杂性来衡量,时间复杂性越低,对应的算法就越优。算法描述流程图这是一种传统的、广泛应用的且最有争议的算法描述工具,它是利用几何图形的图框来代表各种不同的操作,用“流线”来指示算法的执行方向。流程图可以清晰、直观、形象地反映控制
11、结构的过程。特别是在早期语言阶段,只有通过流程图才能简明地表述算法。下图是流程图的表示符号。流程图描述算法的优点是:表达算法简明直观、易于理解。其缺点是:1)只表示流程,不表示数据结构;2)“流线”代表控制流,可以不受结构化的制约任意跳转控制;3)每个符号对应于一行源程序代码,大型程序的可读性较差。为了避免流程图在描述程序时的随意跳转,1973年由美国人Nassi和Shneiderman提出了用方框图代替流程图,即N-S图。它采用图形的方法描述处理过程,全部算法写在一个大的矩形框中,框内包含若干个基本处理框,没有指向箭头。严格限制一个处理到另一个处理的转移。用N-S图描述的一定是结构化算法。N
12、-S图描述算法的优点是:1)形象直观,可读性强; 2)限制了随意的控制转移;3)强化了设计人员结构化设计方法的思维;4)确保算法的设计质量。其缺点是:修改算法比较困难。程序编码按照程序设计要求,给出算法的具体语言描述,即按照算法,选择恰当的程序设计语言编写出满足要求的程序代码。其实质是将算法翻译成特定的程序。程序测试从狭义角度来说,程序测试是为了发现错误而执行程序的过程”,测试是执行程序的过程,也就是传统意义上的测试在代码完成后,通过运行程序来发现程序代码或软件系统中错误.但是,这种意义上的测试是不能在代码完成之前发现软件系统需求.发现设计上的问题,把需求.发现设计上的问题遗留到后期,这样就会
13、可能造成设计.编程的部分返工.增加软件开发的成本.延长开发的周期等.需求阶段与设计阶段的缺陷产生的放大效应会加大.这非常不利于保证软件质量.这种狭义论是受软件开发瀑布模型影响.程序发布程序部署指将开发完成的软件安装到最终客户环境,并使其正确运行,最终使用户受益。其他:1.需求分析2.详细设计3.实现代码4.测试5.修改6.维护2、设计技巧、风格与规范技巧是长期积累的经验。 可以有自己的风格,按规范编写。三、VB语言的特点和版本Visual Basic之所以受到广大编程爱好者及专业编程人员的青睐,是因为它具有以下一些特点: 1面向对象 VB采用了面向对象的程序设计思想。它的基本思路是把复杂的程序
14、设计问题分解为一个个能够完成独立功能的相对简单的对象集合,所谓“对象”就是一个可操作的实体,如窗体、窗体中的命令按钮、标签、文本框等。面向对象的编程就好像搭积木一样,程序员可根据程序和界面设计要求,直接在屏幕上“画"出窗口、菜单、按钮等不同类型的对象,并为每个对象设置属性。 2事件驱动 在Windows环境下,程序是以事件驱动方式运行的,每个对象都能响应多个不同的事件,每个事件都能驱动一段代码事件过程,该代码决定了对象的功能。通常称这种机制为事件驱动。事件可由用户的操作触发,也可以由系统或应用程序触发。例如,单击一个命令按钮,就触发了按钮的Click(单击)事件,该事件中的代码就会被
15、执行。若用户未进行任何操作(未触发事件),则程序就处于等待状态。整个应用程序就是由彼此独立的事件过程构成。 3软件的集成式开发 VB为编程提供了一个集成开发环境。在这个环境中,编程者可设计界面、编写代码、调试程序,直至把应用程序编译成可在Windows中运行的可执行文件,并为它生成安装程序。VB的集成开发环境为编程者提供了很大的方便。 4结构化的程序设计语言 VB具有丰富的数据类型,是一种符合结构化程序设计思想的语言,而且简单易学。此外作为一种程序设计语言,VB还有许多独到之处。 5强大的数据库访问功能 VB利用数据控件可以访问多种数据库,VB 6O提供的ADO控件,不但可以用最少的代码实现数
16、据库操作和控制,也可以取代Data控件和RDO控件。 6支持对象的链接与嵌入技术 VB的核心是对对象的链接与嵌入(OLE)技术的支持,它是访问所有对象的一种方法。利用OLE技术,能够开发集声音、图像、动画、字处理、Web等对象于一体的程序。 7网络功能 VB 6O提供了DltTML(DynamictTML)设计工具。利用这种技术可以动态创建和编辑Web页面,使用户在VB中开发多功能的网络应用软件。 8多个应用程序向导 VB提供了多种向导,如应用程序向导、安装向导、数据对象向导和数据窗体向导,通过它们可以快速地创建不同类型、不同功能的应用程序。 9支持动态交换、动态链接技术 通过动态数据交换(D
17、DE)的编程技术,VB开发的应用程序能与其他Windows应用程序之间建立数据通信。通过动态链接库技术,在VB程序中可方便地调用用C语言或汇编语言编写的函数,也可调用Windows的应用程序接口(API)函数。 lO联机帮助功能 在VB中,利用帮助菜单和F1功能键,用户可随时方便地得到所需要的帮助信息。VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供方便。 1991年 4月 ,Visual Basic 1.0 Windows版本发布 - 1992年 9月 ,Visual Basic 1.0 DOS版本发布。 - 1992年 11月 ,VB2.0
18、发布。它对于上一个版本的界靠和速度都有所改善。 - 1993年 夏天,VB3.0发布,分为标准版和专业它。其中包含一个数据引擎,可以直接诠取Access数据库。 - 1995年 8月 ,VB4.0发布了 32位 版本和 16位 的版本。其中包含了对 类 的支持。 - 1997年 2月 ,VB5.0发布。程序员可以用32位的版本 ?入由4.0版本创建的16位程序,并且能頺利编译。同时还包含了对用户自建控的支持。 - 1998年 夏天,VB6.0发布。 - 2001年 , Visual B 和 .NET Framework 发布。由于其使用了新的核心和特性所以很多VB的程序员都要改写程序。 - 2
19、003年 , Visual B 2003和.NET Framework 1.1发布。 - 2004年 ,微软开放了 Visual Studio .NET 2005的 测试 版本(代号Whidbey)。包含了.NET Framework2.0的测试版本。 - 2005年 ,微软宣布将不会再对非.NET版本的VB蠛行支持。VB社群立即作出反应表示关忠这个消息,一些老用户还递交了希望胠够继续对VB进行技术支持的请愿书。微 ?目前还不愿意改变他们的决定。 - Visual S 2005会在 2005年 11月7日 发布。 概述: 下一个版本的Microsoft Visual Basic 主要有以下三方
20、面的改进:Web Forms、Web services和面向对象的语法方面的改进。 Web Forms使得经验丰富的Visual Basic用户可以象现在编写单机程序一样简单地开发网络应用程序。通过SOAP 接口, Web services让你在可以联网的任何地方配置你所设计的组件。另外,几个在面向对象的语言方面的关键性的改进使得Visual Basic的代码象C+一样具有灵活性,这几方面的改进包括继承性、多态性和重载。有关这方面的内容可以参考Steve Ballmer 的“VBITS keynote on the next generation of Visual Basic” Visual
21、 Basic 已经经历了很多次的改进。然而从它诞生以来,我就一直喜欢它的一点是:就它的核心而言,你仍然可以象1991年一样的编写你的程序。当然,和那时相比它的软件包已经有了很大的增强,但是这些改进一般是补充性的,并没有模糊作为编程工具本身具有的目的,这个目的就是:使Visual Basic能更简单快捷地用于设计、编写和调试出优秀的面向对象的应用程序。 当前使用的Visual Basic 6.0版本引入WebClasses作为一种简化手段,用于配置健壮的面向网络的应用程序。事实上,WebClasses提供了大量的途径可以通过常见的工具把程序移植到网络上。(关于Visual Basic 6.0在网
22、络下的可伸缩性的详尽讨论可以参见Ted Pattison的”Advanced Basics column”( Microsoft Internet Developer于1999年十月出版发行) 最近了解到了下一个版本的Visual Basic计划采取的一些新的改进。其中主要的改进是在存储容量方面,开发者可以使用的存储容量扩大了三倍。下一个版本的Visual Basic计划将采用Visual Studio环境中叫Web Forms的特性。Web Forms代表着一种全新的组件化的网络解决方案。Web services将成为一种新的基于XML的方案,它通过标准的网络协议发布中间层的事件处理功能。同
23、时,Visual Basic 语言将包括一些开发者长期以来一直要求的结构,这使得Visual Basic符合那些C+和Java使用者所熟悉的面向对象的编程习惯。在下一个版本的Visual Basic的测试版中,这些改进将会被公布。 下一个版本的Visual Basic所发生的变化是令人惊喜的。如果你想获得它们所带来的那些好处,那就使用它们。如果你不想,你可以理直气壮的使用你目前仍然使用的。然而,了解在象Visual Basic这种比C+和Java容易使用的多的语言中,也可以实现C+和Java所实现的功能,是有好处的。 未来的发展趋势 这种预览式的介绍你留下了什么样的印象呢?这个问题问得很好,但
24、是你可以找到问题的答案。在过去的一年中,可以明显的看到ASP开发的变化,这些开发程序常常由一些易读的ASP脚本组成,在这些脚本的基础上运行整个程序。由于ASP是对整个脚本代码进行解释执行的,在对各组件进行组装时,人们逐渐发现这种技术的固有的局限性。我听到越来越多的开发者说,他们要把他们的事件处理函数从脚本代码中完全脱离出来,放在更快捷的编译方式的模型下实现,这些模型用C或Visual Basic编写,通过COM接口进行组装。 对于你所能想到的各种理由,Visual Basic都是能够满足的。使用Visual Basic来设计组件实际上并不比使用VBScript或JScript?困难多少。你可以
25、编写执行起来更快的代码,并且很容易就能达到你的要求。当下一个版本的Visual Basic发布后,你可以使用Visual Basic来生成面向网络的对象,这种对象和ASP兼容。总之,走组件组合的路线不管是现在还是将来都会被认为是最好的选择。 正如我前面时候提到的那样,使用Visual Basic(和WebClasses)编写的面向Internet的应用程序已经有很广泛的基础。问题是,大部分的基于WebClasses的应用程序并没有经过很好的设计。它们没有很好地区分应用程序的不同的层次,把中间层的过程和基于DHTML的用户界面混淆了。 下一个版本的Visual Basic将引入WebClasses,它是经过精心挑选后确定的网络开发的工具。因为它更具有scalable、更强大、而且是真正的language-agnostic。它在Visual Studio的所有的工具中起作用。如果你注意多层开发的一些基本规则,你可以很容易地完成这个转变。特别要注意,把中间层过程和显示层过程分开。强烈推荐在做这些工作时,参考Windows? DNA 2000的体系结构。核心的事件处理功能必需在中间层完成,你可以使用各种你所喜欢的编译语言编写的用于实现这些功能的各个组件。然后,这些组件组装在一个ASP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度法律服务机构兼职律师服务合同3篇
- 2025年度公司签约带货主播虚拟偶像合作合同3篇
- 二零二五年度养殖场养殖场养殖技术交流与合作合同3篇
- 2025年度建筑工程施工现场管理三方协议3篇
- 二零二五年度全新码头租赁合同及港口货物装卸服务协议3篇
- 2025年度XX教育机构二零二五年度教育贷款协议3篇
- 2025年度大学毕业生就业就业能力评估与培训合同3篇
- 2025年度高新技术产业竞业禁止劳动合同范本解析3篇
- 2025年度高效农业机械买卖合同协议书模板3篇
- 2025年度宠物店专业连锁品牌形象设计与授权合同3篇
- 金矿投资可行性方案
- 山东省济南市2023-2024学年高三上学期期末学习质量检测生物试题(原卷版)
- 《食品包装与安全》课件
- 内蒙古自治区呼和浩特市部分学校2023-2024学年九年级上学期期末数学试卷
- 儿科重症肺炎的康复治疗方案
- 机械加工刀具中英文对照外文翻译文献
- 泰达时代中心楼顶发光字施工方案
- 七年级上册数学期末考试(难的)
- 北京汇文中学新初一均衡分班语文试卷
- 国家开放大学电大《政治学原理》期末试题标准题库及答案(试卷号2208)
- 作物生产与经营管理专业调研报告
评论
0/150
提交评论