关于编程能力


    前一段的直播课程结束了,效果没有我想象的好,但也结识了一些新的朋友,在与大家的交流的过程中,又出现了一个老生常谈的问题,就是感觉各个知识点都会了,到了写代码的时候不知道怎么下笔,其实很多学C语言的同学都遇到了这个问题,这可能就是所谓的编程能力吧.在我的另一篇笔记"编程语言究竟学什么?想说的就是这个编程能力,现在我有了更清晰的认识,编程能力就是在你彻底弄懂算法之后,能够顺利将这个算法用代码实现,当然这个算法可能非常复杂.衡量是否掌握一门语言的标准应该就是这个吧.算法固然重要,但的确是语言之外的东西.
    那么很多同学为什么没有掌握这种编程能力呢.这也正是我的直播课堂主要讲述的内容.

    第一点 对语言的理解不到位,造成了具体的算法过程对应不上抽象的语言理解.计算机语言不是自然语言,也不是数学语言,而是基于处理器和存储器的特殊语言,他的重点内容在于对存储器的管理和使用,而我们现有的教材里恰恰忽视了这点,"变量,赋值"这些抽象的数学名词被拿来讲述编程语言,在我的课程里他们变成了"(内存)空间,存储",数组不再是抽象的数据集合,而是具体的 多个空间 ,再来看算法,有很多步骤就是把一些东西读出来存进去,常见的算法步骤有查找,就是把一大堆数据挨个读出来,进行判断,再一个就是存储,首先看看需要开什么样的空间来存,就是开空间,专业名词是声明变量,我把C语言的涉及到存储的内容合并为一章,讲述了C语言关于内存使用的多个方面,包括变量,数组,指针,结构体,一次课就可以明白结构体类型的指针数组的含义,分开反而不容易讲明白.这方面的东西可以参考我的另一篇笔记"C语言的存储",对于C语言是这样,对于其他编程语言也是这样.

    第二点 对函数认识不够,其实写程序就是写函数,不管是什么语言.函数有一个重要的东西就是参数,算法是一种方法,是针对一些不确定的数据进行特定处理的方法,那么参数就是那些不确定的数据,函数就是算法的载体,写算法就是要写一个函数,而我们现有的教材在讲算法的时候往往忽视了这点,把一个算法弄清楚,首先就是要把参数和返回值弄清楚.在写算法的时候,除了上面说读取和存储之外,还有一些其他的行为,比如在二分法查找里,要先"排序",还有上面说的"查找",每一个行为都是一个函数,在遇到这些行为的时候,我们不要着急写代码,直接调用一个自己定义的或别人的函数(有写过的,就直接调用)代替,等回过头来,再实现这个函数,这样你的算法很容易就写出来了.很多同学对函数参数理解的不好,不敢放开用,就导致了躲避函数的习惯,不管多少代码,都写在一个函数里.其实这样反而影响了算法的思路.
    
     如果以上两点都解决了,我想你的编程能力一定提高了不少,当然,一定要去写,写出来才能看的清楚,想的明白.在我看来,学习C语言,主要就是以上两方面的内容,至于表达式,循环,分支,跳转等知识,应该不是难点.在我的课堂里是以一个小游戏作为练习的内容,不像以前,你只是写一个个孤立的小东西,现在你写的是一个软件的一部分,这样写出的代码实际意义更强一些,开始就是实现游戏里的算法,主要是三个算法,一个随机放球,第二个是检测消球,给定一个点,检查4个方向是否可以消球,第三个最短路径,给定两个点,找到两个点间的最短路径.前两个算法简单,最后一个难一点,学过数据结构的应该没问题,就是广度优先算法.有兴趣的同学可以尝试写一下,来检测一下自己的编程能力.不管你用什么语言都可以来实现这些算法,如果你用一种语言写过之后,学习第二种语言来写这些算法的时候,你会发现你很清楚的知道你学习的重点是什么,这样就会非常快的学会另一种语言.
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值