《软件工程导论》课件ch03-编程语言与数据表达.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《软件工程导论》课件ch03-编程语言与数据表达.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程导论 软件工程 导论 课件 ch03 编程 语言 数据 表达
- 资源描述:
-
1、第3章 编程语言与数据表达语言是人类区别于动物的重要标识目录 3.1汇编语言汇编语言 3.2高级语言高级语言 3.3高级语言的高级语言的特征特征 3.4基本数据类型与变量基本数据类型与变量运算运算 3.5浮点数浮点数 3.6扩展的扩展的数据结构数据结构 3.7编程语言的可靠与编程语言的可靠与安全安全3.1汇编语言汇编语言 3.1.1 用机器指令编程的用机器指令编程的困扰困扰 3.1.2 汇编语言和编程汇编语言和编程3.1.1 用机器指令编程的困扰用机器指令编程的困扰3.1.1 用机器指令编程的用机器指令编程的困扰困扰 用机器指令构造出的程序,对计算机来讲是直接的:计算机可以直接一条条第解释指令
2、和执行指令,直到所有的指令执行完毕,或按要求停机。计算机的运行效率自然很高。然而,设想一下,如果个计算算法很复杂,需要许多人编写机器指令,并合成后才能完成计算任务。那么,用机器指令就会导致许多问题:1)写程序的程序员对二进制方式的指令代码难以记忆和查错;2)如何把多人写的多个指令集合合到一起;3)如果某人的写的程序中,需要读取其他人程序中的(中间或最后的)计算结果,如何办?4)等等。这些问题,对于写更大的程序是严重的障碍。3.1.2 汇编语言和编程 首先,要设计一个帮助程序员进行记忆的符号,简称为助记符(Mnemonics),例如,指令(00001010)的助记符是LOAD MQ,其意思与该二
3、进制代码是一样的,即,“把寄存器MQ的内容传递到累加器AC中”。其次,要有一个汇编器,能实现从助记符到二进制代码的转换,称为汇编器(Assembler),汇编器的命令格式一般是:ASM 待转换的程序名 第三,建立主程序和子程序的概念。一个子程序是指该程序完成特定的功能后,并不停机,而是计算的结果放到特定位置后,把指令计数器转给调用该子程序的主程序。主程序的目的主要是控制各个子程序的执行,并对子程序的结果进行再处理。一个汇编子程序的例子实现把寄存器AL中存放的字符变大写AL=aAL=AL-20RETOVER:AL=z小于大于PROCCMP AL,a ;把寄存器AL中的值与a的;ASCII码对比J
4、B OVER ;如果小于,跳转到地址OVERCMP AL,z.;把寄存器AL中的值与z的;ASCII码对比JA OVER ;如果大于,跳转到地址OVERSUB AL,20H ;AL减去20后,放回ALOVER:RET ;返回到调用该子程序的程序注释:;后面的是对代码的注释,说明,机器不翻译AL是机器的寄存器。CMP是比较指令SUB 是减法指令(a)汇编语言的子程序(b)子程序算法汇编语言指令与机器指令一一对应1.助记符;2.多了说明性指令,例如,BGN,End 第四,建立程序库,让子程序可以被其他人复用。如果张三编写了一个子程序,其他人只需要调用他的程序,而不在需要自己编写了。为此,张三要给自
5、己的工作建立一个库,在这个库里放置很多个子程序,例如,一个数学函数库,期末要包括:sin(x)、cos(x)、tan(x)、log(x)、sqrt(x)、exp(x)等等。级数展开是实现这些函数基本方法。因此,我们需要一个建库的工具,版把这些函数的汇编编译成机器代码后,放置到库里。等待其他程序员使用。常用的命令形式是:Lib a1.obj+a2.obj+a3.obj+an.obj 其中,q1.obj 是一个或多个子程序的名称,是最终建立的库的名称,例如,微软公司的math.lib,其中,包括了常用的数学函数。第五,装配程序,或称为链接程序。常用的命令像LINK。例如,LINK main.obj
6、 subpro.obj math.lib stdio.lib 其结果为:main.exe 在集成开发环境下,Build命令可以完成上述15的工作,但是你必须先建立一个项目。第六,装载程序:将main.exe加载到内存,交给CPU运行。在Windows操作系统下,双击main.exe就行目录 3.1汇编语言汇编语言 3.2高级语言高级语言 3.3高级语言的高级语言的特征特征 3.4基本数据类型与变量基本数据类型与变量运算运算 3.5浮点数浮点数 3.6扩展的扩展的数据结构数据结构 3.7编程语言的可靠与编程语言的可靠与安全安全3.2高级语言高级语言 3.2.1高级编程语言简史 3.2.2高级语言
7、的执行 3.2.3高级语言分类3.2.1高级编程语言简史 第一个高级编程语言出现在1950年代。1952年,英国曼彻斯特大学在MARK 1上开发了第一个编译器,将高级语言转为二进制机器语言。1951年:美国IBM公司约翰贝克斯(John Backus)针对汇编语言的缺点着手研究开发FORTRAN(Formula Translation)语言,其含义为公式翻译器。FORTRAN非常适合于工程师们把数学公式直接写成代码。FORTRAN Fortran(Formula Translation)广泛应用于科学和工程计算领域 1954年:约翰贝克斯在纽约正式对外发布,称为FORTRAN。FORTRAN
8、功能简单,但它的开创性工作,在社会上引起了极大的反响。1957年:第一个FORTRAN编译器在IBM704计算机上实现,并首次成功运行了FORTRAN程序。1958年:对FORTRAN 进行了扩充和完善,引进了子函数等概念,推出了商业化的FORTRAN 版本。1962年:推出了FORTRAN。COBOL 在企业信息管理中,数值计算并不复杂,但数据处理信息量却很大。COBOL(Common Business Oriented Language)是第一个广泛使用的数据处理的高级编程语言。五角大楼委托G.Hopper博士领导一个委员会并由Rear Admiral Grace Hopper公司主持开发
9、,1961年美国数据系统语言协会公布。与FORTRAN对比,COBOL的数值运算、逻辑运算能力比较弱。COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL COBOL(Common Business Oriented Language)是第一个广泛使用的数据处理的高级编程语言。对比C或FORTRAN,COBOL的数值运算、逻辑运算能力比较弱。COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL主要应用于商业数据处理领域,对各种类型的数据进行收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。C
10、OBOL语法与英文很接近,即使不懂电脑的人也能看懂程序 银行的票据等处理非常需要COBOL编程ALGOL、Pascal、Delphi 19601970年代,出现了多种编程语言,例如,APL 语言引入数组编程和函数编程。ALGOL 实现结构化过程编程(structured procedural programming);Pascal语言是Niklaus Wirth于19681969年期间设计的,发表于1970年。其名称用来纪念法国数学家和哲学家Blaise Pascal。1985年,基于Pascal语言开发了面向对象的Delphi。C languageC 是Dennis Ritchie于 196
11、9 1973年在 Bell Labs开发的,目的是重写Unix操作系统。C 是通用目的、imperative(命令式)语言,支持结构化编程、递归调用,具有静态类型预防未定义的操作。C的语句能够高效地映射到机器指令,因此,适用于编写操作系统这样的系统软件,也适合于编写各种应用,从超级计算机到嵌入式系统。C是最广泛使用的语言中,许多就是计算机结构设计和操作系统厂商都提供C编译器。1989年,ANSI(American National Standards Institute)发布C标准,后来,ISO组织也采纳其标准。Ken Thompson(left,Unix发明者)with Dennis Rit
12、chie(right,the inventor of the C programming language),两人获1983年图灵奖K&R C Programming LanguageC语言 不同于ALGOL等,C语言强调的其编译和运行效率,接近汇编语言。虽然C语言是编写计算机系统程序而发明的,但是,因为其强大的能力,也被编写应用程序的人接受。C基本上是各大学计算机、软件专业和相关专业的必修课程。C 的例子类与对象的引入 1979年,丹麦的计算机学者Bjarne Stroustrup开始在C语言中增添类(Class)的概念,目的是创立新语言,以便完成自己的博士论文。他研究了Simula语言的特
13、征,发现其中的对象概念有助于提高编程效率,但是,Simula运行效率太低。后来,Stroustrup到AT&T Bell Labs工作,分析UNIX 内核对分布式计算问题。回顾自己做博士论文的经验,触发他在C语言上增加Simula的对象特征。开始,只是在C编译器中,增加了类(Classes)、派生类(derived classes)、强类型(strong typing)、直接插入(inlining)和省缺变量等概念。1985年出版了C+语言,由Bjarne Stroustrup创立。1998年正式成为国际标准(ISO/IEC 14882:1998)。函数演算与逻辑编程语言 Lisp,创立于 1
14、958年,目的是为了方便于用Alonzo Church的 lambda演算的数学表达。lambda演算是与图灵机基本等价的理论计算机模型演算是与图灵机基本等价的理论计算机模型。Lisp出现后,很快成为人工智能(AI)研究领域(符号演算)的应用语言。Lisp语言是第一个实现函数演算方式的编程语言。1972年,出现Prolog,是第一个逻辑编程语言。与其它语言不同,Prolog的基础是一阶逻辑或形式逻辑,因此,被广泛用于理论证明、专家系统、自动规划、自然语言理解等领域的编程。Perl和Python 1990年中期后,互联网迅速发展,促进了新语言的发展。早期的一些脚本语言,例如,Perl语言(198
15、7年推出的Unix上的脚本工具,转变为动态网站(WebSite)的通用语言。Python(美国发音:/pan/)由荷兰人Guido van Rossum于1989年发明,是一种面向对象的解释型程序设计语言,第一个公开发行版发行于1991年。现在,也被逐渐广泛应用于系统管理任务的处理和Web编程。Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。执行 Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Vir
16、tual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java或.NET是一致的。JavaSun Microsystems于1996年发布 Java 1.0 开始是为数字电视机顶盒制定的语言,便于机顶盒的软件升级 提出的目标是:编写编写一次,到处运行一次,到处运行(Write Once,Run Anywhere-WORA),勉去代码跨越平台的移植工作,对此,需要定义Java虚拟机。如果硬件平台或操作系统上支持了Java虚拟机,那么,就可以直接运行用Java编写的应用程序。Java后来又分为J2EE平台、J2ME和J2SE。J2EE提供企业应用的
17、API和服务器运行环境,J2ME针对应用设备,J2SE针对台式机(PC台)。2006年后改名为:Java EE、Java ME和Java SE。第三学期学习Java 程序设计,第四学期做Java实践C#C#是微软公司的一种面向对象的、运行于.NET Framework上的高级程序语言。C#与Java非常的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。第四代编程语言 习惯上,人们把机器语言称为第一
18、代编程语言,汇编语言称为第二代编程语言,而(上面的)高级编程语言称为第三代编程语言。那么,第四代语言就应当是为应用领域程序员创立的编程语言。包括:数据库管系统的语言,例如SQL;报表或报告生产器;数学工具,MATLAB、Mathematica等;GUI的开发工具、Web页面的HTML等。第四代语言(4GL)与第三代语言对比,第四代语言(4GL)的目的是让编程者更远离计算机结构和硬件细节。4GL was first used formally by James Martin in his 1981 book Applications Development Without Programmers
19、 to refer to non-procedural,high-level specification languages.Languages claimed to be 4GL may include support for database management,report generation,mathematical optimization,GUI development,or web development.Some researchers state that 4GLs are a subset of domain-specific languages.第五代编程语言 第五代
20、语言(5GL)应当是,能够让程序员定义解决问题约束条件,而要降低让程序员用语言写算法的工作量 能否让非计算机和软件专业的、具有应用领域知识的人,直接编写他们所期望的程序,而不是用传统意义上的C/C+,JAVA等。5GL到底是个啥?仍不清楚。编程语言仍需要不断进化和创新,工业界和学术界仍在做工作。当前的方向包括:security and reliability verification,new kinds of modularity(mixins(混合),delegates(表达),aspects(某方面),and database integration such as Microsofts
21、LINQ.3.2高级语言高级语言 3.2.1高级编程语言简史 3.2.2高级语言的执行 3.2.3高级语言分类3.2.2高级语言高级语言执行执行 计算机是不能执行高级语言的,一般有两种方式解决高级语言的运行:1)编译方式(compilation):用编译器把高级语言编译为机器可执行的二进制代码,然后,组装成可执行的文件。2)解释方式(interpretation):用一个解释器逐条解释高级语言的每条语句,例如,BASIC语言。另外就是,把高级语言的代码编译为虚拟的指令格式,而不是(硬件)机器语言的指令,如,Java虚拟机(JVM-Java Virtual Machine)用字节码(byteco
22、de)的形式表达虚拟指令。当然这种方式会导致执行速度慢,但是,可以更好地做到“编写一次,到处运行”,只要该平台上有虚拟机。3.2.3高级语言分类高级语言分类 依据HOPL(online database of languages),有 8500多种 编程语言,有2400种是美国开发的,英国600多,加拿大160,澳大利亚75种语言。常用的编程语言并不多。经常,我们会说哪个语言是哪种类型的。而实际上,很难划分清楚。因为高级语言的设计者会综合考虑问题。一般会考虑到:应用领域、实现方式、语言特征等。按用途分,可以分为:通用目的,系统编程语言(system programming languages)
23、、脚本(scripting)、领域特定语言、并行/分布式语言(concurrent/distributed languages)等 从计算的描述上看,分为命令式(Imperative),例如,C语言;以及说明式或声明式(declarative)编程语言,例如,数据库管理中的结构化查询语言SQL。从编程方法的角度出发,一般分为:过程型(procedural)、面向对象(object-oriented)、函数式(functional)、逻辑式(logic)编程语言等。常用编程语言类型语言应用用途计算的描述编程方法FROTRAN 科学计算并行FRORAN支持并行计算命令式过程型C系统编程系统编程命令
24、式过程型C+系统编程系统或应用软件编程命令式面向对象COBOL商业信息处理商业命令式过程型Java商业应用信息管理命令式面向对象C#商业应用信息管理命令式面向对象LISP数学应用函数式演算命令式函数式Prolog数学数学逻辑演算命令式逻辑式Perl脚本脚本命令式过程型Python脚本脚本命令式面向对象SQL结构化数据访问数据库管理声明式 目录 3.1汇编语言汇编语言 3.2高级语言高级语言 3.3高级语言的特征高级语言的特征 3.4基本数据类型与变量基本数据类型与变量运算运算 3.5浮点数浮点数 3.6扩展的扩展的数据结构数据结构 3.7编程语言的可靠与编程语言的可靠与安全安全3.3高级语言的
25、基本高级语言的基本特征特征 3.3.1词法和与语法 3.3.2语法与语义 3.3.3语句 3.3.4变量类型定义与运算3.3.1词法和与语法 大多数高级语言用文本形式表达。有几类文本词:1)保留字(reserved word):这是语言本身保留的,具有特定的含义。程序员在编写程序时,不允许使用这些字作为变量名。例如,C语言的for,float等。2)数字(numbers),可以是10进制的0.9,或十六进制的0.9.A.F,组成数据表达。3)标点符号(Punctuation):每种高级语言会定义一下标点符号的含义,例如,C语言中的“;”表示一个语句的结束,而FORTRAN语言以行(回车或换行)
展开阅读全文