• 沒有找到結果。

目 录

N/A
N/A
Protected

Academic year: 2022

Share "目 录"

Copied!
93
0
0

加載中.... (立即查看全文)

全文

(1)

———伽利略

一种科学 只 有 在 成 功 地 运 用 数 学 时 ,才算达 到完善的地步 .

———马克思

致 同 学

亲爱的同学,你感到高中阶段的学习生活有趣吗?

我们知道,数学与生活紧密相连.数学可以帮助我们认识世界, 改造世界,创造新的生活.数学是高中阶段的重要学科,不仅是学习 物理、化学等学科的基础,而且对我们的终身发展有较大的影响.

面对实 际 问 题,我们要认真观察、实验、归纳,大胆提出猜想.为 了证实或推翻提出的猜想,我们要通过分析,概括、抽象出数学概念, 通过探究、推理,建立数学理论.我们要积极地运用这些理论去解决 问题.在探究与应用过程中,我们的思维水平会不断提高,我们的创 造能力会得到发展.在数学学习过程中,我们将快乐地成长.

考虑到广大同学的不同需要,本书提供了较大的选择空间.

书中的引言、正文、练习、习题中的“感受·理解”部分、阅读、回 顾等内容构成一个完整的体系.它体现了教材的基本要求,是所有学 生应当掌握的内容.相信你一定能学好这部分内容.

本书还设计了一些具有挑战性的内容,包括思考、探究、链接,以 及习题中的“思考·运用”、“探究·拓展”等,以激发你探索数学的兴 趣.在掌握基本内容之后,选择其中一些内容作思考与探究,你会更 加喜欢数学.

(2)
(3)

目 录

第 1章

算法初步

1.1 算法的含义 ……… 5

1.2 流程图 ……… 7

1.3 基本算法语句 ……… 17

1.4 算法案例 ……… 26

第 2章

统计 2.1 抽样方法 ……… 43

2.2 总体分布的估计 ……… 53

2.3 总体特征数的估计 ……… 65

2.4 线性回归方程 ……… 74

第 3章

概率 3.1 随机事件及其概率 ……… 93

3.2 古典概型 ……… 100

3.3 几何概型 ……… 106

3.4 互斥事件 ……… 112

附 录

附录1 随机数表(部分)……… 124

附录2 本章测试答案与提示 ……… 125

(4)
(5)

输入、输出框

处理框

判断框

起止框

p←q 将q 的值赋给p

x 样本平均数

n

i=1ai n 个实数a1,a2,…,an的和 P(A) 事件A 的概率

A 事件A 的对立事件

(6)

第 1章 算法初步

(7)
(8)

一 ,是被设想为由模式组成的那种方式.

———维 纳

假如你的朋友 不 会 发 送 电 子 邮 件,你能教会他吗? 发送电子邮 件的方法很多,下面就是一种操作步骤:

第一步 打开电子信箱;

第二步 单击“写邮件”按钮;

第三步 输入发送地址;

第四步 输入主题;

第五步 输入信件内容;

第六步 单击“发送邮件”按钮.

我们做任何一件 事 情,都是在一定的条件下按某种顺序执行的 一系列操作,解决数学问题也常常如此.例如,用加减消元法解二元 一次方程组,就可以按照某一程序进行操作;用配方法解一元二次方 程,也是按一定程序操作的.

将上述程序转换 成 计 算 机 能 识 别 的 语 言 后,就能借助计算机极 大地提高解决问题的速度.因此,探索解决问题的统一程序的思想是 十分重要的.对一类问题的机械的、统一的求解方法就是算法.

从古代的“百鸡问题”到现代机器证明数学定理的“吴方法”,从 二元一次方程组 的 消 元 解 法 到 计 算 机 动 画 的 设 计,从猜数游戏到集 成电路的布线安排,……它们中都蕴含了丰富的算法思想.

面对一个需要解决的问题,

● 如何设计解决问题的操作序列?

● 怎样用数学语言描述上述操作序列?

(9)

1. 1 算法的含义

电视娱乐节目中,有一种有趣的“猜数”游戏:竞猜者如在规定的 时间内猜出某种商品的价格(或重量等),就可获得该件商品.

● 现有一商品,价格在0~8000元之间,采取怎样的策略才能 在较短的时间内猜出正确的答案呢?

解决这个问题有多种途径,其中一种较好的方法是:

第一步 报“4000”;

第二步 若主持人说“高了”(说明答数在0~4000之间),就报

“2000”,否则(答数在4000~8000之间)报“6000”;

第三步 重复第二步的报数方法,直至得到正确答案.

以 上 过 程 实 际 上 是 按 一 种 机 械 的 程 序 进 行 的 一 系 列 操 作. 一 般 而 言,对 一 类 问 题 的 机 械 的、统 一 的 求 解 方 法 称 为 算 法(algorithm).

阿尔·花拉子米 (al-Khowârizmî, 约 780~约850),主 要 著 作有《代数学》,被西方 人称为“代数学之父”.

英文algorithm 一词据 说是 源 于 这 位 数 学 家 的名字.

例1 给出求1+2+3+4+5的一个算法.

算法1 按照逐一相加的方法进行.

第一步 计算1+2,得到3;

第二步 将第一步中的运算结果3与3相加,得到6;

第三步 将第二步中的运算结果6与4相加,得到10;

第四步 将第三步中的运算结果10与5相加,得到15.

算法2 可以运用公式1+2+3+ … +n=n(n+1)

2 直接计算. 第一步 取n=5;

第二步 计算n(n+1) 2 ; 第三步 输出运算结果.

例2 给出求解方程组

2x+y =7, 4x+5y =11

② 的一个算法.

解 我们用消元法求解这个方程组,步骤是:

第一步 方程①不动,将方程②中x 的系数除以方程①中x 的

(10)

系数,得到乘数

m = 42 =2;

第二步 方程②减去 m 乘以方程①的积,消去方程②中的x 项, 得到

2x+y =7, 3y = -3;

第三步 将上面的方程组自下而上回代求解,得到 y =-1,x =4.

所以原方程组的解为

x =4, y =-1.

这种消元回代的算法适用于一般线性方程组的求解.

找到了某种算 法,是指使用一系列运算规则能在有限步骤内求 解某类问题,其中的每条规则必须是明确定义的、可行的.

