1、第第6讲讲-由机器语言到高级语言由机器语言到高级语言-程序编写编译程序编写编译算法算法解决问题解决问题的步骤的步骤程序程序计算机能够理解与计算机能够理解与执行的步骤执行的步骤计算机语言计算机语言步骤书写的规范、语法规则、标准的集合步骤书写的规范、语法规则、标准的集合是人和计算机都能理解的语言。是人和计算机都能理解的语言。导语:导语:为什么需要计算机语言为什么需要计算机语言?机器语言机器语言汇编语言汇编语言高级语言高级语言6.1 由机器语言到高级语言由机器语言到高级语言计算计算7+107+10并存储的程序并存储的程序机器语言:机器语言:用二进制和编码方式提供的指令系统所编写程序的语言被称为机器语
2、言100001 1000000111100010 1000001010100101 1100000110111101 00所有程序都需转换成机器语所有程序都需转换成机器语言程序,计算机才能执行言程序,计算机才能执行指令系统:指令系统:CPU用二进制和编码提供的可以解释并执行的命令的集合。100001 10 00000111100010 11 00001010操作码操作码 地址码地址码问:用机器语言编写程序存在什么问题呢?问:用机器语言编写程序存在什么问题呢?6.1.1 机器语言、汇编语言与汇编程序机器语言、汇编语言与汇编程序1、机器语言机器语言指令指令系统系统机器机器语言语言计算计算7+107
3、+10并存储的程序并存储的程序u汇编语言源程序:汇编语言源程序:是用汇编语言编出的程序。是用汇编语言编出的程序。u汇编程序汇编程序:是将汇编语言源程序翻译成机器语言程序的程序。是将汇编语言源程序翻译成机器语言程序的程序。用符号编写程序用符号编写程序 =翻译翻译 =机器语言程序MOV A,7ADD A,10MOV (6),AHLT100001 1000000111MOV A,7操作码 地址码怎样解决机器语言编写程序所存在的困难怎样解决机器语言编写程序所存在的困难?2、汇编语言汇编语言:是用助记符号编写程序的语言。是用助记符号编写程序的语言。汇编汇编语言语言汇编语言程序处理过程汇编语言程序处理过程
4、汇编汇编符号化程序机器不能直接执行怎么办符号化程序机器不能直接执行怎么办?MOV A,7ADD A,10MOV (6),AHLT汇编汇编程序程序汇编语言源程序助记符号机器语机器语言程序言程序二进制和编码10000110000001111000101100001010100101110000011011110100由汇编程序自动转换转换执执行行汇编汇编语言语言转换规则转换规则 助记符号助记符号,机器指令机器指令用助记符号书写程序的规范、语法规则、标准的集合是人和计算机都能理解的语言机器指令的集合是计算机能够理解并执行,但人理解困难的语言机器机器语言语言编制完成7+10并存储的汇编语言程序完成7+
5、10并存储的机器语言程序执行计算计算7+107+10并存储的程序并存储的程序Result=7+10;Returnu高级语言源程序:高级语言源程序:是用高级语言编出的程序。是用高级语言编出的程序。u编译程序:编译程序:是将高级语言源程序翻译成机器语言程序的程序。是将高级语言源程序翻译成机器语言程序的程序。6.1.2 高级语言与编译器高级语言与编译器为什么还要提出高级语言为什么还要提出高级语言?1、高级语言高级语言:是用类似自然语言的语句编写程序的语言。是用类似自然语言的语句编写程序的语言。高级高级语言语言高级语言和汇编语言的差别在哪里高级语言和汇编语言的差别在哪里?u高级语言:机器无关性;一条高
6、级语言语句往往可由若干条机器语言语句实现且不具有高级语言:机器无关性;一条高级语言语句往往可由若干条机器语言语句实现且不具有对应性对应性u汇编语言:机器相关性;汇编语言语句和机器语言语句有对应性汇编语言:机器相关性;汇编语言语句和机器语言语句有对应性高级语言编译器如何实现呢高级语言编译器如何实现呢?2、高级语言编译器高级语言编译器汇编汇编程序程序汇编语言源程序助记符号转换执行执行转换规则转换规则 助记符号,机器指令助记符号,机器指令编译编译程序程序高级语言源程序变量/表达式/语句机器语言程序二进制和编码1000011000000111100010110000101010010111000001
7、1011110100转换执行执行高级语高级语言言编译规则编译规则机器语言机器语言编制Result=7+10ReturnMOV A,7ADD A,10MOV (6),AHLT自动转换自动转换执行转换转换汇编器汇编器编译器编译器编译编译计算机语言与编译器计算机语言与编译器-一种抽象一种抽象-自动化机制示例自动化机制示例用高级语言进行问题求解用高级语言进行问题求解符号化符号化,计算化计算化再语再语义化义化自然自然/社社会问题会问题程序化程序化执行化执行化算法的结果算法的结果机器级程序机器级程序-机器指令机器指令运算器和控制运算器和控制器器(CPU)-执行执行算法算法自然自然/社会社会问题的求问题的求
8、解结果解结果产生产生用用0/1编码:指编码:指令和数据令和数据存储器:存储器:0/1存与取存与取0/1化化信号化信号化存储存储高级语言程序高级语言程序编译编译执行化执行化小结小结汇编语言程序汇编语言程序程序执行程序执行汇编汇编程序执行程序执行6.2 高级语言高级语言(程序程序)的的基本构成要素基本构成要素认识计算机语言程序认识计算机语言程序6.2 高级语言高级语言(程序程序)的基本构成要素的基本构成要素K=0;For I=1 to 100 Step 1 If I 30 K=K+I;保留字保留字变量变量常量常量语句语句表达式表达式“保留字保留字”为编译器为编译器识别和处理语句而确识别和处理语句而
9、确定的一些特定符号定的一些特定符号u算术表达式示例。算术表达式的结果是一数值;算术表达式示例。算术表达式的结果是一数值;A1+(B2 x1+76)*3(B2+yy4)/L3 xx3u比较表达式示例。比较表达式的计算结果是逻辑比较表达式示例。比较表达式的计算结果是逻辑“真真”或或“假假”;Grade=70N4=A1)&(B2 y2)u将表达式的计算结果赋值给一变量:赋值语句将表达式的计算结果赋值给一变量:赋值语句M =XY+50;M =(XY)AND(XD2 D1=D1-5;ElseD1=D1+10;Y=50;Z=80;X=30;X=Z+Y;If Y Z X=X-Y;Else X=X-Z;X=X
10、+Y;If X Z X=Y;X=X-Z;If XY X=X-Y;分支分支结构结构6.2.2 语句与程序控制语句与程序控制Y=50;Z=80;X=30;X=Z+Y;If Y Z X=X-Y;Else X=X-Z;X=X+Y;If X Z X=Y;X=X-Z;If XY X=X-Y;XYZ3050801305010050-30分支分支结构结构6.2.2 语句与程序控制语句与程序控制3、循环结构、循环结构 (1)有界循环结构有界循环结构-ForFor(计数器变量计数器变量=起始值起始值 To 结束值结束值 增量表达式增量表达式)循环体的程序语句序列 Next 计数器变量计数器变量Sum=0;For
11、I=1 to 5 Step 1 Sum=Sum+I;Next I/继续其他语句继续其他语句Sum=0;For I=1 to 10000 Step 2 Sum=Sum+I;Next ISumI01123364105156循环循环结构结构6.2.2 语句与程序控制语句与程序控制3、循环结构、循环结构 (2)条件循环结构条件循环结构 Do WhileDo 循环体的程序语句序列循环体的程序语句序列 While(条件表达式条件表达式);X=1;Y=2;Sum=0;Do Sum=X+Y;X=X+1;Y=Y+1;While(Sum=10)/其他语句其他语句XYSum1202333454575696711循环
12、循环结构结构6.2.2 语句与程序控制语句与程序控制(3)条件循环结构条件循环结构-While DoWhile(条件表达式条件表达式)Do 循环体的程序语句序列循环体的程序语句序列 X=1;Y=2;Sum=0;While(Sum0)Do Sum=X+Y;X=X+1;Y=Y+1;6.2.2 语句与程序控制语句与程序控制XYSum120循环循环结构结构常量常量变量变量赋值赋值语句语句 算术表算术表达式达式比较表比较表达式达式逻辑表逻辑表达式达式表达表达式式小结小结-1分支分支结构结构 循环循环结构结构 顺序顺序结构结构 高级语言高级语言自然自然/社社会问题会问题自然自然/社会社会问题的求问题的求解
13、结果解结果符号符号化化计算计算化化再符再符号化号化高级语高级语言程序言程序 机器语机器语言程序言程序 计算机计算机器执行器执行 程序程序执行执行 自动化自动化小结小结-2自然自然/社会问题的自动化求解过程社会问题的自动化求解过程6.2.3 函数与函数调用函数与函数调用用高级语言构造程序用高级语言构造程序1、函数函数int Sum(int m,int n)S=m+n;return S;函数名函数名()函数返回函数返回值的类型值的类型形式参数,即在函数形式参数,即在函数体中所使用的变量体中所使用的变量函数体:实现函数函数体:实现函数功能的程序段落功能的程序段落6.2.3 函数与函数调用函数与函数调
14、用函数是程序构造的重要手段,你知道吗函数是程序构造的重要手段,你知道吗?数学上的函数只是一个符号表达,而计算机数学上的函数只是一个符号表达,而计算机程序中的函数则是一段可以执行的程序程序中的函数则是一段可以执行的程序函数的定义函数的定义形式参数形式参数函数体,实现函数功能的程序语句序列函数体,实现函数功能的程序语句序列以形式参数作为需要处理的对象。以形式参数作为需要处理的对象。当被调用时,用实际参数替换相应的形当被调用时,用实际参数替换相应的形式参数进行程序执行。式参数进行程序执行。函数的调用函数的调用实际参数实际参数函数的调用函数的调用实际参数实际参数函数函数是一种抽象,用一个名字代表一个程
15、序段落是一种抽象,用一个名字代表一个程序段落6.2.3 函数与函数调用函数与函数调用数学运算函数数学运算函数,如三角函数、指数与对数函数、开方函数等;例如sin(),Log(x)等;数据转换函数数据转换函数,如字母大小写变换、数值型数字和字符型数字相互转换等;字符串操作函数字符串操作函数,如取子串、计算字符串长度等;例如,Len(abcd);输入输出函数输入输出函数,如输入输出数值、字符、字符串等;例如,Printf(),Scanf()等;文件操作函数文件操作函数,如文件的打开、读取、写入、关闭等;其它函数其它函数,如取系统日期、绘制图形等。2、系统提供的函数类别、系统提供的函数类别6.2.3
16、 函数与函数调用函数与函数调用long int Fact(int n)long int x;If(n 1)x=Fact(n-1);/*递归调用递归调用*/return n*x;else return 1;/*递归基础递归基础*/程序示例程序示例-1:阶乘的递归程序如下示意阶乘的递归程序如下示意6.2.3 函数与函数调用函数与函数调用你忘记了递归和迭代吗你忘记了递归和迭代吗?程序示例程序示例-2:阶乘的迭代程序如下示意阶乘的迭代程序如下示意long int Fact(int n)int c;long p=1;for c=1 to n step 1 p=p*c;/*迭代迭代*/return p;P
17、roductCounter初始值1循环第1次11循环第2次12循环第3次23循环第4次64循环第5次245循环第6次1206时当时当111.)1(1!nnnnn6.2.3 函数与函数调用函数与函数调用你忘记了递归和迭代吗你忘记了递归和迭代吗?3、程序构造方法 方法方法1-由粗到细为控制复杂性,先以函数来代替为控制复杂性,先以函数来代替琐碎的细节,着重考虑函数之间琐碎的细节,着重考虑函数之间的关系,以及如何解决问题的关系,以及如何解决问题在前一阶段考虑清楚后或编制完在前一阶段考虑清楚后或编制完成后,再编写其中的每一个函数。成后,再编写其中的每一个函数。而函数的处理同样采取这种思路而函数的处理同样
18、采取这种思路6.2.3 函数与函数调用函数与函数调用程序是构造的,通常由一个或多个函数构成程序是构造的,通常由一个或多个函数构成?函数的定义及调用示例函数的定义及调用示例 方法方法2-也可以由细到粗上一层次的函数依据下层上一层次的函数依据下层函数来编写,确认正确后函数来编写,确认正确后再转至更上层问题处理再转至更上层问题处理首先编写一些基础性的函数,首先编写一些基础性的函数,并确定其正确后,再处理上并确定其正确后,再处理上一层次的问题。一层次的问题。6.2.3 函数与函数调用函数与函数调用程序是构造的,不是编的程序是构造的,不是编的?函数函数程序构程序构造方法造方法6.2 高级语言高级语言(程
19、序程序)的基本构成要素的基本构成要素小结小结 函数的函数的定义定义函数的函数的调用调用运用函运用函数构造数构造自顶向下自顶向下(Top-Down)(Top-Down)自底向上自底向上(Buttom-Up)(Buttom-Up)程序开发环境程序开发环境6.3 程序设计过程程序设计过程程序开发环境包括哪些部分呢程序开发环境包括哪些部分呢?一套书写程序一套书写程序的语法规则的语法规则计算机语计算机语言程序设言程序设计环境计环境:编辑、编编辑、编译、连接、译、连接、调试、运调试、运行一体化行一体化平台平台高级语高级语言程序言程序目标目标程序程序可执行可执行程序程序编辑编辑程序程序编译编译程序程序连接连接程序程序公用函公用函数库数库调试调试程序程序u程序程序是算法的一种机器相容是算法的一种机器相容(Compatible)的表示,是利用计算机程序设计语言对算的表示,是利用计算机程序设计语言对算法描述的结果,是可以在计算机上执行的算法。法描述的结果,是可以在计算机上执行的算法。程程序序设设计计过过程程