学习程序架构课程 (学习程序的方法)

最近我们的问答社区开始运营(链接:http://ask.qbhere.com),通过解决大家的种种问题,发现很多人在学习方法上,存在一些误区,所以我们想好好讨论一下。

接下来,我们通过一个简单的案例,来阐述一下,我们认为的学习方法,以供大家参考。

有个师弟问了这样一个问题,想判断是否为水仙数,为此我们复习了一下,什么是水仙花数:

定义水仙花数就是一个3位数,并且满足个位、十位、百位的3次方之和等于本身的条件。

师弟原来的代码:

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

int x,a,b,c;

a=x%10;

b=x/10%10;

c=x/100;

cin>>x;

if(x=pow(a,3)+pow(b,3)+pow(c,3))

{

cout<<"1"<<endl;

}

else

{

cout<<"0"<<endl;

}

return 0;

}

你能看出问题在哪吗?

问题链接:

http://ask.qbhere.com/question/9

学习程序设计需要掌握哪些知识,程序设计入门学习

接下来,我们描述一下解答问题的的流程,希望大家能够体会其中解决问题的方法,而不仅仅是获得答案本身。

第一步,首先将师弟的代码Copy下来,放到的Visual Studio 里面编译运行,结果发现报错了……

学习程序设计需要掌握哪些知识,程序设计入门学习

Visual Studio提示报错:使用了未初始化的变量x?

那么,哪里使用了x呢?

//这里开始使用x

a=x%10;

b=x/10%10;

c=x/100;

//而使用之后,才输入x的值,显然是有问题的

cin>>x;

需要将 cin>>x; 提前到x使用之前,好,我们先把这个问题修复。

这种明显的问题,在我们看来,只要有耐心,经常尝试自己解决,积累一段时间之后,完全可以自己应付此类问题,到时候,你也能感受到自己的进步。

好,我们编译运行,多测试几个数据,发现无论输入任何值,都是打印1,显然还存在问题

学习程序设计需要掌握哪些知识,程序设计入门学习

哪里存在问题呢?假如你看不出来,那么,我们就需要调试一下?你知道如何调试吗?

我们输入88:

学习程序设计需要掌握哪些知识,程序设计入门学习

原则上,x应该是一个固定值,应该保持88的数值不变,结果追踪之后呢?

学习程序设计需要掌握哪些知识,程序设计入门学习

结果,x变成了1024,为什么呢? 这就是问题的所在了, “== ”被误写为了 “=” 。

这就是简单的调试过程,你有体会没?(当然,工作中,调试绝不仅仅这么简单。)

在我们看来,学习程序设计,如果一旦掌握如何调试,如何自己解决问题,就已经是极大的进步,远胜于问题的答案本身。

再说一句题外话,有些同学使用的IDE已经比较古老,建议尝试使用比较新的IDE,不要抱残守缺,学习新的开发环境,本身也是一种学习和进步。

学习程序设计需要掌握哪些知识,程序设计入门学习

第二步,为了满足同学的客观需求,我们依然会给出问题的直接答案,以供参考。

我们之所以,先带领大家分析问题,然后才给出答案,就是想“授人以渔”,而“非授人以鱼”。

在我们看来,引导学生自己找出问题,才是授人以渔;

当前,现实情况往往令人遗憾,很多同学在遇到问题的时候,总是想迫切知道答案本身,而不关注问题是如何解决的。

当然,话说回来,如果只是为了应付考试而已,那么没有问题;

但是,如果真的是想学好程序设计,就必须学会自己分析解决问题,必须主动锻炼自己解决问题的能力。

学习程序设计需要掌握哪些知识,程序设计入门学习

第三步,再回归到问题本身,为了“一次性找出全部的水仙花数”,我们建议,用了一个简单的“for循环语句”,那这算什么——我们认为是,将现有知识关联起来,并给出问题的适当拓展。

学习程序设计需要掌握哪些知识,程序设计入门学习

引导学生将已有的知识关联起来,用于解决新的问题;除了之外,我们觉得应该再联系一些实际的案例,会让学习显得很有趣。

举个例子,我讨论过随机数如何生成,那么随机数都有哪些用途呢?

随机数1

学习程序设计需要掌握哪些知识,程序设计入门学习 随机数2

学习程序设计需要掌握哪些知识,程序设计入门学习

随机数3

学习程序设计需要掌握哪些知识,程序设计入门学习

随机数4

学习程序设计需要掌握哪些知识,程序设计入门学习

我们不是小题大做,而是想说明,任何一个小的知识点,在现实生活中,都是有其意义的。

学习程序设计需要掌握哪些知识,程序设计入门学习

上面阐述的,就是我认为的学习方法,也代表了我们的教育理念,再次归纳一下:

1、先尝试自己分析解决问题,锻炼独立解决问题的能力

对于学习程序设计而言,能够自己解决各类报错,能够自己学会调试,是大大的进步。

2、其次,在带领学生分析的基础上,给出问题的直接原因,以供参考

希望同学,除了关心问题答案本身,更应该关注我们解决问题的方法。

3、再进一步,能够将自己的已有知识串联起来,能够尝试结合现实中的案例,来发现所学知识的意义

问答社区地址:

http://ask.qbhere.com/

我们的愿景,做大学生学习的点拨者,职场的引路人

学习程序设计需要掌握哪些知识,程序设计入门学习

欢迎加入QQ群:540040862,与我们随时互动

扫码关注我们:qbhere前辈在这儿