算法从初始步骤开始,每一个步骤只能有一个确定的后继步骤, 从而组成一个步 骤 序 列,序列的终止表示问题得到解答或指出问题 没有解答.

我们过去学过的许多数学公式都是算法,加、减、乘、除运算法则 以及多项式的运算法则也是算法.

练 习

1.写出解方程2x+3=0的一个算法.

2.写出求1×3×5×7的一个算法.

3.已知平面直角坐标系中的两点A(-1,0),B(3,2),写出求直线AB 的方程 的一个算法.

4.写出求1+2+3+ … +100的一个算法.

(11)

1. 2 流程图

为了将设计好的算法清晰直观地描述出来,通常采用画流程图 的方法来表示.那么,

● 流程图是怎样构成的? 如何用流程图描述基本的算法结构?

例如,计算1+2+3+4+5的算法还可以用下面的流程图来表 示(图1 2 1).

此流程图仅供观 察 流 程 图 的 构 成,暂 不要求完全理解.

1 2 1

流程图(flowchart)是由一些图框和流程线组成的,其中图框表 示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表 示操作的先后次序.

从流程图1 2 1中可以看出,该算法步骤中,有些是按顺序执 行,有些需选择执行,而另外一些则需循环执行.

事实上,算法都可以由顺序结构、选择结构和循环结构这3块“积 木”通过组合和嵌套表达出来.流程图可以帮助我们更方便直观地表 示这3种基本的算法结构.

(12)

1. 2. 1 顺序结构

作△ABC 的外接圆可按如下的算法进行:

这 里 S1 代 表 步 1,S2 代 表 步 骤 2, 依 此 类 推.S 是 step (步)的第一个字母.

S1 作 AB 的垂直平分线l1; S2 作BC 的垂直平分线l2;

S3 以l1与l2 的交点M 为圆心,以 MA 为半径作圆,☉M 即为

△ABC 的外接圆.

● 上述算法过程具有怎样的特点?

以上算法通过依次执行3个步骤,完成了作外接圆这一过程(图 1 2 2).像这种依次进行多个处理的结构称为顺 序 结 构(sequence structure).

1 2 2

如图1 2 3所示,虚线框内是一个顺序结构,其中 A 和B 两个 框是依次执行的.顺序结构是一种最简单、最基本的结构.

1 2 3

例1 已知两个单元分别存放了变量x 和y 的值,试设计交换这两 个变量的值的一个算法,并画出流程图.

解 为了交换两个变量的值,可以增加一个单元存放中间变量p.其 算法如下:

将x 的值赋给变 p,记作“p←x”.

S1 p ← x; {先将x 的值赋给变量p,这时存放变 量x 的单元可作他用}

S2 x ← y; {再将y 的值赋给变量x,这时存放变 量y 的单元可作他用}

S3 y ← p. {最后将p 的值赋给变量y,两个变量 x 和y 的值便完成了交换}

(13)

流程图如图1 2 4所示.

1 2 4

例2 半径为r的圆的面积计算公式为 S =πr2,

当r=10时,写出计算圆面积的算法,并画出流程图.

解 算法如下:

S1 r ← 10; {把10赋给变量r}

S2 S ← πr2; {用公式计算圆的面积}

S3 输出S. {输出圆的面积}

流程图如图1 2 5所示.

1 2 5

练 习

1.写出作△ABC 的内切圆的一个算法.

2.写出解方程组

x+y =3, y+z=5, z+x =4

􀮠

􀮢

􀮡

􀪁􀪁􀪁􀪁 的一个算法,并画出流程图.

(14)

1. 2. 2 选择结构

某铁路客运部门规定甲、乙两地之间旅客托运行李的费用c(单 位:元)与行李的重量 w(单位:kg)之间的关系为

c= 0.53×w, w ≤50, 50×0.53+ (w-50)×0.85, w >50.

● 计算费用c的算法可以用怎样的算法结构来表示?

为了计算行李的 托 运 费,应先判断行李的重量是否大于50kg, 然后再选用相应的公式进行计算.其算法如下:

S1 输入行李的重量 w;

S2 如果 w ≤50,那么c←0.53×w, 否则c←50×0.53+ (w-50)×0.85;

S3 输出行李重量 w 和托运费c.

流程图如图1 2 6所示.

1 2 6 1 2 7

在上述算法过程中,S2进行了判断,像这种先根据条件作出判断, 再决定执行哪一种操作的结构称为选择结构(selectionstructure)(或称 为“分支结构”).如图1 2 7所示,虚线框内是一个选择结构,它包含 一个判断框,当条件p成立(或称为“真”)时执行A,否则执行B.

思 考

在流程图1 2 1所表示的算法中,哪一步进行了判断?

例3 设计求解一元二次方程

ax2+bx +c=0(a ≠0) 的一个算法,并画出流程图.

分析 因为一元二次方程未必总有实数根,所以求解时先计算判别

(15)

式Δ =b2-4ac,然后比较判别式与0的大小,再决定能否用求根公 式进行求解.因此,在算法中要使用选择结构.

解 算法如下:

S1 输入a,b,c;

S2 Δ ←b2-4ac;

S3 如果Δ <0,那么输出“方程无实数根”,否则

x1← -b+ Δ2a ,x2 ← -b- Δ2a ,输出x1,x2. 流程图如图1 2 8所示.

1 2 8

练 习

1.如果考生的成绩大于或等于60分,那么输出“及格”,否则输出“不及格”.用 流程图表示这一算法过程.

2.下面的流程图表示了一个什么样的算法?

(第2题)

3.写出解方程ax +b=0(a,b为常数)的一个算法,并画出流程图.

(16)

1. 2. 3 循环结构

在学校的长跑测试中,你每跑1圈,会想是否跑完了全程.如果没 有跑完全程,那么又会想离终点还有多远.

● 用怎样的算法结构表示这个过程?

以万米长跑(每圈400m)为例,我们分步描述上述过程:

S1 起跑;

S2 如果未跑到10000m,那么转S3,否则转S4;

S3 跑1圈,转S2;

S4 结束.

上述算法可用图1 2 9所示的流程图来表示.

1 2 9

