计算机科学导论第三章_第1页
计算机科学导论第三章_第2页
计算机科学导论第三章_第3页
计算机科学导论第三章_第4页
计算机科学导论第三章_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 程序设计语言和方法 软件是计算机的灵魂,它能控制和管理计软件是计算机的灵魂,它能控制和管理计算机求解多种实际问题。软件的基本组成部分是完算机求解多种实际问题。软件的基本组成部分是完成其功能的程序,人们采用有效的程序设计方法和成其功能的程序,人们采用有效的程序设计方法和程序设计语言编写程序,从而实现与计算机之间的程序设计语言编写程序,从而实现与计算机之间的交流。掌握程序设计的方法和程序设计语言有助于交流。掌握程序设计的方法和程序设计语言有助于对计算机系统知识的更加深入的学习。对计算机系统知识的更加深入的学习。3.1 3.1 程序设计的概念程序设计的概念程序设计具体步骤程序设计具体步骤 :

2、 : 1. 1.问题描述问题描述 2.2.确定处理方案确定处理方案 3.3.算法算法设计设计 4.4.编写程序编写程序 5.5.调试程序调试程序 6.6.测试程序测试程序 7.7.整理文档整理文档为了解决一个特定问题而采取为了解决一个特定问题而采取的确定的,有限的、按照一定的确定的,有限的、按照一定次序进行的、缺一不可的执行次序进行的、缺一不可的执行步骤。步骤。编写程序使用说明书编写程序使用说明书3.23.2程序设计语言的分类程序设计语言的分类v按照某种特定规则(语法)编写的计算机能够识别的指令的按照某种特定规则(语法)编写的计算机能够识别的指令的集合。集合。v计算机是通过执行一系列的操作来实

3、现其特定功能的,每一计算机是通过执行一系列的操作来实现其特定功能的,每一种操作称为一条种操作称为一条指令指令。v指令系统指令系统是计算机能够执行的全部指令集合。是计算机能够执行的全部指令集合。3.23.2程序设计语言的分类程序设计语言的分类按语言级别分类按语言级别分类1.1.低级语言低级语言接近机器硬件的语言接近机器硬件的语言 (1 1)机器语言)机器语言 (2 2)汇编语言)汇编语言2.2.高级语言高级语言接近自然语言的语言接近自然语言的语言 常用的高级语言有常用的高级语言有FORTRAN FORTRAN 、BASIC BASIC 、COBOL COBOL 、PASCAL PASCAL 、C

4、 C 、LISP LISP 、VB VB 、C+ C+ 、JAVA JAVA 、SQLSQL等。等。 按照用户要求分类按照用户要求分类 1. 1. 过程式语言过程式语言 2. 2. 非过程式语言非过程式语言 FORTRAN,C语言等语言等数据库查询数据库查询语言语言SQL按程序执行方式分类按程序执行方式分类 1.1.网页代码网页代码 2.2.解释型语言解释型语言 3.3.编译型语言编译型语言 4.4.脚本语言脚本语言 5.5.混合型语言混合型语言 6.6.汇编语言汇编语言按对客观事物抽象过程分类按对客观事物抽象过程分类 1.1.面向过程的语言面向过程的语言 2.2.面向对象的语言面向对象的语言

5、3.3 3.3 程序设计语言的基本元素程序设计语言的基本元素 使用程序设计语言时,必须熟悉各自不同的语使用程序设计语言时,必须熟悉各自不同的语法结构和语句表示。高级语言是由法结构和语句表示。高级语言是由语句语句组成,其基组成,其基本元素一般包括本元素一般包括数据成分、运算成分、控制成分和数据成分、运算成分、控制成分和传输成分传输成分。v数据成分数据成分 1.1.数据表示数据表示 2.2.数据类型数据类型例例3-1 3-1 在在C C语言中定义语言中定义1010个整数构成的数组:个整数构成的数组: intint a10 a10; 定义的同时给变量名为定义的同时给变量名为a a的数组在内存中分配的

