算法的表示
可用不同的方法表示算法,常用的有:自然语言、流程图、伪代码。
1) 用自然语言表示算法
自然语言是人们的日常用语(汉语、英语或其它语言)。
简单的算法通俗易懂
自然语言
较复杂算法,描述不清,易出现“歧义性”
2)用流程图表示算法
用一些图框来表示各种操作。用图形表示算法,直观形象,易于理解。

求5!,用流程图表示


小结:
流程图是表示算法的较好的工具。一个流程图包括以下几部分:
(1)表示相应的操作框;
(2)带箭头的流程线;
(3)框内外必要的文字说明。
但流程图画起来比较费事,因此常用伪代码表示算法。
3) 用N-S流程图表示算法
1973年美国学者I.Nassi和B.Shneiderman根据基本结构提出了N-S流程图。N-S流程图中没有带箭头的流程线。全部算法写在一个矩形框内,在该框内包含一些基本框。这种流程图又称N--S结构化流程图。
N-S流程图用以下的流程图符号:

求5!,用N-S图表示


将例2.2的算法用N-S图表示。
(打印50名学生中成绩高于80分的学号和成绩)


小结:N-S图表示算法的优点
比文字描述直观、形象、易于理解;
比传统流程图紧凑易画;
用N-S图表示的算法都是结构化的算法,只能自上而下地顺序执行。
4)用伪代码表示算法
概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。
特点:书写方便 、格式紧凑,容易看懂,也便于向程序过渡。
求5! 用伪代码表示算法:
BEGIN
1-> t
2 -> i
while i≤5
{t×i ->t
i +1 ->i}
print t
END
小结:
伪代码书写格式比较自由,易于修改;
流程图不便修改,但伪代码不如流程图直观。
5)用计算机语言表示算法
概念:用计算机实现算法。计算机无法识别流程图和伪代码,只有用计算机
语言编写的程序才能被计算机执行。
特点:用计算机语言表示算法必须严格遵循所用的语言的语法规则。
将例2.1用C语言表示。
#include <stdio.h>
void main( )
{ int i,t;
t=1; i=2;
while(i<=5)
{ t=t*i;
i=i+1; }
printf(″%d\n″,t); }
思考:
<1> 求 1×3×5×7×9×11
<2> 求 n!
例2.2 有50个学生,要求将成绩在80分以上的学生学号和成绩输出。n表示学号,g表示成绩, 算法表示如下:
变量i用来控制序号(第几个学生)。
S1:1 → i
S2:若gi≥80,则输出学号和成绩;否则不输出。
S3:i+1→ i
S4:若i≤50,转S2继续执行;否则算法结束。
用流程图表示


用伪代码表示算法:
BEGIN{算法开始}
1 →i
while i≤50
{ input ni and gi
if gi≥80 print ni and gi
i+1 →i}
END{算法结束}
编程:
#include <stdio.h>
void main( )
{ int i, n, g ;
i=1 ;
while (i <= 50)
{ scanf(“%d,%d”,&n,&g);
if (g>=80)
printf (“%d,%d\n”,n,g);
i=i+1 ;} }
小结:
1)算法即解决一个问题而采取的方法和步骤。
2)对相同问题,可有不同的解题方法和步骤。
3)算法有多种描述方式,可用流程图、伪代码、计算机语言等形式表示算法。
例2.3 判定2000~2500年中的每一年是否闰年,将结果输出。
分析:闰年的条件
(1)能被4整除,但不能被100整除的年份是闰年,如1996,2004年;
(2)能被100整除,又能被400整除的年份是闰年,如1600,2000年。
|
不符合这两个条件的年份不是闰年。
“其它” 包括能被4整
除,又能被100整除,
而不能被400整除的那
些年份(如1990)是非
闰年。
设y为被检测的年份,算法可表示如下 :
S1:2000→ y
S2:若y不能被4整除,则输出y “不是闰年”,转到S6。
S3:若y能被4整除,不能被100整除,则输出y “是闰年”,转到S6。
S4:若y能被100整除,又能被400整除,输出y “是闰年” , 转到S6。
S5: 输出y “不是闰年”。
S6:y+1→ y
S7:当y≤2500时,转S2继续执行,如y>2500,算法停止。
课堂作业:用流程图描述该算法。
板书讲解
例2.4求
单词作变量名易于理解:
sum表示累加和; sign代表数值的符号;deno代表分母;term代表某一项。
算法如下 :
S1:sum=1
S2:sign=1
S3:deno=2
S4:sign=(-1)×sign
S5:term=sign×(1/deno)
S6:sum=sum+term
S7:deno=deno+1
S8:若deno≤100返回S4,否则算法结束。
用流程图表示




