找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2615|回复: 0
打印 上一主题 下一主题
收起左侧

算法

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-25 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

对于算法的描述有很多方法,如自然语言、流程图、计算机语言和伪代码等,其中使用最广泛的是流程图。流程图主要有传统的流程图和N-S流程图。
1.传统的流程图
传统的流程图采用特定符号描述算法,常用的符号及其功能如下:


传统流程图的特点是算法描述灵活自由,形象直观。但是由于它允许使用流程线任意转移,这在程序设计时留下隐患。如果在程序中允许流程毫无限制地任意转移,就会使程序如同一团乱麻,难以阅读和维护。于是有人提出了结构化程序设计的思想,主张限制这种无规律的任意转向,而用3种基本结构作为构成程序的基本单位。这样就限制了流程线的使用。也就是说,结构化程序可以不采用带流程线的传统流程图来描述算法,而用N-S流程图来描述。

2.N-S流程图
N-S流程图是一种新的流程图形式,在这种流程图中,完全去掉了带箭头的流程线,全部算法写在一个矩形框内,在该矩形框内还可以包含其它的从属于它的框。N-S流程图很适于表示结构化程序算法。
与结构化程序设计思想相对应,N-S流程图中有3种最基本的结构,它们分别是:顺序结构、分支结构和循环结构,如下图所示:

(1)顺序结构
它表示A和B两个框组成一个简单的顺序结构,在执行完A框操作之后,顺序执行B框操作。
(2)分支结构
它表示当条件成立时执行A框操作,条件不成立时执行B框操作。
(3)循环结构
循环结构有两种情况,一种是当型循环情况,它表示当型条件成立时重复执行A框操作,条件不成立时结束循环;还有一种是直到型循环结构,它表示重复执行A框操作,直到条件成立为止。
N-S流程图的每个基本结构都是一个矩形框,在一个基本结构中可以嵌套另一个基本结构,整个算法可以像堆积木一样堆成,三种基本结构组成的算法能够解决任何复杂问题。

N-S流程图保留了传统流程图形象直观地表示算法的优点,但去掉了容易导致非结构化的流程线。使用N-S流程图设计算法可以使自己养成结构化程序设计的良好风格,但N-S流程图的修改不大方便。

算法是解决某一问题的方法和步骤。程序实际上就是用计算机语言描述的算法。程序设计时应认真分析问题,找出合适的算法和数据结构。解决同一问题的算法可能有很多,但它们的效率却可能相差很多,选择合适的算法可能会大大降低程序设计的复杂程序,提高程序的运行效率和存储效率。
计算机所能执行的算法必需具备以下几个特性:
(1)有穷性
算法是一个有穷的计算机操作的序列,即计算机可以按照算法的规定从一个惟一的初始动作开始,经过执行有限次数的操作后终止。
(2)可行性
算法中规定的每个操作都是计算机可以执行的基本操作。
(3)确定性
算法中的每个操作应执行何种动作必须是确定的(即无二义性)且每个操作都只有一个后继操作。对于一组给定的数据,同一个算法对应的程序在计算机上的执行过程是可以再现的,执行结果也是确定的。
(4)输入
一个算法可以有0个或多个输入,即算法中要用到的一组初始数据,可以在算法中确定,也可以在程序运行时由用户通过输入设备(如键盘)输入到计算机中。
(5)输出
一个算法必须产生一个或多个输出,即程序在运行时将产生一组与输入的初始数据相对应的输出数据。一个没有输出的算法是没有任何意义的。

计算机所能执行的算法必需具备以下两个要素:
(1)操作
即构成算法的操作取自哪个操作集。计算机操作主要包括:算术运算、关系运算、逻辑运算、函数运算、位运算及I/O操作等。由于不同的计算机语言对应的操作集略有不同,所以在设计算法前,应先确定编程语言。
(2)控制结构
即如何控制算法中的各操作的执行顺序。通常情况下,各操作是按照书写的顺序执行的,若要改变这种执行顺序可以通过流程控制语句来实现。不同的计算机语言中的流程控制语句也有所不同。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表