3986.net
小网站 大容量 大智慧
当前位置:首页 >> 数学 >>

s算法初步讲义


算法初步教学实践·东莞群英学校·梁斌玉

算法初步教学实践讲义
东莞群英学校 梁斌玉 说明:新课标理念先进,内容新颖,尤其是算法与编程的引入,适应了时 代的发展,对我国的软件事业的发展将产生重大的影响。 但是算法和编程对学生来说是很陌生的事物,而但是现行教材,讲解比较 抽象,学生难懂。为此我根据自己的教学实践对算法初步进行了改编。力求做 到了如下几点: 1.例子丰富翔实贴切; 2.循序渐进,由浅入深,将较难得问题分解为几个小块,逐步深入。 3.符合学生的认知规律,在编排顺序上改变较大。 由于水平有限经验不足,会存在不少缺点,还存在令人不满意的地方,在 此抛砖引玉,望不吝赐教。 本文共一万两千余字,打印共 37 页。求高手告知那里可以发表这类文章, 谢谢。

1.1 算法与程序框图
1.1.1 算法的概念
本节课用大量的例子来强化“算法”的概念。这些例子由浅入深,由现实 生活出发,逐步向数学和计算机中的算法靠近,使算法概念得以深化。例 1 是 现实生活中的例子,意在使学生形成“步骤”的概念。例 2 人鬼过河(网上有 相应的 flash 动画) ,是一个经典的智力题,可以激发学生的兴趣,学生当堂不 一定能完成,可以让学生思考以后,用 flash 按步演示,目的是加深对“步骤” 的认识。例 3 例 4 由现实生活中的例子过渡到数学中的例子,并和计算机结合, 使算法的概念得到升华。例 5,用筛选法求质数,对刚刚接触算法的学生来说, 比较难懂,对此,采取了由特殊到一般,由浅入深的策略,使学生突破难点。

计算机的问世可谓 20 世纪最伟大的发明,它把人类社会带进了信息技术的 时代,而算法是计算机科学的重要基础,就像使用算盘一样,人们要给计算机 编制“口诀”——算法,才能让它工作。要想了解计算机的工作原理,算法的 学习是一个开始。 做任何事情都有一定的步骤。例如,你想考大学首先要填报名志愿表,拿 到准考证,参加考试,得到录取通知书,到大学报名注册等。这些步骤都是按 一定顺序进行的,缺一不可。现实生活中,我们很多事情都是这样一步一步的 完成的。 可见算法并不是一个全新的概念,它融入在我们的现实生活中。在我 国古代, “算法”取得了辉煌的成就。

例 1.烧水泡茶
-1-

算法初步教学实践·东莞群英学校·梁斌玉

请看一下烧水泡茶的过程 解:烧水泡茶可分下面 4 步完成。 Step1:洗好开水壶; Step2:灌上凉水,放在火上,等待水开; Step3:洗茶杯,茶杯里放好茶叶; Step4:水开后再冲水泡茶。

例 2.人鬼过河

现在河的岸边有三个人和三个鬼,河上只有一条小船,船上最多能坐两个 “人” ,在河的任何一边,当鬼的个数比人多时,鬼就会吃掉人。请问如何才能 使人和鬼都平安的到达对岸。 解: 要想使人鬼都安全过河,需要下面 11 步。 Step1:

Step2:

Step3:

Step4:

Step5:

-2-

算法初步教学实践·东莞群英学校·梁斌玉

Step6:

Step7:

Step8:

Step9:

Step10:

Step11:

