计算导论与程序设计:chap2 程序设计语言概述(2016)_第1页
计算导论与程序设计:chap2 程序设计语言概述(2016)_第2页
计算导论与程序设计:chap2 程序设计语言概述(2016)_第3页
计算导论与程序设计:chap2 程序设计语言概述(2016)_第4页
计算导论与程序设计:chap2 程序设计语言概述(2016)_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、 1 第二章第二章 程序设计语言概述程序设计语言概述 2 提纲提纲 2.1 2.1 程序设计语言的演化程序设计语言的演化 2.2 2.2 构建和运行程序构建和运行程序 2.3 2.3 程序设计语言分类程序设计语言分类 3 2.1 程序设计语言的演化程序设计语言的演化 程序:程序:指令(操作)序列。指令(操作)序列。 程序设计程序设计:设计求解问题的方法和步骤:设计求解问题的方法和步骤算法算法 语言语言:是用于表达和描述的工具。语言的基础:是用于表达和描述的工具。语言的基础 是是一组字符(单词)一组字符(单词)和一组和一组规则(语法)规则(语法)。根。根 据规则由单词构成的据规则由单词构成的字符

2、串字符串的总体就是语言。的总体就是语言。 程序设计语言程序设计语言:用于书写计算机程序的语言,:用于书写计算机程序的语言, 用于用于表达和描述表达和描述要加工的数据以及求解问题的要加工的数据以及求解问题的 步骤和过程。是根据预先定义的规则(语法)、步骤和过程。是根据预先定义的规则(语法)、 由一个有限字母表上的字符构成的字符串的总由一个有限字母表上的字符构成的字符串的总 体。体。 4 第四代语言第四代语言 高级语言高级语言 符号语言符号语言 机器语言机器语言 2.1 程序设计语言的演化程序设计语言的演化 5 u计算机发展早期使用的语言;计算机发展早期使用的语言; u由由“0 0”和和“1 1”

3、的二进制码组成的二进制码组成 , ,是计算是计算 机唯一可以直接识别的语言;机唯一可以直接识别的语言; u与具体机器有关,不同的机器能识别的机与具体机器有关,不同的机器能识别的机 器语言也不同;器语言也不同; 1 1、机器语言、机器语言 2.1 程序设计语言的演化程序设计语言的演化 6 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1010 1111 1212 1313 1414 1515 1616 0000000000000000 0101111001011110 1111100011111000 1110111111101111 1111010011110100

4、0000001100000011 1110111111101111 0111111001111110 1111100011111000 0000011000000110 1110111111101111 0000010000000100 0000110000001100 1110111111101111 1110111111101111 101011101101011101 0110001001100010 0000001000000010 1010110110101101 1010001010100010 0000001000000010 1111010011110100 101011110

5、101011110 1010001010100010 0000001000000010 0000010000000100 0000010000000100 1100001011000010 0001011000010110 1001111010011110 1101111111011111 1101111111011111 1111101111111011 1101111111011111 1101111111011111 1111101111111011 1010110110101101 1100010111000101 1111101111111011 1111101111111011 0

6、000010000000100 0000010000000100 00000000000000000000000000000000 00000000000000100000000000000010 00000000000001010000000000000101 00000000000010110000000000001011 00000000000100100000000000010010 00000000000101010000000000010101 00000000000101110000000000010111 00000000000111100000000000011110 000

7、00000001000010000000000100001 00000000001001000000000000100100 00000000001010110000000000101011 00000000001100010000000000110001 00000000001101000000000000110100 00000000001111010000000000111101 00000000001111000000000011111 11 1 2.1 程序设计语言的演化程序设计语言的演化机器语言机器语言 7 机器语言的缺陷机器语言的缺陷 u非常晦涩难读;非常晦涩难读; u书写工作量

