程序设计语言概述(第2章)_第1页
程序设计语言概述(第2章)_第2页
程序设计语言概述(第2章)_第3页
程序设计语言概述(第2章)_第4页
程序设计语言概述(第2章)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、 1第二章第二章 程序设计语言概述程序设计语言概述 2提纲提纲2.1 计算机计算机语言的演化语言的演化 2.2 构建和运行计算机程序构建和运行计算机程序 2.3 计算机计算机语言的分类语言的分类 计算机语言是指根据预先定义的规则(语法)而计算机语言是指根据预先定义的规则(语法)而写出的预定语句的集合,这些集合组成了程序。写出的预定语句的集合,这些集合组成了程序。 语言是什么?语言是什么?用于表达事物、动作、思想和状态的一个系统。用于表达事物、动作、思想和状态的一个系统。 一种人类用于进行现实观念交流方式的工具。一种人类用于进行现实观念交流方式的工具。 3自然语言自然语言高级语言高级语言符号语言

2、符号语言机器语言机器语言2.1 语言的演化语言的演化计算机语言发展的驱动?计算机语言发展的驱动?-人机交互需求人机交互需求计算机语言发展的趋势?计算机语言发展的趋势? 4u计算机发展早期使用的语言;计算机发展早期使用的语言;u由由“0”“0”和和“1”“1”的二进制码组成的二进制码组成 , ,是计算是计算机唯一可以直接识别的语言;机唯一可以直接识别的语言;u与具体机器有关,不同的机器识别的机器与具体机器有关,不同的机器识别的机器语言也不同;语言也不同;1 1、机器语言、机器语言2.1 语言的演化语言的演化 51 12 23 34 45 56 67 78 89 91010111112121313

3、141415151616000000000000000001011110010111101111100011111000111011111110111111110100111101000000001100000011111011111110111101111110011111101111100011111000000001100000011011101111111011110000010000000100000011000000110011101111111011111110111111101111101011101101011101011000100110001000000010000000

4、101010110110101101101000101010001000000010000000101111010011110100101011110101011110101000101010001000000010000000100000010000000100000001000000010011000010110000100001011000010110100111101001111011011111110111111101111111011111111110111111101111011111110111111101111111011111111110111111101110101101

5、101011011100010111000101111110111111101111111011111110110000010000000100000001000000010000000000000000000000000000000000000000000000001000000000000000100000000000000101000000000000010100000000000010110000000000001011000000000001001000000000000100100000000000010101000000000001010100000000000101110000

6、00000001011100000000000111100000000000011110000000000010000100000000001000010000000000100100000000000010010000000000001010110000000000101011000000000011000100000000001100010000000000110100000000000011010000000000001111010000000000111101000000000011110100000000001111012.1 语言的演化语言的演化机器语言机器语言 6机器语言的缺陷机

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

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

9、 ; 送入BMUL A E ; 4a送入AMUL A C ;4ac送入ASUB B A ; 4ac送入BMOV D B ; 4ac从B传送到DHLT ;停机A aB bC cD dE 42b2b2b16为指令,为指令,MUL为乘法指令,为乘法指令,SUB为减法指令,为减法指令,MOV为传送指为传送指令、令、HLT为停机指令为停机指令;A、B、C、D、E分别表示存储数分别表示存储数a、b、c、d以及常数以及常数4的地址。的地址。2b求求d 4ac的汇编程序的汇编程序操作码操作码操作数地址操作数地址用用符号符号或或助记助记符符来表来表示指令示指令中的中的操操作码作码和和和和操作操作数地址数地址 9

10、 汇编语言编写的程序需要翻译成机器语言(二汇编语言编写的程序需要翻译成机器语言(二进制代码)才能运行,这个翻译过程由进制代码)才能运行,这个翻译过程由汇编程汇编程序序来实现。来实现。2.1 语言的演化语言的演化符号语言符号语言 10汇编语言的局限汇编语言的局限u汇编语言的语法、语义结构仍然和机器语言基汇编语言的语法、语义结构仍然和机器语言基本一样,而与人的传统解题方法相差甚远。本一样,而与人的传统解题方法相差甚远。u汇编语言的大部分指令是和机器指令一一对应汇编语言的大部分指令是和机器指令一一对应的,因此代码量大。的,因此代码量大。u和具体的机器相关,和具体的机器相关,人们终究还是要对人们终究还

11、是要对计算机计算机的硬件和指令系统有很正确深入的理解,的硬件和指令系统有很正确深入的理解,而且而且还是要记住机器语言的符号还是要记住机器语言的符号(助记符助记符)。移植性。移植性不好。不好。2.1 语言的演化语言的演化符号语言符号语言 11u 由于汇编语言的局限性,由于汇编语言的局限性,后来出现了高级语言。后来出现了高级语言。u 高级语言与自然语言(尤其是英语)很相似,高级语言与自然语言(尤其是英语)很相似,因此高级语言程序易学、易懂、也易查错。因此高级语言程序易学、易懂、也易查错。3 3、高级语言、高级语言2.1 语言的演化语言的演化高级语言高级语言从最初与计算机交流的痛苦经历中,人们意识到

12、,应从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于该设计一种这样的语言,这种语言接近于数学语言数学语言或或人的人的自然语言自然语言,同时又不依赖于计算机硬件,编出的,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。程序能在所有机器上通用。 12#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