6、数组在内存中分配2020个字节的存储空间,个字节的存储空间,变量名即该数组的首地址变量名即该数组的首地址。结构体是不同数据类型的集合,用来表示具。结构体是不同数据类型的集合,用来表示具有若干属性的一个事物。有若干属性的一个事物。v运算成分运算成分 1.1.运算符运算符 算术运算:加、减、乘、除等。算术运算:加、减、乘、除等。 逻辑运算:与、或、非等。逻辑运算:与、或、非等。 关系运算:大于、小于、不等于、大于等于、小于等关系运算:大于、小于、不等于、大于等于、小于等于等。于等。 2.2.表达式表达式 算术表达式算术表达式 关系表达式关系表达式 混合表达式混合表达式 v控制成分控制成分 1.1.

7、赋值语句赋值语句 = = 2. 2.条件语句条件语句 if elseif else 3. 3.循环语句循环语句 for whilefor while 4. 4.注释语句注释语句 / /* * */ /v传输成分传输成分 例例3-7 C3-7 C语言中的输入语句和输出语句:语言中的输入语句和输出语句: scanf(“%d,%c”scanf(“%d,%c”,&a,&b);&a,&b); 这条语句调用这条语句调用C C语言标准函数库中的语言标准函数库中的输入函数输入函数scanfscanf(),表(),表示需要从键盘输入两个数:第一个数是整型数据,存放到变量示需要从键

8、盘输入两个数:第一个数是整型数据,存放到变量a a的存储的存储空间;第二个数是字符型数据,存放到变量空间;第二个数是字符型数据,存放到变量b b的存储空间。的存储空间。3.4 3.4 程序设计语言的编译程序设计语言的编译 一个高级语言程序的执行通常分为两个阶段:一个高级语言程序的执行通常分为两个阶段:编译阶段编译阶段和和运行阶段运行阶段。 编译阶段先将编译阶段先将源程序源程序变换成变换成目标代码目标代码;运行阶段将所生;运行阶段将所生成的目标代码链接成的目标代码链接运行系统运行系统(数据空间分配子程序、标准函(数据空间分配子程序、标准函数程序等),并将接受程序的初始数据作为输入形成完成的、数程

9、序等),并将接受程序的初始数据作为输入形成完成的、可独立运行的机器语言程序,运行后输出计算结果。可独立运行的机器语言程序,运行后输出计算结果。编译程序编译程序与运行系与运行系统链接统链接源程序源程序( (高级语言高级语言) )目标程序目标程序(机器语言)(机器语言)计算结果计算结果图图3-13-1 源程序的运行过程源程序的运行过程 编译程序的工作过程是指从输入编译程序的工作过程是指从输入源程序源程序开始到输出开始到输出目标目标程序程序为止的整个过程,就要能够识别出单词、掌握单词组成为止的整个过程,就要能够识别出单词、掌握单词组成语句的规则、理解语句的含义,并能够在此基础上实现机器语句的规则、理

10、解语句的含义,并能够在此基础上实现机器语言程序的优化。语言程序的优化。 一般来说,整个编译过程可以划分成五个阶段:词法分一般来说,整个编译过程可以划分成五个阶段:词法分析阶段、语法分析阶段、语义分析和中间代码生成阶段、优析阶段、语法分析阶段、语义分析和中间代码生成阶段、优化阶段和目标代码生成阶段。另外,表格管理和出错处理与化阶段和目标代码生成阶段。另外,表格管理和出错处理与这五个阶段都有联系,如图这五个阶段都有联系,如图3-23-2所示。所示。词词法法分分析析器器表格管理表格管理源程序源程序语语法法分分析析器器优优化化阶阶段段语义分语义分析和中析和中间代码间代码生成器生成器目 标目 标代 码代