8、大,且容易出错,不易修改;书写工作量大,且容易出错,不易修改; u由于和具体的机器相关,要求开发人员对计算机由于和具体的机器相关,要求开发人员对计算机 的硬件和指令系统要有很正确深入的理解,并且的硬件和指令系统要有很正确深入的理解,并且 有熟练的编程技巧,因此只有少数专家能达到此有熟练的编程技巧,因此只有少数专家能达到此 要求;要求; u移植性不好移植性不好( (在在一台机器上编写的机器语言程序一台机器上编写的机器语言程序 在不同型号的另一台机器上可能不能运行在不同型号的另一台机器上可能不能运行); 2.1 程序设计语言的演化程序设计语言的演化机器语言机器语言 8 u 20 20世纪世纪505

9、0年代早期,数学家年代早期,数学家Grace HopperGrace Hopper发明发明 了符号语言,即了符号语言,即用符号或助记符来表示不同的机用符号或助记符来表示不同的机 器语言指令器语言指令( (包括操作码和和操作数地址)。包括操作码和和操作数地址)。 u 程序员可用程序员可用ADD、SUB、MUL、DIV等符号来等符号来 分别表示加法、减法、乘法、除法的操作码。分别表示加法、减法、乘法、除法的操作码。 u符号语言又称符号语言又称汇编语言汇编语言。 2 2、符号语言、符号语言 2.1 程序设计语言的演化程序设计语言的演化符号语言符号语言 9 程序程序 注释注释(运算结果)运算结果) 1

10、.MUL B B ; 送入送入B 2.MUL A E ; 4a送入送入A 3.MUL A C ;4ac送入送入A 4.SUB B A ; 4ac送入送入B 5.MOV D B ; 4ac从从B传送到传送到D 6.HLT ;停机;停机 A a B b C c D d E 4 2 b 2 b 2 b 16为指令,为指令,MUL为乘法指令,为乘法指令, SUB为减法指令,为减法指令,MOV为传送指为传送指 令、令、HLT为停机指令为停机指令; A、B、C、D、E分别表示存储数分别表示存储数a、 b、c、d以及常数以及常数4的寄存器。的寄存器。 2 b 求求d 4ac的汇编语言程序的汇编语言程序 操作

11、码操作码 操作数地址操作数地址 用用符号符号 或或助记助记 符符来表来表 示指令示指令 中的中的操操 作码作码和和 和和操作操作 数地址数地址 10 汇编语言编写的程序需要翻译成机器语言(二汇编语言编写的程序需要翻译成机器语言(二 进制代码)才能运行,这个翻译过程由进制代码)才能运行,这个翻译过程由汇编程汇编程 序序来实现。来实现。 2.1 程序设计语言的演化程序设计语言的演化符号语言符号语言 11 汇编语言的局限汇编语言的局限 u汇编语言的语法、语义结构仍然和机器语言基汇编语言的语法、语义结构仍然和机器语言基 本一样,而与人的传统解题方法相差甚远。本一样,而与人的传统解题方法相差甚远。 u汇

12、编语言的大部分指令是和机器指令一一对应汇编语言的大部分指令是和机器指令一一对应 的,因此代码量大。的,因此代码量大。 u和具体的机器相关,和具体的机器相关,人们终究还是要对人们终究还是要对计算机计算机 的硬件和指令系统有很正确深入的理解,的硬件和指令系统有很正确深入的理解,而且而且 还是要记住机器语言的符号还是要记住机器语言的符号(助记符助记符)。移植性。移植性 不好。不好。 2.1 程序设计语言的演化程序设计语言的演化符号语言符号语言 12 u 由于汇编语言的局限性,由于汇编语言的局限性,后来出现了高级语言。后来出现了高级语言。 u 高级语言与自然语言(尤其是英语)很相似,高级语言与自然语言

13、(尤其是英语)很相似, 因此高级语言程序易学、易懂、也易查错。因此高级语言程序易学、易懂、也易查错。 3 3、高级语言、高级语言 2.1 程序设计语言的演化程序设计语言的演化高级语言高级语言 13 #include main()() int number1; int number1; int number2; int number2; int result; int result; printf(please input the two numbers:n);printf(please input the two numbers:n); scanf( scanf(“%d %d %d d”, /

