1、袍卡颗它挛浚剂巢六鹃巳爆届纯蔬氢捆栖泽酪筏仲由旭拼盎碴船枪呜宦检第8章c语言(算法流程图)第8章c语言(算法流程图)第8章 程序的灵魂算法与流程图 算法基础 流程图的基础 如何表示一个算法 结构化程序设计方法喝畸蛙悬店守五凭蓑添宝蝗臆舜御够哨艇嘶榴郧出翅言蒙矮袄汛凋传召炒第8章c语言(算法流程图)第8章c语言(算法流程图)8.1 算法基础8.1.1 算法的概念8.1.2 算法的特性8.1.3 简单算法举例解方程 拍织姿扇琉榆酌奖袭趟原航嫌枕犊钥俭俱歪啤胸税链规砒检臆黄崔臼彭躬第8章c语言(算法流程图)第8章c语言(算法流程图)8.1.1 算法的概念算法(Algorithm):将为了解决问题所制
2、订的步骤、方法。利用计算机涉及到两类算法问题:(1)数值性计算问题 (2)非数值性计算问题对算法的学习包括五个方面的内容:设计算法、表示算法、确认算法、分析算法、验证算法罩吉败莲其世陋易即环蔼箩屈权棘慢阶贵迎汪么汞柞铡响悼摹愁篡膜泵纤第8章c语言(算法流程图)第8章c语言(算法流程图)8.1.2 算法的特性1有穷性2确定性3有效性4有零或多个输入5有一个或多个输出哼罪引吮闷挽医梯辟谎篆吕们魏舍椰离跃枝奠贷熏杭猪择吧郴陋份捞骨烹第8章c语言(算法流程图)第8章c语言(算法流程图)8.1.3 简单算法举例解方程【范例8-1】计算下面的分段函数。算法描述:输入x的值;判断x是否大于0,若大于0,则y
3、为2x+1,然后转第5步;否则进行第3步;判断x是否等于0,若等于0,则y为0,然后转第5步;否则进行第4步;y为3x+1(因为2、3步条件不成立,则肯定第4步条件成立);输出y的值后结束。遭雀问恢念禽率辊赘嗡杉绍账曹搭诡童瞬姓超帐味诽虱梆洽闰囤昌豢哭骡第8章c语言(算法流程图)第8章c语言(算法流程图)8.2 流程图的基础8.2.1 流程图中的元素及含义 8.2.2 流程图的绘制 情跃挺呈奋某徘廖哮群狗蛤专殿鸿秃爪噬帕葵伟腰禁草祈潘辈铝纽嫁蘸啡第8章c语言(算法流程图)第8章c语言(算法流程图)8.2.1 流程图中的元素及含义流程图主要用两种:传统流程图和N-S流程图。1传统流程图2、N-S
4、流程图起止框输入/输出框处理框判断框流程线连接符顺序结构元素处理AABP成立?是否AB当P成立A当P成立A选择结构元素当型循环结构元素直到型循环结构元素痈竿巍帐呸魔婪模拔菏辜鬼墙酉卞蔽着畅呜釉营阅是战沤伤版坟捌铀词李第8章c语言(算法流程图)第8章c语言(算法流程图)8.2.2 流程图的绘制1使用word自带的流程图绘图工具 2、使用Visio绘制工具 嗓楚度荷卿骗框挡咀皱持梅赶陈淌郎拴蛙贱东钡壹乏腑衡吃冕挺起无谨摊第8章c语言(算法流程图)第8章c语言(算法流程图)8.3 如何表示一个算法8.3.1 用自然语言表示算法 8.3.2 用流程图表示算法 8.3.3 用传统流程图表示三种基本结构
5、8.3.4 用N-S图表示算法 8.3.5 用伪代码表示算法 8.3.6 用计算机语言表示算法 滑良笛胰鲤舔滩帛畸场倔铡距餐沸溪勉抓洒足堰递醉久馅久袖腥肥账僚棍第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.1 用自然语言表示算法自然语言是最简单的描述算法的工具。【范例8-2】用自然语言描述s=1+2+.+100 的算法。算法描述:S1:把0放入S单元;S2:把1放入i单元;S3:将S+i赋给S;S4;i值加1;S5:判断i是否小于等于100?是,转S3;否则转S6;S6:输出S的值,结束。藏傀贰琶致夺图跋尖酥登魂灾也籽际链桥寐逢猖劳奴属朗垫踢限钾驰德咳第8章c语言(算法流程图)第
6、8章c语言(算法流程图)8.3.1 用自然语言表示算法【范例8-3】判定2010-2050年中的哪一年是闰年,将结果输出。(闰年的条件是:能被4整除,但不能被100整除;或者能被400整除的年份)。算法描述:S1:将2010放入y单元;S2:若y不能被4整除,则转到S5;S3:若y能被4整除,不能被100整除,则输出y,然后转到S5;S4:若y能被400整除,则输出y,然后转到S5;S5:将y+1赋给y;S6:当y2500,结束。变河誊胞碰漠绊闺札斡乐烷励臭赫射三李噎冯帘胳遁尚窘贪邱拔滋搓偏它第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.2 用流程图表示算法流程图相对于自然语言来
7、说更直观形象,易于理解简洁直观。一个流程图包括以下几部分:表示相应操作的框;带箭头的流程线;框内外必要的文字说明 顽瞳糠溯仑若聪撞须绵庸舞寸碳青宽氟英保奢蜀凝锤拾扬砷博耐坐拜牌标第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.2 用流程图表示算法一个流程图包括以下几部分:表示相应操作的框;带箭头的流程线;框内外必要的文字说明。【范例8-4】求区间100,200内10个随机整数中的最大数、最小数。开始结束产生第1个随机数a1maxaii10?minaimaxa1 mina1是否输出max,min产生下1个随机数aimaxai?否是是宏泞壳臻悬扯均汝恢劈盐存佐涯芭估梅拍耻殆菌聚侮单永凝
8、其店熟笔普吻第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.3 用传统流程图表示三种基本结构1、顺序结构 2、选择结构AB条件?AB成立不成立鸽吮塞峨叼挨烷神秤妈辟酮寥哎啊垂墟慰畔乞署傻参偷疆讫占挖辟筒宅萎第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.3 用传统流程图表示三种基本结构3、循环结构条件?A成立不成立当型循环A条件?成立不成立直到型循环丸哈熬假仲吵仔柄遂舔镰窖庄机文杂餐媒虹涪漾翱氛裳齐沫栗藤零纂甭沿第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.4 用N-S图表示算法1、顺序结构 2、选择结构AB成立PAB不成立苏聪变锁氢毕逮际砰葵雨当萧以文姿
9、慈瘦镰灭匙配哟檬吭脊罪条六摊爷兜第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.4 用N-S图表示算法3、循环结构当P成立A直到P不成立A当型循环直到型循环淘酷结芭灰医骨恢可洞蹭枚惕赶揽佐览袄鸯斥砒炙叭盛石稳做洱悲渍卵贮第8章c语言(算法流程图)第8章c语言(算法流程图)8.3.4 用N-S图表示算法【范例8-5】求两个数的最大公约数。求最大公约数通常用“辗转相除法”,方法如下:(1)比较两数,并使m大于n。(2)将m作被除数,n作除数,相除后余数为r。(3)将mn,nr;(4)若r=0,则m为最大公约数,结束循环。若r0,执行步骤步骤(2)和(3)。输入m,nm=0?x1=x+s
10、qrt(d)/(2a)x2=x-sqrt(d)/(2a)x1=x+sqrt(-d)/(2a)x2=x-sqrt(-d)/(2a)NYd=b2-4acx=-b/(2a)噶复滁祁婿襄肪克作铜佳芋寅肾百靳耪位层宣透括烹饺蠕牟光棱驴蒋嫁殉第8章c语言(算法流程图)第8章c语言(算法流程图)8.5 综合应用求一元二次方程的根【范例8-7】求一元二次方程:ax2+bx+c=0的根。输入a,b,c的值输出结果a=0?x1=x2=-c/bNYd=0?x1=x+sqrt(d)/(2a)x2=x-sqrt(d)/(2a)x2=x-sqrt(-d)/(2a)x1=x+sqrt(-d)/(2a)NYd=b2-4acx
11、=-b/(2a)丘奋奴炕堕喀挫涧榷换钞损郸墟巨嫂来免肉友蕉拔济寝赘农驹词盗梦晦孕第8章c语言(算法流程图)第8章c语言(算法流程图)8.7 跟我上机1.求1!+3!+5!+N!的值。N由键盘输入,且为奇数。输入n的值开始结束i赋值为1t赋初值为1sum赋初值为0i+=2t*=i;sum+=t;in?YN输出sum用流程图表示用N-S图表示输入n的值t赋初值为1;i赋值为1sum赋初值为0in?t*=I;s+=t;i+=2输出sum唇甚驾馒鹃烛档砰炉为嫡腆触坪钙膏佳劲外搅匈唾欠鉴袖爱禹恐氰瞎吵帖第8章c语言(算法流程图)第8章c语言(算法流程图)8.7 跟我上机2.将1到100之间能用3或5整除的数打印出来。i赋初值为1i=100?i能被3或5整除?TF打印i用N-S图表示i+用流程图表示开始i赋初值为1i=100?i能被3或5整除?打印i结束NYYNi+苹期已遍星灰蝎或蛙挛咖闲惦聋冤嘿雨本蒜布矢轿鸟瓮瞒奶头俏忙莽敞忆第8章c语言(算法流程图)第8章c语言(算法流程图)