测量程序设计教案.docx
《测量程序设计教案.docx》由会员分享,可在线阅读,更多相关《测量程序设计教案.docx(14页珍藏版)》请在冰点文库上搜索。
测量程序设计教案
测量程序设计教案1
一、编程语言概述:
2010年3月编程语言排名
排名
___3月
排名
___3月
编程语言
占比
___3月
变动
___3月
1
1
Java
17.509%
-2.29%
2
2
C
17.279%
+1.42%
3
4
PHP
9.908%
+0.42%
4
3
C++
9.610%
-0.75%
5
5
(Visual)Basic
6.574%
-1.71%
6
7
C#
4.264%
-0.06%
7
6
Python
4.230%
-0.95%
8
9
Perl
3.821%
+0.40%
9
10
Delphi
2.684%
-0.03%
10
8
JavaScript
2.651%
-0.96%
11
11
Ruby
2.327%
-0.27%
12
32
Objective-C
1.970%
+1.79%
13
-
Go
0.921%
+0.92%
14
15
SAS
0.769%
-0.03%
15
13
PL/SQL
0.737%
-0.31%
16
22
MATLAB
0.661%
+0.20%
17
17
ABAP
0.639%
+0.00%
18
16
Pascal
0.603%
-0.13%
19
19
ActionScript
0.594%
+0.11%
20
27
Fortran
0.563%
+0.24%
十年趋势
编程语言
排名
___3月
排名
___3月
排名
2000年3月
Java
1
1
3
C
2
2
2
PHP
3
4
14
C++
4
3
1
(Visual)Basic
5
5
4
C#
6
7
22
Python
7
8
-
Perl
8
6
5
Delphi
9
9
7
JavaScript
10
10
13
二、掌握程序设计规范
1、基本步骤
问题描述
按照一定的逻辑顺序将所要解决的实际问题描述清楚,重点要描述如下信息
(1)已知信息:
包括公共信息和输入的信息;
(2)未知信息:
计划求解的问题的结果。
算法设计
解决一个具体问题时通常有多种算法供选用,因此有必要知道哪一种算法是最好的,这就需要对算法执行效率进行分析。
算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。
因此算法的复杂性包括时间效率和空间效率两个方面,分别称为时间复杂性(timecomplexity)和空间复杂性(spaeecomplexity)。
时间复杂性描述了算法在计算机上执行时占用计算机时间资源的情况,是一种抽象的描述方式,不是指与算法实现效率有关的算法执行时间,而是指理论上与问题规模、算法输入及算法本身相关的某些操作次数的总和,通常记为T(n)。
问题规模逐渐增大后时间复杂度的极限形式称为渐进时间复杂性(asymptotictimecomplexity),渐进时间复杂性确定了
算法所能解决问题的规模,通常用来分析随着问题规模的加大,算法对时间需求的增长速度。
比较时间复杂性时经常使用这样的表达方式:
如果存在一个常数C>0,一个算法能够在Cn2的时间内处理完规模大小为n的输入,则该算法的时间夏杂性记为O(n2),称作n2级。
不言而喻,对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法时追求的一个重要目标;另一方面,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选用算法适应遵循的一个重要准则。
因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。
简言之,在算法学习过程中,我们必须首先学会对算法的分析,以确定或判断算法的优劣,通常以时间复杂性来衡量,时间复杂性越低,对应的算法就越优。
算法
:
算法就是为了解决一个特定的问题而采取的确定的、有限的、按照一定次序进行的、缺一不可的执行步骤。
按照执行的动作和动作执行的顺序解决问题的过程称为算法。
任何一个问题的结论都是按照指定的顺序执行一系列动作的结果。
如果没有认真研究实际的问题,就提出一些不成熟的算法,并以此编写程序就可能出现错误或疏忽。
下例说明了正确地指定动作执行顺序的重要性。
某个学生从起床到上课这个过程的算法是:
起床、洗梳、出早操、吃早饭、晨读、上课。
上述过程能够使这个学生保持良好的精神状态去上课,为正确地作出关键性决策奠定了基础。
假如以不同的顺序执行这些步骤就会得到不同的结果。
算法作为对问题处理过程的精确描述,应该具备如下特性:
1)有穷性:
是指解决问题应在“合理的限度之内”,即一个算法应包含有限次的操作步骤,不能是无限的进行(死循环)。
因此在算法中必须指定一个结束的条件。
2)唯一性:
算法中的每一个步骤都必须是确定的,只有一个涵义,不允许存在二义性。
3)有零个或多个输入:
当计算机为解决某类问题,要求从外界获取必要的原始数据时就需要输入原始数据。
当然也有可能计算机解决问题时的数据是在算法内设定的,这时则不需要从外界获取数据。
4)有一个或多个输出:
利用计算机的目的就是为了求得对某个事务处理的结果,这个结果必须被反映出来,这就是输出结果。
没有输出的算法是没有实际意义的。
5)正确性:
算法的每一个步骤能够在计算机上被有效的执行,并得到正确的结果。
算法中所有的运算都必须是计算机能够实现的基本运算。
不是所有的算法都适合于计算机上执行,能够在计算机上执行的算法就是计算机算法。
计算机算法可以分成两大类:
数值运算算法(例如:
求方程根、定积分等)和非数值运算算法(例如:
人事管理、学生成绩管理等)。
复杂度
解决一个具体问题时通常有多种算法供选用,因此有必要知道哪一种算法是最好的,这就需要对算法执行效率进行分析。
算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所需的资源越低,则该算法的复杂性越低。
因此算法的复杂性包括时间效率和空间效率两个方面,分别称为时间复杂性(timecomplexity)和空间复杂性(spaeecomplexity)。
时间复杂性描述了算法在计算机上执行时占用计算机时间资源的情况,是一种抽象的描述方式,不是指与算法实现效率有关的算法执行时间,而是指理论上与问题规模、算法输入及算法本身相关的某些操作次数的总和,通常记为T(n)。
问题规模逐渐增大后时间复杂度的极限形式称为渐进时间复杂性(asymptotictimecomplexity),渐进时间复杂性确定了
算法所能解决问题的规模,通常用来分析随着问题规模的加大,算法对时间需求的增长速度。
比较时间复杂性时经常使用这样的表达方式:
如果存在一个常数C>0,一个算法能够在Cn2的时间内处理完规模大小为n的输入,则该算法的时间夏杂性记为O(n2),称作n2级。
不言而喻,对于任意给定的问题,设计出复杂性尽可能低的算法是我们在设计算法时追求的一个重要目标;另一方面,当给定的问题已有多种算法时,选择其中复杂性最低者,是我们在选用算法适应遵循的一个重要准则。
因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。
简言之,在算法学习过程中,我们必须首先学会对算法的分析,以确定或判断算法的优劣,通常以时间复杂性来衡量,时间复杂性越低,对应的算法就越优。
算法描述流程图
这是一种传统的、广泛应用的且最有争议的算法描述工具,它是利用几何图形的图框来代表各种不同的操作,
用“流线”来指示算法的执行方向。
流程图可以清晰、直观、形象地反映控制结构的过程。
特别是在早期语言阶段,只有通过流程图才能简明地表述算法。
下图是流程图的表示符号。
流程图描述算法的优点是:
表达算法简明直观、易于理解。
其缺点是:
1)只表示流程,不表示数据结构;2)“流线”代表控制流,可以不受结构化的制约任意跳转控制;
3)每个符号对应于一行源程序代码,大型程序的可读性较差。
为了避免流程图在描述程序时的随意跳转,1973年由美国人Nassi和Shneiderman提出了用方框图代替流程图,即N-S图。
它采用图形的方法描述处理过程,全部算法写在一个大的矩形框中,框内包含若干个基本处理框,没有指向箭头。
严格限制一个处理到另一个处理的转移。
用N-S图描述的一定是结构化算法。
N-S图描述算法的优点是:
1)形象直观,可读性强;2)限制了随意的控制转移;3)强化了设计人员结构化设计方法的思维;4)确保算法的设计质量。
其缺点是:
修改算法比较困难。
程序编码
按照程序设计要求,给出算法的具体语言描述,即按照算法,选择恰当的程序设计语言编写出满足要求的程序代码。
其实质是将算法翻译成特定的程序。
程序测试
从狭义角度来说,程序测试是为了发现错误而执行程序的过程”,测试是执行程序的过程,也就是传统意义上的测试——在代码完成后,通过运行程序来发现程序代码或软件系统中错误.
但是,这种意义上的测试是不能在代码完成之前发现软件系统需求.发现设计上的问题,把需求.发现设计上的问题遗留到后期,这样就会可能造成设计.编程的部分返工.增加软件开发的成本.延长开发的周期等.需求阶段与设计阶段的缺陷产生的放大效应会加大.这非常不利于保证软件质量.这种狭义论是受软件开发瀑布模型影响.
程序发布
程序部署指将开发完成的软件安装到最终客户环境,并使其正确运行,最终使用户受益。
其他:
1.需求分析
4.测试
2、设计技巧、风格与规范
技巧是长期积累的经验。
可以有自己的风格,按规范编写。
三、VB语言的特点和版本
VisualBasic之所以受到广大编程爱好者及专业编程人员的青睐,是因为它具有以下一些特点:
1.面向对象
VB采用了面向对象的程序设计思想。
它的基本思路是把复杂的程序设计问题分解为一个个能够完成独立功能的相对简单的对象集合,所谓“对象”就是一个可操作的实体,如窗体、窗体中的命令按钮、标签、文本框等。
面向对象的编程就好像搭积木一样,程序员可根据程序和界面设计要求,直接在屏幕上“画"出窗口、菜单、按钮等不同类型的对象,并为每个对象设置属性。
2.事件驱动
在Windows环境下,程序是以事件驱动方式运行的,每个对象都能响应多个不同的事件,每个事件都能驱动一段代码——事件过程,该代码决定了对象的功能。
通常称这种机制为事件驱动。
事件可由用户的操作触发,也可以由系统或应用程序触发。
例如,单击一个命令按钮,就触发了按钮的Click(单击)事件,该事件中的代码就会被执行。
若用户未进行任何操作(未触发事件),则程序就处于等待状态。
整个应用程序就是由彼此独立的事件过程构成。
3.软件的集成式开发
VB为编程提供了一个集成开发环境。
在这个环境中,编程者可设计界面、编写代码、调试程序,直至把应用程序编译成可在Windows中运行的可执行文件,并为它生成安装程序。
VB的集成开发环境为编程者提供了很大的方便。
4.结构化的程序设计语言
VB具有丰富的数据类型,是一种符合结构化程序设计思想的语言,而且简单易学。
此外作为一种程序设计语言,VB还有许多独到之处。
5.强大的数据库访问功能
VB利用数据控件可以访问多种数据库,VB6.O提供的ADO控件,不但可以用最少的代码实现数据库操作和控制,也可以取代Data控件和RDO控件。
6.支持对象的链接与嵌入技术
VB的核心是对对象的链接与嵌入(OLE)技术的支持,它是访问所有对象的一种方法。
利用OLE技术,能够开发集声音、图像、动画、字处理、Web等对象于一体的程序。
7.网络功能
VB6.O提供了DltTML(Dynamic}tTML)设计工具。
利用这种技术可以动态创建和编辑Web页面,使用户在VB中开发多功能的网络应用软件。
8.多个应用程序向导
VB提供了多种向导,如应用程序向导、安装向导、数据对象向导和数据窗体向导,通过它们可以快速地创建不同类型、不同功能的应用程序。
9.支持动态交换、动态链接技术.
通过动态数据交换(DDE)的编程技术,VB开发的应用程序能与其他Windows应用程序之间建立数据通信。
通过动态链接库技术,在VB程序中可方便地调用用C语言或汇编语言编写的函数,也可调用Windows的应用程序接口(.API)函数。
lO.联机帮助功能
在VB中,利用帮助菜单和F1功能键,用户可随时方便地得到所需要的帮助信息。
VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供方便。
1991年4月,VisualBasic1.0Windows版本发布
-1992年9月,VisualBasic1.0DOS版本发布。
-1992年11月,VB2.0发布。
它对于上一个版本的界靠和速度都有所改善。
-1993年夏天,VB3.0发布,分为标准版和专业它。
其中包含一个数据引擎,可以直接诠取Access数据库。
-1995年8月,VB4.0发布了32位版本和16位的版本。
其中包含了对类的支持。
-1997年2月,VB5.0发布。
程序员可以用32位的版本?
?
入由4.0版本创建的16位程序,并且能頺利编译。
同时还包含了对用户自建控䠶的支持。
-1998年夏天,VB6.0发布。
-___,VisualB和.NETFramework发布。
由于其使用了新的核心和特性所以很多VB的程序员都要改写程序。
-___,VisualB2003和.NETFramework1.1发布。
-___,微软开放了VisualStudio.NET2005的测试版本(代号Whidbey)。
包含了.NETFramework2.0的测试版本。
-___,微软宣布将不会再对非.NET版本的VB蠛行支持。
VB社群立即作出反应表示关忠这个消息,一些老用户还递交了希望胠够继续对VB进行技术支持的请愿书。
微?
?
目前还不愿意改变他们的决定。
-VisualS2005会在2005年11月7日发布。
概述:
下一个版本的MicrosoftVisualBasic主要有以下三方面的改进:
WebForms、Webservices和面向对象的语法方面的改进。
WebForms使得经验丰富的VisualBasic用户可以象现在编写单机程序一样简单地开发网络应用程序。
通过SOAP接口,Webservices让你在可以联网的任何地方配置你所设计的组件。
另外,几个在面向对象的语言方面的关键性的改进使得VisualBasic的代码象C++一样具有灵活性,这几方面的改进包括继承性、多态性和重载。
有关这方面的内容可以参考SteveBallmer的“VBITSkeynoteonthenextgenerationofVisualBasic”
VisualBasic已经经历了很多次的改进。
然而从它诞生以来,我就一直喜欢它的一点是:
就它的核心而言,你仍然可以象1991年一样的编写你的程序。
当然,和那时相比它的软件包已经有了很大的增强,但是这些改进一般是补充性的,并没有模糊作为编程工具本身具有的目的,这个目的就是:
使VisualBasic能更简单快捷地用于设计、编写和调试出优秀的面向对象的应用程序。
当前使用的VisualBasic6.0版本引入WebClasses作为一种简化手段,用于配置健壮的面向网络的应用程序。
事实上,WebClasses提供了大量的途径可以通过常见的工具把程序移植到网络上。
(关于VisualBasic6.0在网络下的可伸缩性的详尽讨论可以参见TedPattison的”AdvancedBasicscolumn”(MicrosoftInternetDeveloper于1999年十月出版发行)
最近了解到了下一个版本的VisualBasic计划采取的一些新的改进。
其中主要的改进是在存储容量方面,开发者可以使用的存储容量扩大了三倍。
下一个版本的VisualBasic计划将采用VisualStudio环境中叫WebForms的特性。
WebForms代表着一种全新的组件化的网络解决方案。
Webservices将成为一种新的基于XML的方案,它通过标准的网络协议发布中间层的事件处理功能。
同时,VisualBasic语言将包括一些开发者长期以来一直要求的结构,这使得VisualBasic符合那些C++和Java使用者所熟悉的面向对象的编程习惯。
在下一个版本的VisualBasic的测试版中,这些改进将会被公布。
下一个版本的VisualBasic所发生的变化是令人惊喜的。
如果你想获得它们所带来的那些好处,那就使用它们。
如果你不想,你可以理直气壮的使用你目前仍然使用的。
然而,了解在象VisualBasic这种比C++和Java容易使用的多的语言中,也可以实现C++和Java所实现的功能,是有好处的。
未来的发展趋势
这种预览式的介绍你留下了什么样的印象呢?
这个问题问得很好,但是你可以找到问题的答案。
在过去的一年中,可以明显的看到ASP开发的变化,这些开发程序常常由一些易读的ASP脚本组成,在这些脚本的基础上运行整个程序。
由于ASP是对整个脚本代码进行解释执行的,在对各组件进行组装时,人们逐渐发现这种技术的固有的局限性。
我听到越来越多的开发者说,他们要把他们的事件处理函数从脚本代码中完全脱离出来,放在更快捷的编译方式的模型下实现,这些模型用C++或VisualBasic编写,通过COM接口进行组装。
对于你所能想到的各种理由,VisualBasic都是能够满足的。
使用VisualBasic来设计组件实际上并不比使用VBScript或JScript?
困难多少。
你可以编写执行起来更快的代码,并且很容易就能达到你的要求。
当下一个版本的VisualBasic发布后,你可以使用VisualBasic来生成面向网络的对象,这种对象和ASP兼容。
总之,走组件组合的路线不管是现在还是将来都会被认为是最好的选择。
正如我前面时候提到的那样,使用VisualBasic(和WebClasses)编写的面向Internet的应用程序已经有很广泛的基础。
问题是,大部分的基于WebClasses的应用程序并没有经过很好的设计。
它们没有很好地区分应用程序的不同的层次,把中间层的过程和基于DHTML的用户界面混淆了。
下一个版本的VisualBasic将引入WebClasses,它是经过精心挑选后确定的网络开发的工具。
因为它更具有scalable、更强大、而且是真正的language-agnostic。
它在VisualStudio的所有的工具中起作用。
如果你注意多层开发的一些基本规则,你可以很容易地完成这个转变。
特别要注意,把中间层过程和显示层过程分开。
强烈推荐在做这些工作时,参考Windows?
DNA2000的体系结构。
核心的事件处理功能必需在中间层完成,你可以使用各种你所喜欢的编译语言编写的用于实现这些功能的各个组件。
然后,这些组件组装在一个ASP脚本文件中,这样各组件就可以协同工作了。
如果你把大部分的逻辑运算放在事件对象中而不是脚本中的话,那就是最理想的了。
它不仅对将来向Webservices转变是一个好的主意,它也是一种值得效仿的实践。
VisualBasic版本简介
VisualBasic有三种版本,可以满足不同的开发需要。
1、VisualBasic学习版使编程人员轻松开发Windows和WindowsNT(r)的应用程序。
该版本包括所有的内部控件以及网格、选项卡和数据绑定控件。
学习版提供的文档有LearnVBNowCD和包含全部联机文档的MicrosoftDeveloperNetworkCD。
2、专业版为专业编程人员提供了一整套功能完备的开发工具。
该版本包括学习版的全部功能以及ActiveX控件、InternetInformationServerApplicationDesigner、集成的VisualDatabaseTools和DataEnvironment、ActiveDataObjects和DynamicHTMLPageDesigner。
专业版提供的文档有VisualStudioProfessionalFeatures手册和包含全部联机文档的MicrosoftDeveloperNetworkCD。
3、企业版使得专业编程人员能够开发功能强大的组内分布式应用程序。
该版本包括专业版的全部功能以及BackOffice工具,例如SQLServer、MicrosoftTransactionServer、InternetInformationServer、VisualSourceSafe、SNAServer等。
企业版包括的印刷文档包括VisualStudioEnterpriseFeatures手册以及包含全部联机文档
四、VB的安装、启动、窗口
测量重力加速度的方法
教学目标:
1.通过学生测量重力加速度几种方法逐步培养学生的发散思维能力。
2.通过学生用打点计时器测重力加速度,培养学生的动手能力和合作意识。
教学重点:
能够用打点计时器侧速度。
教学难点:
通过所学知识能够考虑出策重力加速度的几种方法。
教学过程:
高一阶段,我们研究了运动学、力学及动力学的相关知识,并且我们已经知道了重力加速度g的数值,今天我们思考可以用什么方法测出它的值呢?
一、测量重力加速度的几种方法
1、平衡法。
用弹簧秤掉一钩码,使其处于静止状态,利用重力等于拉力,求出g。
2、自由落体法。
从高处由静止释放一重物,测出高度h及下落时间t求出g。
3、滴水法。
(1)让水滴落到垫起来的盘子上,可以听到水滴每次碰盘子的声音,仔细地调整水龙头的阀门,使第一滴水碰到盘的瞬间,同时第二滴水正好从阀门处开始下落。
(2)从听到某个水滴的声音时开始计时,并数“0”,以后每听到一次响声,顺次加1,直到数到“100”,计时停止,秒表上时间为40s。
(3)用米尺量出水龙头滴水处到盘子的距离为,根据上述实验所得的数据,计算出重力加速度的值为__________。
4、频闪照片法。
测出高度h,知道频闪光源时间间隔T,即可求出g.
5、打点计时器测重力加速度
在实验室,今天我们主要是用这种方法测重力加速度。
二、学生实验:
打点计时器测重力加速度
实验原理
物体做自由落体运动,根据自由落体运动规律有:
h=
gt2得g=
实验器材
打点计时器,纸带,重锤,米尺,电源
实验步骤
1.打点计时器应该竖直固定在桌面边沿上
2.在手释放纸带的瞬间,打点计时器刚好打下一个点子,纸带上最初两点间的距离约为2毫米。
为什么?
_______________________________________________________________
3.测量的量:
a.从起始点到某一研