C语言学习笔记:(四)算法的5种表示方法

目录

一、用自然语言表示算法

二、用流程图表示算法

(一)基本概念及简单实例

(二)三种基本结构

三、用N-S图表示算法

四、用伪代码表示算法

五、用计算机语言表示算法


本节所用例题为计算5!。

一、用自然语言表示算法

例如:

S1:令t=1;

S2:令i=2;

S3:使t与i相乘,将结果放在t中;

S4:使i值加1;

S5:若i的值不大于5,返回重新执行S3、S4与S5;若i的值大于5,则算法结束。

以上算法便为计算5!算法的自然语言描述

用自然语言表示算法虽通俗易懂,但文字冗长,易出现歧义。故除了简单问题外,一般不使用自然语言表示算法。

二、用流程图表示算法

(一)基本概念及简单实例

(1)流程图是用一些图框表示各种操作。其基本符号如下:

C语言学习笔记:(四)算法的5种表示方法_第1张图片

它们的含义分别为:

起止框:表示算法的开始与结束。

判断框:对一个给定的条件进行判断,根据给定的条件是否成立决定如何执行其后的操作。

输入输出框:表示算法的输入与输出操作。

④ 连接点:用于将画在不同地方的流程线连接起来,同时表示算法的执行顺序。 其使用方法如下图:

C语言学习笔记:(四)算法的5种表示方法_第2张图片

处理框:表示一般的处理操作。

注释框:非算法部分,不反映流程与操作。

流程线:用流程线连接各框图,表示算法的执行顺序。

(2)流程图的组成部分

① 表示相应操作的框;

② 流程线(不要忘记箭头)

③ 框内外必要的文字说明。

(3)下面用流程图表示计算5!的算法:

C语言学习笔记:(四)算法的5种表示方法_第3张图片

(二)三种基本结构

(1)顺序结构

C语言学习笔记:(四)算法的5种表示方法_第4张图片

 在执行完A框操作后,紧接着执行B框操作。

(2)选择结构

此结构中必包含一个判断框。如图:

C语言学习笔记:(四)算法的5种表示方法_第5张图片

 根据条件p是否成立来选择执行A框或B框。

A、B框中的某一个框也可为空的,即不用执行任何操作。

(3)循环结构

或称重复结构,用于反复执行某一部分的操作。

当型循环(while型)

例如:当给定的条件p1成立时,执行A框操作,执行完后,再判断条件p1是否成立,如果仍然成立,则如此反复执行A框,当某一次p1条件不成立为止,此时跳出循环。如下图所示:

C语言学习笔记:(四)算法的5种表示方法_第6张图片

直到型循环(until型)

例如:先执行A框,然后判断条件p2是否成立,如果不成立,则再执行A框,然后继续判断条件p2,如果仍不成立,再执行A框,如此反复执行,直到给定的p2条件成立为止,此时跳出循环。如下图所示:

C语言学习笔记:(四)算法的5种表示方法_第7张图片

上面表示计算5!的算法所用的流程图即为until型循环。

(4)共同特点

① 只有一个入口和出口;

② 结构内每一部分都有机会被执行到。

③ 不存在死循环。

由基本结构所构成的算法属于“结构化”算法,不存在无规律的转向。

三、用N-S图表示算法

N-S图又称N-S结构化流程图、盒图,它将全部算法写在一个矩形框内,在该框内可包含它的从属框。也就是说,由一些基本框可以组成一个大的矩形框,即N-S图。

N-S图中三个基本结构的符号如下:

(1)顺序结构。如下所示,A、B两个框组成一个顺序结构。

C语言学习笔记:(四)算法的5种表示方法_第8张图片

(2)选择结构。如下所示,当p条件成立时,执行A操作,p不成立时,执行B操作。

C语言学习笔记:(四)算法的5种表示方法_第9张图片

(3)循环结构。其也分为当型(while型)直到型(until型)两种,分别如下所示:

C语言学习笔记:(四)算法的5种表示方法_第10张图片C语言学习笔记:(四)算法的5种表示方法_第11张图片

当型符号含义为:当p1条件成立时,反复执行A操作,直到p1不成立为止。

直到型符号含义为:反复执行A操作,直到p1条件成立时为止。

下面用N-S图表示计算5!的算法:

C语言学习笔记:(四)算法的5种表示方法_第12张图片

重要结论:

 一个结构化的算法是由一些基本结构顺序组成的;

② 在基本结构之间不存在向前或者向后的跳转,流程的转移只存在于一个基本结构内部(如循环结构中的流程跳转);

③ 一个非结构化算法有时可以等价为一个结构化算法,且功能不变。(具体实例见:C语言程序设计(第五版)谭浩强,图2.12与图2.35,即素数判别算法例题)

四、用伪代码表示算法

伪代码是用介于自然语言与计算机语言之间的文字和符号来描述算法。它无固定的、严格的语法规则,书写格式自由,且易于修改,只要表达清楚意思即可。

下面用伪代码表示计算5!的算法:

begin(算法开始)

    1⇒t

    2⇒i

    while i≤5

      { t*i⇒t

        i+1⇒i

      }

    print t

end(算法结束)

五、用计算机语言表示算法

该方法必须严格遵循所用语言的语法规则

下面用C语言表示计算5!的算法:

#include
int main()
{
    int t,i;
    t=1;
    i=2;
    while(i<=5)
    {
        t=t*i;
        i++;
    }
    printf("%d\n",t);
    return 0;
 } 

参考文献

[1] 计算思维百科——算法的描述
算法的描述 - 计算思维百科 (jsswsq.com)https://wiki.jsswsq.com/index.php?title=%E7%AE%97%E6%B3%95%E7%9A%84%E6%8F%8F%E8%BF%B0&variant=zh[2] C语言程序设计(第五版)谭浩强

你可能感兴趣的:(C语言学习笔记,c语言,算法,学习)