《程序设计语言》PPT课件.ppt
,大学计算机基础计算机科学概论赵 欢 骆嘉伟 徐红云 李丽娟 编著,第三部分 算法与程序设计第6章 程序设计语言,大学计算机基础计算机科学概论,本章内容提要,6.1 程序设计语言概数6.2 高级程序语言的类型6.3 程序设计的基本概念6.4 程序单元6.5 程序设计语言的执行6.6 高级话题6.7 小结,程序设计语言:指挥计算机工作的命令。没有程序,计算机将无法进行工作。,一、什么是程序语言,最早的程序语言:1945年的Plankalkul,非存储式高级程序。,二、程序语言的发展历史,6.1 程序设计语言概述,程序设计语言的发展经历了三代的发展变化:第一代:机器语言 第二代:符号语言 第三代:高级语言,见表5.1:一些主要程序语言的发展历史。,6.1 程序设计语言概述,按照人与机器的交互程度分类:机器语言;汇编语言;高级语言。,三、程序语言的分类,见表6.2:部分重要的程序设计语言的分类。,6.1 程序设计语言概述,由“0”和“1”组成的二进制码构成。优点:速度快,不需要翻译。特点:依赖机器,可读性差,难以掌握。一个机器语言的例子:表6.3。,四、机器语言,用符号和助记符来代表机器语言,为各操作码分配助记符。(如:Asm,Masm)优点:速度快,可读性较好。特点:依赖机器,较难掌握,需要翻译。一个符号语言的例子:表6.4。,五、符号语言,6.1 程序设计语言概述,用类英语描述对机器的指令。(如:Fortran,Basic,C,Pascal,C+等。)优点:可读性好,易于掌握。特点:不依赖机器,需要翻译。程序设计就是寻找解决问题的方法,不需关心计算机本身的具体实现。两个高级语言的例子:表6.5、表6.6。,六、高级语言,6.1 程序设计语言概述,目前常用的程序语言大约有50多种。(详见表6.7)每月对程序设计语言的使用情况有一个排名:(详见表6.8)注:排名结果并不代表程序语言的好坏。,一、常用高级程序语言,6.2 高级程序语言的类型,按照程序的运行方式,程序语言分类:,1、汇编型语言2、解释型语言3、编译型语言4、混合型语言5、脚本性语言,6.2 高级程序语言的类型,根据程序语言解决问题的方法及功能,程序语言分类:,1、过程化语言2、函数式语言3、逻辑式语言4、面向对象语言5、专用语言,6.2 高级程序语言的类型,又称为命令式语言或强制性语言。(如:Fortran语言,COBOL语言,Ada语言,C语言,Basic语言,Pascal语言等。)过程化语言程序按顺序的机器指令。过程化语言的命令表现在两个方面:1、操作数据项。2、控制下一条要执行的指令。,二、过程化语言,6.2 高级程序语言的类型,过程化语言的特点:,6.2 高级程序语言的类型,三、函数式语言,又称为表处理语言。(如:LISP语言,Scheme语言。)将函数看成是“黑盒”,程序就是将一系列的“黑盒”连起来。,6.2 高级程序语言的类型,函数式语言程序设计的特点:1、定义函数。(也可通过基本函数创建新的函数。)2、调用函数。(可通过函数的组合解决问题。),6.2 高级程序语言的类型,一个Scheme语言的范例:P.169函数(car(List)的作用:从列表List中取出第一个元素。函数(cdr(List)的作用:从列表List中取出除第一个元素 以外的所有元素。现有列表List:List=4 9 12 42 35 47 26则:(car(List)的结果为4(cdr(List)的结果为9 12 42 35 47 26若要从List表中取出第四个元素,则:(car(cdr(cdr(cdr List),6.2 高级程序语言的类型,又称为声明式语言或说明性语言。程序设计主要是进行事实归纳和规则推理,适合于特定的领域。(如:Prolog语言)一个Prolog语言的例子:P.169,四、逻辑式语言,6.2 高级程序语言的类型,采用面向对象的思想进行程序设计。(如:Smalltalk语言,C+语言,Java语言等。)面向对象语言的特点:对象和操作被捆绑在一起。通过对象去调用操作,有可能产生的结果:1、改变对象自身的状态 2、改变其他对象的状态 3、改变系统的状态,五、面向对象语言,6.2 高级程序语言的类型,例如:图形用户界面系统。图标对象 图标所允许的操作(如:单击鼠标左键、右键,双击鼠标左键等)对象的操作。操作的结果对象通过该对象内部的操作产生的结果。,6.2 高级程序语言的类型,应用于网络和数据库的语言。如:HTML语言,Perl语言,PHP语言,SQL语言等。特点:属于脚本语言,易于掌握。,六、专用语言,6.2 高级程序语言的类型,一个HTML程序的例子:,标题这是一个HTML范例!,6.2 高级程序语言的类型,过程化程序语言具有的共性:1、标识符 2、变量与数据类型 3、常量和文字 4、表达式和赋值语句 5、控制语句 6、注释,过程化程序语言的语句:1、声明语句:说明程序中要使用的元素。2、命令语句:描述算法的步骤。3、注释语句:解释程序的功能。,6.3 程序设计语言的基本概念,一、标识符 标识符的作用:命名。计算机通过标识符与地址的联系来操作数据。不同的程序语言对标识符有不同的规定。如:,(见表6.11),6.3 程序设计语言的基本概念,二、变量与数据类型1、变量:以标识符作为名字,代替存储地址。变量的特点:保存程序的计算结果。2、数据类型 数据类型决定了数据可执行的操作以及数据 的取值范围。程序设计语言的基本数据类型见 见表6.12。,6.3 程序设计语言的基本概念,3、变量的声明 将变量指定为某种 数据类型的语句称 为变量声明语句。如:,6.3 程序设计语言的基本概念,三、常量和文字1、常量:程序执行过程中不能更改的数据。常量分两种:文字常量和命名常量。文字常量:直接以数字的形式出现在程序中。如c语言中:Area=3.14159*r*r;/*r为变量*/命名常量:以标识符的形式出现在程序中。如c语言中:Area=PI*r*r;/*r为变量*/,6.3 程序设计语言的基本概念,四、表达式和赋值语句1、表达式:一系列操作数和运算符的组合构成。操作数:变量或表达式。(表达式的结果为一个具体的值)运算符:制定运算规则。常用的运算符有四种(见表6.146.17):算术运算符;关系运算符;逻辑运算符;赋值运算符。,6.3 程序设计语言的基本概念,五、控制语句 可以改变程序中语句的执行顺序,主要有分支结构和循环结构两种。1、分支结构 有两种分支结构:ifelse结构(流程图见图6.5)。switch结构(流程图见图6.6)。,6.3 程序设计语言的基本概念,2、循环结构 有三种循环结构:for循环结构(流程图见图6.7)。while循环结构(流程图见图6.7)。dowhile循环结构(流程图见图6.8)。注:在不同的程序语言中,分支结构和循环结构 的语法描述会稍有差异。,6.3 程序设计语言的基本概念,3、强制转移语句是一种强命令型语句,无条件转移程序指令。具有统一的语句形式:goto goto语句的特点:给程序的执行带来极大的方便;会降低程序的可读性;可能导致程序发生严重的错误。一个使用goto语句的例子:P.177,6.3 程序设计语言的基本概念,六、注释 注释就是对程序的语句或功能进行说明,为阅读程序提供额外的信息,帮助理解。注释的存在与否都不影响程序的执行。不同的程序语言有不同的注释符号。常见语言的注释符号见表6.18。建议:为程序写上适当的注释。,6.3 程序设计语言的基本概念,程序单元:具有独立的功能。过程或函数:具有独立的功能的程序单元。一、过程 1、过程:一些指令的集合。(指令:由顺序结构、分支结构或循环结构组成)2、过程头部:过程名。(建议用动词作为过程名)3、过程调用:请求过程提供服务。注:过程就是程序的缩影。,6.4 程序单元,过程调用的控制流:,6.4 程序单元,二、参数1、参数:过程中要用到的通用变量。形参:过程中制定的参数。实参:调用过程时传递给形参的数据。2、参数的位置:过程头部的括号中。3、参数的传递方式:传值:将实参的副本传递给形参。传引用:将实参变量的地址传递给形参。,6.4 程序单元,如:C语言中描述的一个过程如下:,void push(float f)if(spMax)valsp+=f;else print(“Error!Stack Fulln”);,过程的调用:push(12.3);,6.4 程序单元,三、函数 函数与过程类似。函数与过程的不同之处:函数必须向调用它的地方传回一个值。(函数必须要有一个计算结果。)函数的头部:函数名。(建议用名词作函数名),6.4 程序单元,一个C语言函数的例子:,float myroot(float x,float y,float z)float temp;temp=y*y-4*x*z;if(temp0.0)return-1;else return(root(temp);,函数调用:X1=(-b+myroot(a,b,c)/(2*a);X2=(-b-myroot(a,b,c)/(2*a);,6.4 程序单元,四、输入与输出 由程序语言的实现提供的一种底层操作,与开发 包一起提供给程序设计人员。常用的标准输入/输出语句如下:,6.4 程序单元,一、编译程序 源程序:由程序设计语言编写的程序。注:源程序是不能被执行的。将源程序变成可执行程序的过程:,6.5 程序设计语言的执行,源程序的翻译:由编译器完成。编译器的三个重要进程:词法分析;分析源程序中的哪些符号串代表了一个实体的进程,将结果保存在一个称为记号的结构单元里。语法分析;对记号进行分析,根据一系列的语法规则来识别程序的语法结构所代表的进程。目标代码生成;将没有语法错误的程序指令转换成机器语言指令。,6.5 程序设计语言的执行,一个C语言源程序编译的例子:第1步:编辑源程序:mytest.c第2步:用microsoft C编译器,命令方式进行编译:cl c mytest.c结果:若源程序没有错误,会生成目标代码程序:mytest.obj。注:不同的程序语言有不同的编译器。编译的方式不是唯一的。,6.5 程序设计语言的执行,二、链接程序 目标代码并不是可执行代码。要获得可执行的程序,需将目标代码链接起来。链接器的任务就是将目标程序链接成可执行的程序(或称载入模块)。,6.5 程序设计语言的执行,一个链接C语言目标代码的例子:第1步:对源程序mytest.c编译后生成了目标代码程序 mytest.obj;第2步:用microsoft C编译器,命令方式进行链接:link/out:mytest.ext mytest.obj结果:如果不发生错误,会生成一个载入模块:mytest.exe注:不同的程序语言有不同的链接器。链接的方式不是唯一的。,6.5 程序设计语言的执行,三、集成开发环境 软件开发包:也称为集成开发环境(IDE)。将编辑器、翻译器、链接器和其他软件单元集合在一起。软件开发包都是为特定的程序语言定制的。同一种语言的开发包也会有一些不同的产品 和版本。,6.5 程序设计语言的执行,常用程序语言的开发包:,6.5 程序设计语言的执行,一、面向对象程序设计 用面向对象的方法来设计程序。(与过程化程序设计方法不同)面向对象的系统需包含三个要素:对象、类和继承。1、对象 所有资源都是对象。资源:以数据和模块的形式表现。(每一个对象把一组数据和一组过程封装在一起。),6.6 高级话题,2、类 类是对象的状态描述和方法的定义。一个完整的类描述包含了外部接口、内部 算法和数据结构。类是一种抽象的数据类型。类所创建的对象被称为这个类的实例。一个类的所有对象都具有相同的数据结构,共享相同的实现操作的代码,但各自有不同 的状态。,6.6 高级话题,3、继承继承是指一个对象除了拥有自己的属性和操 作以外,还可以从另一个对象那里继承一些 特性。继承为软件的开发和维护提供了有力的技术 支持。,6.6 高级话题,二、程序设计语言的发展趋势 程序设计语言本身主要是实现算法,解决 问题。软件开发工具为编写程序和生成可加载模块 提供方便。程序语言和软件开发工具都在朝着智能化、网络化、标准化的方向发展。,6.6 高级话题,一程序设计语言的发展演化过程。二常见的程序设计语言的类型。三过程化程序设计语言的共同基本语义:标识符;变量与数据类型;常量和文字;表达式(算术表达式、关系表达式、逻辑表达式)赋值表达式;控制语句(分支控制和循环控制);注释;,6.7 本章小结,四程序设计语言的基本结构:顺序结构;分支结构;循环结构。五源程序的编译、链接概念。六面向对象程序设计基本概念。七程序语言的发展。,6.7 本章小结,