14、, /读取乘数和被乘数读取乘数和被乘数 result = number1 result = number1 * * number2; / number2; /两数相乘两数相乘 printf printf(“the result is : %dn the result is : %dn ”, result, result);/;/输出结果输出结果 return 0; return 0; 两数相乘的两数相乘的C语言程序语言程序 14 高级语言的优势高级语言的优势 u 高级语言程序易学、易懂、也易查错。高级语言程序易学、易懂、也易查错。 u 使程序员可以完全不用与计算机的硬件打交使程序员可以完全不用

15、与计算机的硬件打交 道、不必了解机器的指令系统。道、不必了解机器的指令系统。 u 高级语言与具体机器无关,在一种机器上运高级语言与具体机器无关,在一种机器上运 行的高级语言程序有可能可以不经改动地移植行的高级语言程序有可能可以不经改动地移植 到另一种机器上运行,大大提高了程序的通用到另一种机器上运行,大大提高了程序的通用 性。性。 2.1 程序设计语言的演化程序设计语言的演化高级语言高级语言 15 第四代语言第四代语言(Fourth-Generation Language, 以下简称以下简称 4GL)是一种是一种面向问题面向问题的程序设计语言,实现了在更高的程序设计语言,实现了在更高 一级层次

16、上的抽象,可以极大地提高软件生产率,缩一级层次上的抽象,可以极大地提高软件生产率,缩 短软件开发周期。短软件开发周期。4GL提供了功能强大的非过程化问提供了功能强大的非过程化问 题定义手段,用户题定义手段,用户只需告知系统做什么只需告知系统做什么,而无需说明,而无需说明 怎么做,程序就能够自动生成算法,自动进行处理。怎么做,程序就能够自动生成算法,自动进行处理。 典型的典型的4GL语言有语言有ADA,MODULA-2, SMALLTALK-80等。等。 4 4、第四代语言、第四代语言 2.1 程序设计语言的演化程序设计语言的演化 16 2.1 程序设计语言的演化程序设计语言的演化 按照按照4G

17、L的功能可以将其划分为查询语言和报表生成器、图形语的功能可以将其划分为查询语言和报表生成器、图形语 言、应用生成器、形式规格说明语言等几类。言、应用生成器、形式规格说明语言等几类。 查询语言查询语言:是数据库管理系统的主要工具,它提供用户对数据库进是数据库管理系统的主要工具,它提供用户对数据库进 行查询的功能。如行查询的功能。如SQL(Structured Quevy Language,结构化查询结构化查询 语言语言) 报表生成器报表生成器:是为用户提供的自动产生报表的重要工具,它提供非是为用户提供的自动产生报表的重要工具,它提供非 过程化的描述手段让用户很方便地根据数据库中的信息来生成报过程

18、化的描述手段让用户很方便地根据数据库中的信息来生成报 表,如表,如ADF 。 图形语言图形语言:用图形的方式来进行软件开发用图形的方式来进行软件开发 。 应用生成器应用生成器:是重要的一类综合的:是重要的一类综合的4GL工具,它用来生成完整的工具,它用来生成完整的 应用系统。应用生成器让用户不必使用多个软件,而只用这样一应用系统。应用生成器让用户不必使用多个软件,而只用这样一 个综合工具来实现多种功能。个综合工具来实现多种功能。 形式规格说明语言形式规格说明语言:形式化地对软件应满足的功能、性能及其它重形式化地对软件应满足的功能、性能及其它重 要方面的陈述,可避免自然语言的二义性,也是软件自动

19、化的基要方面的陈述,可避免自然语言的二义性,也是软件自动化的基 础础 。 17 理想情况下,计算机能够理解自然语言(如英语、理想情况下,计算机能够理解自然语言(如英语、 汉语等)并立即执行请求。汉语等)并立即执行请求。 大量关于自然语言的工作正在实验室中进行。大量关于自然语言的工作正在实验室中进行。 但迄今为止,自然语言的使用仍然是相当有限的但迄今为止,自然语言的使用仍然是相当有限的 。 5 5、自然语言、自然语言 2.1 程序设计语言的演化程序设计语言的演化 18 总结总结 程序设计语言程序设计语言:用于书写计算机程序的语言,用:用于书写计算机程序的语言,用 于表达和描述要加工的数据以及求解