13、 two numbers:n); scanf(“%d,% scanf(“%d,%d d,&number1,&number2); ,&number1,&number2); result = result = number1 number1 * * number2; number2; printf printf(the result is : %dn , resultthe result is : %dn , result); ; return 0; return 0; 两数相乘的两数相乘的C语言程序语言程序书上错误,将书上错误,将16行和行和18行的行的d改成改成d数学语言数学语言 13高级语言

14、的优势高级语言的优势u 高级语言程序易学、易懂、也易查错。高级语言程序易学、易懂、也易查错。u 使程序员可以完全不用与计算机的硬件打交使程序员可以完全不用与计算机的硬件打交道、不必了解机器的指令系统。道、不必了解机器的指令系统。u 高级语言与具体机器无关,在一种机器上运高级语言与具体机器无关,在一种机器上运行的高级语言程序有可能可以不经改动地移植行的高级语言程序有可能可以不经改动地移植到另一种机器上运行,大大提高了程序的通用到另一种机器上运行,大大提高了程序的通用性。性。2.1 语言的演化语言的演化高级语言高级语言 14理想情况下,计算机能够理解自然语言(如英语、理想情况下,计算机能够理解自然

15、语言(如英语、汉语等)并立即执行请求。汉语等)并立即执行请求。大量关于自然语言的工作正在实验室中进行。大量关于自然语言的工作正在实验室中进行。但迄今为止,自然语言的使用仍然是相当有限的但迄今为止,自然语言的使用仍然是相当有限的 。 4 4、自然语言、自然语言2.1 语言的演化语言的演化 152.2构建和运行程序构建和运行程序 u 高级语言程序翻译成机器语言程序需要借助于翻译程高级语言程序翻译成机器语言程序需要借助于翻译程序。序。u 翻译程序有翻译程序有编译程序编译程序和和解释程序解释程序两种。两种。u 编译程序:将编写的源程序中全部语句编译程序:将编写的源程序中全部语句一次性一次性翻译成翻译成

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

17、条语句。如此重复,直到程序结束。如果一条语句要重复执行,重复,直到程序结束。如果一条语句要重复执行,则每一次的重复执行都要重新翻译该语句,故效则每一次的重复执行都要重新翻译该语句,故效率很低。率很低。u著名的解释程序有:著名的解释程序有:BASIC语言解释程序、语言解释程序、LISP语言解释程序、语言解释程序、UNIX命令语言(命令语言(shell)解释程序、)解释程序、数据库查询语言数据库查询语言SQL解释程序等。解释程序等。u当前大部分语言如当前大部分语言如C、 C、FORTRAN、ALGOL等是用编译程序进行翻译的。等是用编译程序进行翻译的。 而而BASIC、PASCAL、LISP等既有

18、编译程序、又有解释程序。等既有编译程序、又有解释程序。2.2构建和运行程序构建和运行程序 172.2构建和运行程序构建和运行程序 #include #include “genlib.h”#define N 10main() int i; for(i=1;i=N;i+) printf(“%dn”,i);源文件源文件 .c编译器编译器010010010101100100010000101000111010110110100111目标文件目标文件 .obj100101101011000101101001001010010110110101101011其他目标其他目标文件文件/库库链接器链接器0100

19、10010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可执行文件可执行文件.exe1. 编辑程序编辑程序2. 编译程序编译程序3. 链接程序链接程序4.运行程序运行程序00011101110100101101100010100110.000111001110011101011010加载程序加载程序CPU 182.2构建和运行程序构建和运行程序 100101101011000101101001001010010110110101101011其他目标其他目标文件文件/库

20、库链链接接器器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可执行文件可执行文件.exe#include #include “genlib.h”#define N 10main() int i; for(i=1;i=N;i+) printf(“%dn”,i);源文件源文件 .c预预处处理理文件文件和和“genlib.h”的内的内容容main() int i; for(i=1;i=10;i+) printf(“%dn”,i);0100100101011

21、00100010000101000111010110110100111目标文件目标文件 .obj翻翻译译#include #include “genlib.h”#define N 10main() 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)c

22、ar (cdr(cdr list)2.3 语言的分类函数型说明语言语言的分类函数型说明语言 314 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 Socrates is a human

23、 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 语言的分类语言的分类说明性(逻辑)语言说明性(逻辑)语言 32u程序员需要程序员需要知道该领域内的所有已知的事实知道该领域内的所有已知的事实,还应该还应该精通逻辑上如何严谨地定义准则精通逻辑上如何严谨地定义准则,这样,这样程序才能推导并产生新的事实。程序才能推导并产生新的事实。u由于要收集大量的事实信息,所以程序是针对由于要收集大量的事实信息,所以程序是针对特定领域的特定领域的 。说。说明性程序设计迄今为止只是局明性程序设计迄今为止只是局限于限于人工智能人工智能领域。领域。2.3 语言的分类语言的分类说明性(逻辑)语言说明性(逻辑)语言 33PROLOGPROLOG:适用于人工智能的专家系统的说明性语言适用于人工智能的专家系统的说明性语言 已知事实:已知事实:human(John)human(John)mortal(human)mortal(human)用户可以进行查询用户可以进行查询?-?-mortal (John)mo

温馨提示

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

最新文档

评论

0/150

提交评论