[转贴]C语言的双重循环和英语的时态
在教C语言的时候,我发现一个有趣的现象:一些大学生觉得困难的东西对于中小学生来说却感觉很容易。比如多重笔循环、结构数组、指针变量、函数等。为什么呢?
我感觉可能有两点:一是我们的教学方法与众不同。我们是从实际应用开始。一开始不让学生学习变量、数据类型等概念,而是直接让学生们用C语 言编一些有趣的小程序比如五环旗、笑脸、正弦函数、电子琴、小游戏(石头剪子布、疯狂小赛车、汉字的战斗)等。学生们一般都比较喜欢这样的玩法,等玩了一 段时间对编程有感觉了回过头再来看教材就觉得比较容易了。而有些大学生不屑这种玩法,一味抱着教材在那里死学死记,就是不太愿意上机练。现在一些大学生学 了很长时间的C语言,连国家二级考试都没有过。而那些初中生一般学两三个月大多数就可以很轻松过级。其实我不太喜欢让孩子们过级,那个东西很无聊,他们一般都是家长让去的。
我只是想说明一个问题:看问题的心态往往会决定事情的成败。这也正是我想说的第二个方面。有很多大学生在学C语言之前就已经了解:C语言比较难学。这个印象会随着自己或身边同学一次次考试不及格而逐渐加深。再加上有些老师一味在黑板上教编程,会让学生觉得学起来特别难。而中小学生却没有这样的心理负担,他们基本没有听说过C语言难学,这样学起来C语言也就自然成了一件轻松愉快的事情。一些初中生收获的不仅是学会了C语言,更重要的是掌握了比较好的学习方法并充满了自信,再学习学校的课程也会以轻松、愉快的心态去面对。
你或许会奇怪,说英语时态怎么讲起学C语言了?
我感觉学习的道理相通的。学英语中也有类似的情况,很多问题是我们首先在心里把它作为难题做了定位,因此也就很难再以轻松、愉快的心态去面对了。像从句、非限定动词、时态等,很多学生都觉得不好掌握,在心理上已经有了畏难情绪。这叫未上阵先输一场。
请 忘记自己的身份,比如小学生、初中生、高中生、大学生、成人。要知道,并没有初中英语和高中英语或大学英语。英语就是英语,它是一门语言,是用来交流的工 具。同时英语也不是高深的科学体系,它是在英语为母语国家里二、三岁孩子都能轻松应用的东西。我们要做的可能是在尽量短的时间里(比如二到三年)让自己应 用英语的能力达到英语国家小孩的英语水平,或者是可以考托福。
还请相信你的能力,因为你能很好的应用汉语。而汉语要比英语难学得多。你已经掌握了世界上最难学的语言——汉语,说明你智力至少是正常的,甚至可以说是非常优秀的。抛弃英语难学的想法,轻装上阵。
现在不管你是中学生还是大学生,只要你还觉得时态不好掌握,那就和我们一起进行下面的探索。
现在我们问一个C语言的问题:
你可以用C语言编一个在屏幕上画了一个顺时针旋转的大五角星,同时在大五角星的五个角上分别有一个颜色不同且逆时针旋转的小五角星的程序吗?
你或许会说,我没有学过C语言怎么回答呢?
我们的目的正在于此,就是想看一下一个没有学过C语言的朋友在遇到这个问题时的心态如何。你觉得这个问题复杂吗?
如果你觉得很容易,恭喜你,你很优秀。
如果你觉得难,这很正常。在我们这里,一开始接触这个问题时,绝大多数的学生都觉得难。
现在我告诉你,这是一个比较简单的任务。小学五、六年级的学生都可以在学习一两个星期以后轻松完成。实际上这是一个多重循环的问题。
解决问题的思路是:
一、 先学习画一个五角星。
二、 再学习画一个能改变角度、大小和颜色的五角星。
三、 编一个能改变五角星角度、大小和颜色的函数。
到此第一个层次问题解决了,不用再考虑这个函数的细节了。
四、 利用这个函数画出大五角星。
五、 利用循环画出五个小五角星。
六、 再用循环改变这些五角星的角度形成旋转效果。
或许你会觉得这个有点复杂,其实真正上机练习起来很容易就学会了。这正是我们想一再重复的:光靠黑板和书本是学不会编程的。学英语也一样,方法正确还要加上多练。
言归正传,回到英语时态问题。如果我们把全部时态作为一个层次的问题,那就有十六种时态。这样看起来问题就比较复杂,而且现在学校里是把时态问题分割开来放到几年里去学习,让不少学生感觉多少年来总有一个时态问题在困绕着。
我们现在把英语动词时态问题划分成两个层次:一个层次是动作状态问题,另一个层次是动作的时间问题。
在动词状态这个层次有四种情况:一般、进行、完成、完成进行。
在动词时间这个层次也有四种情况:过去、现在、将来、过去将来。
对应动词的每一种状态都有四种时间,那么四种状态就会有十六种变化。问题还是那么多,但它变得简单多了。这恰恰就相当于C语言编程中用双重循环解决问题。
我们先看时间,只有四种情况。把时间问题搞清楚了再考虑状态问题。而考虑状态问题的时候把时间问题当成一个整体不要再细化它,这样就相当于我们实际只要考虑四种动作的状态。也就是只相当于要学习四种时态。
英语动词的四种时间:
1、 现在——眼下这一时刻或一段时间。
2、 过去——指现在这时刻以前的某一时刻、某一段时间或者所有过去的时间。
3、 现在以后的任何时刻、时段或全部时间。
4、 过去将来——在过去某时刻之后的时间。比如昨天、今天、明天及以后的任何时间都是前天的未来。
例如:Tom said the day before yesterday that he would go to New York in a week. 汤姆前天说一周之后他将去纽约。
the day before yesterday adv.前天
英语动词的四种状态:
1、 一般:经常性的动作、状态或一次性的动作。强调动作本身,有叙述性质。
2、 进行:表示在某一时刻或一段时间正在发生的动词。强调动作的过程,具有描绘性、生动性。
3、 完成:在某时刻前已经做完或一直持续的状态。强调动作的结果。具有逻辑推导性。
4、 完成进行:强调动作的连贯不断和结果。具有原因和过程的描述性。
说明:关于英语动词时态的四种时间和四种状态参见刘戈锋《英语语法最快过关》
|
动词状态 |
动词时间 |
|||
|
现在 |
过去 |
将来 |
过去将来 |
|
|
一般 |
work(works) |
worked |
will(shall) work |
would(should) work |
|
进行 be+现在分词 |
am(is,are) working |
was(were) working |
will(shall) be working |
would(should) be working |
|
完成 have+过去分词 |
have(has) worked |
had worked |
will(shall) have worked |
would(should) worked |
|
完成进行 have been + 现在分词 |
have(has) been working |
had been working |
will(shall) have been working |
would(should) been working |
其实一般时态对大家来说估计都没有多少问题。而完成进行时态在弄清楚进行时态和完成时态以后也会变得很容易。这样实际上我们只要多花些时间把进行时态和完成时态搞懂,时态问题也就基本解决了。以后我们会专门讨论进行时态和完成时态。