学习c++的问题

大一时候学的c语言,自我感觉学得还不错,后来又看了一下c++,都是谭浩强的书,现在在学习孙鑫老师的vc++深入详解,书看了快一半了,视频教程也跟着在看,可是发现个问题,照这样学下去的话,我估计我就只会编书上讲的那些单文档画图啊文本编辑之类的简单的windows程序,离搞软件开发的水平还差得远。我寒假买了本c++primer,前几天还去图书馆借了本讲windows编程的书,因为感觉需要学的东西太多了,现在一阵瞎忙。
我是电子专业的,没有开数据结构这门课,为了学好c++我是不是需要自学数据结构呢?我有一本清华严蔚敏老师的c语言版的和一个c++版的不知道看哪本?
本来还一直觉得自己编程方面有那么一点天赋,可是最近由于快到计算机等级考试了很多人都来问我一些程序题,笔试还可以,机试题很多以前会的题现在都要想好久,感觉很失败,是学完就忘了还是根本基础就很差?我想多学些算法方面的东西,可不知道怎么做,书上的习题都太简单,有没有那种专门讲各种算法,教你怎样用编程语言解决实际问题的书?
我现在的状态真的很糟糕,怀疑自己究竟有没有入门,不知道下面的路怎么走,继续学孙鑫的vc++?还是先把c++primer看完再说?又或者是先看windows编程在学vc?or静下来好好研究数据结构?or else..?
因为最近在做课设,有近一个月的空闲时间,想趁这个机会好好充充电。请好心的过来人指点迷津。

首先,我想说一下学习思想.学编程其实跟网络游戏有着类似的效果.开始的时候,你会对那些代码,函数等产生很大的兴趣,尤其是刚接触编程的人,刚学习第一种语言的人.可是,当你一步步深入的时候,你会发现你没有了以前那种斗志.就好象你在玩韩国泡菜网游似的,玩到一定程度,每天就是练级练级,完全是一个想冲到高级别的意志力在支持着你.而学编程就更难了,学了两个月后,总是觉得你好象全都学会了,却又什么都做不了,又没有其他的意志力支持你.这时候你会很容易放弃,或者转到别的如网业制作,PS,FLASH等行业的.其实我告诉你,虽然你觉得你好象已经学了很多了,其实你还是什么都没学呢,等你跨过这道坎,才是你刚入门的时候.说这些,只是想告诉你,学编程中会遇到很多困难,你要努力的克服这些困难,才能真正学到东西.否则,你根本别想学编程,趁早转行.

接下来,我帮你规划一条编程之路.
学编程的人,很少有人没学过C语言的.我推荐让C语言作为你第一个学的语言.虽然有的人说要先学VB,其实这种观念是错误的.C确实比VB枯燥,而且说实话学完C后不学别的就好象没学过,感觉什么都没学会.可是,对初学编程的人来说,只有C语言才能建立起你对编程概念的理解.VB不是编程,VB只是一种工具而已.C语言确实是个不折不扣的语言,真正让你知道什么是编程的语言.有初学C语言,用TC2编译器的人总说他学了C什么都不会.什么软件也写不出来.我可以告诉他,编程编程,编的是程序,而不是软件,软件这是程序的一个构价.你想编程出软件,那以后很轻松的就能掌握,现在你需要学的就是编程,说明确一点,你现在所需要学的就是算法.编程的灵魂是算法,这点每个人都要记住.
所以,第一门语言要学C,推荐的书为谭浩强老师的<C程序设计>(清华大学出版社)或者克尼汉的<C程序设计语言>(美国).
初学者也许需要一套视频教程来帮助自己更快的入门,那么就推荐你去百度搜索"C语言视频教程",第一页的第一条记录就是这个教程.而且是和谭老师的<C程序设计>配套的教程!
注:有些人说谭浩强的书不好,太死板.那么我只能说你最多是个一瓶子不满,半瓶子逛荡的人.真正要掌握高深技术的时候,你会发现你没办法掌握.

