[原创]浅谈自学C语言的学习过程......
"c语言程序"设计我终于看完了,并且对它有了一个大致的了解。能够运用C语
言这个工具去解决一些需要通过数值运算得到结果的课题。
回顾一下,我觉得我无形之下就用了一些我个人认为实用的学习方法。大致经
历了看、练、模仿、交流、自我实现等几个过程。
刚开始,接触“C语言”的时候,我并没有买电脑,我买的是谭浩强教授编的
那本《C程序设计》。我当时,采用的方法是“多看”。大概从头到尾看了三遍;
并且在一些不懂的地方做了记号。如当时对”指针“、”链表“非常的不理解。
大概过了半个月的时间,我就下了狠心买了一台电脑。在这里,我想说的是,
如果一个学习”程序设计“的人仅仅停留在”纸上谈兵“,我觉得远远不够的。
我在买电脑的时候,在”电脑城“里买了一套关于”C程序设计“的教学光碟。
从这时起,才只能说对C语言刚刚入门。那个“教学光碟”我认为设计得比较科学;
对于我的学习起到了很在的帮助。特别是里面对一些定义的诠译。让我有些不懂的概念
,一下子就明白过来了。大概花了一个星期的时间,我把光碟里面的教学内容看完了。
并选择性的做了一些关于基础知识的“选择题”和“问答题”;使我对一些基本的概念有
了一个更深的了解。
接下来的时间,我便开始将书上的一些练习打入到TRUBO C 中,逐个逐个的查看它的
运算结果。(需要说明的是,我在这时候,还不能自我编程)。一来,想充分理解它的运
算过程。二来,想让这个过程来培养自己对“程序设计”的学习兴趣。
再后来,我就选择性的开始做一些书本上的章节后面给的习题。首先,是在纸上根据自
己编程的方法(在论坛里已有介绍,但我感觉并不是很好。)和思路编程。然后,检查一遍再
输入到电脑里面。这个时候,我主要是想学习怎样更佳的进行“C程序设计”的调试。因为我觉
得“调试”其实对于编程而言也是一个比较重要的一步。它可以让你不断从失败中总结经验;
能够避免一些你常犯的常规性的错误。我这里,称它为“常规性错误”是与“逻辑性错误”相
对而言的。我把其“错误”划分的原则是,在你编程时,有一些错误是由于人为的输入错误或
者忘记而造成的。而且这类错误我个人认为在初学者中可能会经常弛(因为我自己就常犯这种
错误)比如:在“输入”输入函数的代码时,我就经常会忘记把“&"取地址符输上去。另外的
一些错误是由于在程序编码时,程序出现的一些不可预见性的错误;我把这种错误称之为“逻
辑性错误”。这种源代码通常都能够编译通过;但是,却得不到我们自己想要的结果值。比如
说,在求“百鸡问题”的时候,因为我使用了变量都为整型,结果得出来的值与设想得到的结
果值不一样。
我在自己编程的时候,有个习惯;就是每当一个一个程序编完之后;如果碰到一些“调试”
中碰到了一些问题;我一般都会利用/*...*/写到程序的最上面;并且标上日期。这样,我个人认为,可以对自己的学习进度能够有一个明显的了解。
对于“逻辑性错误”我不想多讲;但是,我总结了一下,我犯的“常规性”错误有下面几个:
1.输入scanf函数时,忘记输入"&"取地址运算符。
2.忘记输入相关的“文件原型说明“。
3.在用switch语句,忘记输入了break退出循环语句。
4.定义多个变量时,多输入了";"分号。
5.左括号少输一个或多个。
......(略)
这个时候,我已经到了现在的学校了。 至今,谭浩强教授编的《C程序设计》那本书里的练习我还是没有全部把它做完。为什么?我的观点是选择性的做一些比较典型的习题;不把一些宝贵的上机时间浪费到这上面。(到了学校,家里的电脑没有带过来;每次上机时间为3个小时)。“早晨”!对于每个人来说,都代表着又一天的开始。我比较喜欢睡懒觉;不守,我还是坚持每天早上拿出至少半个小时的时间出来“背单词”!对于学习C语言,可能还算好,只有32个关键字,不是很多。
说点题外的话,我想介绍一下我以前学习“qbasic语言”的学习的方法。每种语言为了保证其语言的科学性、严肃性;都或多或少的有许多“关键字”。我的英语不是很好(现在来说,应该说是非常之差),那个时候,我用的学业习方法是把它当“名词”来使用。不需要它的读法以及词意,只要知道它的单词给合结构以及在程序设计中的作用就可以了。而为这,我想我是吃了不少苦头的。首先,就是“交流”!
记得有一回,我读中专的时候;我跟一个同学说“随机数种子”。我是这样说的:“某某某,你知道“随机数种子”起什么作用吗?它的单词是r-a-n-d-o-m-i-z-e。”这么一看,我倒不要紧,倒是那个同学听了,笑得喷饭。这样的记法,虽然你能够编出源程序出来;但是,很难和别人进行交流。这样,或多或少都是不利的。我觉得,对于英语不是很好的网友;几个“关键字”还是无论如何也要记住的。其它的暂且不说。
学习“C语言”,我也准备了一个专门记单词的笔记本。首先,当然是把32个关键字“写在上面;并且注上音标以及”它的翻译“。我没有直接照现在常规的英语字典上写的。而是将“它的翻译”写成在“C语言”时它所代表的意思。我个人认为,这样比较好。例如:“const“这个关键字;在字典里面是”建设、制造“的意思;但是,我会写上”定义常量“ 。因为,我觉得对于学习而言,知道后面的意思要比前面的定义要强得多。
说点笑话,到现为止;我对英语还不是很好;可能是初中的时候基础没有打牢;我真希望有哪位网友能够发发善心帮我辅导辅导;在下,当然是感激不尽了。幸好,我宿舍里有一位”高手“,我写出上单词,注上音标后;就要请教他出马了。当然,我会在旁边注了”中文“,美其名曰:”直译“。嘻......嘻.....
从前到后,我花了两个多月的时间;总算是告一个段落了。如果,要我对C语言做一个总结的话,我觉得“C语言”你必须明白:
1.“结构化程序设计的三大结构:顺序结构、循环结构、选择结构......
2. 数组的应用。(字符数组、指针数组等)
3. 指针的应用。
......(略)
当然,书上还介绍了很多;但是,我认为上面的3点是C语言的精髓部分其中最重要的部分。C语言有一个强大的功能,就是对“位运算”的操作。不过,对于一个初学者来说,我觉得不必深究。因为如果你要理解透彻的话那么就不是单单的在学习一种语言了。对“文件”、“图形”的编程学习,我也有写上去。为什么?我在这里作为一个初学者,想提出几大理由:
1. trubo c语言是教学语言,不是商业运作要用的语言(至少现在的我是这么认为的)
2. 时间是很珍贵的,对于学习“理论”的学生来说尤其是这样。
(下面,说的一段话可能会引起部分的网友的公愤。但是,我在这里注明:仅代表个人观点。)
以前,有一段时间;我总是在研究怎样用“qbasic“编图形,现在呢?有一段时间,我也在用同样的态度对待C语言。有个偶然的机会,我看了一篇贴子;看了之后,我也有同感。大致意思是:“我们总在拿着一个一个别人做好的堆木,堆成自己想要的东西。”当然,既然是别人的东西;那么你就心须学会使用它;而这正是一大悲哀。因为,我们总是把一个又一个的珍贵蝗时间块花在这无聊的学习当中。我将这种人称之为”程序员工匠“不之为过。
就说在C语言中,学习画图形;你必须学习调用画图形的原型说明以及调用方式、里面关于圆、点、线命令的使用。而这,你就得把时间大把大把的洒吧。(如果你进行商业目的的,那就没话说。)
最后,我想说的就是”交流“了。和我一起学习这门专业的也有很多人。不过,我们都处在同一个起点上。得不到什么更深一步的交流(多谢网络的发达)。我有一天,在网上搜索的时间里;无意中搜索到了”中国编程“论坛。开始,我总是以”游客“的身份在里面看。当然,是受益非浅!另外,我就是到www.csdn.net里面去感受“高手级”前辈们“的贴子。其中,我最喜欢搜索的关键字是”程序人生“。因为,我觉得我想朝这个方向走,我的心情是空虚的。我每次总能在"中国程序员网站"里得到一点慰藉!
在”中国编程“里陆陆续续的有了大概一个多月的时间之后,我有了注册成”会员“的想法。在9月底,正式以”竹本鸟“这个笔名进入到了这个大家庭里面,我很高兴;能有这么好的学习平台,为中国的软件事业的将来”贡献着!
上面写的是我个人在“学习C语言程序”时从入门到熟悉的过程。希望对于初学者能够起到一点帮助!
原稿于2004.10.13夜10:10写于201初室
文字录入:2004.10.16于“旺旺网吧”