在算法中,像这种需要重复执行同一操作的结构称为循 环 结 构 (cyclestructure).

图1 2 10是一种常见的循环结构:先判断所给条件p 是否成 立,若p 成立,则执行 A,再判断条件p 是否成立;若p 仍成立,则又 执行A.如此反复,直到某一次条件p 不成立时为止.这样的循环结 构称为当型循环.

1 2 10

(17)

对于万米 长 跑,如 果 我 们 先 跑 1 圈 后 再 判 断,那 么 还 可 以 这 样 描述算法过程:

S1 起跑;

S2 跑1圈;

S3 如果跑到10000m,那么转S4,否则转S2;

S4 结束.

流程图如图1 2 11所示.

1 2 11

上面这种循环结构称为直到型循环(图1 2 12):先执行A,再 判断所给条件p 是否成立,若p 不成立,则再执行 A.如此反复,直到 p 成立,该循环过程结束.

1 2 12

思 考

在流程图1 2 1中,哪些步骤构成了循环结构?

例4 写出求1×2×3×4×5的一个算法,并画出流程图.

分析 我们用变量 T 存放乘积的结果,变量I作为计数变量.每循环 一次,I的值增加1.

解 S1 T←1; {使 T =1}

S2 I←2; {使I=2}

(18)

对算法做少许改 ,求1×3×5×7×

9的值.

S3 如果I≤5,那么转S4,否则转S6; {当I≤5时循环}

S4 T ←T×I; {求 T×I,其积仍存放在变量T 中}

S5 I←I+1,转S3; {使I的值增加1,并转到S3}

S6 输出 T. {输出结果}

流程图如图1 2 13所示.

1 2 13

思 考

在流程图1 2 13中,使用了哪一种循环结构? 如何用另一种 循环结构来描述同样的问题?

例5 设计一个计算10个数的平均数的算法,并画出流程图.

分析 我们用一 个 循 环 依 次 输 入 10 个 数,再 用 一 个 变 量 存 放 数 的 累加和.在求出 10 个 数 的 总 和 后,除 以 10,就 得 到 这 10 个 数 的 平 均数.

将0赋给S,是为 这些数 的 和 建 立 存 放 空间.

解 S1 S←0; {使S =0}

S2 I←1; {使I=1}

S3 如果I≤10,那么转S4,否则转S7; {当I≤10时循环}

S4 输入G; {输入一个数}

S5 S ←S+G; {求S+G,其和仍存放在S 中}

S6 I←I+1,转S3; {使I的值增加1,并转到S3}

S7 A ←S/10; {将平均数S/10存放在A 中}

S8 输出 A. {输出平均数}

流程图如图1 2 14所示.

(19)

1 2 14

由上面的例题可以看到,利用顺序结构、选择结构和循环结构这 3种基本结构描述的算法,结构清晰,容易阅读、理解和修改.

练 习

1.写出计算2+4+6+ … +100的一个算法,并画出流程图.

2.用Ni代表第i个学生的学号,Gi代表第i个学生的成绩 (i=1,2,…,50), 下面的流程图表示了一个什么样的算法?

(第2题)

(20)

习题 1. 1

感受·理解

1.三角形面积的计算公式为S= 12ah(其中a为某边长,h为该边上的高),当a=

7.85,h=14.29时,写出计算三角形面积的一个算法,并画出流程图.

2.火 车 站 对 乘 客 在 一 定 时 段 内 退 票 要 收 取 一 定 的 费 用 ,收 费 的 办 法 是 :按 票 价 每10元(不足10元 按 10 元 计 算)核 收 2 元,票 价 在 2 元 以 下 的 不 退.试 写 出 将 票 价 为x(单位:元)的车票退掉 后,应 返 还 的 金 额y(单 位:

)的一个算法,并画出流程图.

3.画出解方程组 2x-y =1,

4x+3y =7的一个算法的流程图.

4.画出求两个正整数a 与b 相除所得商q 及余数r 的一个算法的流程图.

5.写出求3个实数中的最小数的一个算法,并画出流程图.

6.写出解不等式ax +b>0(a≠0)的一个算法,并画出流程图.

思考 ·运用

7.写出在数3,5,8,9,12,15,35,7,18,52中搜索数18的一个算法,并画 出流程图.

海 伦 (Heron,生 卒年 不 详),古希腊数 学家,约公元 62年前 后活跃于亚历山大.

8.我国南宋 时 期 的 数 学 家 秦 九 韶 发 现 了 求 三 角 形 面 积 的 “三 斜 求 积”公 式 S△ABC = 1

4 c2a2- c2+a2-b2 2

2 ,它与古希腊数学家海伦给出的三角

S△ABC = p(p-a)(p-b)(p-c) 其中p = 12(a+b+c) 是一致的.试 根 据 海 伦 公 式,画 出 已 知 3 条线段 a,b,c,求以这3条线段为边的三角形面积的一个算法的流程图.(提示:输

3个数后应先判断以它们为三边长能否构成三角形)

探究 ·拓展

9.写出求 1

2+ 1 2+

+ 12

(共有n个2)的值的一个算法,并画出流程图.

(21)

1. 3 基本算法语句

● 算法是一种数学语言,如何用更简洁的语句表述算法语言呢?

本节主要通过伪代码学习基本的算法语句.

伪代码(pseudocode)是介于自然语言和计算机语言之间的文字 和符号,是表达算法的简单而实用的好方法.下面,我们在伪代码中 将使用VB(VisualBasic)语言的关键词.

1. 3. 1 赋值语句

在伪代码中,赋值语句(assignmentstatement)用符号“←”表示,

“x ←y”表示将y 的值赋给x,其中x 是一个变量,y 是一个与x 同类 型的变量或表达式.

例1 用伪代码写出求x=23时多项式7x3+3x2-5x+11的值的一 个算法.

算法1

x ← 23;

p←7x3+3x2-5x+11.

算法2

x ← 23;

p← ((7x+3)x-5)x+11.

上述两种算法,算法1要做6次乘法,算法2只需做3次乘法.由 此可见,算法的好坏会影响运算速度.

例1中算法2称为秦九韶算法,其算法特点是:通过一次式的反 复计算,逐步得出高次多项式的值;对于一个n次多项式,至多做n次 乘法和n 次加法.

