计算机语言编写程序6,大学计算机第6讲-由机器语言到高级语言-程序编写编译...

大学计算机第6讲-由机器语言到高级语言-程序编写编译

大学计算机-计算思维导论 Research Center on Intelligent Computing for Enterprises Return u人们提供了类似于自然语言方式、以语句为单 位书写程序的规范/标准。并开发了一个翻译程 序,实现了将语句程序自动翻译成机器语言程 序的功能。 u高级语言:是用类似自然语言的语句编写程序的语言。 u高级语言源程序:是用高级语言编出的程序。 u编译程序:是将高级语言源程序翻译成机器语言程序的程序。 由机器语言到高级语言 (5)为什么还要提出高级语言? 计算机语言-高级语言 高级 语言 战德臣 教授 编译 程序 源程序 语句 机器语 言程序 二进制和编码 Result = 7+10 Return 10000110 00000111 10001011 00001010 10010111 00000111 11110100 MOV A, 7 ADD A, 10 MOV (6), A HLT 高级语言程序处理过程示意 由机器语言到高级语言 (6)高级语言和汇编语言的差别在哪里? u高级语言:机器无关性;一条高级语言语句往往可由若干条机器语言语句实现且 不具有对应性 u汇编语言:机器相关性;汇编语言语句和机器语言语句有对应性 战德臣 教授 由机器语言到高级语言 (6)编译器如何实现呢? 高级语言编译器 汇编 程序 汇编语言 源程序 助记符号 转换 执行 转换规则 助记符号,机器指令 编译 程序 高级语言 源程序 变量/表达式/语句 机器语 言程序 二进制和编码 10000110 00000111 10001011 00001010 10010111 00000110 11110100 转换 执行 高级语言 编译规则 机器语言 编制 Result = 7+10 Return MOV A, 7 ADD A, 10 MOV (6), A HLT 自动转换自动转换 执行 转换 汇编器 编译器 转换 战德臣 教授 用高级语言进行问题求解 符号化 ,计算 化 再语 义化 自然/社 会问题 程序化 执行化 算法的结果 机器级程序 -机器指令 运算器和控制 器(CPU)-执行 算法 自然/社会 问题的求 解结果 产生 用0/1编码:指 令和数据 存储器:0/1 存与取 0/1化 信号化 存储 高级语言程序 编译 执行化 由机器语言到高级语言 (7)小结? 汇编语言程序程序执行 汇编 程序执行 战德臣 教授 高级语言程序的基本构成要素有哪些? “高级语言”怎样表达“程序”的要素? 高级语言(程序)的基本构成要素 (1)计算机语言程序的基本构成要素有哪些? 战德臣 教授 K = 0; For I =1 to 100 Step 1 If I 30 K = K+I; 保留字 变量 常量 语句 表达式 认识计算机语言程序 高级语言(程序)的基本构成要素 (1)计算机语言程序的基本构成要素有哪些? “ 保留字”为编译器识 别和处理语句而确定 的一些特定符号 战德臣 教授 常量、变量与表达式 u算术表达式示例。算术表达式的结果是一数值; A1 + (B2 x1 + 76) * 3 (B2 + yy4) / L3 xx3 u比较表达式示例。比较表达式的计算结果是逻辑“真”或“假”; Grade = 70 N4 = A1) Else D1=D1+10; 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; 语句与程序控制 高级语言(程序)的基本构成要素 (4)分支结构? 分支 结构 战德臣 教授 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; 语句与程序控制 高级语言(程序)的基本构成要素 (4)分支结构? X Y Z 30 50 80 1305010050-30 分支 结构 战德臣 教授 u循环结构(有界循环结构) For (计数器变量 = 起始值 To 结束值 增量表达式 ) 循环体的程序语句序列 Next 计数器变量 Sum=0; For I = 1 to 5 Step 1 Sum = Sum + I; Next I /继续其他语句 Sum=0; For I =1 to 10000 Step 2 Sum = Sum + I; Next I 语句与程序控制 高级语言(程序)的基本构成要素 (5)循环结构? Sum I 0 1 1 2 3 3 6 4 10 5 15 6 循环 结构 战德臣 教授 u循环结构(条件循环结构) Do 循环体的程序语句序列 While (条件表达式); X=1; Y=2; Sum=0; Do Sum = X+Y; X=X+1; Y=Y+1; While (Sum 1) x = Fact(n-1); /*递归调用*/ return n*x; else return 1; /*递归基础*/ 程序示例:阶乘的递归程序如下示意 战德臣 教授 用高级语言构造程序 (3)你忘记了递归和迭代吗? 程序示例:阶乘的迭代程序如下示意 long int Fact(int n) int counter; long product = 1; for counter = 1 to n step 1 product = product * counter; /*迭代*/ return product; Produc t Counte r 初始1 循第1次11 循第2次12 循第3次23 循第4次64 循第5次245 循第6次1206 战德臣 教授 传统程序构造及其表达方法-由粗到细 用高级语言构造程序 (4)程序是构造的,不是编的? 为控制复杂性,先以函数来代替 琐碎的细节,着重考虑函数之间 的关系,以及如何解决问题 在前一阶段考虑清楚后或编制完成 后,再编写其中的每一个函数。而 函数的处理同样采取这种思路 战德臣 教授 传统程序构造及其表达方法-也可以由细到粗 用高级语言构造程序 (4)程序是构造的,不是编的? 上一层次的函数依据下层 函数来编写,确认正确后 再转至更上层问题处理 首先编写一些基础性的函数 ,并确定其正确后,再处理 上一层次的问题。 战德臣 教授 程序开发环境 用高级语言构造程序 (5)程序开发环境包括哪些部分呢? 一套书写程序 的语法规则 计算机语 言程序设 计环境: 编辑、编 译、连接 、调试、 运行一体 化平台 高级语 言程序 目标 程序 可执行 程序 编辑 程序 编译 程序 连接 程序 公用函 数库 调试 程序 u程序是算法的一种机器相容(Compatible)的表示,是利用计算机程序设计语言对算法 描述的结果,是可以在计算机上执行的算法。 u程序设计过程:编辑源程序编译链接执行。 战德臣 教授 函数 程序构 造方法 高级语言(程序)的基本构成要素 (6)小结? 函数的 定义 函数的 调用 运用函 数构造 自顶向下 (Top-Down) 自底向上 (Buttom- Up) 计算机语言与编译器 -一种抽象-自动化机制示例 Research Center on Intelligent Computing for Enterprises V = C + C; Sum = 8 + 15; K = 100 + 105; 注: Result:具体的变量 7, 10:具体的常量 = 赋值符号 + 加法运算符号 ; 语句结束符 注: V:变量 C:常量 = 赋值符号 + 加法运算符号 ; 语句结束符 不变的部分 (保留字) 变化的部分 战德臣 教授 “模式”运算式的识别及常量、变量的标识 V = C + C; S1 S2S3 S4 V,V,R 空格,null,R =,=,R C,C,R S5S6 +,+,R 空格,null,R 空格,null,R空格,null,R 空格,null,R S7 ;,null,NC,C,R 空格,null,R ;,null,N (c)能识别两种模式“V=C;”和 “V=C+C;” 并能去除空格的图灵机示意图 注:字母表V,C,=,+,空格, ; ;S1起始 状态;S7终止状态;null表示什么也不写回 。 Result = 7 + 10; (V, 1) = (C, 1) + (C, 2); 计算机语言与编译器-一种抽象-自动化机制示例 (4)语句模式的识别 战德臣 教授 复杂模式转换为简单模式及其组合 V = C + C; V = + CC V,1 = + C,1C,2 计算机语言与编译器-一种抽象-自动化机制示例 (5)复杂模式的预先构造 战德臣 教授 V,1 = + C,1C,2 将简单模式转换成汇编语言语句序列,用常量值和变量地址进 行替换,组合次序调整,得到最后的汇编语言程序 MOV A, ADD A, MOV (), A MOV A, 7 ADD A, 10 MOV (6), A MOV A, ADD A, MOV (), A 计算机语言与编译器-一种抽象-自动化机制示例 (6)简单模式与汇编语句的映射 战德臣 教授 计算机语言与编译器-一种抽象-自动化机制示例 (7)小结 战德臣 教授 计算机语言与编译器-一种抽象-自动化机制示例 (7)小结 语句词汇的识 别(词法分析) 语句模式的识 别(语法分析) 复杂语句模 式的构造 基本语句模式与 汇编语句的映射 汇编语句的组 装与次序调整 常量与变 量的替换 形式语言 与自动机 编译系统/ 编译原理 战德臣 教授 计算机语言向哪个方向发展? 计算机语言的发展 (1)如何更方便地编写程序? 战德臣 教授 K = 0; For I =1 to 100 Step 1 If I 30 K = K+I; 用高级语言编写程序 计算机语言的发展 (1)如何更方便地编写程序? 符号化结构化语句化 编译化 机器语 言程序 高级语言源程序 战德臣 教授 -像堆积木一样构造程序 计算机语言的发展 (1)如何更方便地编写程序? 面向对象的程序设计语言与 可视化构造语言 Command1Click Private Sub Command1_Click() /此处放置单击按钮Command1时要执行的程序语句 ; Text2TextChanged Private Sub Text2_TextChanged() /此处放置文本框Text2中内容发生变化时将要执行的 程序语句; TextTextChanged Private Sub Text_TextChanged() /此处放置文本框Text中内容发生变化时将要执行的 程序语句; Text1TextChanged Private Sub Text1_TextChanged() /此处放置文本框Text1中内容发生变化时将要执行的 程序语句; Text1GetFocus Private Sub Text1_GetFocus() /此处放置文本框Text1中内容发生变化时将要执行的 程序语句; 战德臣 教授 计算机/CPU 能识别与执行的 机器语言程序 汇编程序 编译程序 编译程序 编程 效率高 执行 效率高 汇编语言源程序 自动 转换 高级语言源程序 自动 转换 语言积木块 自动 转换 更大的语言积木块 自动 转换 编译程序 计算机语言发展的基本思维 计算机语言的发展 (2)计算机语言的发展思维? 战德臣 教授 不仅要用语言,还要发明新语言 (可执行)计算机 语言源程序 新语言源程序 编译器 新语言:书写规 范及其语法结构 编辑器 类自然语言 图形化的模型 积木块式编程语言 智能化语言及模型 (面向各专业的)专业化语言 计算机语言的发展 (3)能否提出新语言? 战德臣 教授 计算机技术是伴随着计算机语言的不断发展而发展起来的 u因计算机语言获得图灵奖的 l1966 A.J. Perlis: 编程技术和编译架构 l1972 E.W. Dijkstra: ALGOL语言 l1974 Donald E. Knuth: 程序语言 l1977 John Backus : 高级语言, Fortran l1979 Kenneth E. Iverson: 编程语言, APL l1980 C. Antony R. Hoare: 编程语言 l1981 Edgar F. Codd: 关系数据库语言 l1984 Niklaus Wirth:开发了EULER、 ALGOL-W、 MODULA和PASCAL 一系列崭新的计算语言。 l1987 John Cocke:编译器 l2001 Ole-Johan Dahl、Kristen Nygaard: 面向对象编程,SIMULA I 和 SIMULA 67中。 l2003 Alan Kay :面向对象语言,Smalltalk l2005 Peter Naur:Algol60程序语言。 l2006 Fran Allen: 编译器 计算机语言的发展 (3)能否提出新语言? 战德臣 教授 计算机语言的发展 (3)能否提出新语言? FORTRAN ALGOL B C PASCAL BASIC Visual BASIC Delphi C+ Simula Python Java JavaScript C# Perl Smalltalk 战德臣 教授 计算机语言的发展 (3)能否提出新语言? FORTRAN ALGOL B C PASCAL BASIC Visual BASIC Delphi C+ Simula Python Java JavaScript C# Perl Smalltalk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值