![算法学习与应用从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/518/22691518/b_22691518.jpg)
1.3 在计算机中表示算法的方法
知识点讲解:光盘:视频讲解\第1章\在计算机中表示算法的方法.avi
在1.2.1节中演示的算法都是通过语言描述来体现的。其实除了语言描述之外,还可以通过其他方法来描述算法。在接下来的内容中,将简单介绍几种表示算法的方法。
1.3.1 用流程图来表示算法
流程图的描述格式如图1-1所示。
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0022_0001.jpg?sign=1739673370-KIkfC4Q4wi2s9cALundwVLB7z3CXM4vQ-0-a92f0e7fbaee3024b7c838dac4e64ae9)
图1-1 流程图标识说明
再次回到1.2.1节中的问题。
假设有80个学生,要求打印输出成绩在60分以上的学生。
针对上述问题,可以使用图1-2所示的算法流程图来表示。
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0022_0002.jpg?sign=1739673370-W34tZ9298W30xPKwV60Yx4Uk2INi4TLR-0-8f5340c27b18f3a076c097fbcc8dc296)
图1-2 算法流程图
在日常流程设计应用中,通常使用如下3种流程图结构。
① 顺序结构。顺序结构如图1-3所示,其中A和B两个框是顺序执行的,即在执行完A以后再执行B的操作。顺序结构是一种基本结构。
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0022_0003.jpg?sign=1739673370-ynHaSn9JCnrE9U6t4P9Or66CqyPPFGjT-0-94b3791e05ec4d73872ca4a5daa7cae2)
图1-3 顺序结构
② 选择结构。选择结构也称为分支结构,如图1-4所示。此结构中必含一个判断框,根据给定的条件是否成立来选择是执行A框还是B框。无论条件是否成立,只能执行A框或B框之一,也就是说A、B两框只有一个,也必须有一个被执行。若两框中有一框为空,程序仍然按两个分支的方向运行。
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0022_0004.jpg?sign=1739673370-PLbyXvDULqN7USirqGxWoaGvWDsz4gFF-0-d25550c75839b1618b33cfe80f8f8407)
图1-4 选择结构
③ 循环结构。循环结构分为两种,一种是当型循环,一种是直到型循环。当型循环是先判断条件P是否成立,成立才执行A操作,如图1-5(a)所示。而直到型循环是先执行A操作再判断条件P是否成立,成立再执行A操作,如图1-5(b)所示。
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0022_0005.jpg?sign=1739673370-NmbpADjN5UnjgY7nyRDLql1qPIu62NRb-0-d5436de66fd3c263a1fdcdf724f52f27)
图1-5 循环结构
上述3种基本结构有如下4个特点,这4个特点对于理解算法很有帮助。
① 只有一个入口。
② 只有一个出口。
③ 结构内的每一部分都有机会被执行到。
④ 结构内不存在“死循环”。
1.3.2 用N-S流程图来表示算法
在1973年,美国学者提出了N-S流程图的概念,通过它可以表示计算机的算法。N-S流程图由一些特定意义的图形、流程线及简要的文字说明构成,能够比较清晰明确地表示程序的运行过程。人们在使用传统流程图的过程中,发现流程线不一定是必需的,所以设计了一种新的流程图,这种新的方式可以把整个程序写在一个大框图内,这个大框图由若干个小的基本框图构成,这种新的流程图简称N-S图。
遵循N-S流程图的特点,N-S流程图的顺序结构图1-6所示,选择结构如图1-7所示,循环结构如图1-8所示。
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0023_0001.jpg?sign=1739673370-N37jEoclGm9Bl509hnM22a1wXb1ivTlh-0-8b9fad5197c9a022a850a619fab10aff)
图1-6 顺序结构
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0023_0002.jpg?sign=1739673370-KxEVAwb6RgymfDg1Bie7ld1xYCT6pDHT-0-be43989c52634dc8e6fabbb4cdc20e5a)
图1-7 选择结构
![](https://epubservercos.yuewen.com/CD8D81/11261876703070106/epubprivate/OEBPS/Images/figure_0023_0003.jpg?sign=1739673370-U0FIH0zunA3fKwbdrXnGebuOUnYC9yzm-0-fe93282ad03a460105f61aaa551b0f42)
图1-8 循环结构
1.3.3 用计算机语言表示算法
因为算法可以解决计算机中的编程问题,是计算机程序的灵魂,所以,可以使用计算机语言来表示算法。当用计算机语言表示算法时,必须严格遵循所用语言的语法规则。再次回到1.2.1节中的问题:1×2×3×4×5,如果用C语言编程来解决这问题,可以通过如下代码实现。
main(){ int i, t; //定义两个变量 t=1; i=2; //t初始值为1, i初始值为2 while(i<=5){ t=t*i; i=i+1; } printf("%d", t); }
上述代码是根据1.2.1节中的语言描述算法编写的,因为是用C语言编写的,所以,需要严格遵循C语言的语法。例如在上述代码中,主函数main()、变量和printf()输出信息都遵循了C语言的语法规则。