1. 3. 2 输入、输出语句

“鸡兔同笼”是我国隋朝时期的数学著作《孙子算经》中的一个有 趣且具有深远影响的问题:“今有雉兔同笼,上有三十五头,下有九十 四足.问雉兔各几何.”用方程组的思想不难解决这一问题.设有x 只 鸡,y 只兔,则

x+y =35, 2x+4y =94.

(22)

下面 我 们 设 计 解 二 元 一 次 方 程 组 a1x+b1y =c1,

a2x+b2y =c2 (a1b2 - a2b1≠0)的一个算法:用消元法解得

孙子算经》(局部)

􀮠

􀮢

􀮡

􀪁􀪁􀪁􀪁

x = b2c1-b1c2

a1b2-a2b1, y =a1c2-a2c1

a1b2-a2b1,

因此,只要输入相应的未知数的系数和常数项,就能计算出方程组的 解,即可以输出x,y 的值.

我们用输入 语 句(inputstatement)“Read a,b”表示输入的数 据依次送给a,b,用输出语句(outputstatement)“Print x”表示输出 运算结果x.这样,上述解二元一次方程组的算法流程图与相应的伪 代码就可以表示为图1 3 1.

Read a1,b1,c1,a2,b2,c2

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋 􀪋􀪋

x ← (b2c1-b1c2)/(a1b2-a2b1)

􀪋􀪋 􀪋􀪋

y ← (a1c2-a2c1)/(a1b2-a2b1)

􀪋􀪋 􀪋􀪋

Print x,y

􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

1 3 1

当输入a1,b1,c1,a2,b2,c2分别为1,1,35,2,4,94时,输出 的x,y 的值分别为23,12.即“鸡兔同笼”问题的答案是23只鸡和 12只兔.

练 习

1.已知一个正三棱柱的底面边长为2,高为3,用输入、输出语句和赋值语句表 示计算这个正三棱柱的体积的一个算法.

2.已知三角形的三边长分别为a,b,c,借助三角形的面积公式

S = p(p-a)(p-b)(p-c) 其中p = 12(a+b+c), 用输入、输出语句和赋值语句表示计算三角形面积的一个算法.

3.某市2006年1~12月的产值(单位:亿元)分别为3.8,4.2,5.3,6.1,5.6, 4.8,7.3,4.5,6.4,5.8,4.7,6.5,该 市 要 统 计 每 季 度 的 月 平 均 产 值 及 2006年的月平均产值,试分别用输入、输出语句和赋值语句表示计算上述各

个平均值的一个算法.

(23)

1. 3. 3 条件语句

某居民区的 物 管 部 门 每 月 按 以 下 方 法 收 取 卫 生 费:3 人 和 3 人 以 下 的 住 户,每户收取5元;超 过 3 人 的 住 户,每 超 出 1 人 加 收 1.2元 .

● 如何设计算法,根据输入的人数计算应收取的卫生费?

我们令c(单位:元)表示应收取的费用,n表示某户人家的人口数, 则有

c= 5,

5+1.2(n-3),

0<n≤3, n>3.

解决这一问题的算法步骤如下: S1 输入n;

1 3 2

S2 如果n ≤ 3,那么c ← 5,否则c ← 5+1.2(n-3);

S3 输出c.

流程图如图1 3 2所示,从中可以看出这是一个选择结构.在 执行此算法时,要根据一定的条件选择流程线的方向.

我们可 以 运 用条 件 语 句(conditionalstatement)来 实 现 上 述 过 程.条件语句的一般形式是

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 IfA Then B Else

C EndIf

其中A 表示判断的条件,B 表示满足条件时执行的操作内容,C 表示 不满足条件时执行的操作内容,EndIf表示条件语句结束.

上面的算法过程用条件语句可以表示为 Readn

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋 􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 Ifn≤3Then c ← 5 Else

c ← 5+1.2(n-3) EndIf

Printc

我们把步骤“c ← 5”称为“Then”分支,步骤“c ← 5+1.2(n-3)”

称为“Else”分支.为了醒目和便于阅读,这些分支一般缩进书写.

(24)

例2 儿童乘坐火车时,若身高不超过1.1m,则无须购票;若身高 超过1.1m 但不超过1.4m,可买半票;若超过1.4m,应买全票.试 设计一个购票的算法,写出伪代码,并画出流程图.

解 上述购票的算法步骤如下:

S1 测量儿童身高h;

S2 如果h≤1.1,那么免费乘车;否则,如果h≤1.4,那么购买 半票乘车;否则,购买全票乘车.

用条件语句表示如下:

Readh

Ifh ≤ 1.1Then Print免费乘车 Else

Ifh ≤ 1.4Then Print半票乘车 Else

Print全票乘车 EndIf

EndIf

流程图如图1 3 3所示.

1 3 3

由例2可知,条件语句“If-Then-Else”可以嵌套.

思 考

条件语句也可以没有“Else”分支.你能举一个例子说明吗?

例3 已知函数

y =

1, x >0, 0, x =0, -1, x <0,

􀮠

􀮢

􀮡

􀪁􀪁􀪁􀪁

试用伪代码写出根据输入 的x 的值计算y 值的一个算法,并画出流 程图.

(25)

解 用条件语句可以方便地表示这类分段函数:

Readx

Ifx >0Then y ← 1 Else

Ifx =0Then y ← 0 Else

y ← -1 EndIf EndIf Printy

流程图如图1 3 4所示.

1 3 4

本例中的分段函数称为“符号函数”,即通过函数值(输出值)是1 还是-1来判断输入的值是正数还是负数.

练 习

1.用条件语句表示:输入两个数,输出较大的数.

2.已知函数y = x, x ≥0,

-x, x <0,试用伪代码写出根据输入的x 的值计算y 值 的一个算法.

3.办理个人异地汇款(不超过100万)时,银行要收取一定的手续费:汇款额不超 100元时收取1元手续费,超过100元但不超过5000元时按汇款额的1%

收取手续费,超过5000元时一律收取50元手续费.试用条件语句描述汇款额 x(单位:元)时银行收取的手续费y(单位:元)的一个算法,并画出流程图.

(26)

1. 3. 4 循环语句

● 设计计算

1×3×5×7× … ×99 的一个算法.

