从程序设计方法到思维训练总结
2015-05-04 18:49
295 查看
本文通过几个例子来讲述程序设计方法,通过程序设计方法达到思维训练的目的。
主要的核心设计方法是伪代码法和分解法:
伪代码法:用来描述程序的思路,也可以用来注释
分解法:逐步细化,分解步骤
下面我们通过几个例子来学习伪代码法和分解法。(SD: 以下代码用python语言来编写)
[b]概念:[/b]
伪代码法
分解法
示例索引:
法老的金字塔
丢手绢
分解法
分解的思想可以通用在任何程序设计,接下来从两种角度来运用程序的分解。
程序结构的分解(从语法角度):
利用分解法可以把程序分解
程序最大组成单元是文件;一个文件分解成若干个函数;函数分解成语句块;语句块分解成语句;语句分解成表达式、变量、运算符
还可以反向聚合:表达式、变量、运算符聚合成语句;语句聚合成语句块;语句块聚合成函数;若干个函数聚合成一个文件
程序结构的分解(从功能角度):
分解成:输入、计算(或处理)、输出
输入:提示信息(可以没有)、输入方式“CUI或者GUI的用户交互式输入、函数入口参数、命令行参数、文件读取、其他设备”、数据合法性校验或断言
计算(或处理):狭义计算“算术运算(加减乘除)、逻辑运算(与或非)、关系运算(大于等于小于)”
广义计算:程序流程和算法
处理:可以运用伪代码法或分解法
输出:屏幕输出、打印机输出、文件输出、函数返回值、函数的出口参数
法老的金字塔
题目:
编写一个程序,输入层数,在控制台打印出任意层数的金字塔,如图:
分析:
根据题目,金字塔图形由空格和星号组成,现在先设定金字塔为3层,height = 3
解决这个问题,先做一个表格:
level n m
第0层:空格2,星1
第1层:空格1,星3
第2层:空格0,星5
当层数为第0层是空格为两个,星号为一个;
当层数为第1层是空格为一个,星号为三个;
当层数为第2层是空格为零个,星号为五个;
可以列出:n = height - 1- level ;
m = 2*level + 1
根据伪代码法,可以先写出程序思路:
先输入层数,然后再打印图形,输入层数很简单,只要"height = int( raw_input('ennter a integer':) )" 就能在控制台上出现"ennter a integer':",然后输入数字即可;
打印金字塔却略显复杂,这是就可以用分解法分解步骤,将复杂的问题逐步细化。
可以将打印金字塔这部分成:1、打印n个空格;2、打印m个星。
再运用for循环就能打印出金字塔,具体代码与效果如图:
在控制台输入层数就能随意打印想要的图案。
[b]丢手绢[/b]
题目:
有n个人围成一圈了,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
分析:
接下来进行思维训练:模拟现实法(把现实问题照搬到计算机上)
根据现实的问题,画出图形将它实例化,用反实例化将图形以数字的形式表达出来,之后找一个数据结构来表述问题,最后设计一种算法来编写代码,总结起来有五个步骤:
现实世界 计算机世界
问题——图形(实例化)——数学(反实例化) —— 数据结构——算法
step0 —— step1 —— step2 —— step3 —— step4
接下来利用一个例子(丢手绢)来学习模拟现实法,同样运用为代码法与分解法。
接下来步骤开始,呀哈:
step0:
step1:
图形(设5个人,画图),将问题实例化,设定有5个人参加游戏,将每个人编号,从第一个人开始报数喊1,到喊3的人出局,下一个继续报1.
到最后一个再返回第一个报数,最后得到剩下的那个人为第四个人
step2:
用数学语言描述(定义人数为n),设置第一个为pos0,出局的为pos1 ,那报数就成为根据pos0找pos1,根据pos1再找pos0。
(pos0——pos1——pos0——pos1),并且注意两个状况:1、队尾;2、下一个已经出局
step3:
找数据结构(数组),创建一个数组p[100], p[0]用来计数出局的人数,p[1] = 1,p[2]=2,p[3]= 3,p[4] = 4,p[5] = 5 ;
于是p[0]=4时,最后剩下一个。令出局的p[pos1]= 10,来表示已出局。
step4:
找算法(nextPos),找下一个位置,nextPos表示下一个位置。
1 2 3
pos0——pos1
pos0 到pos1要经过两个位置,所以nextPos再nextPos
pos1到pos0 要nextPos。
同时考虑队尾与下一个已经出局的状况,将上述写成程序代码,如图:
算法:
运用分解法:
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: /article/6669944.html
主要的核心设计方法是伪代码法和分解法:
伪代码法:用来描述程序的思路,也可以用来注释
分解法:逐步细化,分解步骤
下面我们通过几个例子来学习伪代码法和分解法。(SD: 以下代码用python语言来编写)
[b]概念:[/b]
伪代码法
分解法
示例索引:
法老的金字塔
丢手绢
分解法
分解的思想可以通用在任何程序设计,接下来从两种角度来运用程序的分解。
程序结构的分解(从语法角度):
利用分解法可以把程序分解
程序最大组成单元是文件;一个文件分解成若干个函数;函数分解成语句块;语句块分解成语句;语句分解成表达式、变量、运算符
还可以反向聚合:表达式、变量、运算符聚合成语句;语句聚合成语句块;语句块聚合成函数;若干个函数聚合成一个文件
程序结构的分解(从功能角度):
分解成:输入、计算(或处理)、输出
输入:提示信息(可以没有)、输入方式“CUI或者GUI的用户交互式输入、函数入口参数、命令行参数、文件读取、其他设备”、数据合法性校验或断言
计算(或处理):狭义计算“算术运算(加减乘除)、逻辑运算(与或非)、关系运算(大于等于小于)”
广义计算:程序流程和算法
处理:可以运用伪代码法或分解法
输出:屏幕输出、打印机输出、文件输出、函数返回值、函数的出口参数
法老的金字塔
题目:
编写一个程序,输入层数,在控制台打印出任意层数的金字塔,如图:
分析:
根据题目,金字塔图形由空格和星号组成,现在先设定金字塔为3层,height = 3
解决这个问题,先做一个表格:
level n m
第0层:空格2,星1
第1层:空格1,星3
第2层:空格0,星5
当层数为第0层是空格为两个,星号为一个;
当层数为第1层是空格为一个,星号为三个;
当层数为第2层是空格为零个,星号为五个;
可以列出:n = height - 1- level ;
m = 2*level + 1
根据伪代码法,可以先写出程序思路:
先输入层数,然后再打印图形,输入层数很简单,只要"height = int( raw_input('ennter a integer':) )" 就能在控制台上出现"ennter a integer':",然后输入数字即可;
打印金字塔却略显复杂,这是就可以用分解法分解步骤,将复杂的问题逐步细化。
可以将打印金字塔这部分成:1、打印n个空格;2、打印m个星。
再运用for循环就能打印出金字塔,具体代码与效果如图:
在控制台输入层数就能随意打印想要的图案。
[b]丢手绢[/b]
题目:
有n个人围成一圈了,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
分析:
接下来进行思维训练:模拟现实法(把现实问题照搬到计算机上)
根据现实的问题,画出图形将它实例化,用反实例化将图形以数字的形式表达出来,之后找一个数据结构来表述问题,最后设计一种算法来编写代码,总结起来有五个步骤:
现实世界 计算机世界
问题——图形(实例化)——数学(反实例化) —— 数据结构——算法
step0 —— step1 —— step2 —— step3 —— step4
接下来利用一个例子(丢手绢)来学习模拟现实法,同样运用为代码法与分解法。
接下来步骤开始,呀哈:
step0:
step1:
图形(设5个人,画图),将问题实例化,设定有5个人参加游戏,将每个人编号,从第一个人开始报数喊1,到喊3的人出局,下一个继续报1.
到最后一个再返回第一个报数,最后得到剩下的那个人为第四个人
step2:
用数学语言描述(定义人数为n),设置第一个为pos0,出局的为pos1 ,那报数就成为根据pos0找pos1,根据pos1再找pos0。
(pos0——pos1——pos0——pos1),并且注意两个状况:1、队尾;2、下一个已经出局
step3:
找数据结构(数组),创建一个数组p[100], p[0]用来计数出局的人数,p[1] = 1,p[2]=2,p[3]= 3,p[4] = 4,p[5] = 5 ;
于是p[0]=4时,最后剩下一个。令出局的p[pos1]= 10,来表示已出局。
step4:
找算法(nextPos),找下一个位置,nextPos表示下一个位置。
1 2 3
pos0——pos1
pos0 到pos1要经过两个位置,所以nextPos再nextPos
pos1到pos0 要nextPos。
同时考虑队尾与下一个已经出局的状况,将上述写成程序代码,如图:
算法:
运用分解法:
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: /article/6669944.html
相关文章推荐
- 首届华中区程序设计邀请赛暨第十届武汉大学程序设计大赛训练总结【8/11】
- js高级程序设计(第三版)总结--数组重排序方法 reverse() 和 sort()的用法
- 索骥馆-思维训练之最佳记忆方法-王洪礼的奇象记忆思维技术与方法 》扫描版[PDF]
- 如何训练结构化思维能力?它是一种工作方法还是思维方式?
- caffe 实验中输入数据和label都是图片时,训练或测试数据列表train.txt生成方法(linux指令总结)
- Xdite:永葆热情的上瘾式学习法(套路王:每天总结自己,反省自己的作息规律,找到自己的幸运时间、幸运方法,倒霉时间、倒霉方法。幸运是与注意力挂钩的。重复才能让自己登峰造极,主动去掉运气部分来训练自己。游戏吸引自己的几个原因非常适合训练自己)good
- 第九届北京化工大学程序设计竞赛训练总结【7/10】
- 【深度学习】训练网络的方法总结
- 思维工具-管理及解决问题的方法训练
- javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
- 第八届福建省大学生程序设计竞赛训练总结【7/12】
- SVM训练样本方法总结(用于目标识别)
- SVM训练样本方法总结(用于目标识别)
- SVM训练样本方法总结(用于目标识别)
- TensorFlow使用C++加载使用训练好的模型,.cc文件代码实现的相关类及方法总结
- Java通用程序设计与集合方法总结
- 第十四届北京师范大学程序设计竞赛决赛训练总结2017/5/7
- 如何训练结构化思维能力?它是一种工作方法还是思维方式?
- 暑假集训之思维训练 总结 加自己a题