20、问题的步于表达和描述要加工的数据以及求解问题的步 骤和过程。是根据预先定义的规则(语法)、骤和过程。是根据预先定义的规则(语法)、 由一个有限字母表上的字符构成的字符串的总由一个有限字母表上的字符构成的字符串的总 体。体。 19 提纲提纲 2.1 2.1 程序设计语言的演化程序设计语言的演化 2.2 2.2 构建和运行程序构建和运行程序 2.3 2.3 程序设计语言分类程序设计语言分类 20 2.2 构建和运行程序构建和运行程序 u 高级语言程序翻译成机器语言程序需要借助于翻译程高级语言程序翻译成机器语言程序需要借助于翻译程 序。序。 u 翻译程序有翻译程序有编译程序编译程序和和解释程序解释程

21、序两种。两种。 u 编译程序编译程序:将编写的源程序中全部语句:将编写的源程序中全部语句一次性一次性翻译成翻译成 机器语言程序后,再运行机器语言程序。编译和运行是机器语言程序后,再运行机器语言程序。编译和运行是 两个独立分开的阶段。若想多次运行同一个程序,只要两个独立分开的阶段。若想多次运行同一个程序,只要 源程序不变,则不需要重新编译;源程序若有修改,则源程序不变,则不需要重新编译;源程序若有修改,则 需要重新编译。需要重新编译。 编译程序和解释程序编译程序和解释程序 21 u解释程序解释程序:将源程序中的一条语句翻译成机器语:将源程序中的一条语句翻译成机器语 言后立即执行它(并且不再保存刚

22、执行完的机器言后立即执行它(并且不再保存刚执行完的机器 语言程序),然后再翻译执行下一条语句。如此语言程序),然后再翻译执行下一条语句。如此 重复,直到程序结束。如果一条语句要重复执行,重复,直到程序结束。如果一条语句要重复执行, 则每一次的重复执行都要重新翻译该语句,故效则每一次的重复执行都要重新翻译该语句,故效 率很低。率很低。 u著名的解释程序有:著名的解释程序有:BASIC语言解释程序、语言解释程序、LISP 语言解释程序、语言解释程序、UNIX命令语言(命令语言(shell)解释程序、)解释程序、 数据库查询语言数据库查询语言SQL解释程序等。解释程序等。 u当前大部分语言如当前大部

23、分语言如C、 C、FORTRAN、 ALGOL等是用编译程序进行翻译的。等是用编译程序进行翻译的。 而而BASIC、 PASCAL、LISP等既有编译程序、又有解释程序。等既有编译程序、又有解释程序。 2.2 构建和运行程序构建和运行程序 22 2.2构建和运行程序构建和运行程序 #include #include “genlib.h” #define N 10 main() int i; for(i=1;i=N;i+) printf(“%dn”,i); 源文件源文件1 .c 编译器编译器 0100100101011001 0001000010100011 1010110110100111 目

24、标文件目标文件1 .obj 1001011010110001 0110100100101001 0110110101101011 库库链接器链接器 0100100101011001 0001000010100011 1010110110100111 1001011010110001 0110100100101001 0110110101101011 可执行文件可执行文件.exe 1. 编辑程序编辑程序 2. 编译程序编译程序 3. 链接程序链接程序 4.运行程序运行程序 00011101 11010010 11011000 10100110 . 00011100 11100111 010110