C语言要学到什么样才算个头呢?其实,C语言没有学到头一说.有些人学了一辈子,还在钻研.那么你应该到什么时候学下一种呢?按时候算的话,我推荐,如果你每天有6个小时的时间学习的话,一个半月以后,你就可以转到下一个语言的学习过程中了...(我估计普通人在这一个半月内该掌握的都掌握了)
那么,下面要学的是什么呢?这会不会还有人说VB吧.还美其名曰加深对编软件的印象.这种说法很幼稚.学了C语言还学什么VB呀.其实VB确实是很强大的,容易入门,想精通了也不容易.著名的DOS系统就是用BASIC语言写出来的.可是,这种这么易用的软件对于专业学编程的人是一种不好的东西,会让人产生依赖,让人产生惰性.VB的那些控件的功能实在是太强大了,你都不用怎么思考,就可以编写出来.可是,控件毕竟是不能随你的意愿支配的,控件是死的东西.你真正要学的是编写的思想,是函数(Java中称方法).另外,学VB还不如去学Delphi呢.
注:市面上的软件一般一眼就可以看出是用什么语言编程的,而VB编写的软件几乎找不到多少.
所以,下面要学的也就那两种选择了,C++/Java.我推荐,先学Java.
Java实际上是C++改的.去除了C++中指针的部分,让C++变得更安全,同时也比C++稍微简单了一些.你需要去找一些关于Java的介绍,在看下面的东西.
我听一个北大青鸟的老师说Java的最终发展目标是J2EE.我觉得不然,J2ME一定也是个发展方向,只是他跟J2SE,J2EE有很大的不同,开发环境也很不同.关于J2ME的部分我不做讨论.而J2SE呢.说实在的,市面上的J2SE软件确实也是很少的,你见过有几个拓展名为.jre的软件?不过还是要告诉你,学习Java的人肯定最先接触的是J2SE.Java的GUI软件只是技术性的问题,也是开发手段的问题.不管你是要发展到J2EE,还是转到GUI编程,J2SE绝对不是弯路.还是那句话,算法是最重要的.而Java比C++最大的优势在于他的完全面向对象和跨平台.其实,就算你先学了Java,你还是可以很容易的掌握C++,Java程序员和C++程序员的互转是很容易的!再说一些Java的优点.Java比C++方便很多,下载了编译器后一个记事本就能写程序,JBuilder实际上只是个辅助的工具.我去一个搞Linux系统开发的公司看过,用JBuilder的很少,一般都是直接用UltraEdit直接写程序.而C++必须要用VC++等编译器,不说电脑配置低很不好用,光说VS是要花钱的,而JDK永远都是正版(免费下载),就应该用Java.其实这只是习惯问题,不管你是先学Java还是先学C++,都会很快掌握另外一个的.
Java的书有很多,初学不要买实例的,买那种一直讲基础的,清华大学出版的书很好.另外推荐视频教程,孙鑫老师的Java无难事.去52ebook直接搜索名称"Java无难事",一共有12张CD,都下载下来就好了.教程的第一课会教你如何配置,去哪下载编译器等.
要学到什么时候呢?我是这么推荐的,学到你可以不看任何资料,(当然可查看JAVA帮助文档)熟练的编写出一个酒店管理系统来.接下来,你就可以去学别的了.
这个别的,就是C++,还是那句话,Java程序员可以很容易的掌握C++,只要学了C++的基础语法,剩下的就是实践了!
C++的书可以买一本C++语言+SQL的应用,就是讲数据库系统的例子.多练是很重要的.
视频教程推荐孙鑫老师的VC++视频教程,去讯雷上搜索"孙鑫 VC++",找到那个700M多的打包教程,就是了.

其实学懂Java和C,剩下的你真的可以自己掌握了.我粗略的说一下.
比如,你可以学汇编,汇编实际上是很磨人的,不过汇编高手永远都是抢手货.
那么VB呢?DELPHI呢?哈哈,又是VB,你学,这个时候学VB,学不了几天就掌握了.不比初学轻松?
想学的你都去学,甚至还可以去学Flash,连Flash ActionScript都可以很轻松的掌握.

其实现在,你的路已经定下来了.你剩下的就是不段实践,不段往更高的方向发展.
在这之前,建议你去考几个试.
去考中国计算机软件职业资格水平考试,直接考中级的软件工程师.或者再学一些别的,考个网络工程师.如果你愿意,你可以再多学点东西,把全国计算机等级考试的1到3级的所有东西都考下来.呵呵.
到了这种程度,我想真的不用我再说了,都考你自己了.

最后,记住两句话.
编程的灵魂是算法+数据结构!
学好编程实践最重要!
最后希望这篇文章对你有所帮助吧!这都是我在逛论坛的时候收集我们前辈们给我们后人留下的经验之谈,总之我觉得非常好,当然这只是我认为而已!如果你也赞同 呵呵那就采纳咯!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-12
1.我的亲身经历是:学习编程的一定要学习“数据结构与算法”,不然找毕业工作容易被刷!我说的是大多数情况不是所有情况,而从自身发展角度看也是一样的,我们不会一辈子做coder(程序员),要走高就必须学数据结构和算法设计方面的。书不管是那个的,其实算法是思想,不是程序,是C语言的或是C++的不重要,重要的是你在学习的时候看得懂别人用**语言实现的算法思路。

