C语言程序设计2程序的简单算法指定课件.ppt
单击此处编辑母版标题样式 单击此处编辑母版副标题样式 *C语言程序设计2程序的简单算法指定1 C语言程序设计 o第二章 程序的简单算法制定 o2.1 结构化程序的算法制定 o2.2 结构化程序的算法描述 o2.3 算法制定的范例 C语言程序设计2程序的简单算法指定2 2.1 结构化程序的算法制定 o利用计算机处理问题简述 C语言程序设计2程序的简单算法指定3 2.1 结构化程序的算法制定 o例2.1 从键盘输入3个数,找出其中最小的那个数。 o分析:1、需变量的个数-3个 o 2、先比较a,b的值,把小的存在min中。 o 3、再用min与c比较,把数值小的存放在min中。 o 如果 ab 则 min=a,否则min=b; o 如果c0(双实根) X1= X2= 如果 b2 -4ac=0(单实根) X1=X2= 如果 b2 -4ac=60) printf(“Passed!”); else printf(“Failed”); 算法可采用自然语言、流程图、N-S图、PAD图、伪代码 等方法来描述。 示例:根据学生成绩输出评定结果。 一、算法(algorithm) C语言程序设计2程序的简单算法指定8 二、算法与流程图传统流程图 o特点: o 直观形象; o 使用流线。 o缺点: o 占面积大,使用流 线任意转移,易出现 “乱麻”现象,造成 编程与阅读程序困难 。 C语言程序设计2程序的简单算法指定9 二、算法与流程图N-S结构化流程图 o 77年美学者I.Nassi和B.Scheiderman提出。 o特点 o 取消流线 o 不允许流程任意转移,只能从上而下顺序执行 o 规定三种基本结构的流程图单元,由这些基本结构象搭积木似的 组成各种算法(结构化设计)。 o优点 o 算法清晰,流程不会无规律乱转移。 C语言程序设计2程序的简单算法指定10 二、算法与流程图三种基本结构 o通常情况下,程序中的语句是以所编写的顺序一句接一句地执行 ,这种执行方法称为“顺序执行”。许多C语句能够让程序员指 定不按编写顺序执行下一条执行语句,这种执行方法称为“控制 转移”。 oBohm和Jacopini的研究证实,所有的程序都能够只用三种控制结 构编写,即 o 顺序结构 o 选择结构(selection structure) o 循环结构(repetition structure) o 顺序结构是C语言的基本结构,除非指示转移,否则计算机自 动以语句编写的顺序一句一句地执行C语句。 o任何C语言程序都是由七种控制结构(顺序结构、三种选择结构 和三种循环结构)构成的。 C语言程序设计2程序的简单算法指定11 二、算法与流程图三种基本结构 o顺序结构 o A块、B块顺序执行(每块代表一个或一组操作) C语言程序设计2程序的简单算法指定12 二、算法与流程图三种基本结构 o选择结构 o 条件p成立时执行a块(否则 执行b块) uif 选择结构 条件为真时执 行某个指定的操作,条件为 假时跳过该操作(单路选择 ) uifelse选择结构 条件为真 时执行某个指定的操作,为假 时执行另一个指定的操作( 双路选择) uswitch选择结构 根据表达式 的值执行众多不同操作中的 某个指定的操作(多路选择 ) C语言程序设计2程序的简单算法指定13 二、算法与流程图三种基本结构 o循环结构 o 分当型和直到型两类。 o 当型 先判断,只要条 件为真就反复执行A块,为 假则结束循环。 o 直到型 先执行A块,再 判断条件是否为真,为真 则继续执行循环体,为假 则结束循环。 oC语言提供了三种循环结构 ,即while循环结构, dowhile循环结构和for 循环结构。 C语言程序设计2程序的简单算法指定14 2.2.3 PAD图 PAD(Problem Analysis Diagram)另一种被广泛使用的 一种算法的图形表示法。 PAD图可以看成是二维的,它能展现算法的层次结 构。(顺序结构很简单,在此未画图。) C语言程序设计2程序的简单算法指定15 2.3 算法制定范例 o例2.4 把从键盘输入的大写字母转换成小写 字母,输出结果。 o问题: o1、描述算法 o2、根据算法编写C程序 o3、运行检查程序是否正确。 o o 演示ex202 C语言程序设计2程序的简单算法指定16 2.3 算法制定范例 o例2.5 已知实数a和b,计算u的值:u=(r+s)2 。其中,当ab时,r=a2-b2,s=a/b;当ab时 ,r=b2-a2,s=a/b+4。 o算法(自然语言描述): 从键盘输入实数a和b。 如果ab,则r=a2-b2,s=a/b;否则,r=b2-a2,s=a/b+4 。 计算u的值: u=(r+s)2。 输出u的值。 C语言程序设计2程序的简单算法指定17 开始 输入a,b ab T F r=a*a-b*b s=a/b r=b*b-a*a s=a/b+4 结束 u=(r+s)*(r+s) 输出u的值 流程图 C语言程序设计2程序的简单算法指定18 输入实数a,b ab FT r=a*a-b*b s=a/b r=b*b-a*a s=a/b+4 计算的值:u=(r+s)*(r+s) 输出u的值 N-S图 C语言程序设计2程序的简单算法指定19 输入实数a,b ab r=a*a-b*b s=a/b r=b*b-a*a s=a/b+4 计算u=(r+s)*(r+s) 输出u的值 PAD图 C语言程序设计2程序的简单算法指定20 o/*例2.5*/ o#include omain() o ofloat a,b,r,s,u; oprintf(请输入变量a、b的值:); oscanf(%f %f, oif(ab) o or=a*a-b*b; os=a/b; o oelse o or=b*b-a*a; os=a/b+4; o ou=(r+s)*(r+s); oprintf(所计算的u的值为:%f,u); o C语言描 述 C语言程序设计2程序的简单算法指定21 o小结: o 本章主要介绍了程序算法的制定方法:自然语言、 流程图、N-S图和PAD图。通过用这些方法表示解题思路 。 o作业: o 用流程图、 N-S图和PAD图描述问题的算法: o 从键盘输入3个整数a,b,c,输出其中的最大的数。 o C语言程序设计2程序的简单算法指定22