我们用变量T 存放乘积的结果,变量I 作为计数变量.每循环1 次,将乘积 T×I的结果仍存放在变量T 中,同时使I的值增加2.算 法如下:

1 3 5

S1 T ← 1;

S2 I ← 3;

S3 如果I≤99,那么转S4,否则转S6;

S4 T ←T×I;

S5 I←I+2,转S3;

S6 输出 T.

流程图如图1 3 5所示.从流程图可以看出这是一个循环结 构,我们可以运用循环语句(cyclestatement)来实现上述过程.

当型循环可以用下面的语句形式来描述:

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋

Whilep 循环体 End While

它表示当所给条件p 成立时,执行循环体部分,然后再判断条件 p 是否成立.如果p 仍然成立,那么再次执行循环体.如此反复,直到

某一次条件p 不成立时退出循环.

上述算法用当型语句“While… EndWhile”表示如下:

T ← 1 I ← 3 当型循环与直到

型 循 环 可 以 相 互 转 ,一 般 采 用 当 型 语 句描述循环结构.

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋 􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋

While I ≤ 99 T ← T×I I ←I+2 End While PrintT

当型语句的特点是先判断,后执行.

前面的算法也可以改写为直到型循环: S1 T ← 1;

S2 I ← 3;

(27)

S3 T ←T×I;

S4 I←I+2;

S5 如果I>99,那么转S6,否则转S3;

S6 输出 T.

直到型循环可以用下面的语句形式来描述:

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋

Do

循环体 Untilp EndDo

它表示先执行循环体部分,然后再判断所给条件p 是否成立.如 果p 不成立,那么再次执行循环体部分.如此反复,直到所给条件 p 成立时退出循环.

上面的算法用直到型语句“Do… EndDo”表示如下:

T ← 1 I ← 3

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

Do

T ← T×I I ←I+2 UntilI > 99 EndDo PrintT

直到型语句的特点是先执行,后判断.

如果循环结构中的循环次数已知,那么还可以采用“For”语句来 描述.“For”语句的一般形式为:

For循 环 是 当 型 循环,即当循环变量I 满足“初值”≤I≤“终 ”时,就执行循环.

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋

ForIFrom “初值”To“终值”Step“步长”

循环体 EndFor

例如,前面的问题用 For语句可以表示为:

T ←1

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋 􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋

ForIFrom3To99Step2 T ←T×I

EndFor PrintT

在上面的“For”语句中,如果省略“Step2”,那么重复循环时,I的 值每次增加1.

(28)

例4 抛掷一枚硬币时,既可能出现正面,也可能出现反面,预先作 出确定的判断是不可能的.但是假如硬币质量均匀,那么当抛掷次数 很多时,出现正面的频率应接近于50%.试设计一个循环语句模拟抛 掷硬币的过程,并计算抛掷中出现正面的频率.

分析 抛掷硬币的过程实际上是一个不断重复地做同一件事情的过 程,利用循环语句,我们很容易在计算机上模拟这一过程.

在程序语言中,有一个随机函数“Rnd”,它能产生0与1之间的 随机数.这样,我们可以用大于0.5的随机数表示出现正面,不大于 0.5的随机数表示出现反面.

解 本题算法的伪代码如下:

s←0 Readn

ForiFrom1Ton 单行条件语句不

需 要 结 束 标 志“End If”.

IfRnd>0.5Thens ←s+1 EndFor

Print出现正面的频率为sn

练 习

1.在第1.2节开头,我们用流程图1 2 1给出了计算1+2+3+4+5的一个 算法,试用循环语句描述这一算法过程.

2.2000年我国人口数约为13亿.如果每年的人口自然增长率为15‰,那么多 少年后我国人口将达 到 或 超 过15亿? 这个问题可以通过循环方式计算完 ,即每一次在原有的基础上增加15‰,直到达到或超过15亿,再记下循环 次数.试用循环语句表示这一过程.

3.1,1,2,3,5,8,13,…这一列数的规律是:第1、第2个数是1,从第3个数 ,每个数是其前面2个数的和.试用循环语句描述计算这列数中第20个数 的一个算法.

EXCEL

VBA(VisualBasicforApplication)是 Excel自带的一种程序设 计语言,它具有一般程序设计语言所具有的功能,可由手工写入或宏 记录器两种方式生成.

使用VBA 宏记录器无须亲自写 VBA 的代码,在计算机内会自 动生成VBA 的代码.你只要打开宏记录器,做1次你所需要的操作, 例如画1个经常要用的表格,宏记录器会用代码记录下你的每一步操 作,操作完成后,保存为一个叫宏的文件.下次再做同样的事,你只要 执行该文件,就可以自动画出已设计好的表格.当然,如果没有相关 记录,就要靠人工编写 VBA 程序来弥补.

如图1 3 6所示,在 Excel工作表中,选择“工具/宏/VisualBasic 编辑器”.在 VB编辑器窗口中选择“工具/宏”,在弹出的对话框中,在“宏 名称”栏内输入宏的名称,如“抛掷硬币”,单击“创建”,出现宏主体语句 Sub和EndSub,输入你的程序后按F5即可运行.如不满意,可随时修改.

(29)

1 3 6

当抛掷次数为10000时,可得出现正面的频率为0.4944(你的 模拟结果可能与此不同).

习题 1. 2

感受 ·理解

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋 􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋a ← 3 b ← -5 c ← 6 a ←b b ←c

Printa,b,c

(第1题)

1.在如图所示的算法中,最后输出的a,b,c各是多少?

2.用算法语句给出用公式法求解方程x2-3x-4=0的一个算法.

3.输入3个数a,b,c,如果这3个数能作为一个三角形的三边长,那么输出 12(a+b+c)的值,否则提示重新输入.试用算法语句表示上述过程.

4.某班有50名学生,现将他们某次测验的成绩分为3个等级:不低于80分为 A,低于60分为 C,其余为B.试用算法语句表示输出每个学生相应的成绩等

级的一个算法.

5.写出求所有立方小于1000的正整数的一个算法,并画出流程图,写出伪代 .

6.设计计算1+ 12 +1

3 +… + 1100的一个算法,并画出流程图,写出伪代码.

思考·运用

7.用循环语句描述求1- 12 +1 3 -1

