问题求解论题1-6 如何将算法告诉计算机 陶先平
问题求解论题1-6 如何将算法告诉计算机 陶先平
问题1 你如何将算法告诉计算机?
问题1 你如何将算法告诉计算机?
问题求解 计算机 开始 能够精 实现阶段 确识别 的语言 问题理解和定义 将自然语言描述的“算法” 算法 。一“翻译”成。一 程序 计算机语言描述的“程序”的过程 手工测试和检查 人可识 测试 别和使 用的自 然语言 设计阶段
问题求解 开始 问题理解和定义 算法 手工测试和检查 设计阶段 人可识 别和使 用的自 然语言 程序 测试 实现阶段 计算机 能够精 确识别 的语言 将自然语言描述的“算法” “翻译”成 计算机语言描述的“程序”的过程
请思考以下问题 ·在任何时候,编程之前必须先完成算法设计 ·Why? ·计算机能够识别和处理的“语言”,不仅仅是C、C++等,也可以 是自己定义的语言 。For example? ·程序运行出错,涉及到哪些内容? ·在“翻译”之前,尽量排除算法错误
请思考以下问题 • 在任何时候,编程之前必须先完成算法设计 • Why? • 计算机能够识别和处理的“语言”,不仅仅是C、C++等,也可以 是自己定义的语言 • For example? • 程序运行出错,涉及到哪些内容? • 在“翻译”之前,尽量排除算法错误
问题2 计算机如何从二进制ts中识列 乔执行程序指令呢?
问题2 计算机如何从二进制bits中识别 并执行程序指令呢?
40年代的编程: Before the middle of the 1940s, computer operators "hardwired" their programs
40年代的编程: Before the middle of the 1940s, computer operators “hardwired” their programs
而后,二进制代码 显然,hardwired program不易修改,set switches 不能算是编码! 0010001000000100 如何让计算机的执行做到:programmable? 0010010000000100 A big problem! 0001011001000010 0011011000000011 Big idea: 1,计算机提供基本的hardwired“原子操作” 1111000000100101 2,提供编码方式,支持程序员组合“原子操 0000000000000101 作”,编写“程序” 0000000000000110 3,将“程序”存放在存储空间中 0000000000000000 4,计算机“解读”程序编码,执行原子操作
而后,二进制代码 显然,hardwired program不易修改,set switches 不能算是编码! 如何让计算机的执行做到:programmable? A big problem! Big idea: 1,计算机提供基本的hardwired“原子操作” 2,提供编码方式,支持程序员组合“原子操 作”,编写“程序” 3,将“程序”存放在存储空间中 4,计算机“解读”程序编码,执行原子操作
例如: ·0010:操作码,将”某个”内存中的数据 复制到”某个”寄存器中 Q0.1.0001000000100 0010010000000100 ·001:001号寄存器 0001011001000010 ·第一个操作数 0011011000000011 ·000000100:地址偏移量,4 1111000000100101 ·第二个操作数:从下一条指令所存储的 地址向后偏移4个16位,取值5 0000000000000101 0000000000000110 执行效果:将5赋值给1号寄存器 0000000000000000
例如: • 0010: 操作码,将”某个”内存中的数据 复制到”某个”寄存器中 • 001: 001号寄存器 • 第一个操作数 • 000000100:地址偏移量,4 • 第二个操作数:从下一条指令所存储的 地址向后偏移4个16位,取值5 执行效果:将5赋值给1号寄存器
问题3 你看到“编程”了吗? 你看到“语言”了吗?
问题3 你看到 “编程”了吗? 你看到“语言”了吗?
符号语言 The early programmers realized that it would be a tremendous help to use mnemonic symbols for the instruction codes and memory locations,so they developed assembly language for this purpose. .ORIG x3000 Address (in hexadecimal)of the first instruction LD R1, FIRST Copy the number in memory location FIRST to register R1 LD R2, SECOND Copy the number in memory location SECOND to register R2 ADD R3,R2,R1 Add the numbers in R1 and R2 and place the sum in ;register R3 ST R3,SUM Copy the number in R3 to memory location SUM HALT Halt the program FIRST FILL #5 Location FIRST contains decimal 5 SECOND FILL #6;Location SECOND contains decimal 6 SUM BLKW #1 Location SUM (contains 0 by default) .END End of program
符号语言 • The early programmers realized that it would be a tremendous help to use mnemonic symbols for the instruction codes and memory locations, so they developed assembly language for this purpose