版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章内容本章内容n编程语言的演化n源程序到目标程序的翻译n编程模式n共同概念机器语言机器语言计算机发展早期,唯一的程序设计语言就是机器语言。每台计算机有其自己的机器语言,这种机器语言由“0”和“1”的字符串组成。至少存在以下两个缺点:依赖于计算机编写程序单调乏味,而且发现错误很难机器语言:计算机唯一识别的语言机器语言:计算机唯一识别的语言. i我们需要写11行二进制代码,完成读取两个整数,把它们加起来并打印出来这个任务。表 1.1 两个整数相加的机器语言汇编语言汇编语言接下来的演化是伴随着用带符号或助记符的指令和地址代替二进制代码而发生的。这种助记符语言就是汇编语言。 汇编程序将汇编语言代码翻
2、译成机器语言代码。表 1.2 两个整数相加的汇编语言高级语言高级语言尽管汇编语言大大提高了编程效率,但仍然需要程序员在所用的硬件上花费大部分精力。高级语言适用于许多不同的计算机,其设计目标就是使程序员摆脱汇编语言繁琐的细节,能够把精力集中到应用程序上。 人们开发了多种高级语言,著名的有BASIC、PASCAL、C、C+和Java等高级语言和汇编语言有一个共性:它们必须被转化为机器语言表 1.3 C+中的加法程序编译编译编译程序通常将整个源程序翻译成目标程序。解释解释解释是把源程序中的每一行翻译成目标程序中相应的行,并执行它的过程。解释程序存在两种趋势:Java语言之前的解释式语言,如BASIC
3、p调试困难p运行效率低Java使用的解释程序 编译和解释的不同在于,编译在执行前翻译整个源编译和解释的不同在于,编译在执行前翻译整个源代码,而解释一次只翻译和解释源代码中的一行。代码,而解释一次只翻译和解释源代码中的一行。 i翻译过程翻译过程编译和解释都遵循相同的翻译过程。主要包括词法分析、语法分析、语义处理、代码生成几个阶段。图图 2.1 源代码翻译过程源代码翻译过程图图 3.1 编程语言种类编程语言种类过程式模式过程式模式 在过程模式中,把程序看成是操纵被动对象的活动主体。在日常生活中,我们会遇到许多被动对象:石头、书和灯等。一个被动对象本身不能开启一个动作,但它能从活动主体接收动作。 过
4、程式模式下的程序就是活动主体,该主体使用称为数据或数据项的被动对象。为了操纵数据,活动主体(程序)发布动作,称之为过程 例如,考虑一个打印文件内容的程序,其中文件就是一个被动对象。为了打印这个文件,程序使用了一个称为print的过程。图图 3.2 过程式模式的概念过程式模式的概念为了避免每次需要打印文件时都去编写一个新的过程,可以编写一个能打印任何文件的通用程序。过程式模式的程序由三部分组成:对象创建部分、一组过程调用和构成每个过程的一组代码。有些过程在语言本身中已经被定义,通过组合这些代码,开发者可以建立新的过程。图图 3.3 过程式程序的组成部分过程式程序的组成部分典型的过程式语言典型的过
5、程式语言q FORTRAN (FORmula TRANslation)q COBOL (COmmon Business-Oriented Language)q Pascalq Cq Ada使用过程式高级语言时,程序只是由许多过程调用使用过程式高级语言时,程序只是由许多过程调用构成,除此之外没有任何东西,如运算法符构成,除此之外没有任何东西,如运算法符+。 i面向对象模式面向对象模式 面向对象模式处理活动对象,而不是被动对象。在日常生活中,我们会遇到很多活动对象:汽车、自动门和洗盘机等。 在这些对象上执行的动作都包含在这些对象中,对象只需要接受合适的外部刺激来执行其中的某个动作。图图 3.4 面
6、向对象模式的概念面向对象模式的概念在面向对象模式中,文件能把所有的被文件执行的过程(在面向对象模式中称为方法)打包在一起,包括打印、复制和删除等。程序只需向对象发出相应请求。类类如图3.5所示,相同类型的对象(如文件)需要一组方法,这些方法显示了这类对象对来自“领地”外的刺激的反应。为了创建这些方法,面向对象语言使用称为类的单元。图图 3.5 类的组成类的组成方法方法 总体上,方法的格式与有些过程式语言中用的函数非常相似。每个方法包含方法头、局部变量和语句。这就意味着我们对过程式语言所讨论的大多数特性都可以应用在为面向对象程序所写的方法上。 例如,C+语言就是一个面向对象C语言的扩展。继承继承
7、 在面向对象模式中,一个类可从另一个类继承。当一个通用类(general class )被定义后,我们可以定义一个继承其某些特性的更为具体的类,在这个新类中也会包含某些新的特征。 例 如 , 例 如 当 定 义 一 个 几 何 形 状 的 类(GeometricalShapes)后,可以定义一个称为矩形(Rectangles)的类。矩形是具有额外特征的几何形状。多态多态 多态性意味着“多种结构”。在面向对象模式中的多态性是指我们可以定义一些具有相同名字的操作,而这些操作在相关类中作不同的事情。 例如,我们定义的两个类(矩形和圆)都是从几何形状类继承下来的。在这两个类中定义名字都为area的两个
8、操作,分别计算矩形和圆的面积。即两个操作拥有相同的名字,但做不同的事情。典型的面向对象语言典型的面向对象语言q C+q Java图图 3.6 面向对象的基本特征面向对象的基本特征函数式模式函数式模式函数式模式中程序被看成是一个数学函数,将一组输入映射到一组输出的黑盒子。图图 3.7 函数式语言中的函数函数式语言中的函数例如,定义一个称为first的原始函数,由它完成从一个数据列表抽取第一个元素的功能;在定义一个函数rest,由它完成从一个数据列表中抽取除第一个元素以外的所有元素的功能。那么通过这两个函数的组合使用就可以定义一个函数来完成对第三个元素的抽取。如图3.8图图 3.8 抽取列表中的第
9、三个元素抽取列表中的第三个元素Some functional languagesq LISP (LISt Programming)q Scheme(first 7 11 8 9 16) 2(rest 7 11 8 9 16 ) 11 8 9 16 (first (rest ( rest List) ) )说明式模式说明式模式 依据逻辑推理的原则响应查询,后来发展称为一级谓词演算。 逻辑推理以推导为基础。根据一些假定正确的已知论断(事实),运用逻辑推理的可靠准则推导出新的论断。如以下著名的逻辑推导准则:将此原则应用于以下事实可推导出下面新的事实:Prolog最著名的说明式语言 由 A. Colm
10、erauer 在1972提出. Prolog程序由事实和规则构成。如前面的例子可用如下的prolog语言描述用户可进行如下查询:程序会响应: yes.示例示例n#include nusing namespace std;nvoid print( float result) coutprice;cost = price*taxMultiplier+2000;print(cost);return 0; /main标识符标识符数据类型数据类型变变 量量字面值字面值常常 量量输入和输出输入和输出表达式表达式语语 句句子程序子程序标识符标识符 标识符就是对象的名称。它使我们能够对程序中的对象进行命名。
11、例如,计算机中每个数据都存在一个唯一的地址中。如果没有标识符用符号代表数据的位置,我们就必须使用数据地址来操作这些数据。取而代之,只要给出数据的名字,编译器就能够去跟踪数据实际存放的位置。数据类型数据类型 数据类型定义了一系列值以及一组应用于这些值的操作。每种数据类型值的集合称为此数据类型的域。大多数语言定义了两种数据类型:简单数据类型和复合数据类型。简单数据类型是不能分解成更小数据类型的数据类型(C语言int:-32768+32767,2个字节)复合数据类型是一组元素,其中每个元素是简单数据类型或复合数据类型变量变量 变量是存储单元的名字。虽然计算机内部使用地址,但对程序员而言却十分不方便。
12、不知道数据和程序在内存中存放的地址数据项在内存中可能占据多个地址 程序员可以使用一个变量如score来保存测试中得到的整数数值。既然变量含有一个数据项,那它就有类型。常量常量与变量一样,常量也是一个可以存储值的被命名的位置,但其存储的值在程序的开始处被定义后就不能改变。字面值字面值字面值是程序中使用的预定义的值。例如,当半径存储在变量r中时,如果我们需要计算圆的面积就可以使用表达式3.14 r2, 其中 (pi)的近似值就是被用作字面值。输入和输出输入和输出 几乎所有的程序都需要输入或输出数据。这些操作可能非常复杂,尤其是对大文件进行读写时。大多数程序设计语言使用一些预先定义好的函数完成输入和
13、输出。例如在C语言中数据输入可以通过一条语句或一个预定义的函数如scanf来完成, scanf(“%d”, &num)数据的输出也可以通过一条语句或一个预先定义的函数如printf来完成, printf(“The value is: %d”,num)表达式表达式表达式是由一系列操作数和运算符简化后的一个单一数值。例如,下面是一个值为13的表达式操作数接受一个运算符的动作。一个运算符可能有多个操作数操作符是用来完成一个动作的特定语言的语法标记。最为熟悉的运算符都是从数学中得到的,表4.1给出了一些用于C、C+和Java中的算数运算符表表4.1 算数运算符算数运算符关系运算符用于比较两个数据的大小
14、关系。关系运算符的结果是逻辑值(true or false)。 C、C+和Java中使用的六种关系运算符如表4.2所示表表4.2 关系运算符关系运算符逻辑运算符是逻辑值(true or false)组合后得到的一个新值。C语言中使用的三种逻辑运算符如表4.3所示表表4.3 逻辑运算符逻辑运算符语句语句每条语句都使程序执行一个相应的动作。它被直接翻译成一条或多条计算机可执行的指令。 C、C+和Java中定义了多种类型的语句。赋值语句给变量赋值。换言之,它将一个值存储在变量中,该变量是在声明部分已经被创建复合语句是一个0个或多个语句的代码单元,也被称为块。复合语句将一组语句看成是一个独立的实体在过
15、程式语言中程序是语句的集合。语句通常是逐句顺序执行的。执行顺序的改变是由控制语句完成的。结构化程序设计推荐使用三种类型的控制语句:顺序、选择和循环语句。图图 4.1 两路和多路判断两路和多路判断图图 4.2 三种类型的循环三种类型的循环子程序子程序子程序的概念在过程式语言中极其重要。主要是因为子程序能够使程序变得更加结构化:完成指定任务的子程序能够一次编写多次调用,就像编程语言中的预定义过程一样。图图 4.3 子程序的概念子程序的概念 在过程式语言中,与主程序一样,子程序能够调用预定义的过程来操作局部对象。这些局部对象或局部局部变量变量在子程序被调用时创建,当控制从子程序返回时被销毁。局部对象
16、属于子程序。 子程序仅仅作用于局部对象是非常少见的。多数情况下主程序需要子程序作用于由主程序创建的一个对象或一组对象。此时,主程序和子程序就需要使用参参数数,在主程序中称为实际参数,在子程序中称为形式参数。 在传值参数中,主程序和子程序创建两个不同的对象(变量)。在主程序创建的对象属于主程序,在子程序中创建的对象属于子程序。因为作用域不同,相应的对象名字可以相同也可以不同。此时,主程序和子程序之间的通信是单方向的,从主程序到子程序。传值传值例例 4.1图图 4.4 传值的示例传值的示例例例 4.2例例 4.3例例 4.4图图 4.5 传值不起作用的例子传值不起作用的例子 传引用被设计用来允许子程序改变主程序中变量的值。在传引用时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 清理突出孔洞安全技术措施培训
- 2026年中石化化工工艺岗应届生招聘题库及答案
- 大酒店建筑工程施工环境保护措施培训
- 带式脱水机操作规程培训
- 水上作业与高危作业安全监理培训
- 电控和自控运行安全技术操作规程培训
- 桥梁吊装安全施工及应急预案培训
- 2025-2026学年山东青岛五十八高二下学期化学期末试题含答案
- 冬季取暖安全措施培训
- 2025-2026学年湖南娄底涟源市高一上学期开学考语文试卷及答案
- 2026年秋季学期学校教学质量提升专项行动方案:落实六环贯通、三级联动、四单闭环,将教学质量沉淀于日常
- 2025年食品安全总监、食品安全员考核考试试题库及答案
- 甲状腺癌诊疗指南解读 课件
- 施工组织设计(1)门安装更换施工组织设计
- JGJ/T235-2011建筑外墙防水工程技术规程
- 如果历史是一群喵
- 民间借款和解协议书
- 《电脑基础操作》课件
- 卵巢纤维瘤疾病演示课件
- 四年级下册科学《谁在运动》-课件
- 城市安全问题与城市防灾减灾课件
评论
0/150
提交评论