160 likes | 310 Views
高级语言. (第二讲). 程序的灵魂 — 算法是什么?. 绍兴文理学院. 计算机系计算机应用教研室. 第一章 程序设计引论 ( 一 ). 一、教学目的: 明确不同数制的表示与求值;掌握不同数制的转换;明确算法的概念和算法设计的原则;认识 C++ 程序。. 二、教学重点: 不同数制的转换;算法的概念和算法设计的原则;认识 C++ 程序。. 三、教学难点: 认识 C++ 程序。 四、教学过程:. TKS. 3. §1.1 数制. 数制就是计数的规则和制度。 计算机系统中采用的是二进制计数。 §1.1.1 不同数制的表示与求值 1 、数制表示
E N D
高级语言 (第二讲) 程序的灵魂— 算法是什么? 绍兴文理学院 计算机系计算机应用教研室
第一章 程序设计引论(一) 一、教学目的:明确不同数制的表示与求值;掌握不同数制的转换;明确算法的概念和算法设计的原则;认识C++程序。 二、教学重点:不同数制的转换;算法的概念和算法设计的原则;认识C++程序。 三、教学难点:认识C++程序。 四、教学过程:
TKS 3 §1.1 数制 数制就是计数的规则和制度。 计算机系统中采用的是二进制计数。 §1.1.1 不同数制的表示与求值 1、数制表示 (1) 十进制计数: (2) 二进制计数: (3) 八进制计数: (4) 十六进制计数: 对于每一种计数制中,所使用的计数符号的个数称为该计数制的基数。 2、数制求值 设一个计数制的基数为k,其中一个数x具有n个整数位和m个小数位,则x的大小为 10:31
TKS 4 例:一个十进制数(376.45)10 的按权展开式为: (376.45)10= =3×102+7×101+6×100+4×10-1+5×10-2=376.45 一个二进制数(10110.101)2 的按权展开式为: (10110.101)2= =1×24+0×23+1×22+1×21+0×20+1×2-1+0×2-2 +1×2-3=16+0+4+2+0+0.5+0+0.125=22.625 一个八进制数(526.4)8 的按权展开式为: (526.4)8= =5×82+2×81+6×80+4×8-1=320+16+6+0.5=342.5 一个十六进制数(2B0D)16 的按权展开式为: (2B0D)16= =2×163+11×162+0×161+13×160 =8192+2816+13=11021 P2 表1-1中列出了常用的数制对照 10:31
TKS 5 §1.1.2 不同数制的转换 1、十进制与其他进制之间的转换 (1) 十进制整数与其他进制之间的转换 如何得到 (185)10= =1×27+0×26+1×25+1×24+1×23+0×22+0×21+1×20 =(10111001)2 中的Si? 是采取除“2”取余数法 2 185 余数 得 (185)10 =(10111001)2 注意高位和低位 2 92 1 = S0 同理有: 同理有: 2 46 0 = S1 16 185 余数 8 185 余数 2 23 0 = S2 16 11 9 = S0 8 23 1 = S0 2 11 1 = S3 0 11 = S1 8 2 7 = S1 2 5 1 = S4 0 2 = S2 2 2 1 = S5 得 (185)10 =(271)8 得 (185)10 =(B9)8 2 1 0 = S6 0 1 = S7 10:31
(2) 十进制小数与其他进制之间的转换 TKS 6 十进制纯小数转换成其他进制的纯小数采用逐次乘以基数“k”取整数法,直到积的小数部分为0或达到所规定的精度为止。 0.6845 × 2 1.3690 S-1=1 × 2 得 (0.6845)10 =(0.10101111)2 注意高位和低位 0.738 S-2=0 × 2 同理有: 得 (0.6845)10 =(0.53635)8 1.476 S-3=1 同理有: 0.6845 × 2 × 8 0.952 S-4=0 0.6845 5.4760 S-1=5 × 2 × 16 × 8 1.904 S-5=1 10.9520 S-1=A 3.808 S-2=3 × 2 × 16 × 8 1.808 S-6=1 15.232 S-2=F 6.464 S-3=6 × 2 × 16 × 8 1.616 S-7=1 3.712 S-3=3 3.712 S-4=3 × 2 × 16 × 8 1.232 S-8=1 11.392 S-4=B 5.696 S-4=5 得 (0.6845)10 =(0.AF3B)16 10:31
2、二进制与八、十六进制之间的转换 TKS 7 二进制的三位取值范围为0~7,正好对应八进制的一位, 二进制的四位取值范围为0~15,正好对应十六进制的一位, 这样可以方便的从二进制数小数点分别向左和右每三位一组(八进制)或每四位一组(十六进制), 不足部分高位或低位空缺处补0,然后写出对应八进制或十六进制数位即可。 例: (1110110)2=(001 110 110)2=(166)8 (110101.1101)2=(110 101.110 100)2=(65.64)8 (1110110)2=(0111 0110)2=(76)16 (110101.1101)2=(0011 0101.1101)2=(35.D)16 ▲八进制数或十六进制数转换为二进制数则是上述过程的逆过程。 10:31
3、八进制与十六进制之间的转换 TKS 8 八进制数与十六进制数之间的转换可通过二进制数作为桥梁进行。 §1.2 编码 1、编码的概念 编码就是对同一类事物中的不同对象按照一定规则所进行的顺序编号。 在计算机系统中,能够保存和处理的一切信息都是采用二进制表示的。 在计算机存储系统中,一个字节包含8个二进制位,通常连续4个字节为一个存储字,是内存信息存储操作的基本单位。 最常用的是ASCⅡ编码表,在我国还有汉字区位编码表,ASCⅡ码为单字节编码,汉字区位码为双字节编码。 10:31
2、ASCⅡ码 TKS 9 ASCⅡ码是美国信息交换用标准代码(American Standard Code for Information Interchange)。采用二进制7位,对128个字符进行了编码。见附录。 3、汉字区位码 即信息交换用汉字编码字符集基本集:GB2312—80汉字编码方案。 §1.3 算法 §1.3.1 算法的概念 算法+数据结构=程序 1976年瑞士计算机科学家沃思(N.Wirth) (获1984年计算图灵奖)。 数据结构:数据的表示和组织形式。 10:31
1、算法的概念 TKS 10 (1)做任何事情都有一定的步骤。 (2) 算法:对一个问题而采取的方法和步骤,它是指令的有限序列。简单地说,算法就是进行操作的方法和操作步骤。 (3) 对同一个问题,可以有不同的解题方法和步骤。也就有不同的算法。 2、算法的组成要素 (1) 操作 算术运算、关系运算、逻辑运算、函数运算、位运算、I/O操作等。计算机算法是由这些操作所组成的。一个程序只能由三种基本控制结构(或由它们所派生的结构)所组成。 (2) 控制结构 控制结构就负责控制组成算法的各操作的执行顺序。一个程序只能由三种基本控制结构(或由它们所派生的结构)所组成。 10:31
① 顺序控制结构 TKS 11 顺序控制结构中的语句是按照书写顺序执行的,即语句的执行顺序与书写顺序相一致。 ② 选择控制结构 最基本的选择控制结构是当程序执行到某一条语句时,要进行某种判断,从两种路径中选择其中一条,或从多种路径中选择其中一条。 由二分支选择结构可以派生出多分支选择结构。 ③ 循环控制结构 这种结构将一条或多条语句重复地执行若干遍。 10:31
3、三种控制结构的流程图(良好算法的基本单元):3、三种控制结构的流程图(良好算法的基本单元): (3) 循环结构 a a a a 成立 不成立 条件? 模块(语句)A 语句序列 语句序列 模块(语句)B 语句序列1 语句序列2 不成立 条件? 条件? 成立 模块(语句)C 不成立 成立 b b b b TKS 12 (1) 顺序结构 (2) 选择结构 • 当型(While型)循环结构 • 直到型(Until型)循环结构 10:31
(4) 三种基本结构的共同特点: TKS 13 ①只有一个入口(a点)。 ②只有一个出口(b点)。 ③结构内的每一部分都有机会被执行到。 ④结构内不存在“死循环”(无终止的循环)。 ▲ 可以根据以上三种基本结构,派生和定义基本结构,并由这些基本结构组成结构化程序。 4、算法的特性 (1) 有穷性:一个算法应包含有限的操作步骤,而不能是无限的。 (2) 确定性:算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。 (3)有效性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果。 (4) 有0个或多个输入:指在执行算法时需要从外界取得必要的信息。 10:31
(5) 有一个或多个输出:算法的目的是为了求解,“解”就是输出。 TKS 14 ▲ 算法好象“黑箱子”。对于使用者来说,只是从外部特性上了解算法的作用。而对于我们来说,必须掌握“黑箱子”里面的东西,即必须会设计算法,并且根据算法编写程序。当然也可以利用现有的算法来编写自己的算法。 算法中的每一步都只能是如下一些基本操作或它们的不同组合。 ● 数据存储; ● 数据传送; ● 运算; ● 顺序向下执行或转向另一个指定位置起执行。 10:31
§1.3.3 算法设计的一般原则 TKS 15 1、结构化 任何算法都只允许由顺序、选择(分支)和循环这三种基本结构单元的顺序连接来实现。 2、模块化 对于一个算法设计问题,将其划分为若干个功能相对独立的子问题,对于每个子问题用一个独立的算法设计模块来完成,若干个算法设计模块就构成了整个算法。 3、对象化 在面向过程的程序设计阶段,算法设计的原则只包括结构化和模块化原则。 对象是由数据和容许的操作组成的封装体,对象化是使每个对象具有封装性、继承性和多态性。在后续课程中学习。 10:31
五、作业与实践: TKS 16 ? 1、书面作业 P21 1.1 2、上机编程题 6004、6005 10:31