当前位置: 首页 > news >正文

编程基本功训练:流程图画法及练习

对于“程序设计”的工作,很多刚開始学习的人的理解就是“写代码”。相同,新手们苦恼的问题是,他们仅仅会“写代码”。当接到一个新的任务,不少人总是在第一时间就爬到键盘上去敲代码。敲着敲着,就把自己绕糊涂了。头晕脑胀地坚持下来,程序能执行,阿弥托佛,赶紧撤。这样做出的程序,并不可靠。
  在程序设计中,最重要的不是敲代码,而是设计。就像建筑、机械等行业的要画设计图、施工图,程序设计的思路也有必要用图的形式画出来。绘图的过程就是思考的过程,因为其直观性,绘图的过程本身又促进了思考。在软件project中,已经发展出了非常多种有用的图,为软件产品设计的质量提供保证。这部分练习帮助程序设计者掌握和实践的“程序流程图”。
  一、什么是程序流程图

  “程序流程图”常简称为“流程图”,是一种传统的算法表示法,程序流程图是人们对解决这个问题的方法、思路或算法的一种描写叙述。它利用图形化的符号框来代表各种不同性质的操作,并用流程线来连接这些操作。在程序的设计(在编码之前)阶段,通过画流程图,能够帮助我们理清程序思路。下图是一个简单的流程图,描写叙述求两个数的最大公约数的算法(辗转相除法)。

    

  画流程图是每一个程序猿的基本功。流程图有其规范,这是用于技术人员之间交流的须要,并非想怎么画就怎么画。流程图中经常使用的符号见右图,在前述求最大公约数的流程图中找出相应的部分。

 

  二、三种控制结构的流程图表示

  这部分不再写文字,各种程序设计的教材中都会写一些,至少在讲各种控制结构时,总时要讲的。请參考自己手头能找到的教材,认真品味。
  我们直接提示若干任务,画一画,就会了。

 

  三、练习题目(各部分分别至少选两个画一画,注意用一张质量好一些纸,书写整齐,确保越画越高兴)

  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)画出银行系统的流程图(各详细业务点到为止,不必全画)

 

  注:在传统教学中,未学写代码,先学画流程。曾经的实践中,感觉效果不好。控制结构为何物都晕,怎样能画出来。有一定编程体验后再画,是改革的思路。这是编程的一项基本功,务必掌握!

 

 https://wenku.baidu.com/view/75d2f7d087c24028905fc344.html?rec_flag=default&sxts=1535979337445

  https://wenku.baidu.com/view/e9e5d163fc4ffe473268ab0e.html

 

转载于:https://www.cnblogs.com/gzhnan/articles/9580996.html

相关文章:

  • Python入门学习-DAY36-GIL全局解释器锁、死锁现象与递归锁、信号量、Event事件、线程queue...
  • SqlMap使用
  • Maven打war包命令
  • Linux常用Office办公软件
  • 如何在Eclipse下查看JDK源代码
  • legend---三、方法集思路
  • [POI2007] ZAP-Queries (莫比乌斯反演)
  • re:从零开始的数位dp
  • I/O多路复用
  • Nginx配置HTTPS
  • 正则表达式 整理
  • 分布式版本控制系统Git的安装与使用
  • 【BZOJ 4551】【TJOI2016】【HEOI2016】树
  • oracle多表查询-自连接
  • swiper 点击切换,拖动切换后继续自动轮播
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 【知识碎片】第三方登录弹窗效果
  • Java深入 - 深入理解Java集合
  • python docx文档转html页面
  • Python进阶细节
  • Spring核心 Bean的高级装配
  • 汉诺塔算法
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 写代码的正确姿势
  • 异常机制详解
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • PostgreSQL之连接数修改
  • #pragma once
  • ${factoryList }后面有空格不影响
  • (2)STM32单片机上位机
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (强烈推荐)移动端音视频从零到上手(上)
  • (实战篇)如何缓存数据
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 反射 Reflect
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net快速开发框架源码分享
  • ??myeclipse+tomcat
  • @Controller和@RestController的区别?
  • @在php中起什么作用?
  • [ 手记 ] 关于tomcat开机启动设置问题
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [C/C++]数据结构 堆的详解
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [codeforces]Checkpoints
  • [Docker]十.Docker Swarm讲解
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
  • [IE编程] IE中对网页进行截图的编程接口