版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+语言超基础精讲 第1讲 程序设计语言原理及C+入门讲师:Gamebaby北风网VC+系列第1讲 主要内容什么是编程?1程序设计领域2语言评估标准3影响语言设计的因素4语言分类5语言设计中的权衡6北风网VC+系列第1讲 主要内容实现方法7程序设计环境8C语言简史9C+语言简史10学习程序语言的一般方法11C+语言入门12什么是编程?编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,然后编译或解释执行,并最终得到执行结果的过程。 计算机虽然功能十分强大。可以供你上网、打游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“
2、命令”。于是,要驯服它,只有通过一种方式程序,这也是人类和计算机沟通的唯一方式。 北风网VC+系列程序设计应用领域今天计算机已经大量地应用于现代社会的各个领域,从控制核能发电厂到提供移动电话中的电子游戏;由于计算机应用领域的千差万别,人们开发了用于不同目的的程序设计语言;北风网VC+系列科学应用领域第一种科学应用语言是Fortran.ALGOL 60极其后代语言,也都是以科学计算为主要目的;对于科学计算来说,计算性能是基本考虑的要点;后来的程序语言没有哪一种在性能方面优于Fortran;直到今天很多科学计算依然依靠Fortran来编写和执行;北风网VC+系列商务应用领域计算机最早于20世纪50
3、年代应用于商务领域;而第一种成功的高级商务语言是发布于1960年的COBOL(ISO/IEC 2002);至今这种语言仍然是这一领域应用最广泛的程序设计语言(国外);北风网VC+系列人工智能领域第一种应用于人工智能领域的程序设计语言是产生于1959年的函数式语言LISP;在20世纪70年代,出现了该领域的另一种逻辑程序设计语言Prolog;再后来C语言等也逐渐应用于该领域;北风网VC+系列操作系统领域用于IBM大型机的语言是PL/S,它是PL/I的一种方言;用于Digital机器的是BLISS语言,是一种仅仅高于汇编语言的语言;用于Burroughs(UNISYS)机器的是扩展的ALGOL语言
4、;而知名的UNIX系统几乎是全部用C来写的,从而使得UNIX很容易移植;后来的Linux系统也是采用C语言来开发;流行的Windows系统则主要采用大量C及少部分C+和汇编语言打造;北风网VC+系列万维网领域万维网是由一系列兼容语言来支持的,包括从不是程序设计语言的标记语言XHTML到通用目的设计的脚本语言Java;其它用于该领域语言还有JavaScript,PHP,C#等等;北风网VC+系列各领域语言的总结没有最好的程序设计语言;也没有最通用的程序设计语言;只有合适的程序设计语言;掌握这些领域各自语言的用途特点,对于项目中各个领域适用开发语言的选取具有重要指导意义;(CTO的必备知识)北风网
5、VC+系列语言的评估标准北风网VC+系列可读性标准判定利用一种程序设计语言编写的程序易读、易懂的程度;必须将可读性放置于问题领域中进行考虑。例如,如果描述一种计算问题的程序是用某种语言编写的,而这种语言并非是为进行这种类型的计算而设计的,这个程序可能就会不自然,也很复杂,因而就会特别难读;北风网VC+系列可写性标准程序设计语言的可写性是在给定领域内对该语言产生程序的难易程度的一种度量。大多数影响可读性的语言特征也可以影响可写性。这是因为编程人员在编写程序过程中要不断阅读已编写过的程序部分。(其实可读性和可写性是伪问题,对于精通语言的人来说,不存在这个问题,只存在理解性问题,而对于不懂语言的人来
6、说,任何语言天生都有低的可读型和可写性,更不要说理解。)北风网VC+系列可靠性如果一个程序在任何条件下的运行都能够达到它的说明标准,那么这个程序是可靠的;目前最可靠的语言是Ada语言,它甚至可以保证用任何版本编译器编译同一份源代码会得到相同的编译结果;可靠性是Ada语言设计的原初目的;北风网VC+系列语言正交性语言的正交性是指使用该语言中一组相对少量的基本结构,经过相对少的结合步骤,可以构成该语言的控制结构和数据结构;而且,它的基本结构的任何组合都是合法的和有意义的;(这个可以结合坐标系的正交性来理解,比如3D空间中的任何一点可以使用任何三个正交的数轴上的刻度组成的三元组唯一标识)北风网VC+
7、系列控制语句在20世纪50-60年代诞生的一批程序设计语言由于缺乏控制语句,导致了很差的可读性。而20世纪70年代后针对这种缺陷兴起了结构化设计的变革浪潮;同期开发人员也意识到滥用goto语句会大大降低程序的可读性;同时也证明,任何语言中只需要3种基本的控制结构即可完成基本的正交性:顺序语句、判断分支语句、循环语句;(这一原理今天仍适用)同时使用这三种基本的控制语句可以消除程序中所有的goto语句;北风网VC+系列数据类型和数据结构通常程序设计语言中都会给出预置的数据类型与数据结构定义的合理机制;这是语言可读性的又一重要因素,同时也是语言正交性的基本要求;比如:某些语言中不支持布尔类型,那么就
8、必须使用其它类型来代替这种类型的表达,如用int iBool=1;来表示逻辑真,但这对于开发人员来说可读性就大打折扣,因为很难一眼看出这个值是用来表示逻辑真的;北风网VC+系列语法设计一种语言组成元素的语法或形式对程序的可读性有着极为重要的影响。比如:标识符的长度:过短的标识符长度将严重降低语言的可读性;关键字(保留字):语言中的关键字的形式(如:while,class、for等)将极大的影响语言的外观,并潜在影响程序可读性;形式与语义:程序的语句形式应和它所表达的语义具有一致性,比如,c=a+b;必须被解释为a与b的和赋值给c,而不能是其它含义,否则程序的可读性可理解性大大降低;北风网VC+
9、系列支持抽象抽象指的是以合乎某种规则的方式省略许多细节的方式,来定义并且使用复杂结构或复杂运算的能力;在当代程序设计语言设计中,抽象是一个关键性的概念;通常程序设计语言中可以有两种不同的抽象方式:过程抽象(忽略过程调用实际使用的数据类型,而只关注过程本身的逻辑步骤);数据抽象(忽略类型本身具体的细节,而只关注此类型可以支持的运算,如:int 和 float都支持+ 、-、*等操作,此时可抽象出类型decimal );北风网VC+系列表达性表达性是指一种程序设计语言具有相对方便、非繁琐的方式来说明运算;比如,C中的表达式count+比count=count+1更方便的表达了变量加1这个语义,同时
10、表达式更简单;北风网VC+系列类型检测类型检测就是编译器在程序运行过程中测试给定的程序中的类型错误,比如:对字符型变量使用了乘法操作等;而程序运行时类型检测(动态类型检测)代价太高,所以大多数语言都采取在编译时尽可能根据语义检测出更多类型错误的静态检测方式,这种方式只需要在编译过程中检测即可,不影响程序运行时的性能;而C语言中的类型检测相对比较宽松,因此这也成为很多人抨击C的原因之一;北风网VC+系列异常处理一个程序如果有中断运行时错误(以及该程序发现的所有其它非正常情况,如:磁盘满等)并改正错误然后继续执行的这种能力,将显著提高程序的可靠性;这种机制就被称为异常处理;Ada、C+和Java等
11、当代语言中都有庞大的支持异常处理的机制;(甚至操作系统中都固有支持异常处理,如:Windows结构化异常处理机制)北风网VC+系列使用别名使用别名是指用两个或多个名字来访问同一个存储单元;现在很多开发人员普遍意识到,这将带来潜在的危险性;(如同现实中某人有多张不同名字及地址身份证的情况。)使用别名的情况在语言中被支持为两种极端情况:有些语言中靠使用别名来克服数据抽象机制的低效率;而另一些语言中则严格禁止使用别名以提高语言可靠性;北风网VC+系列可读性、可写性、可靠性总结语言可读性可写性高的语言虽然一定程度上可以保证语言本身的可靠性;但是很多时候,因为开发人员的个人因素,仍然会出现即使使用最可靠
12、的语言,依然会写出不可靠的程序的情况;也就是说任何程序都会有潜在的不可靠问题,这通常被称为程序BUG;当然可读性可写性高,可以在一定程度上降低开发人员出错而带来不可靠性的几率;北风网VC+系列代价选用某种程序设计语言的最终总代价是这种语言各个特征的一个函数:1、训练程序员使用这种语言的代价;这种代价主要是语言的简单性与正交性,以及程序员之前经验的一个函数;2、使用这种语言来编写程序的代价;这种代价是语言可写性的一个函数,它部分取决于该语言的设计目的与特定问题领域的接近程度;3、语言编译的代价;4、程序运行的代价;无论该语言的编译器质量如何,要求进行大量运行时类型检测的语言必定性能低下;5、实现
13、该语言系统的代价;6、可靠性的代价;如:一个在核电站或在医用X光机上运行的软件出错,这种代价可能非常高;7、程序维护的代价;这种代价取决于语言的许多特征,但关键是语言的可读性;北风网VC+系列影响语言设计的因素影响语言设计的重要因素:计算机体系结构:目前绝大多数广为应用的语言都是依据一种普遍流行的计算机体系结构来设计冯.诺依曼体系结构;这类语言统称为命令式语言;程序设计方法学:自20世纪70年代后期开始了从面向过程转移到面向数据的程序设计方法学;面向数据的方法着重于数据的设计,这种方法的注意力集中于运用抽象的数据类型来解决问题;最终20世纪80年代面向数据的开发演进为面向对象的程序设计;(不能
14、简单的说那种设计方法学就更先进)北风网VC+系列语言分类程序设计语言通常被分为四类:命令式语言(BASIC)函数式语言(C)逻辑语言(Prolog)面向对象的语言(Smalltalk、C+、Java)北风网VC+系列语言设计中的权衡之前讨论了评价一门语言的评估标准,但是可以看出这个评估框架本身就是矛盾的;比如:可靠性与执行代价之间;因此任何一门实际的程序设计语言都是在前述评估标准框架下折中设计的结果;甚至有些语言只在某个方面采取最趋于优秀的设计;北风网VC+系列程序设计语言的实现方法(1)由于计算机硬件方面结构的限制,实际很难直接设计出可以运行高级程序设计语言的机器(或代价过高没有通用性和灵活
15、性);同时一种语言的实现系统也不可能是计算机上唯一的软件系统;它还需要称为操作系统的软件系统来支撑;由于操作系统对硬件方面的封装,因此其实大多数程序设计语言是基于操作系统接口实现的,而很少与硬件直接打交道;如:我们要学习的VC+系统就是基于Windows系统接口的C+语言系统的一个实现;北风网VC+系列程序设计语言的实现方法(2)具体实现一个程序设计语言的方法通常有三种:编译实现:将程序语言翻译为能够直接在计算机上运行的机器语言;该方法的优越性是,一旦编译完成,程序执行速度非常快;如:C、C+、Pascal、Ada等;单纯解释实现:该方式的语言程序不需要进过任何翻译,而是由一个被称作解释器的程
16、序来解释执行;解释器类似于一个高级语言机器的软件模拟;它的优势是可以容易的实现在源代码级的调试;但是不利就是这种方式的程序执行非常慢,平均比编译执行的程序慢10-100倍;如:BASIC、JavaScript、PHP等混合实现:这类实现将高级语言翻译为一种专为方便解释而设计的中间语言;中间语言的解释执行软件被称为虚拟机;这种方式稍快于解释执行方式,但仍然慢于编译方式的程序;如:Perl、Java;(现代还有一类可以将类似java的中间语言再编译为机器码的方法,称为JIT(Just-in-time),以进一步提高执行效率,.net平台就是JIT方式实现)北风网VC+系列程序设计环境程序设计环境是
17、指一系列在软件开发过程中所使用的工具;这套工具通常包含了一个文本系统、一个文本编辑器、一个编译器和一个链接器;有些系统中还提供了统一的用户界面系统来调用一系列集成工具;(IDE环境)如:Visual Studio IDE环境北风网VC+系列C语言简史所有命令式语言,如:C/C+/Java之类的命令式、面向对象语言,其设计都得益于ALGOL 60以及ALGOL 68语言;尽管C原来是专门为系统程序开发而设计的语言,但它十分适合于广阔范围内的各种应用;C的前辈语言包括CPL、BCPL、B和ALGOL 68.CPL是于20世纪60年代初期剑桥大学开发的。BCPL则是在1967年由Martin Ric
18、hards开发的一种简单系统程序设计语言;20世纪60年代末期,由Ken Thompson在贝尔实验室首次进行了C在UNIX系统上的工作;(早期工作,未实现)B语言则是第一种在UNIX上实现的语言,它是一种基于BCPL的语言;B语言于1970年有Thompson设计并实现;C语言于1972年由Dennis Ritchie在贝尔实验室里设计并实现;北风网VC+系列C语言的发展在最初,C语言的唯一标准是Kernighan和Ritchie所编写的书(Kernighan And Ritchie,1978)1989年,美国国家标准协会(ANSI)产生了C的正式描述版本(ANSI,1989),其中包括了已
19、经由实现人员结合进来的许多语言特性;简称为C89;1999年在ANSI1989的基础上诞生了ISO1999标准;简称为C99;北风网VC+系列对C的评估C具有足够的控制语句与数据结构化的设施(甚至包括位域),这允许它能够被用于各种应用领域。C也具有丰富的操作符,这给语言提供了极高的表达性;但是C语言缺乏完整的类型检测,甚至允许不同类型间的自由转换,因此有些开发人员以此认为C语言不够安全;然而也有很多开发人员很珍视由此而带来的C语言灵活性;北风网VC+系列C+简史C+语言是在C的基础上建立起来的语言,并且支持大部分由Smalltalk所开创的语言功能;C+是对C进行一系列的修改发展而来,它改进了
20、原有的命令式语言特征,并且增加了支持面向对象程序设计的语言结构;(今天流行的观点认为应该将C和C+视为两种相对独立的语言;)从C迈向C+的第一步是1980年由Bjarne Stroustrup在贝尔实验室完成的;这次修改最大的改变就是引入了与SIMULA 67和Smalltalk中类似的类;1981年引入了内联函数、默认参数、以及赋值运算符重载等;此时这个新生的语言被称为“具有类的C语言”,并在Stroustrup的文章中给予了描述(Stroustrup 1983);1984年之前又扩展了虚拟函数机制,函数和运算符重载及引用类型;此时该语言被正式定名为C+;1985年诞生了第一个C+语言的实现
21、Cfront系统;1989-1990年引入参数化模版和异常处理;1998年第一个C+标准诞生(ISO 1998);2003年诞生了C+的新标准(ISO 14882 2003);2011年诞生了C+的最新标准(ISO IEC 14882 2011);北风网VC+系列C+的初始设计目标C+的第一个设计目标是提供一种能够像SIMULA 67那样运用类与继承来组织程序的语言;第二个目标是类的加入不应该使它的性能受到影响,即它的性能不应该比C差;第三个目标是将“具有类的C语言”用于所有的能够使用C的应用领域之中;北风网VC+系列对C+语言的评估C+目前仍是一种非常受欢迎的语言;首先它几乎完全与C语言向后
22、兼容,且在大多数实现中,可以将C+的代码与C的代码相链接,甚至允许在C+中编写完全C风格的代码;其次,C+语言刚诞生时,面向对象程序设计也受到广泛关注,而C+是当时唯一适用于大型商业软件的项目语言;最后,C+的主要缺点是它过于庞大而复杂的语法;同时它也继承了C语言中大多数的不安全因素,使得它没有Ada和java等语言可靠;北风网VC+系列学习语言的一般方法1、从语言的正交性入手,掌握:基本数据类型复合结构的表示方法表达式控制语句(顺序语句、条件分支语句、循环语句)函数(过程)定义及函数(过程)调用类和对象泛型2、掌握编译原理的基本原理,深刻理解语言的特征和语义;北风网VC+系列学习C+语言的方
23、法由于C+语言的特点,除了学习上述基本语言特征外还需要掌握下面的知识:1、计算机体系结构;2、指针;3、C/C+函数库和类库;4、与开发环境操作系统平台相关联的扩展特征;北风网VC+系列本教程推荐的C+学习资料标准C+宝典(美)Ai Stevens,Clayton Walnum著,林丽闽等译,电子工业出版社 2001-2-1 ISBN:7-5053-6503-7 TP.3572Visual C+语言参考手册Microsoft Corporation著 前导工作室 译 清华大学出版社 1999-2-1 ISBN:7-302-03253-X/TP.1742程序设计语言原理 (美)赛巴斯塔(Sebesta,R.W.) 著 张勤 王方矩 译 机械工业出版社 2008 -6 ISBN:9787111239512编译原理及实践(美)Louden, K.C. 冯博琴等 译 机械工业出版社 2000 -3 ISBN:7111077032同时在课程目录中,还放置了标准C+的ISO文件2003版和2011版供大家参考北风网VC+系列课程的教学环境本教程将使用VS2010IDE环境作为C+教学的环境同时操作系统平台主要定位为Windows 7(其它平台也可,能够正确安装VS2010即可)北风网VC+系列一个最基本的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高考物理终极冲刺:专题14 热学 原子物理(四大题型)原卷版
- 2025年中储粮集团江苏分公司招聘(73人)笔试历年参考题库附带答案详解
- 2025山西华远国际陆港集团所属企业社会招聘40人笔试历年参考题库附带答案详解
- 2025安徽芜湖宜居投资(集团)有限公司子公司人员招聘10人笔试历年参考题库附带答案详解
- 2025宁东现代煤化工中试基地高层次人才公开招聘笔试历年参考题库附带答案详解
- 2025国家能源投资集团有限责任公司高校毕业生春季招聘(2200余人新疆招439人)笔试历年参考题库附带答案详解
- 2025四川金川集团股份有限公司技能操作人员社会招聘400人笔试历年参考题库附带答案详解
- 2025四川九洲线缆有限责任公司招聘质量体系部质量技术岗测试笔试历年参考题库附带答案详解
- 2025内蒙古民航机场集团有限公司招聘76人笔试历年参考题库附带答案详解
- 2025云南蒙自产发投资有限责任公司社会化招聘人员9人笔试历年参考题库附带答案详解
- 连铸安全培训资料
- 地下排水管网探测与测绘技术方案
- 4s店与二手车公司协议合同
- 国企投后管理办法
- 数据需求管理办法
- 乳及乳制品的腐败变质食品微生物学09课件
- 海上油气开发装备国产化
- 肾弥漫性疾病超声诊断
- 工程项目绩效管理
- 2024联易融线上用印软件使用手册
- 中医药膳食疗的养生作用
评论
0/150
提交评论