程序的灵魂——算法


软件工程的思想告诉我们,软件包含两部分内容,一部分是计算机可执行的程序和相关的数据,一部分是与程序及数据有关的描述性文档。也即:软件=程序和数据+文档。对于一个毫无开发经验,刚开始学习计算机编程的人而言,注意力就放在了程序上面,那么程序是由什么组成的呢?它的精华之处在什么地方呢?

程序包含两方面的内容。

一是对数据的描述。想要使用某个数据,就必须声明其类型、作用范围、使用规范、组织形式等,这就是数据的描述。

二是对操作的描述。想要实现什么样的功能,具体该如何做,数据该如何使用和处理等,这就是对操作的描述。也就是算法。

著名计算机科学家沃思(NiklausWirth)提出一个公式:

算法 + 数据结构 = 程序

其中算法是程序的灵魂。

为什么这么说,举个例子,比如说计算1-100的累加和,有人可能先进行 1+ 2 ,再将结果加上3,然后再将结果加上4,以此类推,一直加到 100。而有的人会将 1 + 100,然后乘以50即可同样得出答案。

在C语言中分别用以下代码来实现:

方法1

for(i = 1; i <= 100; i++)

{

       sum+= i;

}

方法2

sum = (1+100)*100/2;

以上两个实现中,第一个时间复杂度为n,第二个时间复杂度为1,程序的执行效率差异呈几何递增,由于现在计算机的数据处理性能都比较强大,对于这样一个小程序运行处理时间差异不会很明显,但是对于大型软件项目中,程序的执行效率高低与否就显得至关重要,因为这直接会影响到用户体验。此时,合理的算法设计是非常关键的。

那么接下来就来了解一下和程序有关的算法。

 

 

算法的特点:

1.      有穷性。

包含有限的操作步骤。

2.      确定性。

算法中的每一个步骤都应当是确定的。

3.      有零个或多个输入。

输入是指在执行算法时需要从外界取得必要的信息。

4.      有一个或多个输出。

算法的目的是为了求解,“解” 就是输出。

5.      有效性。

算法中的每一个步骤都应当能有效地执行,并得到确定的结果。

 

 

怎样表示算法:

1.      自然语言。

自然语言就是人们日常使用的语言,可以使汉语、英语、法语等语言。

用自然语言通俗易懂,但是文字冗长,容易出现二义性。

2.      流程图。

流程图是用一些图框来表示各种操作。

用图形法表示算法,直观形象,易于理解。

Microsoft Office Visio 2003中常见的几种图元:


起止框


判定框


数据框


进程框


流程线


流程图示例


除基本流程图外,还有改进的流程图、N-S流程图等可以用来表示算法。

3.      用伪代码表示算法。

用流程图等图形工具来表示算法虽然简单明了,但是图形绘画和设计比较麻烦,而且实际中的算法需要进行动态修改,此时使用图形表示就不会很方便。这里就可以用伪代码来表示算法。

伪代码是用介于自然语言和计算机语言之间的文字和符号来表示算法。

例如打印输出x的绝对值,可以用下面伪代码实现:

如果x>0;

Print x;

如果 x<0;

Print –x;

 

4.      用计算机语言表示算法。

例如输出1+2+3+……+100的值,可以用下面的C语言代码来实现:

<span style="font-size:14px;">#include <stdio.h>
void  main()
{
	int sum = 0;
	int i;
	for (i = 0; i<=100; i++)
	{
	sum+=i;
	}
	printf(“1+2+3+....+99+100=%d”,sum);
}</span>


以上就是对程序算法的一些概念性总结。

掌握了程序算法的概念,也就是成为一名程序员的第一步,这对于以后编写出具有优良性能的程序是非常重要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值