第四章 程序设计的算法基础.ppt
文本预览下载声明
第四章 程序设计的算法基础 4.1 日常实例分析 实例 计算一元二次方程的实数根问题 大理丽江七日游 做一顿丰盛的晚餐 做一道自己喜欢的菜 任何问题的求解都需要一个方法,有了方法之后还需要按照一定的过程、顺序和步骤进行组织、安排,最终才能解决一个问题。 问题求解步骤的确定和求解过程的描述 例4-2 炒一盘青椒肉丝的计划与实施过程描述。 问题求解方法和过程的多解描述 F 4.2 用程序进行问题求解描述的基本方法* 计算机的工作过程本质上都是按照事先确定的方法编写好解决问题的步骤,以程序语言形式进行表达。 面向过程的程序设计模型(Procedure Oriented Program Design) 基于模块化的程序设计模型(Modular Program Design) 面向对象的程序设计(Object Oriented Program Design) 4.3 算法 4.3.1 算法的组成 4.3.2 算法的主要特征和性质 4.3.3 算法的描述方法 如何描述算法过程?用什么手段来表达程序结构和梗概? V.Newmann:编码始于绘制流程图。 常用的描述算法的方法有: 自然语言 流程图 伪代码 流程图——用不同的几何图形符号代表不同性质的计算机控制或操作,用流程线指示算法执行顺序的图形算法描述方法。 简单直观,广泛运用。特别是在早期的程序设计工作中,用流程图表述算法过程是软件设计工作必不可少的环节。结构化程序设计语言出现后,对流程图的依赖有所降低,但仍然是重要的算法描述工具。 符号标准化。ISO标准和国家标准。 分析:对n1,n2,n3,用max存最大者,有多种方法: 4.4 算法分析、描述与实现的综合实例 小结 求解问题时如何根据所选方法分析、抽象和描述问题求解的过程、步骤和方法 了解问题求解的三种基本方法:面向过程、基于模块和面向对象的程序设计方法 掌握算法特点和性质 掌握算法的四种结构化描述方法 熟练掌握和实践从问题的算法分析、算法描述到C语言程序代码实现之间的转换与过渡方法。 C语言程序代码: int main(void) { int nMale=0,nFemale,nChild; while (nMale=9) { /*nMale----男人数*/ nFemale=0; while(nFemale=12) { /*nFemale----女人数*/ nChild=0; while (nChild=36) { /*nChild----小孩数*/ if (nMale*4+nFemale*3+nChild/2\ ==nMale+nFemale+nChild){ printf(male=%d,female=%d,child=%d\n,\ nMale,nFemale,nChild); } /*if*/ nChild++; } /*while (nChild=36)*/ nFemale++; } /*while (nFemale=12)*/ nMale++; } /*while (nMale=9)*/ return 0; } /*End of main()*/ 例4-16 兔子繁殖问题:一对新生兔子从第三个月起每个月都生一对兔子。假设没有兔子死亡,一年后共有多少对兔子? 4) 迭代公式为: nF3=nF2+nF3; nF2=nF1; nF1=nF3; 分析: N-S流程图: 1) 规律 2) 设3个变量: nF1:一月兔 nF2:二月兔 nF3:三月兔 3) 迭代次数为12 初始化nF1,nF2,nF3,num 输出nF1,nF2,nF3的值 num=12? nF3=nF2+nF3 nF2=nF1 nF1=nF3 num++ 伪代码描述: nF1=1,nF2=nF3=0,num=1 while (num=12) { 计算当月nF1,nF2,nF3 num++; } 输出nF1,nF2,nF3 int main(void) { int nF1,nF2,nF3,num=1; nF1=1; nF2=nF3=0; while (num=12) { nF3=nF2+nF3; nF2=nF1; nF1=nF3; num++; } printf(nF1=%d nF2=%d nF3=%d\n,\ nF1,nF2,nF3);
显示全部