编程基本功训练:流程图画法及练习
对于“程序设计”的⼯作,许多初学者的理解就是“写代码”。同样,新⼿们苦恼的问题是,他们只会“写代码”。当接到⼀个新的任务,不少⼈总是在第⼀时间就爬到键盘上去敲代码。敲着敲着,就把⾃⼰绕糊涂了。头晕脑胀地坚持下来,程序能运⾏,阿弥托佛,赶紧撤。这样做出的程序,并不可靠。
  在程序设计中,最重要的不是写程序,⽽是设计。就像建筑、机械等⾏业的要画设计图、施⼯图,程序设计的思路也有必要⽤图的形式画出来。画图的过程就是思考的过程,由于其直观性,画图的过程本⾝⼜促进了思考。在软件⼯程中,已经发展出了很多种实⽤的图,为软件产品设计的质量提供保证。这部分练习帮助程序设计者掌握和实践的“程序流程图”。
  讲解视频:
  1、
  2、 
  最新推出:能动起来的流程图视频课程——Raptor是⼀个可视化的,基于流程图的编程⼯具,不仅可以编写简单程序解决实际问题,其更⼤的价值在于编程思维的训练。课程适合⽤C、C++、Java和其他语⾔学习程序设计,希望学会“如何想算法”的⼈⼠,通过流程图训练编程思维,还将有助于养成良好的思维习
惯、形成规范的编程思想。
  编程思维启蒙(Raptor)视频课程主页()——⽤C、C++、Java和其他语⾔学习程序设计,解题没有思路可以⽤Raptor训练!
  ⼀、什么是程序流程图
  “程序流程图”常简称为“流程图”,是⼀种传统的算法表⽰法,程序流程图是⼈们对解决问题的⽅法、思路或算法的⼀种描述。它利⽤图形化的符号框来代表各种不同性质的操作,并⽤流程线来连接这些操作。在程序的设计(在编码之前)阶段,通过画流程图,可以帮助我们理清程序思路。下图是⼀个简单的流程图,描述求两个数的最⼤公约数的算法(辗转相除法)。
    勘误:最后的结果,该是output a。感谢8楼童鞋指出!
  画流程图是每个程序员的基本功。流程图有其规范,这是⽤于技术⼈员之间交流的需要,并不是想怎么画就怎么画。流程图中常⽤的符号见右图,在前述求最⼤公约数的流程图中出对应的部分。
  ⼆、三种控制结构的流程图表⽰
  这部分不再写⽂字,各种程序设计的教材中都会写⼀些,⾄少在讲各种控制结构时,总时要讲的。请参考⾃⼰⼿头能到的教材,认真品味。
  我们直接提⽰若⼲任务,画⼀画,就会了。
  三、练习题⽬(各部分分别⾄少选两个画⼀画,注意⽤⼀张质量好⼀些纸,书写整齐,确保越画越⾼兴)
  1、热⾝
  (1)将英尺转换为⽶
  (2)输⼊两个点的坐标,求两点之间的距离并输出
  2、分⽀程序
  (1)描述⼀下今晚的计划:如果下雪,校园内玩雪;否则,在103上机(怀念)
  (2)丢硬币决定今晚:正⾯,K歌;反⾯:逛街;⽴起来,学C++
编程启蒙是学什么的  (3)求函数值:
  (4)输⼊⼀元⼆次⽅程ax^2+bx+c=0的各项系数,并根据各系数的值的情况,分别进⾏求解(考虑对系数的各种可能太复杂时,给⾃⼰降低些难度,先从不考虑系统直接求解开始)
  (5)输⼊个⼈⽉收⼊总额,计算出他本⽉应缴税款和税后收⼊(税率等参考第9周任务)
  3、循环结构
  (1)求1+2+3+...+100(三种循环结构都画⼀画)
  (2)输出1/3-3/5+5/7-7/9…+19/21的结果
  (3)⼀个数如果恰好等于它的因⼦之和,这个数就称为“完数”。出1000内的所有完数。
  (4)输出1000以内的所有回⽂数
  (5)鸡翁⼀,值钱五,鸡母⼀,值钱三,鸡雏三,值钱⼀,百钱买百鸡,如何买?
  4、复杂结构的程序
  在解决问题中,利⽤函数可以让我们利⽤更“有序”的思维去想问题,“⾃顶向下,逐步求精”,真理。例:下⾯的流程图⽤于输出星号图,体现的是这种思维,右边的图可以嵌⼊到左边中,替代“输出第i⾏”的框⼦,也可以指导我们专门编成⼀个函数。
  任务:
  (1)输出10000以内的所有回⽂素数。将判断回⽂和判断素数分别单独画,对应将这两个功能⽤函数实现的⽅法。
  (2)画出银⾏系统的流程图(各具体业务点到为⽌,不必全画)
  注:在传统教学中,未学写代码,先学画流程。以前的实践中,感觉效果不好。控制结构为何物都晕,如何能画出来。有⼀定编程体验后再画,是改⾰的思路。这是编程的⼀项基本功,务必掌握!