描述算法有多种工具有自然语言、传统流程图、N-S流程图、伪码等。
一、用自然语言表示算法
用自然语言表示算法,通俗易懂。特别适用于对顺序程序结构算法的描述。但自然语言存在二义性,在使用时,要特别注意算法逻辑的正确性和操作的精准性。比如,判断正整数数n是不质数的自然语言算法描述。
①输入正整数n,置除数i的值为2;
②n除以i取余数r;
③判断余数r是否为零,如果r为零,则转⑥,否则继续;
④除数增加1;
⑤判断除数i是否小于n-1,如果i小于n-1,则跳转到②,否则⑦;
⑥输出n不是质数,结束;
⑦输出n是质数,结束。
二、用流程图表示算法
1.传统流程图
传统流程图四框一线,符合人们思维习惯,用它表示算法,直观形象,易于理解(教材中有详细说明,此处略)。仅举一例,判断素数算法用流程图表示如下:
选择结构:当条件P成立时,则执行A语句,否则执行B语句。
当型循环结构:当条件P1成立时,则循环执行A语句。
直到型循环结构:循环执行A语句,直到条件P1成立为止。
三、伪代码表示算法
用流程图表示算法,直观易懂,但画起来比较费劲,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的,因此,流程图适用于表示一个算法,但在设计算法的过程中使用却不是很理想,尤其当算法比较复杂、需要反复修改时。为设计算法时方便,就产生了伪代码。伪代码是介于自然语言和机器语言之间用文字和符号来描述算法的,它不用图形符号,因此书写方便,格式紧凑,也比较好懂。虽然伪代码不是一种实际的编程语言,但是在表达能力上类似于编程语言,同时避免了描述技术细节带来的麻烦,所以伪代码更适合描述算法,故被称为“算法语言”或“第一语言”。伪代码便于向计算机语言算法(如C语言、Java)过渡。
伪代码的7个主要部分:
(1) 算法名称
(2)指令序列
(3)输入/输出
(4)分支选择
(5)赋值
(6)循环
(7)算法结束
1.算法名称
两种表示算法的伪代码:
c语言while语句流程图过程(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)
{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论