第二章_算法和计算机程序基础
#include main() { int i; float t; t=0; for(i=1;i<=5;i++) t=t+1.0/i; /* 采用计数型循环结构来实现 */ printf(“The t is %f\n”,t); /*输出各项之和计算结果*/ } 求 算法的 c语言表示。 第一步: 将0赋给变量t,将-1赋给变量sign,将1赋给变量i,即 t=0, sign=-1 ,i=1 第二步:将(-1)×sign后再赋给变量sign,即sign=(-1) *sign 第三步:将sign除以i, 即 sign/i 第四步:将t与sign/i相加后再赋给t,即t=t+sign/i 第五步:将i的值加1后再赋给i,即i=i+1 第六步:如果i≦5,返回第二步重新执行。否则终止退出循环 ,执行第七步,此时t中的值就是所求的值。 第七步:打印输出变量t的值。 设t代表各项的累计;i代表项 用自然语言表示计算各项累计的算法为: 【例2.5】 求 的算法 t=1 - 1/2 + 1/3 - 1/4 + 1/5 乘法运算符 计算机硬件元器件的发展,软件也经历一个发展历程。 * 累加器是特殊存储器的一个单元 * 只能可科学计算 * a, b 存储单元 * 通过一个例子来说明程序设计的四个基本步骤。【例2.1】编写一个程序,任意输入一个圆半径,求出相应的圆面积。 * 计算机程序采用结构化,一个功能强大的程序是由多个完成局部功能的程序象搭积木一样组合起来的。 * 由于高级语言描述程序时通常要考虑很多的与方法无关的细节(如语句、语法规则),因此在设计程序之初,通常并不直接用高级语言列描述程序,而是用别的描述工具(流程图、自然语言、伪代码)来描述程序。 * 算法与会不会C语言无关,但编写程序一定要很好地掌握语言规定的语句功能和语法规则。运行程序后,计算机编译系统首先检查语法错误,因此拼写、标点要尽量正确。仅一步检查执行中的错误,算法有问题就会到运行错误。如表达式中的变量还没有赋给数据,而先执行计算表达式值的指令,这种错误是不了解计算机思维造成的。 * 学习算法作为提高程序设计入门的一个途径,算法虽然只是计算机程序设计工作中的一个辅助环节,因为最终还要转换落实到编写计算机程序上,仍然避免不了要搞定计算机语言中语句的各项语法规则。但只要找对了算法,那么编写程序就有了思路,就能确保编程工作能按照正确的路线进展下去。 * 流程图表示的算法充分体现了算法的可视化,能够非常直观的表示出算法描述的程序的流程。对具有选择结构和循环结构的算法用流程图表示恰当。 * 伪代码与自然语言表示算法类似,自然语言表示算法不加计算机语句,而伪代码的算法中是自然语言与计算机语言的混合,在有一定编程基础后,写出算法通常是伪代码。 * * * 将算法转为程序的过程中,要熟悉c语言程序的书写格式、相应的语句等。如头文件、变量的概念即变量的声明、输入、输出语句的格式及参数的含义这些都不在算法的表示范畴内。尽管算法正确,但对初学者写出完全的程序还需要强编程实践。 * 每个程序实际上是按解题要求从其开发环境(如C语言开发环境)下所能进行的所有操作中选择合适的操作,然后再组成相应的被称作指令的命令序列。这就充分体现了算法的重要,解决了如何选择合适的操作的问题,而仅掌握语句、语法是不能做到的。算法也是由编程经验一点一滴的积累起来的,在学习过程中要进行总结收集解决某一类问题的比较通用的算法,并进行归纳。 不是每一个题目一个算法,而是每一类问题一个算法。因此算法具有基础性。当掌握熟练了编写程序就会运用自如,不必写出算法了。 * * 学习程序设计除学习语句语法外,还要学会运用三大结构,任何一个计算机程序设计都可归结于三大结构,灵活运用三大结构,可以使计算机完成人类难以完成的事情。 * 各操作之间的执行的先后顺序不能改变,会对运行结果产生直接影响。 * * * main() { int a,b,y,f; /*变量定义*/ scanf(“%d”,&a); scanf(“%d”,&b); scanf(“%d”,&x); if (x>a) f=a*x+b; /* 若x>a则a*x+b赋C*/ else f=b*x+a; /*若x>a不成立(即x<=a),则b*x+a赋f*/ printf(“%d”,f); /*输出(显示)函数f(x)的值*/ } * * t=t+1/i与i=i+1在数学中是不成立的,但在程序设计中这是两条语句,是两条操作命令,其中“=”为赋值号并非等号,代表进