




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何学习程序设计 前言笔者发现问得最多的问题莫过于如何学习编程?JAVA该如何学习?。类似的问题回答多了,就萌生了写下本文的想法。到时候再有人问起类似的问题,我可以告诉他(她),请你去看看JAVA学习之路。 软件开发之路是充满荆棘与挑战之路,也是充满希望之路。JAVA学习也是如此,没有捷径可走。梦想像天龙八部中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫天神啊,请赐给我一本葵花宝典吧,殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了东方不败,倒是成西方失败的几率高一点。不走弯路,就是捷径,佛经说的不无道理。我们今天来谈谈如何学习程序设计?JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C+等其他程序设计语言也一样管用。有编程高手认为,JAVA也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。1培养兴趣兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个食利阶层。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。2慎选程序设计语言男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C+等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。3要脚踏实地,快餐式的学习不可取先分享一个故事。有一个小朋友,他很喜欢研究生物学,很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞。有一次,他走到草原上面看见一个蛹,便取了回家,然后看着,过了几天以后,这个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,想抓破蛹壳飞出来。这个过程达数小时之久,蝴蝶在蛹里面很辛苦地拼命挣扎,怎么也没法子走出来。这个小孩看着看着不忍心,就想不如让我帮帮它吧,便随手拿起剪刀在蛹上剪开,使蝴蝶破蛹而出。但蝴蝶出来以后,因为翅膀不够力,变得很臃肿,飞不起来。这个故事给我们的启示是:欲速则不达。浮躁是现代人最普遍的心态,能怪谁?也许是贫穷落后了这么多年的缘故,就像当年的大跃进一样,都想大步跨入共产主义社会。现在的软件公司、客户、政府、学校、培训机构等等到处弥漫着浮躁之气。就拿笔者比较熟悉的深圳IT培训行业来说吧,居然有的打广告宣称参加培训,100%就业,居然报名的学生不少,简直是藐视天下程序员。社会环境如是,我们不能改变,只能改变自己,闹市中的安宁,弥足珍贵。许多初学者C+/JAVA没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个HelloWorld程序,就忙不迭的向世界宣告,我会软件开发了,简历上也大言不惭地写上精通VC/JAVA。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧起C+编程思想JAVA编程思想仔细钻研,早知如此何必当初呀。你现在讲究简单方便,你以后的路就长了,好象也是佛经中的劝戒。4多实践,快实践彭端淑的为学一首示子侄中有穷和尚与富和尚的故事。从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:我打算去南海朝圣,你看怎么样?富和尚说:这里离南海有几千里远,你靠什么去呢?穷和尚说:我只要一个水钵,一个饭碗就够了。富和尚为难地说:几年前我就打算买条船去南海,可至今没去成,你还是别去吧!一年以后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。这个故事可解读为:任何事情,一旦考虑好了,就要马上上路,不要等到准备周全之后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,君子动口不动手对软件开发人员来讲根本就是错误的,他们提倡动手至上,但别害怕,他们大多温文尔雅,没有暴力倾向,虽然有时候蓬头垢面的一副比尔盖茨样。有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。5多参考程序代码程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被仙剑奇侠传中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什么要以悲剧结尾?据说是因为写仙剑奇侠传的程序员失恋而安排了这样的结局,他把自己的感觉融入到游戏中,却让众多的仙剑迷扼腕叹息。多多参考代码例子,对JAVA而言有参考文献4.3,有API类的源代码(JDK安装目录下的src.zip文件),也可以研究一些开源的软件或框架。6加强英文阅读能力对学习编程来说,不要求英语,但不能一点不会,。最起码像JAVAAPI文档(参考文献4.4)这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个金山词霸。看多了就会越来越熟练。在学JAVA的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而可以成为剥削程序员的周扒皮。7万不得已才请教别人笔者在网校的在线辅导系统中解决学生问题时发现,大部分的问题学生稍做思考就可以解决。请教别人之前,你应该先回答如下几个问题。你是否在google中搜索了问题的解决办法?你是否查看了JAVAAPI文档?你是否查找过相关书籍?你是否写代码测试过?如果回答都是是的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。8多读好书书中自有颜如玉。比尔盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔盖茨就已经读完了所有的百科全书,所以他精通天文、历史、地理等等各类学科,可以说比尔盖茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富。笔者在给学生上课的时候经常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,天呐,这么多书到什么时候才能看完了,学软件开发,感觉上了贼船。这时候,我的回答一般是,别着急,什么时候带你们去看看我的书房,到现在每月花在技术书籍上的钱400元,这在软件开发人员之中还只能够算是中等的,学生当场晕倒。(注:这一部分学生是刚学软件开发的)9使用合适的工具工欲善其事必先利其器。软件开发包含各种各样的活动,需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。学一些基本概念先,如变量、控制转移语句、函数与子程序、对象、属性、方法、事件、以及事件驱动的概念,然后试者编一些小程序以加深理解,再逐步深入学习VB各对象的用法、组件编程、数据库编程、网络编程等高级技术,并在每学一种,就用它编程实验一下,或找相关的例程实验一下。当然,先要有一本好的教材,本论坛有好多帖子都介绍了学习方法和下载教材的网址。 学习编程,该如何入门,请进。如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧! 方案一Basic语言 & Visual Basic 方案二Pascal语言 & Delphi 方案三C语言 & Visual C+ 方案四C+语言 & C+ Builder 方案五SQL语言 & Power Builder 方案一Basic语言 & Visual Basic 优点(1)Basic 简单易学,很容易上手。(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。(3)众多的控件让编程变得象垒积木一样简单。(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。 缺点(1)Visual Basic 不是真正的面向对象的开发文具。(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。 综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。 方案二Pascal语言 & Delphi 优点(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。 缺点Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。 综述: 方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。 方案三C语言 & Visual C+ 优点(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。(3)VC是微软制作的产品,与操作系统的结合更加紧密。 缺点对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。 综述: VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。 方案四C+语言 & C+ Builder 优点(1)C+语言的优点全部得以继承。(2)完全的可是化。(3)极强的兼容性,支持OWL、VCL和MFC三大类库。(4)编译速度非常快。 缺点由于推出的时间太短,关于它的各种资料还不太多。 综述:我认为C+ Builder 是最好的编程工具。它既保持了C+语言编程的优点,又做到了完全的可视化。 方案五SQL语言 & Power Builder 对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。获赠金币帖,共获得在学习程序之前,我想大家首先应该对程序员这个行业熟悉一下,更加要对编程的语言以及所涉及到的工具有所了解。因为如何了解这些是很难去给自己一个明确的目标的。所以首先我想在这里先为大家介绍一下这个行业以及一些相关的内容。程序员,相信在很多人眼中是一个非常神秘,非常特别又或者说非常有趣的职业。因为在这个行业里面实在出现了太多的英雄,每一个英雄的事迹都足以让我们热血沸腾。但是,又有谁知道在这些英雄的背后,藏着多少辛酸,藏着多少的努力。程序员这个行业并非如大家所想象的那样美好。程序员是一个没有白天黑夜概念的行业,程序员是一个让人筋疲力尽的行业。你们看到的是一些英雄的光辉历史,但是却忽略了大多数程序员的艰辛。所以在这里我奉劝各位,如果你是为了这个行业充满传奇色彩而想加入,如果你是为了这个行业薪水高而想加入,那么请你现在退出吧,因为它不适合你。这个行业需要的是拥有努力、认真、坚持等品质的人。讲到如何学习编程,那么必不可少的就要讲到编程语言了,相信大家都知道编程语言有很多种,包括C、C+、BASIC、PASIC、ASP、PHP等等,当中还分为很多不同的领域,所以在学习编程之前一定要为自己定下一个目标,一个自己即将要进入的领域。有些人想进行底层开发,有些人想做网站开发,有些人想做商业软件开发等等,由于计算机的普及,软件行业所涉及的领域也就越来越多,一个人是不可能涉及所有的领域的,所以必须在学习之前给自己一个定位,这个是很重要的,如果没有这个定位的话在未来学习编程的日子里将会很迷茫。目标的定位当然不能少了工具的因素,因为不同的领域使用的开发工具也不同,在这里想重新再次郑重的向所有朋友声明一次,不要把开发工具和开发语言混为一谈,语言是编程的基础,而工具是用来辅助开发的,例如VC、VB、DELPHI、BCB等等。每种工具都有各自的优势和缺点,至于每种工具的特点我就不再讲了,如果大家是有心学编程的话,我相信你一定会去看看关于这些工具的具体内容的,呵呵,让我偷个懒。还有在这里重要提醒一下大家,不要被现在的流行工具所迷惑,学好根本才是最重要。前面大概的准备工作已经做完了,对这个行业了解了,给自己定了一个目标后,接下来当然是全力向这个目标进发了。那该怎么做呢?看了很多朋友的帖子,都讲到C语言是程序员必学的语言,如果程序员不学C就不算是真正的程序员,我个人认为这种说法有点偏激,当然,我承认学C是会对你有很大的帮助,但是并非一定要学C,大家之所以这样说,可能是因为C语言的影响太大了。但是你总不能要那些去学网站开发的人一定要去学C吧,呵呵。其实我个人认为,一开始学什么都无所谓,但是无论学什么,一定要努力和坚持,做不到这两点,你就注定会是个失败者。在这里我想讲一下学编程最关键的问题,就是思想。也许这是个很抽象的概念,但是没有办法,编程本身就是个很抽象的东西,呵呵。等你真正领悟到这一点的时候,恭喜你,你已经站在编程的门口了,呵呵,只是门口哦。那么编程的思想又该如何去领悟呢?要领悟其思想,那首先学习语言是必然的,语言是思想的一种体现形式,就像一个人的思想需要语言来表达一样,所以如果连一门语言都无法掌握的人是无法领悟其思想的。但是对于一个人,如果不经常说话,不经常使用语言,他又如何去使用语言来表达自己的思想呢?编程也一样,要领悟其精髓,必须先不断地看,不断地使用,才能在这种过程中慢慢有所体验,当然有的人可能快些,有的人可能慢些,但是不管快慢,能够达到就是进步。我记得在我仍然迷茫的时候,不知道自己该如何去学,每天就是机械式的看书写代码,根本都不知道自己是不是真的懂,但是就是这样不断的看不断的照着书写,终于有一天,好象突然开窍一样,一下子就把所有不明白的东西全都弄明白了,这个有点像佛家所说的顿悟,呵呵。我最初以C语言开始学习的,在我开始学C语言到顿悟这一刻,我可以告诉大家,我看C语言的书我一共看了5本不同的版本(不过都是像走马观花一样的看,千万不要学我),直到第5本看到指针那里,我才真正有种明白的感觉,也许我太笨了,相信大家看一本就够了,HOHO。自从那一次后,我接着看C+,学习pascal、basic、汇编这些东西,自己感觉都非常容易看懂,可能这就是所谓的一理通百理通的道理吧。呵呵,不过在这里要讲一下,上面所说的几种语言虽然看书都看过了,也看明白了,但是由于很少使用,现在大部分都还给书本了,呵呵。看到这里,包括我在内,我都感觉到自己很了不起,很厉害了。可惜,只有我自己知道,虽然看了那么多,学得也多,写得也不少,可是我却不知道如何运用。来来去去就是写一些书本上的题目,自己却感觉像windows那些程序却不知道如何去写,不知道该怎么办,相信很多人都有和我一样的体会吧,把C语言学了,题目也做了,而且都没有问题,可是却不知道如何去做开发,感觉自己学的东西一点用处都没有。这又是为什么呢?在这之前,我一直为这个问题烦恼,后来我终于找到了答案,那就是我所学的,所写的都是DOS应用程序,而我们现在所使用的是windows操作系统,当然也有使用linux系统的。后来看了一篇别人写的文章后,我才知道我所学的和实际运用相差太远了。现在大部分学习编程语言的书籍上的例题都是基于DOS系统开发的,所以我们所写的程序和windows上所运行的不一样,这就是造成我们迷茫的主要原因。那该怎么办呢?那还用问吗,当然就是去学习windows开发啦。在第一次接触windows开发的时候,我真的是大吃一惊,这完全和我以前所学的很不一样,但是又息息相关,如果没有以前所学的,我根本就看不懂windows开发的内容。在这里给大家简单介绍一下,windows开发和DOS开发的区别吧。大家都知道,DOS是一个单任务执行系统,也就是说在DOS下只能在一个程序运行完成或者中断后才能运行其他的程序,而windows是个多任务系统,当然在本质上windows也只能一个时间内执行一个程序,但是由于其利用CPU的运算能力,让这些微妙的时间让人无法感觉到,再就是windows是一个图形界面系统,拥有着良好的用户界面,不像DOS是个指令界面。所有这一切的区别导致DOS和windows开发上也存在很大的区别。所以现在的程序员首要的任务除了学习语言以外,就是要去学习windows开发机制。如果连这个都不懂,那是肯定开发不出一个好的windows软件的。在这里向所有朋友重点推荐美国人CharlesPerzold所写的windows程序设计第五版,这本书可以说是经典中的经典,学习windows开发必看的书,适合有C语言基础的朋友看,它有多经典我就不想细讲了,总之就是绝对不会让你失望,呵呵。这本书市场价是160元整,分上下两册,如果有的朋友觉得太贵的话,我这里有他的电子版,需要的就找我要吧,随时欢迎大家找我要这本书,呵呵。说实话写到这里,我自己都不知道自己写了些什么,好象很乱,呵呵,希望大家能够看得懂吧。看完我介绍的这本书后,而且看懂的话,那么接下来自己该如何走,我相信我就不用再多说了,到那个时候你一定知道自己该如何去学习编程了。上面讲了下我个人是如何学习的,当然还有很多细节地方没有涉及到,不过随时欢迎朋友们跟我一起交流。而且我现在才发现上面所写的是从C语言开始学习的,呵呵,其实我并非要大家向我一样学习,我只是把自己学习的经过大概讲了下,当然还有以后该怎么办没有写,其实我也在摸索中,嘿嘿,我写了那么多废话,无非是想要大家明白几个道理:第一、首先要给自己定一个明确的目标。第二、分清楚语言和工具的区别。第三、把思想放在首位,语言在精不在多,学好了一门语言再去学其他的,就易如反掌了。第四、工具是经常被淘汰的,不要被工具所迷惑,坚定自己的信念。第五、无论选择做什么系统开发,首先要去了解这个系统,只有了解了这个系统才能在上面为所欲为。大概也就差不多了,不全或者写得不好的地方请指正,呵呵,就这么多了吧,欢迎大家跟我一起学习,一起进步,一起交流。当然最后仍然是那句:努力+坚持=成功简单一道排序题,考倒多少读书人!从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心目的:从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业!/*简单一道排序题,考倒多少读书人! 从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业! 大学生早已不是天之骄子,仅仅是一个普通劳动者。网上一句顺口溜“本科生象条狗,硕士生满街走,只有博士才能抖一抖”真正恰如其分地说明了这一点。我想许多到深圳求职的,到过宝安北路的深圳人才大市场的大学生朋友会有同感。只要是非休息日,场场爆满,黑压压的人头攒动。就业的残酷性已经到了”学士学士靠边站,硕士硕士中间站,博士博士往前站。听说你是海归派,Hello Hello签合同。“的地步。 计算机专业的毕业生由于前几年就业形势好,IT整个行业还不错,工资相对高点,所以许多人纷纷转行搞编程。这两年行业不景气,工资大不如前,但搞编程的人还是越来越多,特别是非计算机科班出生的。面对这样的现实,我们计算机专业在校大学生应该怎样调整,迎战就业呢? 在回答这个问题之前,我们还是来看看现在的公司都是怎样招人的。 现在找工作,建议在网上找。深圳这边效果好的网站是中国人才热线。天天在上面发简历,等着公司打电话要你去面试就行了。如果有公司要你去面试了,基本都是要过关斩将才有机会和人面谈。一般都是一进公司门,前台小姐会很热情地给你一份试卷做(你不要多问,先老老实实做完题吧:),根本就不给你机会面谈(题目答得好,你才具备资格和人面谈)。做完了,就放到前台那里,回家等电话吧。机会好的话,可能是管人事方面的人跟你聊聊天,比查户口都要严,什么都问。我是觉得有空要多看看政府发言人、影视明星发言人、公司发言人等等这类讲话,多学学他们是怎么回答记者提问的,这样你才能对付那些人力资源的人。呵呵,这是题外话了。 看到这里,你终于明白,考试还是重要的第一关。都考些啥?我们从华为一道面试题来看看吧! 原题大意是这样的: 有N个大小不等的自然数(1-N),请将它们由小到大排序。 要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。 (请你做做看,时间20分钟) 这一题40分(面试试卷总分100分,60分钟完成。)占40%,可以说对面试成绩至关重要,借用高考的一个名词,这是最后“压轴题”。试卷的分布是这样的,3-5个填空题,4个左右名词解释,8个左右选择题(单选、多选混在一起),2个编程题(任选一题,多做按得分少的计入总分)。就整体难度来说不是很大,考的范围相对来说有点大-C语言、数据结构、网络基础、操作系统、软件工程、数据库等等,但都很基础很基础,都是计算机专业必修课。如果基础知识牢固的话,可能40分钟就能做完。我上面所说的从这道“压轴题”可窥一斑了。相信许多人在拿到这道题,第一感觉就是很简单嘛,似乎不敢相信会考这么简单的题目!但是,就是这么简单的题目,还真是考倒了许多人,都是大学本科生,学计算机的,有的还是研究生。还真有点“简单一道排序题,考倒多少读书人!”的味道。这是我一个在华为的同学告诉我的,所以可信度应该是很高的。 如果是平时自己做作业,我相信许多人可能一下子就做出来了。原因我分析有两个:一是平时看题会仔细一些,有足够的时间;二是心理上觉得华为不可能考得这么简单,老想是否有什么“陷阱”,过度紧张,加之考试时间本身也不长,60分钟,估计大多数人花在这题上面的的时间一般也就2030分钟吧。因此,建议在校期间应加强心理素质的训练,这么多大大小小的考试都经历过了,再考一次又有何妨! 从这道题出题意图来看,出题者主要是想考面试者的思维是否敏捷清醒、做事是否认真仔细是否善于思考、基本知识掌握程度如何。为什么这么说呢,第一这道题的确不难,就是一般排序。排序的方法在数据结构中讲得实在是太多了,各种各样的选择排序、插入排序、冒泡排序、希尔排序、堆排序、快速排序等等。但是,用心的人就记得它们当中没有一个算法复杂度是O(n),且不说空间复杂度要满足O(1)。第二就是这道题真正的考点就是看你能否想到数组的下标与这N个数存在的关系。这就是考题中的个小玄机。这N个数随你怎么乱序,排好序后就是数组(让下标从1开始)下标为1的元素,里面放的就一定是1,下标为n的元素,里面放的就一定是N。观察出这点,题目就解决了。 这道题三言两语就分析完了(详细程序见后面)。透过这道题,我来简单说说计算机专业在校大学生该如何学习专业课程。正如你所见,IT有名的公司,考试题目的难度也不过如此。我想只要是想招应届毕业生的公司,他们都不会出很高深的东西来考你。大家都知道,在校是学习基础理论知识的,不是从事研究的,所以他们没有必要那么做。因此,建议多在基础知识方面下工夫,有条件的多做习题、多上机、勤思考,多看看同一个问题其他人是怎么解决的,和你的有什么不同。有精力的人,试着考程序员、高级程序员,这样你有个目标,学习起来可能更来劲,各专业课学起来联系更紧密。 总之一句话,注重基础知识,有目标的学习,理论结合习题集。 一家之言,欢迎有兴趣的朋友一起讨论:)*/void sort(int e, int n)int i;int t;/*临时变量:空间复杂度O(1)*/for (i=1; in+1; i+)/*时间复杂度O(n)*/t = eei;/*下标为ei的元素,排序后其值就是ei*/eei = ei;ei = t;void main()#define MAX 10int i, aMAX+1;printf(Input the number from 1 to %d:n,MAX);for (i=1; iMAX+1; i+)scanf(%d,&ai);sort(a,MAX);printf(n=sort over=n);for (i=1; iMAX+1; i+)printf(%d ,ai);printf(n);system(pause);教你如何学习自己喜欢的编程语言1.我该学什么语言?VB、VC、Delphi、Java面对各种各样的编程语言,你是不是被弄昏了头脑呢?该学什么?“学VC吧!”许多高手说。并且还举了很有说服力的例子:“学VB只要两个月,学VC要一年,如果先学VB再学VC,所用时间仍然是一年,但学了VC再学VB,所用时间将不到两个月。”这句话没错,的确是这样的。但是刚入门的初学者都能学VC?把每个人都看得这么高?一些初学者把VC当成自己的入门语言,结果能学到最后的只有少部分人!我们不能奢望所有初学者都是在十分熟悉Windows的情况下才开始接触编程的,实际上,很多人就是在学习编程的过程中逐渐深入了解系统的,要是所有人都选择VC作为“入门级语言” 初学者应该根据自身情况来选择语言,如果你刚开始接触系统,应该去学VB,因为VB很好学,基础最重要;当然,还有Delphi,它介于VB与VC之间。除非你比较熟悉Windows,否则别急着学VC,你会因此神经衰弱的。 2.切忌同时学习多种语言 有没有试过同时学英语俄语德语波兰语法语日语?最后八成会变成鸭子。学编程也一样,如果你才高八斗机敏过人玉树临风,那么随便你同时学VC、VB、Delphi等等等等,没人会拦你,但如果是初学者呢?去做鸭子吧。同时学这么多种语言还不如踏踏实实学好学精一门适合自己的语言!初学者往往什么语言都要去了解一下,更有甚者连一些概念都不熟悉就什么都学,面对他们,我都要自愧不如了,但我还是要劝他们一句:一样一样的学,没有人能一步登天!别以为同时学多种语言就很“光彩”,当心最后仍是七窍通了六窍。 无论学哪门语言,都要把它学好再想其它,别“花心”,如果你是学VB的,至少要熟悉VB编程并且能熟练使用API的时候,你才应该去学其它语言,学VC更要注意,否则最后只能“无所不学,而一无所知”,只学一种语言时遇到困难还是好处理的,但是同时学这么多种,你保证都不遇上问题?小心几种语言的问题一起来压你! 3.要有主见 许多初学者爱跟着潮流走,外面流行什么他就跟着做什么(追“猩”族?)今天流行VB他就学VB,明天流行Delphi他就把VB忘了,再到VB.Net、C#人云亦云,随波逐流,“专家”说什么语言好他就投奔什么语言,“走在科技前沿”,但是到最后又能学到什么?不仅丢了西瓜,连个绿豆都没拣着。这年头“世界变化快”,我知道,但是它怎么变就随它去,总不见得把你变成今天张三明天李四吧?“月亮走,我也走”的思想要不得,别管外面流行什么,如果不是大众需要,你只管学好你该学的语言就行。 4.别看轻其他语言 经常有人说“XX语言差,学了没前途!”要是让我评价一句,恐怕是你没前途吧?你凭什么说它差?没有一种语言是十全十美的,即使它再“差”,只要它还没有被外界宣布完全淘汰,它就有存在的理由!曾经有人对我说:“我的老师经常教育我,VB太差了,所以我要把以前学过的忘掉。”且不说这家伙随波逐流,单是他老师就够酷了,呵呵,不知道他的老师是圈子里的哪位资深专家呢?只怕是个三角猫吧!VB虽然存在一些局限性,但它的语法很好理解,数据库编程很方便,配合API也能完成一些复杂工作,这就叫差?多少个优秀程序不是用VB这个“没前途”的语言写出来的?多少个程序员不用VB?你看见他们没前途了吗? 5.不可缺少的教材 虽然从古到今一直有“尽信书,宁可无书”的遗训,但是我们可别因此“无书”哦!也许你天资聪明,自学电脑不用教材,但是自学电脑可以凭现象和经验,学编程能凭空摸索?连变量、过程等概念都不知道,还能看懂for(i=1;i50;i+)的意思?要学编程绝对不能少教材资料,如果连这都不舍得买,那么你最好别学了。还有一点,关于网络教程,我个人认为它太过于零散了,即使是一本完整的电子书也尽量不要看(除非实在买不到),难道你要一边写代码一边ALT+TAB?我宁愿慢慢翻一本书,也不愿盯着屏幕看半天!现在市面上的教材参差不齐,光买一本是明显不够的,基础的、高级的都要买回来慢慢研究,至少也要3本吧?市价低于20元的书最好不要考虑了,看看它的厚度!书本的厚度通常与含金量是成正比的(厚厚一本我非常爱你?你衰),最好选一些比较常见的出版社出版的书籍,尽量别买少见的,质量没得保证!我的一个同学就买了一本20元的我非常爱你,整本书连个完整的例程都没有,还大言不惭“基本入门”,误人子弟啊!现在那同学看的是我借给他的清华大学出版社出版的中文 Visual Basic 6.0 傻瓜书。 一个小窍门:如果你不知道该买什么书,最好找个高手一起去,让他帮你选本好的,如果你身边没有高手,那就找厚点的!或者书名带有“疑难解答”或“API”,这些书质量一般都可以. 6.关于英语 由于大多数语言的母语都是英语,这就导致了一些初学者望而却步,但是英语对于编程很重要吗?实际上编程需要的英语很少,都是比较基础的词汇语法,它和一般的英语不一样,即使你连一篇英语文章都看不下去,但只要有点英语基础的,你就不用怕“不会”!(当然前提是一些基础词汇如If、For、Next、While、include等必须看得懂,否则先去补习一点英语再说)就算英语再好,没学过编程也不会看得懂程序源码,难道没学过编程能知道StrComp等于String Compare?学编程与英语水平无关,我们学的是编程而不是英语! 7.编程大忌组装 VB最大的方便之处是它和ActiveX能很好组合,MS和第三方厂商为VB开发了许多ActiveX控件,为初学者提供了很好的学习机会,但是一些初学者却满足于此,做一个程序用了一大堆别人的控件,加上一点微不足道的代码,就以为学会了编程,却不知这样根本没有入门!ActiveX是别人做的东西,写了多少代码才到你用的!别幻想ActiveX无所不能,从另一个方面说,它正是VB的累赘!会用ActiveX又有什么了不起?API会吗?复杂点的代码会写吗?会自己开发ActiveX吗?做一个用到通用对话框的程序,只会用comdlg32.ocx的ShowOpen方法,却不会用GetOpenFileName这个API来打开,而且使用ActiveX会让你的程序挂上一大堆OCX,加重程序开销,更要命的是ActiveX会导致许多不可预料的错误,如控件过期、控件没有注册等,任何一个错误都会让你的程序无法运行,许多初学者搞不清ActiveX与程序文件的关系,发布软件时忽略了程序需要的ActiveX,导致程序在其他环境无法运行,我早期发布的IIS Cracker就因为不得已用了两个ActiveX而成为我最头痛的事(有些东西不用ActiveX做不出来,没办法)如果一个程序出现控件错误, 而作者又没有提供相应的控件,那么我要做的就是把这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- mtbe考试试卷及答案
- 电网业务知识培训课件
- 电缆厂知识培训课件
- 电磁兼容原理课件接地
- 高端酒销售基础知识培训课件
- 新解读《GB-T 32151.11-2018温室气体排放核算与报告要求 第11部分- 煤炭生产企业》
- Ochracenomicin-B-生命科学试剂-MCE
- Acetohexamide-d11-生命科学试剂-MCE
- MLN-591-MLN2704-antibody-生命科学试剂-MCE
- 保育大赛考试试题题库及答案
- 2025年《临床输血技术规范》
- 2025年江苏无锡离婚协议书
- 人员管理办法格式范本
- 2025AI办公发展现状软件市场竞争格局及未来发展前景分析报告
- 北京员工待岗管理办法
- 停工缓建项目管理办法
- 淋巴水肿健康科普
- 采购应急计划管理办法
- 上海选调生面试题和考官用题本及答案21套
- 2025年学校食堂从业人员食品安全知识培训考试试题及答案
- 2025年国家电投校园招聘笔试考点考试题库及答案
评论
0/150
提交评论