4 +… + 199- 1

100的一个算法. 8.青年歌手大奖赛有10名选手参加,并请了12名评委.为了减少极端分数的

影响,通常去掉一个最高分和一个最低分后再求平均分.请用算法语句表 :输入12名评委给某歌手所打的分数ai(i = 1,2,…,12),用 函 数 Max(a1,a2,…,a12)和 Min(a1,a2,…,a12)分别求出ai(i=1,2,…, 12)中的最大值和最小值,最后输出该歌手的成绩.

探究·拓展

9.通过计算机验证:存在自然数n,使1+ 12 +1

3 +… + 1n >10.

(30)

1. 4 算法案例

本节我们选取了若干引人入胜的数学问题,通过对这些数学问题 算法的探讨,可以进一步体会算法的思想,提高逻辑思维能力和算法设 计水平.

案例1 设计解决“韩信点兵—孙子问题”的算法.

韩信是秦末汉初 的 著 名 军 事 家.据说有一次汉高祖刘邦在卫士 的簇拥下来到练 兵 场,刘邦问韩信有什么办法,不要逐个报数,就能 知道场上士兵的人数.

韩信先令士兵排成3列纵队进行操练,结果有2人多余;接着他 下令将队形改为5列纵队,这一改,又多出3人;随后他又下令改为7 列纵队,这一次又剩下2人无法成整列.

秦 九 韶 (1202~

1261),四 川 安 岳 人.

1247年 写 成 名 著 《数 书九 章》,其中最重要 的 成 就 之 一 就 是“大 衍求 一 术”,即一次同 余 式 组 的 解 法.有 兴 趣的同 学 可 上 网 查 阅 相关介绍.

在场的人都哈哈大笑,以为韩信无法清点出准确人数,不料笑声 刚落,韩信便高声报告共有士兵2333人.

众人听了一愣,不知韩信用什么办法这么快就能得出正确结果.

当然,韩信当时是否真是这样做的,已无从查考,但这个故事却 引出一个著名的数学问题,即闻名世界的“孙子问题”.

这种神机妙算,最早出现在我国《算经十书》之一的《孙子算经》

中.原文是:“今有物不知其数,三三数之剩二,五五数之剩三,七七数 之剩二.问物几何? 答曰:二十三.”

自 从《孙子算经》中提出 这 个“物 不 知 数”问 题 之 后,它 便 引 起 了 人 们 很 大 的 兴 趣.南 宋 数 学 家 秦 九 韶 对 此 加 以 推 广 ,又 发 现 了 一 种 新 的 解 法,叫“大衍求一术”.这 种 解 法 后 来 传 入 欧 洲,欧 洲 学 者 发 现 此 解 法 和 高 斯 的 解 法 本 质 上 是 一 致 的,但 比 高 斯 早 了 500 余 年.

所以,人们将这种问题的通用解法称为“孙子剩余定理”或“中国 剩余定理”(Chineseremaindertheorem).这个定理在近代数学和电 子计算机程序设计中有着广泛的应用.

■ 算法设计思想

“孙 子 问 题”相 当 于 求 关 于 x,y,z 的以下不定方程组的正整 数解:

m =3x+2, m =5y+3, m =7z+2.

􀮠

􀮢

􀮡

􀪁􀪁􀪁􀪁

(31)

设所求的数为m,根据题意,m 应同时满足下列3个条件:

Mod(a,b)表 示 a 除以b 所得的余数,

b为模.

(1)m 被3除后余2,即 Mod(m,3)=2;

(2)m 被5除后余3,即 Mod(m,5)=3;

(3)m 被7除后余2,即 Mod(m,7)=2.

首先,从m =2开始检验条件,若3个条件中有任何1个不满足, 则m 递增1.当 m 同时满足3个条件时,输出 m.

■ 流程图与伪代码

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

m ←2

WhileMod(m,3)≠2or Mod(m,5)≠3or Mod(m,7)≠2 m ← m+1

End While Printm

1 4 1

EXCEL

如图1 4 2,在 VB编辑器窗口中创建名称为“孙子问题”的宏, 输入如下程序后按F5运行,可以得到不定方程的一个解为23.

符号“<>”表示 不等于.

1 4 2

案例2 写出 求 两 个 正 整 数a,b(a >b)的 最 大 公 约 数 的 一 个 算法.

公元前3世纪,欧几里得在《原本》第七篇中介绍了求两个正整数 a,b (a>b)的最大公约数的方法,即求出一列数:

a,b,r1,r2,…,rn-1,rn,0.

这列数从第三项开始,每一项都是前两项相除所得的余数,余数

(32)

为0 的 前 一 项 rn,即 是 a 和b 的 最 大 公 约 数 (greatestcommon factor).这种方法称为“欧几里得辗转相除法”(Euclidalgorithm).

例如,求a=204与b=85的最大公约数的步骤为:

204÷85,余数r1 为34,所以204=85×2+34;

85÷34,余数r2 为17,所以85=34×2+17;

34÷17,余数为0,所以34=17×2.

因此,204与85的最大公约数是r2=17.

■ 算法设计思想 欧几里得(Euclid,

约 公 元 前330~ 公 元 275),古 希 腊 数 学 家,以其所著的《原本》

闻名于世.

欧 几 里 得 辗 转 相 除 法 求 两 个 正 整 数a,b 的 最 大 公 约 数 的 步 骤 是:计算出a÷b的余数r,若r=0,则b即为a,b的最大公约 数;若r≠0,则把前面的除数b作为新的被除数,把余数r作为新 的 除 数,继续运算,直到余数为 0,此 时 的 除 数 即 为a,b的 最 大 公 约 数.

求a,b(a>b)的最大公约数的算法为:

S1 输入两个正整数a,b;

S2 如果 Mod(a,b)≠0,那么转S3,否则转S6;

S3 r ← Mod(a,b);

S4 a ←b;

S5 b ←r,转S2;

S6 输出b.

■ 流程图与伪代码

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋 􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 Reada,b

WhileMod(a,b)≠0 r ← Mod(a,b) a ←b

b ←r End While Printb

1 4 3

(33)

EXCEL

创建名称为“最大公约数”的宏,输入程序后按 F5运行,先后输 入两个自然数204和85,可以得到这两个数的最大公约数为17(如图 1 4 4).

