2024年5月15日发(作者:)
描述算法有多种工具有自然语言、传统流程图、N-S流程图、伪码等。
一、用自然语言表示算法
用自然语言表示算法,通俗易懂。特别适用于对顺序程序结构算法的描述。但自然语言
存在二义性,在使用时,要特别注意算法逻辑的正确性和操作的精准性。比如,判断正整数
数n是不质数的自然语言算法描述。
①输入正整数n,置除数i的值为2;
②n除以i取余数r;
③判断余数r是否为零,如果r为零,则转⑥,否则继续;
④除数增加1;
⑤判断除数i是否小于n-1,如果i小于n-1,则跳转到②,否则⑦;
⑥输出n不是质数,结束;
⑦输出n是质数,结束。
二、用流程图表示算法
1.传统流程图
传统流程图四框一线,符合人们思维习惯,用它表示算法,直观形象,易于理解(教材
中有详细说明,此处略)。仅举一例,判断素数算法用流程图表示如下:
2.用N-S流程图表示算法
N-S流程图是由美国人和erman共同提出的,其任何算法都是3种基
本结构组成的,那么各基本结构之间的流程线就是多余的,因此去掉了所有的流程线,将全
部的算法写在一个矩形框内。N-S流程图比较容易描述较复杂的选择结构和循环结构。这种
流程图描述顺序结构、选择结构、当型循环结构、直到型循环结构如下图所示。
顺序结构:程序执行完A语句后接着执行B语句。
A
B
选择结构:当条件P成立时,则执行A语句,否则执行B语句。
当型循环结构:当条件P1成立时,则循环执行A语句。
直到型循环结构:循环执行A语句,直到条件P1成立为止。
用N-S流程图表示判断数n是否为素数的算法。
开始
输入n的值
i = 2
n除i取余→r
r==0
是
否
i=i+1
显示n不是质数 i>n-1
显示n是质数
结束
三、伪代码表示算法
用流程图表示算法,直观易懂,但画起来比较费劲,在设计一个算法时,可能要反复修
改,而修改流程图是比较麻烦的,因此,流程图适用于表示一个算法,但在设计算法的过程
中使用却不是很理想,尤其当算法比较复杂、需要反复修改时。为设计算法时方便,就产生
了伪代码。伪代码是介于自然语言和机器语言之间用文字和符号来描述算法的,它不用图形
符号,因此书写方便,格式紧凑,也比较好懂。虽然伪代码不是一种实际的编程语言,但是
在表达能力上类似于编程语言,同时避免了描述技术细节带来的麻烦,所以伪代码更适合描
述算法,故被称为“算法语言”或“第一语言”。伪代码便于向计算机语言算法(如C语言、
Java)过渡。
伪代码的7个主要部分:
(1) 算法名称
(2)指令序列
(3)输入/输出
(4)分支选择
(5)赋值
(6)循环
(7)算法结束
1.算法名称
两种表示算法的伪代码:
过程(Procedure) 函数(Function)
过程和函数的区别是: 过程是执行一系列的操作,不需要返回操作的结果,无返回数
据;函数是执行一系列的操作后,要将操作的结果返回,有返回数据。
算法伪代码的书写规则:
procedure <算法名> ([<参数列表>])
function <算法名> ([<参数列表>])
如:procedure Hanoi_Tower() 表示名为Hanoi_Tower的一个过程
function Fac(x) 表示名为Fac的一个函数
2.指令序列
指令序列的书写规则:
用Begin作为开始、用End作为结束;
用“{”作为开始、用“/}”作为结束。
例如:
Begin
指令序列;
End
或者:
{
指令序列;
/}
3.输出/输出
输入:Input
输出:Output 或 Return
4.分支选择
两种分支:
if <条件> Then
{
指令序列
}
If <条件>Then
{
指令序列1
}
else
{
指令序列2
}
5.赋值
用:=或者←作为赋值操作符,表示将赋值号右边的值赋值给左边的变量。
例如: x:=x+1 或: y←x*x
6.循环
两种方式:计数式循环和条件式循环。
(1)计数式循环
for 变量:=初值 To 终值
{
指令
}
循环次数: (终值−初值+1)
(2)条件式循环
While (条件) do
{
指令
}
条件为真,则循环执行指令,直到条件为假。
7.算法结束
关键字End的后面加上算法名称,表示算法结束,是算法的最后一句。
例如:
End Hanoi_Tower
End Fac
分别表示算法Hanoi_Tower和Fac的结束。
用伪代码表示判断n是否为质数的算法如下:
procedure isPrime()
{
input n
for i:=2 to n-1
if(n%i=0)
{
break
}
if(i output(“n不是质数”) else output(“n是质数”) } 四、用计算机语言表示算法 程序设计的最终目标是要用一种计算机语言来表示算法,常用的程序设计语言有C、C++、 Java等。下例用C语言表示判断n是否为质数的算法。 #include void main() { int n,i; scanf(“%d”,&n); for(i=2;i if(n%i==0) break; if(i printf(“%d不是质数”); else printf(“%d是质数”); }
发布者:admin,转转请注明出处:http://www.yc00.com/web/1715749001a2665728.html
评论列表(0条)