算法和流程图
一、学习目的和学习内容
学习各种软件的使用——>让计算机按照我们的意图去完成一件事——>编程序(软件)给别人用;
国际信息学(计算机)奥林匹克竞赛——全国中学生信息学奥赛——江苏省中学生信息学奥赛;
比赛的内容就是编程比赛;这也是我们的学习目的和内容;
计算机程序设计语言:人类语言——>用程序设计语言(如 Pascal 语言)表示——>再翻译成机器语言;
二、计算机解决问题的步骤
做任何一件事都要有一定的的步骤,如求 1+2+3+4+5+6+7+8+9+10;
计算机解题步骤:分析问题
——>确定解决问题的方法和步骤(即算法)
——>选择一种计算机语言,根据算法编写计算机程序
——>让计算机执行这个程序获得结果
三、算法的概念
1、为解决某一个问题而采取的方法和步骤,称为算法。或者说算法是解决一个问题的方法的精确描述。
如: 已知半径,计算圆的面积的算法。
算法 读入半径 R 的值——>计算圆的面积 S=π*R*R——>输出圆的面积 S。
注意:算法不一定唯一,如求 1+2+3+4+5+6+7+8+9+10 的算法。
2、算法的特点:
①有穷性:必须在执行了有穷个计算步骤后终止;
①确定性:每一个步骤必须是精确的、无二义性的;
①可行性:可以用计算机解决、能在有限步、有限时间内完成;
①有输入:
①有输出:
四、算法举例
例一:交换两个大小相同的杯子中的液体(A 水、B 酒)。
算法 1:
1、再找一个大小与 A 相同的空杯子 C;
2、A——>C;
3、B——>A;
4、C——>B;结束。
或(B——>C、A——>B、C——>A)
算法 2:
1、再找两个空杯子 C 和 D;
2、A——>C、B——>D;
3、C——>B、D——>A;结束。
注意:一个算法往往具有代表性,能解决一类问题,如例一可以引申为:交换两个变量的值。
例二:输入 1 个数给计算机,若为正数则打印出来。
算法:①输入 1 个数——>X;
①判断 X>0 ?;
①若 X>0,则打印 X;结束。
例三:分别输入 10 个数,打印出其中的正数。
算法1:设 T 为计数器。
①输入第一个数——>X,1——>T;
①判断 X>0 ? ;
①若 X>0,则打印输出;
①判断 T>10 ?
①若 T>10,则表示 10 个数已经处理完,结束。
否则,再输入下一个数——>X,且 T+1——>T,然后转①继续执行。
例四:从 10 个数中挑选出最大的一个数,打印输出。
诱导:以从 10 个人中挑出最高的人为例,让学生发挥想象。
算法 1:“打擂台”或“比武招亲”,设 MAX 为大力士,T 为计数器。
①先输入 1 个数——>MAX,1——>T; (擂主)
①再输入下一个数——>X,T+1——>T; (上一个挑战者)
①比较 X>MAX ?; (比武)
①若 X>MAX 成立,X——>MAX; (打败擂主,即新的大力士产生)
否则,MAX 仍然是最厉害,即值不变;(败下阵来)
①判断 T=10 ?; (看看还有没有挑战者)
①若 T=10 成立,则说明 10 个数已比较玩,最大的数在 MAX 中,输出 MAX 即可; (颁奖)
否则,转①继续找下一个挑战者比武。 (下一个)
算法 2:两个两个打(淘汰赛)。
例五:计算 1*2*3*4*5*6*7*8*9*10。
描述:阶乘 10!
算法 1:找两个容器 T 和 I;T 为累乘器,初值为 1;I 为计数器,初值为 1。
①1——>T,1——>I;
①T*I——>T;
① I+1——>I;
①判断 I>10 ?
①成立,则输出 T,结束。
否则,转①继续乘。
提问:1、T 的初值可不可以为 0?不能
2、I 的初值可不可以放 0?不能
3、I 的初值可不可以放 2?可以
2 3 4 5 761 1098
4、I 可不可以放 10?可以,怎么改算法?让学生完成。
5、可不可以先判断后执行?
6、现在要求 1+2+3+4+5+6+7+8+9+10,如何办?让学生完成。
五、算法的表示形式
1、 文字描述:二义性,如:甲叫乙把他的书拿来;小明连王刚都不认识;
2、 伪代码:用符号,不直观;
3、 流程图:简洁、直观、无二义性。有很多种,我们学 N-S 流程图。
六、结构化程序设计和 N-S 流程图
经过证明:任何一个算法都可以用以下 3 种基本结构表示:
1、顺序结构:例一;
2、分支结构:例二、例三中的①①、例四中的①①;
3、循环结构:例三中的①①、例四中的①①、例五;
两种循环:直到型和当型。
相应的 N-S 图:
注意:一个算法往往需要几个简单结构复合在一起才能表示,即复合结构。
练习:用 N-S 图画出以上 5 个例子的流程图,举例让学生模仿。
当型循环
例五
例四(算法一)
A
B
C
当条件成立时做
A
直到条件成立时为止
A
将第一个数—>MAX,将 1—>T
将下一个数—>X,T+1—
>T
直到 T=10 为止
输出 MAX
X > MAX
Y N
X ——> MAX
条件
成立 不成立
A B
1—>T,1—>I
直到 I>10 为止
输出 T
T*I—>T
T+1—>T
例一(算法 1) 例二
例三
让学生将直到型循环和当型循环相互转换:关键是条件的取反。
七、课后作业
1、 求 1+1/2+1/3+1/4+……+1/10。
2、 求两个自然数的最大公约数。
要求:写出算法,画出相应的 N-S 流程图。
第 1 题
第 2 题
找一个 C
A——>C
B——>A
C——>B
输入 1 个数——>X
X>0
Y N
打印 X
输入第一个数——>X,1——> T
当 T<=10 做
X > 0
Y N
打印 X
输入下一个数——>X
T+1——>T
0——>S ,1——>T
当 T < = 10 做
输出 S
S + 1 / T ——> S
T + 1——> T
输入 M,N
当 N<>0 时做
输出 M
M
除
以
N
的
余
数
—
>
R
N
—
>
M
R
—
>
N