1 4 4

阅 读 辗转相除与更相减损

我国的《九章算术》卷一方田章中的“更相减损术”,与辗转相除 法非常相似.书中说:“约分术曰:可半者半之,不可半者付置分母分 子之数,以少减多,更相减损,求其等也.以等数约之.”意思是:如果 分母、分子都是偶数(可半者),那么先除以2;如果不全是偶数,便将 分子分母互减,以少减多,直到得出最大公约数为止;用最大公约数 去约分子分母,便可使分数最简.

例如,求49与91的最大公约数,用更相减损术的步骤为:

第一步 将49,91上下对齐;

第二步 从91中减去49,余42;

陕 西 旬 阳 出 土 的 唐 代象牙算筹

第三步 从49中减去42,余7;

第四步 从42中五次减去7,出 现上下两个相等的数7.

于是,这个7就是“等数”,也就是最大公约数.由于我国古代用的 是筹算,数目都是用算筹排成的,相减时只需取走或重新摆一下算筹 即可.因此上述运算过程虽然是4步,摆出了4个筹式,但实际操作时 只需在一个筹式上连续进行就可以了.

(34)

案例3 写出用区间二分法求方程x3-x-1=0在区间[1,1.5]

上的一个近似解(误差不超过0.001)的一个算法.

■ 算法设计思想

如图1 4 5,如果估计出方程f(x)=0在某区间[a,b]上有一 个根x*,就能用二分搜索求得符合误差限制c的近似解.算法步骤可 以表示如下:

1 4 5

S1 取[a,b]的中点x0= 12(a+b),将区间一分为二;

S2 若f(x0)=0,则x0就是方程的根,否则判断根x*在x0的 左侧还是右侧:

若f(a)f(x0)>0,则x* ∈ (x0,b),以x0 代替a;

若f(a)f(x0)<0,则x* ∈ (a,x0),以x0代替b;

S3 若|a-b|<c,计算终止,此时x* ≈x0,否则转S1.

■ 流程图与伪代码

“ExitDo”表示退 出循环.

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 Reada,b,c Do

x0←a+b2 f(a)←a3-a-1 f(x0)←x30-x0-1 Iff(x0)=0ThenExitDo Iff(a)f(x0)<0Then b←x0

Else a←x0 EndIf

Until|a-b|<c EndDo

Printx0

1 4 6

(35)

EXCEL

创建名称为“二分法”的宏,输入程序后按 F5运行,依次输入区 间左、右端点值1,1.5,再输入误差限制0.001,得方程的近似解为 1.3251953125,如图1 4 7所示.

函 数 Val()的 作 用是将 字 符 串 转 换 为 数 值,可 以 提 高 运 算 的正确性和精度.

1 4 7

练 习

这里Int(x)表示 不超过x 的最大整数.

1.下面一段伪代码的目的是( ).

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

Readm,n While mn ≠Int m

n c←m-n×Int m

n m←n

n←c End While Printn

(第1题)

A.求 m,n 的最小公倍数 B.求 m,n 的最大公约数 C.求 m 被n 整除的商 D.求n 除以m 的余数

2.在直角坐标系中作出函数y =2xy=4-x 的图象,根据图象判断方程 2x=4-x 的 解 的 范 围,再 用 二 分 法 求 这 个 方 程 的 近 似 解 (误 差 不 超 过 0.001),写出这个算法的伪代码,并画出流程图.(有兴趣的同学可以上机

操 作)

(36)

习题 1. 3

感受 ·理解

1.已 知 一 种 放 射 性 物 质 不 断 发 生 衰 变,每 经 过 1 年 剩 余 的 质 量 约 为 原 来 的 84%.那么,约经过多少年,剩余的质量是原来的一半? 试写出运用二分法

计算这个近似解的伪代码.

2.设计一个计算两个正整数a,b的最小公倍数的算法.

思考·运用

3.我国古代劳动人民对不定方程的研究作出过重要贡献,其中《张丘建算经》中 的“百鸡问题”就是一个很有影响的不定方程问题:今有鸡翁一值钱五,鸡母 一值钱三,鸡雏三值钱一.凡百钱买百只,问鸡翁、母、雏各几何.

其 意 思 是:1 只 公 鸡 的 价 格 是 5 钱,1 只 母 鸡 的 价 格 是 3 钱,3 只 小 鸡 的 价 格 是1钱.想用 100 钱 买 100 只 鸡,问 公 鸡、母 鸡、小 鸡 各 可 买 几 .设x,y,z分别代表 公 鸡、母 鸡、小 鸡 的 只 数,我 们 可 以 大 致 确 定 x, y,z的取值范围:若100钱全买公鸡,则最多 可 买 20 只,即 x 的 取 值 范

围 是0~20;若100 钱 全 买 母 鸡,则 最 多 可 买 33 只,即 y 的 取 值 范 围 是 0~33;当x,y 在各自的取值范围内确定后,小鸡的只数z=100-x-y

也 就 确 定 了.

根据上述算法思想,画出求解的流程图,并写出相应的伪代码.

4.设计求解不定方程x1+2x2+3x3+4x4=0(x1,x2,x3,x4∈{-1,1})的 一个算法.(提示:可用循环语句或条件语句)

阅 读 二进制数·计算机

二 进 制 记 数 法 的 思 想 源 远 流 长,我 国 古 代 很 早 就 有 研 究,在

《易经》上就讲到两仪,即一黑一 白 阴 阳 互 补 的 两 条 鱼.以 后,在 两 仪 之 上 形 成 了 八 卦.《易 经》中 关 于 两 仪 及 演 变 的 叙 述 可 以 看 成 是 二 进 制 应 用 的 萌 芽.

莱布尼茨(G.W.

Leibniz,1646~1716), 德国自然科学家、哲学 、数学家.

德国数学家莱布尼茨1679年撰写的《二进制算术》,使他成为二 进位数制的发明人.二进制在现代被应用于计算机设计,但莱布尼茨 本人并没有将它 用 到 自 己 的 计 算 机 上.莱布尼茨后来发现他的二进 制可以给中国古 老 的 六 十 四 卦 易 图 一 个 很 好 的 数 学 解 释,他是通过 他的朋友、法国传教士白晋(F.J.Bouvet)得到六十四卦易图的.莱布 尼茨高兴地说:“可以让我加入中国籍了吧!”