例 3.已知 f ( x ) ? ( x ? 3)( x ? 5) x 2 ? 2 ,求 f (5) 解:
) 要求 f ( 5 需要下面 4 步。

Step1: x ? 3 ? 2 Step2: x ? 5 ? 10 Step3: x 2 ? 25

-3-

算法初步教学实践·东莞群英学校·梁斌玉

Step4: f (5) ? 2 ? 10 ? 25 ? 2 ? 502 从事各种工作和活动,都必须事先想好工作的步骤,然后按部就班的进行, 才能避免产生错误。 定义:我们把用来解决问题的一系列步骤叫做算法(algorithm) 。 算法一词源于算术(algorism),即算术方法,是指一个由已知推求未知的运 算过程。随着计算机的出现,人们常把这些“步骤”编写为“程序”由计算机 来解决。算法必须符合以下条件: 1.算法的每一步要做什么必须是明确的,不能含糊不清,模棱两可;例如, 要把全班同学分成两队, “高个子的同学站出来”这个步骤就是不确定的,含糊 的,哪些同学算高,哪些同学算矮?个子中等的同学就会不知所措。 2. 算 法 的 每 一 步 都 应 当 能 有 效 的 执 行 , 并 得 到 确 定 的 结 果 。 例 如 若
b ? 0, 则a ? b 是无效的,不能执行的。

3.算法必须在有限步内完成,如果需要无限步完成,就失去了实际意义。算 法的有限性往往指“在合理的范围之内” 。如果让计算机执行一个历时 1000 年 才结束的算法,虽然是有限的,但超过了合理的限度,人们也不把它视作有效 算法。究竟什么算“合理限度”并无严格标准,由人们的常识和需要而定。

例 4 给计算机编写一个算法,输入一个自变量 x 的值,求分段函数

? x ? 2, x ? 0 的函数值. f ( x) ? ? 2 ? x , x?0
解:Step1:输入 x 的值; Step2:进行判断,如果 x ? 0 ,则 f ( x ) ? x ? 2 , 否则 f ( x ) ? x 2 。 Step3: 输出结果。 说明: 1.输入 x 的值就是把自变量 x 的值由键盘输入计算机, 例如要计算 x=2 时的函数值,就输入 2。 2. 根 据 相 应 的 x 的 值 计 算相 应的 函数 值 f ( x ) , 比 如输 入 3 ,则
f (3) ? 3 ? 2 ? 5 ;如果输入-4,则 f (?4) ? (?4)2 ? 16 。

3.输出结果就是把计算结果显示在计算机屏幕上。 以上算法可以通过输给计算机一系列“命令”来实现,这些命令叫做计算机 语言。 例 5.筛选法求质数

-4-

算法初步教学实践·东莞群英学校·梁斌玉

质数亦叫作素数,是大于 1 的自然数,并且除了该数本身和 1 以外没有其 它的数能整除它,如 2,3,5,7,11,13,…,质数有无穷多个。 (1)判断 143 是否为质数。 解: Step1:143÷2 不为整数; Step2:143÷3 不为整数; Step3:143÷4 不为整数; Step4:143÷5 不为整数; Step5:143÷6 不为整数; Step6:143÷7 不为整数; Step7:143÷8 不为整数; Step8:143÷9 不为整数; Step9:143÷10 不为整数; Step10:143÷11=13,143 能被 11 整除; Step11:结论:143 不是质数。 (2)判断 17 是否为质数。 解: Step1:17÷2 不为整数; Step2:17÷3 不为整数; Step3:17÷4 不为整数; Step4:17÷5 不为整数; Step5:17÷6 不为整数; Step6:17÷7 不为整数; Step7:17÷8 不为整数; Step8:17÷9 不为整数; Step9:17÷10 不为整数; Step10:17÷11 不为整数; Step11:17÷12 不为整数; Step12:17÷13 不为整数; Step13:17÷14 不为整数; Step14:17÷15 不为整数; Step15:17÷16 不为整数; Step16:结论:17 是质数。 (3)判断 216091 是不是质数 该题的计算量非常大,我们可以把算法编为程序,由计算机帮我们计算。 (4)设计一个算法,输入大于 2 的整数 n,由计算机判断它是不是质数。 解 Step1:输入整数 n; Step2: 依次检验 2~(n-1)是不是 n 的因数, 若有这样的数, 则 n 不是质数, 否则,n 为质数。 Step3:输出结果。
-5-

算法初步教学实践·东莞群英学校·梁斌玉

说明:其中第 3 步在计算机中可以通过一个循环来实现,今后会学到。 2001 年 12 月 5 日拿大大学生迈克· 卡梅伦发现又发现一个最大质数,它被 记作 213466917……1 ,而它的完整表示式中含有 4053946 个数字。 他是 Great Internet Mersenne Prime Search (Gimps)计划的参加者,该计划在致力于 解决这一问题时同时动用了全球 13 万台个人计算机。有意思的是,为了完整地 写出这个最大质数,迈克· 卡梅伦花去了整整三周时间。为了发现这个最大质数, 他利用自己的 800 兆赫计算机工作了 45 天。 研究结果可以在数论中找到应用, 也可以帮助研究更可靠安全的译码方法。目前,Gimps 计划正在抓紧寻找由几 千万个数字组成的质数,如谁的计算机能寻找到这隐藏的更大质数,则可以获 得 10 万美元奖金。 [思考] 你能举出跟多算法的例子吗?于一般的解决问题的过程比较,你认 为算法最重要的特征是什么? [练习]: 1.任意给定一个正数,设计一个算法,求以这个数为半径的圆的面积。 2.设计一个算法,求 y ?| x | 的值。 3.牛虎过河。 一个人带三只老虎和三头牛过河。只有一条船,可以容一个人和两只动物。 没有人在的时候,如果老虎的数量不少于牛的数量就会吃掉牛。设计安全渡河 的算法。 4.任意给定一个大于 1 的正整数 n,设计一个算法,求出 n 的所有因数。

1.2.2 程序框图
算法对学生来说是陌生的内容,根据“建构主义理论”应由最简单的开始, 逐步构建出“程序框图”的知识。课本上先给出了一个包含三种基本结构的复 杂框图,然后把它进行分解来认识它,违背了认知规律,学生不易理解,且易 使学生产生畏惧心理。这种方法适合于学生比较熟悉的事物。 据此,本节通过浅显的例子(这些例子多数是第一节中研究过的) ,依次引 出顺序结构,选择结构和循环结构,并及时归纳总结,是学生在不知不觉中加 深对三种结构的理解。

算法可以用自然语言来表示,但为了使算法的步骤表达得更为直观,我们 更经常地用图形方式来表达,这就是 程 序框图。 程序有三种基本逻辑结构, ——顺序结构、选择结构和循环结构。复杂的程序都是由这三种结构组成。

-6-

算法初步教学实践·东莞群英学校·梁斌玉

一、顺序结构 例 1.烧水泡茶 请叙述一下烧水泡茶的过程 解:该算法用自然语言表述为 Step1:洗好开水壶; Step2:灌上凉水,放在火上,等待水开; Step3:洗茶杯,茶杯里放好茶叶; Step4:水开后再冲水泡茶。 可以用程序框图表示为: 开始 洗水壶 烧水 洗茶杯,放茶叶

泡茶

结束

例 2. 给 计 算 机 编 写 一 个 算 法 , 输 入 一 个 自 变 量 x 的 值 , 求 的 函 数
y ? ( x ? 3)( x ? 5) x 2 ? 2 值.

解:该算法用自然语言表述为 Step1:输入 x 的值 Step2: a ? x ? 3 Step3: b ? x ? 5 Step4: c ? x 2 Step5: y ? a ? b ? c ? 2 Step6:输出 y。 可以用程序框图表示为:

-7-

算法初步教学实践·东莞群英学校·梁斌玉

开始 输入x
a ? x?3
b? x?5

c ? x2

y ? a?b?c ? 2

输出y

结束 程序框图符号和它们所表示的功能: 图形符号 名称 功能 起止框 (终端框) 表示一个算法的起始和结束 表示一个算法输入和输出的 信息

输入输出框

处理框 (执行框) 赋值、计算 流程线 连接程序框

顺序结构由若干个依次执行的处理步骤组成。这是任何一个算法都离不开 的基本结构。

二、选择结构 例 3 给计算机编写一个算法,输入一个自变量 x 的值,求分段函数
-8-

算法初步教学实践·东莞群英学校·梁斌玉

? x ? 2, x ? 0 的函数值. f ( x) ? ? 2 ? x , x?0
解:该算法用自然语言表述为 Step1:输入 x 的值; Step2:进行判断,如果 x ? 0 ,则 f ( x ) ? x ? 2 , 否则 f ( x ) ? x 2 。 Step3: 输出结果。 可以用程序框图表示为: 开始 输入x
No

x ? 0成立
Yes

y ? x?2

y ? x2

输出y

结束 其中被虚线框起来的是选择结构,它的一般形式为:
No

满足条件?
Yes

步骤1

步骤2

选择结构由一个判断框和两个分支组成。当条件框内的条件成立时,程序 沿着分支 1 进行;否则程序沿分支 2 进行。

-9-

算法初步教学实践·东莞群英学校·梁斌玉

图形符号

名称

判断框

功能 判断某一条件是否成立, 它有 两个出口: “是”或“否” 。条 件成立时,程序沿着“是”这 个分支走下去; 当条件不成立 时,程序沿着“否”这个分支 进行。 连接程序框 当一个程序框图很大, 一页写 不下时, 连接程序框图的两部 分。 一般在连接处标上相同的 数字序号。

流程线

连接点

例 4.判断一元二次函数 ax2 ? bx ? c ? 0(a ? 0) 是否有根。 分析: ? ? b2 ? 4ac ,当 ? ? 0 时,方程有根;当 ? ? 0 时,方程无根。 解:程序框图表示为 开始 输入a,b,c
? ? b2 ? 4ac

? ? 0?

No

Yes

输出:方程有实根

输出:方程无实根

结束

一般情况下,选择结构有两个分支,分别说明条件“成立”时怎样做,件 “不成立”时怎样做。但也有特殊情况,当条件不成立时什么也不做(或者条
- 10 -

算法初步教学实践·东莞群英学校·梁斌玉

件成立时什么也不做) ,这时只有一个分支。 例 5.电视上有很多智力竞赛的题目,主持人提问,选手回答,若回答正确, 加 10 分,如果错误,不加分。试用程序框图来描述这一情况。 解: 开始 主持人提问

选手回答
No

回答正确?
Yes

加10分

结束

一个分支的条件结构的一般形式为:
No

满足条件?
Yes

步骤

选择结构的嵌套

- 11 -

算法初步教学实践·东莞群英学校·梁斌玉

( x ? 0) ?1 ? 例 6.函数 y ? ? 0 ( x ? 0) ,编写一个算法,输入 x 的值,输出 y 的值 ? ?1 ( x ? 0) ?
解:该算法的程序框图为 开始 输入x
No

x ? 0成立
Yes

y?1

x2 xy ?? 0成立
Yes

No

y?0

y ? ?1

输出y

结束

(1) (2) (3) (4)

虚线框起来的部分为嵌套选择结构; 当 x>0 时程序沿着“Yes”分支进行; 当 x ? 0 时程序沿着“No”分支进行 “No”分支中又包含了一个条件结构。

三、循环结构
- 12 -

算法初步教学实践·东莞群英学校·梁斌玉

例 5.上例中,智力竞赛的真实过程要复杂很多,主持人提问,选手回答, 若回答正确,加 10 分,如果错误,不加分,然后主持人继续提问,选手继续回 答,如此循环下去,直到提问结束。 (当然这也只是简化过程。 )用程序框图来 描述这一情况。 解:由于过程中出现了循环,需要用循环结构果来表示。 开始 分数=0

分数=分数+ 10分
Yes

回答正 确? 选手回答 主持人提问

No

还要提 问? No 结束

Yes

(1) 程序按箭头所指方向进行; (2) 虚线框起来的部分称为循环结构; (3) 每次进入循环前都要判断是否“还要提问” ,若还要提问,则进 入循环(继续提问) ,若提问结束,则不再进入循环,算法结束。 (4) 其中“主持人提问” 、 “选手回答” 、 “判断是否加分”等步骤是每 次循环所重复的内容,叫做循环体。 (5) “分数=分数+ 10 分”是一个赋值语句,其含义是: “后来的分数=原分数+10 分”

循环结构的一般形式为:
- 13 -

算法初步教学实践·东莞群英学校·梁斌玉

循环体

满足条件?
No

Yes

例 5 写出求 1+2+3+4+5+6 的一个算法。 解: Step1:计算 1+2 得到 3; Step2:将第一步中的运算结果 3 与 3 相加得到 6; Step3:将第二步中的运算结果 6 与 4 相加得到 10; Step4:将第三步中的运算结果 10 与 5 相加得到 15; Step5:将第四步中的运算结果 15 与 6 相加得到 21。 例 6 设计一个计算 1 ? 2 ? 3 ? ? ? 100 的算法 解:如果按例 5 的方法,计算量很大。 我们可以设想有一个空储物箱, 第 1 次放入 1 个球, 第 2 次放入 2 个球?? 第 100 次 放 入 100 个 球 。 这 样 重 复 100 次 后 , 储 物 箱 里 的 总 球 数 就 是 1 ? 2 ? 3 ? ? ? 100 个。每放一次球我们可以看作一次循环,总共循环了 100 次。

为了求从 1 到 100 的和,我们可以设一个变量 S,它就像一个储物箱,一 开始 S=0,相当于储物箱是空的。另设一个变量 i,用它来记录循环(即累加) 的次数,i 的初始值为 1,每循环一次,i 增加 1,当 i=100 时,刚好循环了 100 次,当 i=101 时,i>100,就退出循环。

- 14 -

算法初步教学实践·东莞群英学校·梁斌玉

开始
i ?1 S?0

i ? i ?1 S ? S?i

i ? 100?
No

Yes

输出S

结束 (1)程序按箭头所指方向进行, 在判断框处
i ? 100?



如果 i ? 100 ,则按 yes 所指方向进行循环,否则按 No 所指方向进行。 (2)i 叫做计数变量,用于记录循环次数,同时它的取值还可以用来判断 循环是否中止。循环第一圈时 i 的值为 1,第二圈时 i 的值为 2??第 100 圈时, i 的值为 100。这种变化是通过语句 i=i+1 来实现的。其含义是 “后来的 i 值=原 i 值+1” 每循环一圈,i=i+1 被执行一遍,i的值就增加了1。 (3)S 叫做累加变量,用于记录累加结果。 循环第 1 圈在 S 上加 1; 循环第 2 圈在 S 上加 2; 循环第 3 圈在 S 上加 3; ???? 循环第 i 圈在 S 上加 i; ???? 循环第 100 圈在 S 上加 100; “循环第 i 圈在 S 上加 i”用语句 S=S+i 表示,把这时 i 的值加到 S 上。当 循环到 100 圈时,S 的值就是 1 ? 2 ? 3 ? ? ? 100 的和。

- 15 -

算法初步教学实践·东莞群英学校·梁斌玉

例 7 下面是一个计算 2 ? 4 ? 6 ? ? 100 的算法,请补充完整。 分析:先考虑清楚下面两个问题。 1. 从 2 到 100 的偶数共有多少个?______ 2. 两个相邻偶数的间隔是多少?_______ 解: 开始
i ? ___
S ? __

i ?i?2

S ? S ? ___

i ? ___?
No

Yes

输出S

结束 为了理解该程序,填写下表 圈数 i s
(2 ? 4 ?













? 100
98) ? 100

直到型循环结构绝大多数情况下可以有当行循环结构代替,对开发学生智 力并无多大帮助,反而会使学生产生迷惑,何必增加这些内容呢?

[练习]
- 16 -

算法初步教学实践·东莞群英学校·梁斌玉

1. 设计一个求任意数的绝对值得算法,并划出程序框图。 2. 任意给定 3 个正实数,设计一个算法,判断分别以这 3 个数为边长的三 角形是否存在。画出这个算法的程序框图。 3. 某居民区的物业部门每月向居民收取卫生费,计费方法是:3 人和三人 以下的住户,每人收取 5 元;超过 3 人的住户,每超出一人,加收 1.2 元。写出一人数 x 为自变量,以卫生费 y 为函数值的分段函数。设计一 个算法,根据输入的人数,计算应收取的卫生费,画出程序框图。 4. 设计一个求解一元二次方程的算法,画出程序框图。 5. 设计一个计算 1 ? 2 ? 3 ? ? ? 100 的算法,画出程序框图。 6. 设计一个算法,求 12 ? 22 ? 32 ?
? 1002 的值.,画出程序框图。

- 17 -

算法初步教学实践·东莞群英学校·梁斌玉

1.2 基本算法语句

计算机完成任何一项任务都需要算法。但是,我们用自然语言或程序框图 描述的算法,计算机是无法“理解”的。因此还需要把算法翻译成计算机能理 解的“计算机程序设计语言” (Progamming Language) ,编制成计算机程序。 我们前面学过,算法有三种基本结构:顺序结构、条件结构和循环结构。 为了实现算法中三种基本的逻辑结构,各种程序设计语言都包括下列算法语句: 输入语句、输出语句、赋值语句、条件语句和循环语句。 程序设计语言有很多种,如 BASIC,Foxbase,C 语言,C++,J++,VB 等。它们的基本原理是相同的。本章中,我们学习的程序设计语言是 “QuickBASIC” 语言, 它是一种类 BASIC 语言。 BASIC 是 Beginner Allpurpose Symbolic Instruction Code(初学者通用符号指令代码)的英文缩写,与 1964 年由 美国的两位教授设计,具有简单、易学的特点。

1.2.1 输入语句、输出语句和赋值语句
输入语句、输出语句、和赋值语句基本上对应于算法中的顺序结构。计算 机从上而下按照语句排列的顺序执行这些语句。

一、输入语句 例 1.编制一个程序,在电脑屏幕上显示“Hello,evryone! ” 。 解:运行 QuickBASIC 软件,在编辑窗口内输入下面程序。

PRINT END

“Hello,everyone!”

Hello,everyone!

?

编辑程序

运行结果

其中的 PRINT 是一个命令,它的作用是输出它后面引号中的内容。运行 该程序,会在电脑屏幕上显示:Hello,everyone!
- 18 -

算法初步教学实践·东莞群英学校·梁斌玉

例 2 设变量 x=123,编制一个程序,在屏幕上显示出 x 的值。 解: “运行 QuickBASIC 软件,在编辑窗口内输入下面程序。

x=123 PRINT END

123 x

?

编辑程序

运行结果

[思考] PRINT 语句后的输出内容中,加引号和不加引号的区别? ___________________________________________________________ 上面几个例子中“PRINT”语句就是输出语句,对应于程序框图中的输出 语句。其一般格式为:

PRINT

“提示内容” ;变量

想一想下面语句会输出什么结果?

X=123+321 PRINT “x=” ; END

x=444 x

?

编辑程序

运行结果

- 19 -

算法初步教学实践·东莞群英学校·梁斌玉

例 3.当 x=234 时求函数 y ? x 3 ? 3 x 2 ? 24x ? 30 的值。 解: “运行 QuickBASIC 软件,在编辑窗口内输入下面程序。

X=123 y=x^3+3*x^2-24*x+30 PRINT “y=” ; y END

x=19033323

?

编辑程序

运行结果

程序中的运算符,和我们平常用的有所不同,具体如下: 数学运算 程序符号 二、输出语句 例 4.编写一个程序,输入 x 的值求函数 y ? x 3 ? 3 x 2 ? 24x ? 30 的值。 解: “运行 QuickBASIC 软件,在编辑窗口内输入下面程序。 加 + 减 乘 * 除 /

xn
x^n

x
sqr(a)

|a|
abs(a)

INPUT “x=” : x y=x^3+3*x^2-24*x+30 PRINT “y=” ; y END

编辑程序
- 20 -

算法初步教学实践·东莞群英学校·梁斌玉

这个程序中,第一行的 INPUT 语句就是输出语句,其后的 x 是一个变量。 该语句的作用是从键盘输入 x 的值。 例如要计算 x=100 时的函数值, 就输入 100。 输出语句对应于程序框图中的输出框,其一般格式为:

INPUT

“提示内容” ;变量

输出语句可以在计算机屏幕上输出常量、变量和提示信息。 运行程序后会出现如下提示窗口:

x=?

运行后程序提示输入 x 的值

x=?111 x=111 y=1401960

输入 x 的值 111 后程序自动计算出 y=1401960 三、赋值语句 赋值语句前面已经见过,请再在看一下例 3 : x=123 y=x^3+3*x^2-24*x+30 PRINT “y=” ; y END.
- 21 -

算法初步教学实践·东莞群英学校·梁斌玉

第一行和第二行叫做赋值语句,顾名思义,赋值语句就是将表达式所带表 的值赋给变量。赋值语句中的“=”叫做赋值号,它和数学中的等号不完全一样。 计算机执行赋值语句时,先计算“=”右边的表达式式的值,然后把这个值赋给 左边的变量。 例如第一行中,就把左边的 123 赋给右边的变量 x(即让 x 等于 123) ;第 二 行 , 先 计算 出 左边的 表 达 式 x 3 ? 3 x 2 ? 24 x ? 30 的 值 为 1401960 ,然 后 把 1401960 赋给变量 y。 赋值语句的一般格式为:

变量 = 表达式
可以把变量看作一个存放数据的盒子,而且最多只能存放一个数据的盒子。 当一个新数据放进去时,原来的数就被“挤”了出去。 请说出下面程序输出的结果 a=10 a=a+20 PRINT “a=”;a END 第一行:把等号右边的数值 10 赋给左边的变量 a; a 10

第二行:先计算等号右边的值 a+20=10+20=30,然后把数据 30 存入变量 a, a 中原来的 10 被冲掉。 a 输出结果:a =20 例 5.编写程序,计算一个学生数学、语文、英语三门课的平均成绩。 解:程序为: INPUT “Maths=”;a INPUT “ Chines=”;b INPUT “ English=”;c x=(a+b+c)/3 PRINT “ The average is”;x END [思考]请把下面的程序框图翻译为程序,并说出那些框图对应输出语句, 那些框图对应输入语句,那些框图对应赋值语句。
- 22 -

30

算法初步教学实践·东莞群英学校·梁斌玉

开始 输入x
a ? x?3
b? x?5

c ? x2

y ? a?b?c

输出y

结束

例 6.已知 a ? 2 , b ? 5 ,交换 a , b 的值。 分析:请看下面的程序 a=2 b=5 a=b b=a PRINT a,b END 输出结果为:5 5.请思考为什么? 第一行:a 的值为 2; 第四行:b 的值为 5; 第三行: 把 b 的值赋给 a,这时 b 的值为 5,所以 a=5; (注意:这时 a 中原来存储的数值 2 已经被冲掉了。) 第四行:把 a 的值赋给 b,而这时 a 的值为 5,所以 b 的值还是 5; 第五行:因为 a,b 的值均为 5,所以输出结果为 5 5。 没有达到交换的目的。 为了加深理解,请大家请分析一下每行中 a、b 的值,并填表。 a b
- 23 -

算法初步教学实践·东莞群英学校·梁斌玉

第 1 行: 第 2 行: 第 3 行: 第 4 行: 第 5 行:

解: (空桶法)交换装满水的两个水桶里的水需要再找一个空桶,交换两个 变量正确的方法是设置一个中间变量 t。 a=2 b=5 t=a a=b b=t PRINT END a,b

第三行 t=a 的作用:把 a 的值 2 保存在变量 x 中,这样当执行 a=b 时,a 中的值仍可以在 t 中找到。 请分析一下每行中 a、b、t 的值,并填表。 a b t 第 1 行: 第 2 行: 第 3 行: 第 4 行: 第 5 行: 第 6 行:

- 24 -

算法初步教学实践·东莞群英学校·梁斌玉

[练习] 1. 已知华氏温度和摄氏温度的转化公式为:
摄氏温度 ? (华氏温度 ? 32) ? 5 9

编写一个程序,输入一个华氏温度,输出其相应的摄氏温度。 2. 编写一个程序,输入两个非零实数,输出他们加、减、乘、除的结果。 3. 已知一个三角形的三边长分别是 a, b, c ,它的面积可用海伦—秦九韶公 式计算。

S ? p( p ? a)( p ? b)( p ? c) ,其中 p ?

a?b?c 2

设计一个算法,输入三角形的三条边长 a, b, c ,输出三角形的面积 S。 写出程序框图和相应的程序。 4. 春节到了,糖果店的售货员忙极了。已知水果糖每千克 10.4 元,奶糖 每千克 15.6 元,果仁巧克力每千克 25.2 元,那么依次购买这三种果糖
a, b, c 千克,应收取多少钱?请你设计一个程序,帮售货员算账。

5. 编写一个程序,输入梯形的上底、下底和高的值,计算并输出其面积。 6. 编写一个程序,交换两个变量 a 、b 的值,并输出交换前后的值。

1.2.2 条件语句
算法中的条件结构由条件语句来表达。 一、基本条件语句 (1)两个分支的条件结构
No

满足条件?
Yes

IF

条件

THEN

语句体 1 ELSE 步骤2

步骤1

语句体 2 ENF IF

条件结构框图

条件语句

当计算机执行上述语句时,首先对 IF 后的条件进行判断,如果条件成立,
- 25 -

算法初步教学实践·东莞群英学校·梁斌玉

就执行 THEN 之后的语句体,否则执行 ELSE 之后的语句体。 例 1. 给计算机编写一个程序,输入一个自变量 x 的值,输出分段函数

? x ? 2, x ? 0 的函数值. f ( x) ? 2 ? x , x?0
解: 用程序框图表示为: 开始 输入x
No

x ? 0成立
Yes

y ? x?2

y ? x2

输出y

结束 用 QuickBASIC 语言可写为 INPUT “x=”;x

IF x>=0 THEN y = x + 2 ELSE y = x^2 END IF PRINT “y =” ; y END 数学运算 程序符号 等于 = 不等于 <> 大于 > 小于 < 大于等于 >= 小于等于 <=

[思考] 请指出程序框图中的程序框分别和那些语句对应。 (2)一个分支的条件结构

- 26 -

算法初步教学实践·东莞群英学校·梁斌玉

满足条件?
Yes

No

IF

条件

THEN

语句 步骤 ENF IF

当计算机执行上述语句时,首先对 IF 后的条件进行判断,如果条件成立, 就执行 THEN 之后的语句体,否则条件语句结束,执行 END IF 之后的语句。 二、条件结构的嵌套

( x ? 0) ?1 ? 例 2.函数 y ? ? 0 ( x ? 0) ,编写一个程序,输入 x 的值,输出 y 的值 ? ?1 ( x ? 0) ?
解:用程序框图表示为 开始 输入x
No

x ? 0成立
Yes

y?1

x xy ?? 0成立
2

No

Yes

y?0

y ? ?1

输出y

结束 用 QuickBASIC 语言可写为

- 27 -

算法初步教学实践·东莞群英学校·梁斌玉

外 层 IF 语 句

INPUT “x =” ; x IF x>0 THEN y = 1 ELSE IF x=0 THEN y = 0 ELSE y = -1 END IF END IF

内 层 IF 语 句

PRINT “ y=”; y END 该程序中有两个 IF 语句,大 IF 语句中嵌套了一个小 IF 语句。 [思考] 请将程序框图和相应的语句对应起来。

例 3 编写一个程序,求一元二次方程 ax 2 ? bx ? c ? 0 的根. 分析: ? ? b2 ? 4ac , 当 ? ? 0 时方程有两个不相等的实根 x1 ?
?b ? ? ?b ? ? , x2 ? ; 2a 2a
?b ; 2a

当 ? ? 0 时,方程有两个相等的实根 x1 ? x2 ? 当 ? ? 0 时,方程没有实根。 解:程序框图为

- 28 -

算法初步教学实践·东莞群英学校·梁斌玉

开始 输入 a,b,c
? ? b2 ? 4ac ? ? 0成立?
No Yes

输出 输出 :: 没有实根 没有实 根

y0 ?成立? x2 ??
Yes

No

x1 ? x2 ?

?b ? ? 2a ?b ? ? 2a

x?

?b 2a

输出x1 , x2

输出x

结束 将程序框图改写为 QuickBASIC 程序 INPUT a,b,c D=b^2-4*a*c IF D>=0 THEN IF D>0 THEN x1=(-b+sqr(D))/2*a x1=(-b-sqr(D))/2*a PRINT “x1=”;x1,”x2=”;x2 ELSE x=-b/2*a PRINT “x=”;x END IF ELSE PRINT “No root.” END IF END
- 29 -

算法初步教学实践·东莞群英学校·梁斌玉

例 4 排序 编写一个程序,使得任意输入的 3 个整数按从大到小的顺序输出。 算法分析: 我们用 a,b,c 表示输入的三个整数,比较三个整数,把最大的整数存入变量 a 中,次大的整数存入 b 中,最小的整数存入 c 中。 Step1:输入三个整数 a,b,c; Step2:将 a 与 b 比较,如果 a<b,交换它们的值; Step3:将 a 与 c 比较,如果 a<c,交换它们的值; (第 2 步和第 3 步后,a 中存储的已经是最大的整数) Step4:将 b 与 c 比较,如果 b<c,交换它们的值; (第 4 步后,b 中存储的是次大的整数,c 中存储的是最小的整数) Step5:按顺序输出 a,b,c。 解:程序框图为

- 30 -

算法初步教学实践·东莞群英学校·梁斌玉

开始 输入a,b,c
b ? a?
No

Yes
t?a

a?b b?t

c ? a? Yes
t?a

No

a?c
c?t

c ? b?
No

Yes
t?b

b?c
c?t

输出a,b,c 结束 根据程序框图,写出计算机程序为:

- 31 -

算法初步教学实践·东莞群英学校·梁斌玉

INPUT

“a,b,c=”;a,b,c

IF b>a THEN t=a a=b b=t END IF IF c>a THEN t=a a=c c=t END IF IF c>b THEN t=b b=c c=t END IF PRINT a,b,c END

[练习] 1.读程序,说出该程序的功能。 INPUT “Please input an inter:”;x IF 9<x AND x<100 THEN a=x\10 b=x MOD 10 PRINT a,b END IF END 数学运算 程序符号 且 AND OR 或
a?b a/b a ? b 的商 a\b a ? b 的余数

a MOD b

注:1.在程序中用“AND”表示“且” ,用“OR”表示“或” 。 a ? b a ? b 2. 用 “a/b” 表示, 而 商用 “a\b” 表示。 例如 34\10=3,57\8=7。 3. a ? b 的余数用“a MOD b”表示,例如 34 MOD 10=4,57 MOD 8=1。 2.编写程序,判断一个整数是偶数还是奇数,即从键盘上输入一个整数, 输出该数的奇偶性。 3.闰年是指年份能被 4 整除但不能被 100 整除,或者能被 400 整除的年份。
- 32 -

算法初步教学实践·东莞群英学校·梁斌玉

编写一个程序,判断输入的年份是否为闰年。 4.编写一个程序,输入两个整数 a,b,判断 a 是否能否被 b 整除。

( x ? 1) ?x ? 5.已知函数 y ? ? 2 x ? 1 (1 ? x ? 10) 编写一个程序, 输入自变量 x 的值, 输 ? 3 x ? 11 ( x ? 10) ?
出相应的函数值。

1.2.3 循环语句 算法中的循环结构是由循环语句来实现的。

WHILE 循环体 循环体 WEND 满足条 件? No
Yes

条件

循环结构框图 循环语句 当计算机遇到 WHILE 语句时,先判断条件是否成立,如果符合条件,就执 行 WHILE 和 WEND 之间的循环体;然后再检查条件,如果仍然符合,再次执行循 环体,这个过程反复进行,直到某一次条件不符合为止。这时计算机将不执行 循环体,直接跳到 WEND 之后,执行 WEND 之后的语句。

例 1 设计一个计算 1 ? 2 ? 3 ? ? ? 100 的算法 解:程序框图为

- 33 -

算法初步教学实践·东莞群英学校·梁斌玉

开始
i ?1 S?0

i ? i ?1 S ? S?i

i ? 100?
No

Yes

输出S

结束 该程序框图对应的程序是 i=1 S=0 WHILE i<=100 S=S+i i=i+1 WEND PRINT END “The sum is”;S

为了理解程序,请填写下表 圈数 i s ① 1 ② 2 3
(1 ? 1 ?









? 100
99) ? 100

- 34 -

算法初步教学实践·东莞群英学校·梁斌玉

[思考] 请将程序框图和相应的语句对应起来。 例 2 下面是一个计算 2 ? 4 ? 6 ? 解:程序框图
? 100 的算法,请补充完整。

开始
i ? ___
S ? __

i ?i?2

S ? S ? ___

i ? ___?
No

Yes

输出S

结束 该程序框图对应的程序是 i=___ S=____ WHILE i<______ S=S+___ i=i+2 WEND PRINT END “The sum is”;S

为了理解该程序, 请模仿例 1 制作表格。

- 35 -

算法初步教学实践·东莞群英学校·梁斌玉

例 3.编写一个程序,输入大于 2 的整数 n,由计算机判断它是不是质数 (Prime Number) 。 解:程序框图为 开始 输入整数n
i?2

r ?1

i ? i ?1

r ? n MOD i

i ? n且r ? 0
No r ? 0? No

Yes

Yes

输出:n不是质数

输出:n是质数

结束 程序为: INPUT i=2 r=1 “n=” ;n

WHILE i<n AND r<>0 r= n MOD i i=i+1 WEND
- 36 -

算法初步教学实践·东莞群英学校·梁斌玉

IF r=0 THEN PRINT “n is not a prime mumber.” ELSE PRINT “n is a prime mumber.” END IF END 如果 n= 35,请填写下表 圈数 ① ② ③ ④ ⑤ i 2 3 r 1 输出结果为:___________________________。 如果 n=11,请填写下表 圈数 ① ② ③ ④ ⑤ ⑥ ⑦ i 2 3 r 1 输出结果为:___________________________。







[练习] 1. 编写程序,输入正整数 n,计算它的阶乘 n ! ? 1 ? 2 ? 3 ?
3 4 5 2. 编写程序,计算下面 n 个数的和: 2, , , , 2 3 4 , n?1 。 n

?n。

3. 某牛奶厂 2002 年初有资金 1000 万元,由于引进了先进的设备,资金年 平均增长率可达到 50%。请你设计一个程序,计算这家牛奶厂 2008 年 底的资金总额。 (还未最终定稿,请不要转发,如有见教,请发信至 waterwoodl@163.com. QQ25804226)

- 37 -


推荐相关:

算法初步知识点归纳_数学_高中教育_教育专区。第一章算法初步 1.1.1 算法的...(2) :若 0 =0,则 n R0 ≠0, R S R (3) 则用除数 n 除以余数 0...


高中数学复习讲义:第10章 算法初步与框图_其它课程_高中教育_教育专区。高中数学...答案:解析:算法 1: S1.再找一个大小与 A 相同的空杯子 C; S2.将 A ...


2k S=S+a S=S+a k=k+1 是否 否是 输出 S 结束 输出 S 结束 输出 S 结束 ① ② ③ 三、可以自己写出算法、画出框图、解决问题 8. 已知数列 {an}...


算法初步教学实践讲义_工学_高等教育_教育专区。算法讲义算法初步教学实践·东莞群英...我们可以设一个变量 S,它就像一个储物箱,一 ,它就像一个储物箱, 开始 S...


算法初步练习题(学生讲义)_其它课程_高中教育_教育专区。§1 算法初步 ? 理解...2 ? s 是 输出 s 结束 7题 A ? A ?1 B ? 2B ?1 否 A?5 否 ...


《黄冈理科高中数学必修 3》——精讲 走进黄冈理科,成就人生理想 算法初步讲义...[ ?1,3] ,则输出 s 属于 ) ) A. [?3, 4] B. [?5, 2] C. [...


算法初步经典的教案_数学_高中教育_教育专区。算法初步与框图 一、知识网络算法概念...3 评注: (1) 解题关键是选择好计数变量 i 和累加变量 S 的初始值,并写出...


高中数学必修3-算法初步精讲_高一数学_数学_高中教育_教育专区。算法初步精讲 ...T ←1 S ←0 For I from 1 to n T ←T ×I SS+I End for ...


算法初步比较经典的教案_数学_高中教育_教育专区。算法初步与框图 一、知识网络...9 ,此时 S ? 100 不成立,输出结果是 7,程序框图表示的算法功能是求使 1×...


高老师 高中数学算法初步和统计综合讲义 8日 备课时间: 2013 年 8 月 6 日 掌握程序框图的概念;会用通用的图形符号表示算法,掌握算法的三个基 本逻辑结构;...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com