前言
此博客中的文章,是我为高中兴趣班编写的讲义,主要参考就是谭浩强的《C程序设计》,在10多年教学实践后,经多次整理而成的C图文教程,视频教程也将在不久后发布。公布出来的目的,就是希望C语言这个“阳春白雪”, 能变成“下里巴人”, 成为真正民族的、大众的科学,最终普及到义务教育阶段去。
《C程序设计》历年已久, 且经久不衰, 大量的本专科初学者被引导入门,那么象中小学生,他们能不能学习《C程序设计》呢?中小学生, 由于一些基础知识和学习能力的不足,使得C语言的教学或自学,均有些困难。但实践已经证实,他们完全可以学会C语言! 如果你到百度的C语言吧去,你就会发现许多好手是中学生,甚至是小学生!当然,一般来说,学习C时,课时要稍多一点,教材或视频中应降低数学、英语、计算 机等基础知识的使用量,同时程序设计的引导部分,诸如:基本类型、3大结构、数组、函数等内容的讲解和练习时间要充足。
回答几个初学者常见的问题:
一、有些人学习《c程序设计》很容易入门,但有些认为太难,为什么?
可能与以下几个公共基础知识及其自身的某些能力的具备程度有关:
1、 数学基础:数列(自然数列)及其递推公式、变量函数、方程、科学计数、归纳法和穷举法、指数和对数、应用题求解,这些是高一及以下的数学知识。那么数学差怎么办啊,是不是要从高中的重新读起啊,那些有没有用?
最少下面的数学知识应具备,详细列表如下:
数列相关知识(特别的自然数列用于理解循环语句)
常量、变量、指数对数(起码在第3章数据类型,要用到吧)
函数(特别的分段函数用于理解程序的分支语句、且C语言本身就是函数式的)
应用题及方程求解(既然是计算机程序设计,就难免遇到简单数学问题的求解)
不过在标准C的入门阶段,再高的数学知识就用不着了, 但是注意:说高中数学就够用了,是指标准C入门时。当你在进一步学习诸如数据结构、离散数学等课程以及将来设计大型计算程序、游戏程序或专用程序时,就必然会遇到或用到高深的数学知识。因此,想成为一个软件设计高手,一定要学习数学呀!
总之,要重视数学的学习,绝对不能放弃。
2、 英语水平:初学编程一定要英语非常好吗?
要有一定的英语知识。在编译器的界面和错误提示方面,即使界面再进行汉化,一些诸如错误提示、帮助,仍然是英文的。而且英语和计算机知识是相辅相成的。计算机水平越高,越需要英语的支持,就越需要学习英语,急用现学最快,英语水平自然会提高;英语学的越好,当今先进的英文原版计算机技术资料,能读了,计算机水平就会越来越高。
在初学编程时,如果英语不是很好,也没有关系。一方面可以用网络在线字典,比如:百度词典;另一方面遇到计算机方面的英语难题,可以向高手请教嘛。这样,一边学编程,一边学英语,很快,英语这个非常恐怖的东西就不可怕了。
总之,要重视英语的学习,绝对不能放弃。
3、 计算机操作使用水平,尤其是windows的command/cmd命令行操作: 可以更好的理解接受C语言中关于字符模式的输入、输出的内容。
4、 少许硬件基础知识:微机原理的知识(如CPU、内存的工作原理)和各种进制的计算。诸如基本类型、指针、位运算等等都会或多或少的用到这方面的知识。
5、 数字化抽象思维能力:善于将现实世界数字化。
6、学习能力强:自学能力和方法。
7、 好领路人:高师指点。
注意:前6个条件是参考,有第7个条件就足够了,即第7条是学好C语言的充要条件。
二、程序是什么?干什么的?什么是面向过程????
指挥人工作,要讲人话,你不能象狗一样叫,如果你非要那样,一般人不会理解你的意思哦;同样,指挥计算机工作,要讲计算机能懂的话;这样,你就需要学计算机的语言;
用计算机的语言写出的话,就是程序。C语言是计算机语言的一种。对于程序是什么?再给你做一个比喻:
你见过摆骨牌的吗?1、设计图案和摆骨牌;2、推倒第一张骨牌;3、骨牌依次倒下;4、呈现预设的骨牌图案。
你如何才能让骨牌按照你的设想倒下并呈现出预定的图案呢?
1、你必须首先明白的是:骨牌是没有智能的。它所能接受的命令就是被摆放,被推倒,仅此而已;因此你要根据这些可接受的命令来设计骨牌的图案和摆放顺序。
2、你自己必须完全了解和掌握这种图案的骨牌摆放和倒下的整个过程的全部细节;也许整个摆放和倒下的过程在你的脑海中需要演练成百上千次;
3、你要有能力把这个演练的过程再现出来。即你要使用骨牌能接受的2个动作:摆放和倒下,把整个过程再现出来,这时你要做的就是2步:A、摆放所有骨牌;B、推倒第一张。
4、当然,只有你设计正确,才能在推倒第一张骨牌的一段时间后,出现预设的图案。
你知道吗?计算机其实到今天为止,仍然和骨牌一样,是没有多少智能的。那么,你如何让计算机解决问题呢?
1、计算机的智能是极其有限的,你必须要知道计算机所能理解的命令,其实命令就是几十个英文单词及特定语法,这其实就是C语言讲述的主要内容。
2、在了解掌握计算机可理解的词汇后,你就可以让计算机为你解决实际问题了。比如算算术,要想让计算机算算术,你必须要先会算;而后,你必须用计算机能理解的那几个词汇写出计算过程,而后教会计算机去算,其实这就是所谓的编程。编程的任务就是你教会计算机解决某个问题的过程。还是用算算术举例吧,首先把你算算术时的全部方法或全部过程用计算机词汇描述出来。而后通过键盘和鼠标讲给计算机去理解,如果你写的计算机不能理解,或者让他理解错误了,你就需要修改,然后重新讲给计算机,直到它完全理解你的意思。你是合格的老师吗?
3、我们把算算术时所使用的全部方法或全部过程称为算法;编制小型程序就是在寻找算法,算法找到了,编程任务也就差不多完成了。因此我们说这种程序设计方法是面向过程的。
4、从上面的讨论,可以看出学习c程序设计时需要注意的几点: A、学习计算机可接受的词汇有哪些,书写语法规则是什么。 B、如何把人类语言的算法用计算机语言的词汇改写。
三、c语言是一种古老的语言,现在流行的是面向对象的C++、JAVA等,为何还有那样多的人学C,有什么用呢?
先引用一段话:
近年来,有一些面向对象的计算机语言陆续问世,受到欢迎,有些人认为面向过程的C语言已经过时了,不必学了,这是一种误解。不应把面向对象和面向过程对立起来,在面向对象程序设计中仍然要用到面向过程的知识。作为计算机程序开发人员,既要掌握面向对象程序设计的知识,又要掌握面向过程程序设计的知识。面向过程程序设计仍然是计算机 工作者的基本功。 ----------谭浩强
而且至少以下基本知识应该在c中获得并得到充分练习:
基本数据类型;
3大程序设计结构:顺序、分支和循环;
数组、函数。
无论basic Fortran cobol Java vb vc,都要从“基本数据类型、常量变量、程序设计的3大结构(顺序分支和循环)、数组、函数”开始学习,无一例外。此外,数据结构、操作系统(UNIX)等后续计算机课程往往用C语言作为背景语言。
C++等面向对象程序设计语言是为解决编写大型软件的问题而产生的,一般来说学习起来比C语言困难的多。
值得注意的是,神7的火箭助推系统设备驱动,也使用了标准C作为开发语言,因此标准C的学习是有现实意义的!
另外,我将陆续刊登谭浩强C的后续章节的重点分析,主要针对中专、中小学生中的不入门者。由于是利用业余时间, 所以整理一章大概要一、两周 或 更长时间 ,但我会力图更快更好,同时,也希望自己能坚持到底;只是水平有限,望多多品评指正.
本文转自yonghu86 51CTO博客,原文链接:http://blog.51cto.com/yonghu/1321437,如需转载请自行联系原作者