(37)

莱布尼茨于1661年进入莱比锡大学学习,除了学习法律以外,还 刻苦研究哲 学 和 数 学.他 与 牛 顿 几 乎 同 时 创 立 了 微 积 分;在 帕 斯 卡 (BlaisePascal,1623~1662)加法机(加减法)的基础上,他还研制成 功能 够 进 行 加、减、乘、除和开平方等运算的机械齿轮计 算 机,并 于 1673年在英国伦敦皇家学会上作了表演.

莱布尼茨发明的计算机

1946年,世界上第一台电子计算机 ENIAC(埃尼阿克)诞生,这 是科学技术发展史上一座新的里程碑.但是它还不完善.计算机之父 冯·诺伊曼积极参与和研究之后,很快提出了改进意见.其中主要的 两条对后来计算机科学技术的发展产生了深远影响:第一,用二进制 替代原来的十进制(decimalsystem),这样大大减少了元器件数量,提 高了运算速度;第二,存储程序,就是把程序像数据一样放在计算机 内部的存储器中,这也就是后人所说的冯·诺伊曼计算机体系结构.

此后,电子计算机在短短50多年的时间里得到了飞速发展,成为信息 时代的骄子.

计算机为什么要采用二进制呢? 冯·诺伊曼(John

vonNeumann,1903~

1957),美籍匈牙利数 学家,在计算机科学、

计算机 技 术 和 数 值 分 析等方 面 作 了 开 拓 性 的工作.

第一,二进制只有0和1两个数字,要得到表示两种不同稳定状 态的 电 子 器 件 很 容 易,而且制造简单,可靠性高.例如,电位的高与 低,电容的充电与放电,晶体管的导通与截止,等等.

第二,在各种记数法中,二进制运算规则简单,有布尔逻辑代数 作理论依据,简单的运算规则使得机器内部的操作也变得简单.

二进制加法法则只有4条:

0+0=0,0+1=1, 1+0=1,1+1=10,

而十进制加法法则从0+0=0到9+9=18,有100条.

二进制的乘法法则也很简单:

0×0=0,0×1=0, 1×0=0,1×1=1,

而十进制的乘法法则要由一张“九九表”来规定,比较复杂.

(38)

本章回顾

本 章 概 览

本章通过实例 介 绍 了 算 法 的 含 义,重点研究了在解决问题的过 程中如何设计算法,如何根据算法画出流程图,并在此基础上逐步学 会运用基本算法语句来表示算法过程.

算法 算法的描述

自然语言

􀜛􀜛

􀜛􀜛 􀜛􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛 􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛

􀜛􀜛

􀜛􀜛

􀜛

流 程 图

􀜛􀜛

􀜛􀜛 􀜛􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛 􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛

􀜛􀜛

􀜛􀜛

􀜛

伪 代 码

􀜛􀜛

􀜛􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛 􀜛􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛 􀜛

􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛􀜛

􀜛􀜛

􀜛􀜛

􀜛􀜛

( )

算法的基本思 想 就 是 探 求 解 决 问 题 的 一 般 性 方 法,并将解决问 题的步骤用具体化、程序化的语言加以表述.

描述算法的方式经历了从简单的自然语言向高级的计算 机 程 序 语言的发展过程.自然语言通俗易懂,直接明了;流程图直观形象,能 体现算法过程的 结 构 特 征;伪代码将流程图的各结构用接近计算机 程序语言的算法语句进行表述,为编制计算机程序提供了便利.

内 容 提 要

1.算法含义

对一类问题的 机 械 的、统一的求解方法称为算法.找到了某种算 法,是指使用一系列运算规则能在有限步骤内求解某问题,其中的 每条规则必须是明确定义的、可行的.

2.流程图

是由一些图框和流程线组成的,其中图框表示各种操作的类型,图

(39)

框中的文字和符号表示操作的内容,流程线表示操作的先后次序.

(1)顺序结构:依次进行多个处理的结构.

(2)选择结构:先根据条件作出判断,再决定执行哪一种操作的结构.

(3)循环结构:需要重复执行同一操作的结构.

顺序结构 选择结构 当型循环 直到型循环

3.基本算法语句

伪代码:介于自然语言和计算机语言之间的文字和符号.

(1)赋值语句:用符号 ← 表示,如“x←y”表示将y 的值赋给x, 其中x 是一个变量,y 是一个与x 同类型的变量或表达式.

(2)输入、输出语句

输入语句:“Read a,b”表示输入的数据依次送给a,b;

输出语句:“Printx”表示输出运算结果x.(支持多个输入和 输出,但是中间要用逗号隔开)

(3)条件语句:

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋􀪋IfA Then B Else

C EndIf

(4)循环语句:

对应当型循环

While循环

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋Whilep 循环体 EndWhile

For循环

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋 􀪋􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋

ForIFrom “初值”To “终值”Step“步长”

循环体 EndFor

对应直到型循环

Do循环

􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋􀪋

􀪋􀪋􀪋􀪋􀪋 􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋􀪋

􀪋 􀪋 􀪋􀪋

􀪋􀪋􀪋􀪋􀪋􀪋 Do 循环体 Untilp EndDo

參考文獻

相關文件

所以这两条直线与第三条直线所成角都是 90°, (结论).

为此, 我们需要建立函 数的差商与函数的导数间的基本关系式, 这些关系式称为“微分学中值定理”...

本章我们又一次经历了用函数研究变化规律的过程 ,用反比例函数刻画具 有反比例关系的两个变量之间的对应关系 :在变量y 随变量x 的变化而变化的

• 孤波解的性质:1- x 趋向无穷时 u 趋于0;2- 波是单向传播的;3- 波幅与波速成正比;4- KdV方程的色散与非线性刚好抵消,导致

[u,u  ]平面相图上,与极小点对应的是 中心点,其邻域是椭圆轨线。与极大

stochastic activator-inhibitor systems without saturation and ones with saturation in time-invariant or time-variant domains

非线性物理: 分形物理 分形物理 小结:. •

非线性物理: 分形物理 分形物理 动力系统映射:.