11、 码生 成生 成器器单词单词符号符号语法语法单位单位四元式四元式四元式四元式出错处理出错处理目标程序目标程序图图3-23-2 编译过程编译过程v词法分析词法分析 词法分析程序又称为扫描程序,它的功能是词法分析程序又称为扫描程序,它的功能是对构成源程对构成源程序的字符串逐个字符地扫描和分解序的字符串逐个字符地扫描和分解,识别每个单词,把作为,识别每个单词,把作为字符的源程序用等价的字符的源程序用等价的单词序列单词序列(内部表示形式)表示,以(内部表示形式)表示,以便于后继语法工作的进行。便于后继语法工作的进行。v语法分析语法分析 语法分析是编译程序的语法分析是编译程序的核心核心部分。它的功能是在

12、词法分部分。它的功能是在词法分析的基础上,根据语言的语法规则把单词序列分解成各类析的基础上,根据语言的语法规则把单词序列分解成各类语语法单位法单位,如,如“短语短语”、“子句子句”、“句子句子”、“程序段程序段”和和“程序程序”。并在分析过程中进行语法正确性检查,产生内部。并在分析过程中进行语法正确性检查,产生内部形式的形式的中间代码中间代码。通过语法分析可以确定整个输入串是否构。通过语法分析可以确定整个输入串是否构成一个语法上正确的成一个语法上正确的“程序程序”。v语义分析和中间代码生成语义分析和中间代码生成 一个源程序经过词法分析和语法分析后,表明源程序在一个源程序经过词法分析和语法分析后

13、,表明源程序在书写上是正确的,并且符合程序语言的语法规则。语义分析书写上是正确的,并且符合程序语言的语法规则。语义分析是按照语法分析器识别的语法范畴分析程序内部的是按照语法分析器识别的语法范畴分析程序内部的逻辑含义逻辑含义,产生相应的中间代码或目标代码。产生相应的中间代码或目标代码。v代码优化代码优化 代码优化指为了提高目标程序的质量,而对源程序或前代码优化指为了提高目标程序的质量,而对源程序或前阶段产生的中间代码进行等价变换或改造,以期获得阶段产生的中间代码进行等价变换或改造,以期获得执行速执行速度快、占用空间少度快、占用空间少的目标代码。等价的含义是使得变换后的的目标代码。等价的含义是使得

14、变换后的代码运行结果与变换前代码运行结果相同。节省的时间是通代码运行结果与变换前代码运行结果相同。节省的时间是通过减少指令条数和降低运算强度等措施来实现。过减少指令条数和降低运算强度等措施来实现。v目标代码生成目标代码生成 目标代码生成是编译程序的最后一个工作阶段,其任务目标代码生成是编译程序的最后一个工作阶段,其任务是把经优化处理之后的中间代码变换成特定机器上的是把经优化处理之后的中间代码变换成特定机器上的机器语机器语言程序或汇编语言程序言程序或汇编语言程序,实现最终的翻译工作。由于目标语,实现最终的翻译工作。由于目标语言依赖于硬件系统,因而如何充分利用现有的寄存器以节省言依赖于硬件系统,因

15、而如何充分利用现有的寄存器以节省访问内存的时间,合理地选择执行速度快的指令,生成尽可访问内存的时间,合理地选择执行速度快的指令,生成尽可能短且有效的目标代码是这个阶段考虑的主要问题。能短且有效的目标代码是这个阶段考虑的主要问题。v表格管理和出错处理表格管理和出错处理 在编译程序工作的过程中,需要不断收集、记录、查证在编译程序工作的过程中,需要不断收集、记录、查证和使用源程序中的一些语法符号的类型和特征等相关信息以和使用源程序中的一些语法符号的类型和特征等相关信息以及编译各阶段的进展状况。及编译各阶段的进展状况。 编译程序不仅应能对正确的程序进行翻译,还应能对出编译程序不仅应能对正确的程序进行翻