25、10 加载程序加载程序 CPU C标准库:有丰富的函数集,可供程序员直接使用。标准库:有丰富的函数集,可供程序员直接使用。 23 2.2 构建和运行程序构建和运行程序 源文件源文件2 .c 编译器编译器 目标文件目标文件2 .obj 源文件源文件1 .c 编译器编译器 目标文件目标文件1 .obj 1001011010110001 0110100100101001 0110110101101011 库库 链接器链接器 0100100101011001 0001000010100011 1010110110100111 1001011010110001 0110100100101001 0110

26、110101101011 可执行文件可执行文件.exe 当程序由多个源文件组成时当程序由多个源文件组成时 24 2.2构建和运行程序构建和运行程序 #include #include “genlib.h” #define N 10 main() int i; for(i=1;i=N;i+) printf(“%dn”,i); 源文件源文件 .c 编译器编译器 0100100101011001 0001000010100011 1010110110100111 目标文件目标文件 .obj 预处理程序翻译程预处理程序翻译程 序序 预处理程序:通常是把其他文件包含到要编译的文件中、以及预处理程序:通常

27、是把其他文件包含到要编译的文件中、以及 用程序文本替换专门的符号。用程序文本替换专门的符号。C语言中预处理指令都以语言中预处理指令都以#开头。开头。 翻译程序:将预处理后的程序翻译成二进制代码。翻译程序:将预处理后的程序翻译成二进制代码。 stdlib.h . . genlib.h . 25 2.2 构建和运行程序构建和运行程序 #include #include “genlib.h” #define N 10 main() int i; for(i=1;i=N;i+) printf(“%dn”,i); 源文件源文件 .c 预预 处处 理理 文件文件stdio.h 和和genlib.h的内容的

28、内容 main() int i; for(i=1;i=10;i+) printf(“%dn”,i); 26 2.2 构建和运行程序构建和运行程序 1001011010110001 0110100100101001 0110110101101011 库库 链链 接接 器器 0100100101011001 0001000010100011 1010110110100111 1001011010110001 0110100100101001 0110110101101011 可执行文件可执行文件.exe #include #include “genlib.h” #define N 10 main(

29、) int i; for(i=1;i=N;i+) printf(“%dn”,i); 源文件源文件 .c 预预 处处 理理 文件文件stdio.h 和和genlib.h的内容的内容 main() int i; for(i=1;i 2car 2 3 7 8 11 17 20) = = 2 (cdr 2 3 7 8 11 17 20) = = 3 7 8 11 17 20(cdr 2 3 7 8 11 17 20) = = 3 7 8 11 17 20 现在可以组合这两个函数实现从列表中取出第三个现在可以组合这两个函数实现从列表中取出第三个 元素元素7 7:( (car (cdr(cdr list)

30、car (cdr(cdr list) 2.3程序设计语言的分类函数型说明语言程序设计语言的分类函数型说明语言 40 4 4、说明性(逻辑)语言说明性(逻辑)语言 根据已知正确的一些论断(事实),运用逻辑推理的可根据已知正确的一些论断(事实),运用逻辑推理的可 靠准则推导出新的论断(事实)。靠准则推导出新的论断(事实)。 If (A is B) and (B is C), then (A is C)If (A is B) and (B is C), then (A is C) 将此准则应用于下面的事实:将此准则应用于下面的事实: 事实事实1 1:Socrates is a human Socra

31、tes is a human A is BA is B 事实事实2 2:A human is mortal A human is mortal B is CB is C 则可以推导出下面的事实:则可以推导出下面的事实: 事实事实3:Socrates is mortal A is C 2.3程序设计语言的分类程序设计语言的分类说明性(逻辑)语言说明性(逻辑)语言 41 u程序员需要程序员需要知道该领域内的所有已知的事实知道该领域内的所有已知的事实, 还应该还应该精通逻辑上如何严谨地定义准则精通逻辑上如何严谨地定义准则,这样,这样 程序才能推导并产生新的事实。程序才能推导并产生新的事实。 u由于要收集大量的事实信息,所以程序是针对由于要收集大量的事实信息,所以程序是针对 特定领域的特定领域的 。说。说明性程序设计迄

温馨提示

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

评论

0/150

提交评论