1、算法(algorithm)是对特定问题求解步骤的一种描述。程序=数据结构+算法+程序设计方法+编程语言2.1 算法的概念算法的概念例例1.有有50个学生个学生,要求将他们之中成绩在,要求将他们之中成绩在80分以上者打印出来。分以上者打印出来。用用n表示学号,表示学号,n1代表第一个学生学号,代表第一个学生学号,ni代表第代表第i个学生学号。个学生学号。用用g代表学生成绩,代表学生成绩,gi 代表第代表第i个学生成绩,算法可表示如下:个学生成绩,算法可表示如下:S1:1i S2:如果:如果gi 80,则打印,则打印 ni 和和gi ,否则不打印,否则不打印S3:i+1 i S4:如果如果 i 5
2、0,返回返回S2,继续执行;继续执行;否则,算法结束。否则,算法结束。2.2 简单算法举例简单算法举例(用自然语言描述法)用自然语言描述法)例例2 将学生百分成绩按分数段分级的程序。将学生百分成绩按分数段分级的程序。该算法的核心部分是对输入的每一个数进行比较判断,该算法的核心部分是对输入的每一个数进行比较判断,以确定属于的级别。若学生成绩分布是均匀的,算法描述以确定属于的级别。若学生成绩分布是均匀的,算法描述如下:如下:S1:1i S2:a60 a70 a80 a90 不及格不及格中等中等良好良好优秀优秀及格及格YNYNYNYN输入输入10000个数据,则需个数据,则需进行进行31500次比较
3、。次比较。S3:i+1 iS4:如果如果i 10000,返回返回S2;否则,算法结束。否则,算法结束。转S3转S3转S3转S3转S3分数分数0596069707980899099比例比例0.050.150.40.30.10 不及格不及格Y a90 a80 a70 aii50输出gi 和 nii+1=ii50结束YNN输入ni和和gi i+1=igi=80N1=iY2.4.3 2.4.3 程序的三种基本结构和程序的三种基本结构和改进的流程图(改进的流程图(N-SN-S结构流程图)结构流程图)一、顺序结构一、顺序结构 BA (a)AB (b)先执行A操作,再执行B操作,两者是顺序执行关系。N-S结
4、构流程图二、选择结构二、选择结构当P条件为真时,执行A模块,否则执行B模块。APB真假(a)P真假AB(b)三、循环结构三、循环结构当P条件成立时,反复执行A,直到P为假。1.当型循环结构当型循环结构PA假真(a)当P为真A(b)当P为真2.2.直到型循环结构直到型循环结构先执行A操作,再判断P是否为假,若P为假,再执行A,直到P为真为止。AP假真(a)A直到P为真 (b)1=i输入ni和和gii+1=i直到i501=i gi=80真假输出ni和和gii+1=i直到i50开始1=ii50输出gi 和 nii+1=ii50结束YNN输入ni和和gi i+1=igi=80N1=iY2.4.5 用伪
5、代码表示算法:用介于自然语言和计算机语言之间用伪代码表示算法:用介于自然语言和计算机语言之间的文字和符号来描述算法的文字和符号来描述算法 BEGIN 1 =i while(i 50)input ni和和gi i+1=I 1 =i while(i 50)if(gi =80)print ni和和gi i+1=i END 2.4.6 用计算机语言表示算法 例4:求 1-1/2+1/3 1/4+1/99 1/100。S1:1 signS2:1 sumS3:2 denoS4:(-1)*sign signS5:sign*(1/deno)termS6:sum+term sumS7:deno+1 denoS8
6、:若若deno 100 返回返回S4;否则算法结束。;否则算法结束。main()int sign=1;float deno=2.0,sum=1.0,term;while(deno=100)sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;printf(“%f”,sum);2.4 结构化程序设计方法1.自顶向下2.逐步细化3.模块化设计4.结构化编码读输入读输入 输入处理;return 输入;编辑输入编辑输入 编辑输入处理;return 编辑好的输入;结果格式化结果格式化 结果格式化处理;return 格式化结果;显示结果显示结果 显示结果处理;