1 / 23

程序框图

程序框图. 复习 :. 上节课例 1: 任意给定一个大于 1 的整数 n, 试设计一个算法判定 n 是否为质数. 算法分析: 1. 判断 n 是否等于 2, 如果 n=2, 则 n 为质数 , 若 n>2, 则执行第 2 步. 2. 依次从 2 到 n-1 检验是不是 n 的因数 ( 即是否整除 n). 若存在这样 的数 , 则 n 不是质数 , 若不存在这样的数 , 则 n 为质数. 以上是用自然语言描述一个算法 . 为了使得算法的描述更为直观和 步骤化 , 下面介绍另一种描述算法的方法 : 流程图. 流程图的通俗解释 : 由一些图框和有向箭头构成 , 表示算法按一

yanka
Download Presentation

程序框图

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 程序框图

  2. 复习: 上节课例1:任意给定一个大于1的整数n,试设计一个算法判定n是否为质数. 算法分析: 1.判断n是否等于2,如果n=2,则 n为质数,若n>2,则执行第2步. 2.依次从2到n-1检验是不是n的因数(即是否整除n).若存在这样 的数,则n不是质数,若不存在这样的数,则n为质数. 以上是用自然语言描述一个算法.为了使得算法的描述更为直观和 步骤化,下面介绍另一种描述算法的方法:流程图. 流程图的通俗解释: 由一些图框和有向箭头构成,表示算法按一 定的顺序执行. 上例算法的流程图(见下页)

  3. 开始 输入n Flag=1 否 n>2? 是 d=2 否 否 d整除n? (2) (1) 是 d=d+1 Flag=0 是 d<=n-1且 flag==1? 否 Flag==1? 否 是 N不是质数 n是质数 流程图的图形符号: 观察右边的流程图: (1)有箭头指向的线. (2)不同形状的框图. 8 结束

  4. 图形符号 名 称 含义 起止框 表示一个算法的起始与结束 输入,输出框 表示输入输出操作 执行框 赋值、运算 判断框 用来根据给定的条件是否满足决定执行两条路径中的某一路径 流程线 算法中从上一步骤指向下一步骤

  5. 练习: • 1.流程图的功能是:…………………..( ). • 表示算法的起始和结束. • 表示算法的输入和输出信息. • 赋值、运算. • 按照算法顺序连接程序图框. 2.对程序框 表示的功能描述正确的一项是:…( ). A.表示算法的起始和结束. B.表示算法输入和输出的信息. C.赋值、计算. D. 按照算法顺序连接程序图框. 答案:D,B

  6. 算法三种基本逻辑结构 开始 输入n Flag=1 否 n>2? 是 d=2 d整除n? (2) (1) 是 d=d+1 Flag=0 是 d<=n-1且 flag==1? 否 Flag==1? 否 是 N不是质数 n是质数 顺序结构 否 循环结构 条件结构 结束

  7. 算法三种基本逻辑结构(顺序结构、条件结构、循环结构)算法三种基本逻辑结构(顺序结构、条件结构、循环结构) 流程图表示,实例,程序演示: A B 顺序、条件、循环三种基本的逻辑结构: • 顺序结构:最简单的算法结构,框与框之间从上到下进行。 • 任何算法都离不开顺序结构。

  8. 实例:三角形ABC的底BC为4, 高AD为2,求三角形ABC的面积S, 试设计该问题的算法和流程图. 解:算法如下: 开始 1.底BC为a=4, 高AD为b=2. a=4,b=2 2.S=1/2ab S=1/2ab 3.输出S. 输出S 流程图: 结束

  9. 开 始 1.a=2, b=4,h=5; a=2 b=4 h=5 2.S=(a+b) *h/2 3.输出S. . 输出S. 结 束 练习:利用梯形的面积公式计算上底为2,下底为4,高为5 的梯形面积.试设计该问题的算法和流程图. 解:算法如下: 程序实现: main() {int a,b,h,s; a=2,b=4,h=5; s=(a+b)*h/2 printf(“s=%d”,s); } 输出:15 注:txmz.c S=(a+b)*h/2 流程图:

  10. 如图: 否(2) 是(1) P A B (2).条件结构:一个算法的执行过程中会遇到一些条件的 判断,算法的流程根据条件是否成立有不同的流向.

  11. 练习: 设计求一个数x的绝对值y= 的算法并画出相应的流程图: 分析:根据绝对值的定义,当x≥0,y=x;当x<0时,y=-x, 所以当给出一个自变量x的值,求它所对应的y值时 必需先判断x的范围,所以要用到条件结构. • 解: • 算法分析: • 输入x. • 如果 x≥0,y=x , 否则y=-x.. • 输出y.

  12. 流程图: 程序实现: main() {float x,y; scanf(“%f%f”,&a,&b); if(x>=0) y=x; else y=-x; printf(“%f\n”,y); } 开始 输入 x 是 否 x≥0? y=x y=-x 输出y 结束 输入:5 -10 输出:5 10 注:jdzhi.c

  13. 例:联邦快递公司规定甲、乙两地之间物品的托运费用根据下面的方法计算:例:联邦快递公司规定甲、乙两地之间物品的托运费用根据下面的方法计算: 其中f(单位:元)为托运费,ω为托运物品的重量(单位:千克), 试画出计算费用f的程序框图。

  14. 自然语言是: 第一步:输入物品重量ω;第二步:如果ω≦50,那么f=0.53 ω, 否则f=50×0.53+(ω-50) ×0.85;第三步:输出托运费f.

  15. (3)循环结构:需要重复执行同一操作的结构称为循环结构(3)循环结构:需要重复执行同一操作的结构称为循环结构 .即从某处开始按照一定的条件反复执行某一处理步骤. 反复执行处理的步骤称为循环体. 注:循环结构一定包含条件结构. 实例:1+2+3+4+5+6+7+…..+100=? 分析:只需要一个累加变量sum和计数变量i.将累加变量 sum初值赋为0,计数变量i从1到100变化. 算法分析: (见下页)

  16. 否 开始 流程图: 1. sum=0; 2. i=1; 3. sum=sum+i; 4. i=i+1; 5. 如果i小于等于100,返回重新执行第3步,第4步,第5步,否则结束,得到sum值. sum=1+2+3+4+5+6+........+100. Sum=0 i=1 Sum=sum+i i=i+1 i<=100 分析:初值sum=0,i=1 第一次循环sum= Sum=1 Sum=1+2 Sum=1+2+3 ……Sum=1+2+3+…100 0+1=1 ,i=2 输出sum 第二次循环sum= 1+2=3 ,i=3 第三次循sum= 3+3=6 结束 4

  17. 练习: 1+3+5+7+……+31=? 分析:只需要一个累加变量sum和计数变量i.将累加 变量sum初值赋为0,计数变量i从1到31变化. 算法分析:(见下页)

  18. 算法分析: (1).sum=0; (2).i=1; (3).sum=sum+i;(4).i=i+2; (5).如果i小于等于31,返回重新执行第3步,第4步,第5步,否则结束,得到sum的值,sum=1+3+5+7+……+31. 流程图: 开始 开始 Sum=0 Sum=0 i=1 i=1 Sum=sum+i Sum=sum+i 是 i=i+1 否 i<=31 i<=100 输出sum 输出sum 结束 结束 mian() {int sum,i; sum=0; i=1; for(i<=31) {sum=sum+i; i=i+2; } printf(“%d\n”,sum); } 注:ljia.c 初值sum=0, i=1 i=i+2 0+1=1 ,i=3 第一次循环sum= 1+3=4 ,i=5 第二次循环sum= 第三次循sum=4+5=9 …..sum=1+3+5+…+31 程序实现: 6

  19. 三种结构的综合应用: 任意给定一个大于1的整数n,试设计一个算法判定n是否为质数.并用程序实现。

  20. 开始 否 (1) n=5 输入n Flag=1 否 n>2 是 d=2 否 d整除n? (1) 是 (2) d=d+1 Flag=0 是 d<=n-1且 flag=1? 否 (2)n=4 Flag=1? 否 是 N不是质数 n是质数 8 结束

  21. main() {int flag,n,d; scanf("%d\n",&n); flag=1; if(n>2) for(d=2;d<=n-1&&flag==1;d++) {if(n%d==0) flag=0;} if(flag==1) {printf("%d",n); printf(" shi ge su shu\n");} else {printf("%d",n); printf(" bu shi yi ge su shu\n");} } 注:sushu .c 程序实现:

  22. 再见

More Related