2.建议继续学习“数据结构与算法”。你觉得你自己差了,其实不是这样,刚过来的人,我知道大学里面学的课程能学习到什么程度,大学时我们说我们会C、C++、java...编程,其实那时编写的多数都是编译器能通过,代码不足200行的小程序。但是这就足够了,通过这不到200行的小程序,我们牢牢地掌握了语言的语法和基本的使用,所以,在学校来说,牢牢地掌握了语言的语法和基本的使用就很不错了。

3.“离搞软件开发的水平还差得远。”这句话有一半是对的,你学的离搞软件开发的还差得远是对的,但是记住,不似乎水平!是时间,是投入度。跟你说,搞软件开发你的水平已经差不多了,但是你现在没有亲身经历一下开发的过程你还不知道。
举个例子:
做一个windows平台下能运行的具有图片、视频、音频文件浏览的多媒体播放器,这样一个项目一个公司在真正开发的时候30个人做1个月多时间。30个人做1个月多时间,有的人也是刚毕业的大学生,照样能拿下!
这才叫软件开发!它的特点是要你在很长时间内一直去做同一件事情,比如,写过是屏幕全屏的功能,文件解码功能可能干上1天、3天不定,这是现在的你没有办法做到的,不是水平问题,记住! 你可以试试给自己下达一个任务,你连续一段时间就开发它试试,我的经验告诉我,你肯定行,没问题!本回答被提问者采纳
第2个回答  2009-03-12
首先我想说说那些推荐<<算法导论>>这本书的人,最近我还是在这里看到不少人推荐这本书. 我想问,你们自己能看懂吗?还敢推荐给别人?估计连看都没看过吧,只听说这本书好,所以就好,里面的算法,没有几年的软件开发经验根本就看不下去.

再说楼主,其实楼主和我当年一样浮躁,想学好编程,然后又发现要学的东西太多了,之后就什么都学一点.什么都看一点.到头来什么都还是不会...

至于说书上的题目太简单,我想楼主肯定没有仔细看C++ Primer这本书,这书的习题是有一定档次的,当年刚看那本书的时候,;练习做的很吃力,看都看的懂,一做题就懵了

数据结构,这当然是要掌握的,然而并不是说要你怎么样用书上讲的数据结构去写程序,而是要理解数据在编译器中内存中存放和处理的结构,了解了数据结构,对编程的过程就会有一定的认识,在对数据处理过程中的一些问题看到程序就可以很清楚的了解了.

还有楼上推荐做ACM的题,这也是个很不错的方法,当年我也只坚持做了十几个就不行了,如果你能坚持做一个学期,保证你到这里看到提的编程问题都是小菜了
第3个回答  2009-03-18
楼主所说的内容,我除了孙鑫的视频以外,其他内容基本上都看过

现在建议如下:
首先是你看的书--
<c++primer>第四版属于入门比较经典的书.如果你像你自己描述的,很多程序上的问题解决不了的话,应该是c++语法还掌握得不够,建议还多看看这方面的书.
孙鑫老师听说讲的也可以.

至于
<vc++深入详解>和windows编程的书,要知道c++其实是非常有难度的,很多人都是学了c++或者c转型到c#或者java等语言去了(包括在下).如果你确定了以后的图形化开发环境是用vc++,就可以找点vc++方面的书看.windows编程?到后期其实任何语言都要接触这个内容,是必须学习的.
(我就看到过一个学生,大学期间没开windows程序设计,到了找工作前忙活着学习这门课的)

数据结构--
数据结构是编程方面比较重要的思想,做很多程序或者运算,都需要了解数据结构,到后来计算方法里面的各种算法,也需要数据结构的基础.
你想知道c和c++版本的数据结构哪个比较好?
告诉你,绝对是c! c++版本的数据结构,一般都富含n多的模板来描述,但是有必要么?其实数据结构要的是思想,模板恰恰增加了数据结构的理解难度.而c就少了这一块,如果你了解一点c,强烈建议c版本

个人经验:最开始我也是,一直都编代码,写点控制台小程序,总感觉和现实中的软件相去甚远.但是让我用现在的结果告诉你:兄弟,把语法基础搞好,之后不管什么语言(vc++)也一样,理解起来都是一马平川的事情,不用急,慢慢来!

额``5月份跨过程序员直接考设计师...为自己祈祷````

参考资料:手打

第4个回答  2009-03-11
要深入windows编程,应该先看windows 原始 API怎么用的,然后可以学学MFC,《vc++深入详解》为入门级读物,其次《深入浅出MFC》为简单理论型,再次《Windows编程》,王艳平写的,偏于实践,并且原理透彻

严蔚敏老师的c语言版,还好,这个当然要自学,是基础。另外算法方面,推荐《算法导论》。

请静下心来,不必一个学完了再学另1个,可以同时学的,不过最好先把数据结构与算法的搞定,可以去acm.pku.edu.cn做做题。
相似回答