16、译,还应能对出现在源程序中的错误进行处理。如果源程序有错误,编译程现在源程序中的错误进行处理。如果源程序有错误,编译程序应设法发现错误,把有关错误信息报告给用户。这部分工序应设法发现错误,把有关错误信息报告给用户。这部分工作是由专门的一组程序完成,这组程序称为出错处理程序。作是由专门的一组程序完成,这组程序称为出错处理程序。 3.5 3.5 程序设计方法程序设计方法随着科技进步,计算机中的随着科技进步,计算机中的CPUCPU运算速度提高飞快,内运算速度提高飞快,内存的容量也越来越大,需要计算机解决的问题的规模也不断存的容量也越来越大,需要计算机解决的问题的规模也不断变大,对程序设计提出了更高的

17、要求。运用各种程序设计方变大,对程序设计提出了更高的要求。运用各种程序设计方法开发软件应用系统的过程中,不仅要使软件的功能尽可能法开发软件应用系统的过程中,不仅要使软件的功能尽可能完善,而且需要综合考虑软件的完善,而且需要综合考虑软件的执行效率、可靠性、安全性、执行效率、可靠性、安全性、可扩充性、可重用性、可理解性可扩充性、可重用性、可理解性等影响软件使用和更新的重等影响软件使用和更新的重要因素。要因素。v结构化程序设计方法结构化程序设计方法 结构化程序设计(结构化程序设计(Structured ProgrammingStructured Programming)的概念最)的概念最早是由早是由

18、E.W.DijikstraE.W.Dijikstra在在19651965年提出,把一个复杂问题的求年提出,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。理解和处理的范围内。 v遵循的原则遵循的原则v自顶向下自顶向下v逐步求精逐步求精v模块化设计模块化设计v限制使用限制使用gotogoto语句语句v基本结构基本结构顺序结构顺序结构选择结构选择结构循环结构循环结构v存在的局限存在的局限数据安全性差数据安全性差重用性差重用性差v面向对象的程序设计方法面向对象的程序设计方法 面向对象的程序设计面向对象的程序

19、设计(Object-Oriented Programming(Object-Oriented Programming,简称简称OOP)OOP)方法是把世界看成是独立对象的集合,将数据以及方法是把世界看成是独立对象的集合,将数据以及对这些数据的操作封装在一个单独的数据结构中。对这些数据的操作封装在一个单独的数据结构中。 这种模式更接近现实世界,所有的对象都同时拥有属性这种模式更接近现实世界,所有的对象都同时拥有属性以及与这些属性相关的行为,从而淡化了解决问题的过程和以及与这些属性相关的行为,从而淡化了解决问题的过程和步骤,有效地降低了程序开发中的存在的逻辑复杂性,使程步骤,有效地降低了程序开发中

20、的存在的逻辑复杂性,使程序更易于理解和测试;另一方面,由于对象具有相对独立性序更易于理解和测试;另一方面,由于对象具有相对独立性和通用性,使代码复用性能得到提高,节约了程序开发的时和通用性,使代码复用性能得到提高,节约了程序开发的时间开销。间开销。重要概念重要概念v对象对象: :客观世界中的任何事物。客观世界中的任何事物。v类类:一组具有相同特征的对象的抽象。一组具有相同特征的对象的抽象。面向对象的特征面向对象的特征v抽象:抽象:从许多事物中舍弃个别的、非本质的从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质的特征。特征,抽取共同的、本质的特征。v封装性:封装性:表示对象状态的数据和实现

21、各个操表示对象状态的数据和实现各个操作的代码都被封装在一个单独的数据结构中,作的代码都被封装在一个单独的数据结构中,并尽可能隐藏对象的内部细节,它与外界的并尽可能隐藏对象的内部细节,它与外界的联系通过对象的对外接口实现。联系通过对象的对外接口实现。面向对象的特征面向对象的特征v继承性:继承性:由已有的拥有共同属性的一般类创由已有的拥有共同属性的一般类创建具有特殊属性的新类,新类继承一般类的建具有特殊属性的新类,新类继承一般类的属性和行为,并根据需要增加它自己的新的属性和行为,并根据需要增加它自己的新的属性和行为。属性和行为。v多态性:多态性:同一操作作用于不同的类的实例,同一操作作用于不同的类的实例,将产生不同的执行结果。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论