编程语言C_C++初学者教程+FAQ.docx

上传人:文*** 文档编号:83278778 上传时间:2023-03-29 格式:DOCX 页数:40 大小:126.04KB
返回 下载 相关 举报
编程语言C_C++初学者教程+FAQ.docx_第1页
第1页 / 共40页
编程语言C_C++初学者教程+FAQ.docx_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《编程语言C_C++初学者教程+FAQ.docx》由会员分享,可在线阅读,更多相关《编程语言C_C++初学者教程+FAQ.docx(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精品快线之计算机编程及C/C+初学者FAQ本文原为本人在论坛所发若干帖,意在集中解决新手学习C/C+语言时将遭遇到的各类问题, 网友反馈情况良好,集合修订后作为个人作品贴于此处。本贴主要分析概念原理和解决方案,不讨论具体程序语法,立足于让初学者能运行起第一个程 序。其他事宜如解释入门语法等本文基本不涉及。本文依照创作公用约定(署名-非派生作品非商业用途)发布。作者(即本人)无更新计划, 请勿与作者联系。作者:碧蓝右耳。联系方式:BlueAuris版本号:3.0完成日期:2008-03-10目录、开始之前FAQ那是什么为何有这篇FAQ编程为何物如果这就是编程,那语言是怎么回事我为啥要学编程听说编

2、程很难,是真的么,那我能学会吗?我真的可以么还一定要有台电脑么好吧你说服我了,我打算开始,该怎么做那么,下步怎么干我碰到问题了,谁能帮我我能看懂别人的程序,但自己做就觉得无从下手,怎么会这样我英语XXX不会,咋办关于态度、情绪和其他二、选择C/C+语言C语言是什么C+语言是什么为何要选择纯CC/C+语言和其他语言有什么关系我为什么要学C/C+语言Python语言作者的另一推荐三、些重要的概念一计算机原理编程的对象是什么计算机程序到底是怎么回事是操作而不是结果为什么要编程因为机器的特点你们老是提到编译器,那是什么代码翻译机给我解释下啥叫编程语言各路江湖武功语言之后要确定的事情-操作系统和平台编程

3、时什么东西最重要一源代码我的程序和一般的程序不一样,什么原因控制台和图形界面的差异好像不能建立一个单独的文件来编译工程和项目的问题难道一切都要从头干起函数、API、类、控件、开发包与软件复用关于图形库的补充说明可选择的图形库四、教材、习题和示例能推荐几本好书么首先是纯C的教材然后是C+的教材接下来是Windows编程Unix/Linux/BSD 系统数据结构和算法各种图形以及其它库软件:程思想找书的诀窍光看书似乎不解决问题,难道要做题OJ是什么哪里有可用的OJ哪里有代码示例可看五、选择编译器有哪些编译器可用还有些可以配合编译器的开发环境他们在哪里怎么安装他们一特别解释MingW版GCC的安装六

4、、TC下常见的问题解决用TC创建第一个程序TC的库路径设置TC下的图形编程设置我的程序在TC下可以编译,在VC/GCC下为什么出错七、其它编译器问题用VC创建程序用DEV-CPP创建程序用MingW创建程序用Lcc-win32创建程序、结束语程序员成长的六个阶段、开始之前FAQ那是什么FAQ就是Frequently Asked Questions,也就是常见问题解答。这玩意儿通常是些所谓的 高手或者前辈为了节省回答新手的大量简単重复问题所耗费的时间精力而采用的种偷懒手 法。一旦完成,高手只要一努嘴,“看FAQ去”就万事大吉了。实在是居家旅行杀人越货之必备 良药,因此在各大论坛已经有大泛滥的趋势

5、。本篇FAQ为学习C语言、C+语言的大量新手编写,重点是如何运行起第一个程序,不涉 及语法、数据结构和算法等内容。如果你已经通过计算机二级或水平相似的考试,甚至你是职 业选手或是大师级的人物,就不必再往下看了。同时,本FAQ只讨论C/C+语言,其他语言如 Java VB python等均不涉及,虽然阅读本文前四章节也会对学习这些语言有所帮助,但深入学 习还是请阅读这些语言的专门教材。为何有这篇FAQ本文是为那些对编程新手所准备的,如果你自认已经不是新手,那么请离开把时间放到更 有用的地方。如果你是那种对编程一无所知,迫切想知道他是怎么回事,或者仅仅编写了几个 小程序,却遇到一大堆问题,而在论坛

6、或是其它地方又得不到帮助,但心中又有雄心壮志想要 做绝世高手顶尖黑客或者想要以程序为生的入门级新人,那么你恰好是本文的服务对象,请详 细阅读以下的文字,我想应该会对你有所帮助。而且请你了解,本文的这部分内容所要介绍的 是那些普遍性的概念,与具体任何种语言都无关。正如我们所知,市场上充斥着无数的编程教材,同时可以肯定的是,目前已经面世的教材 (包括正式出版物和网络上的教程),穷人一生之力是看不完的。在这些书中,有大量的垃 圾书,大量的平庸之作,还有少量的精品。而即使是这少量的精品,也不可能看全。既然书这 么多,我为什么那么闲还要来写篇呢,有这时间,我还能多画几张效果图挣俩钱花呢。情况是这样的,市

7、场上的书虽多,但其中几乎没有几本是面向初学者的。我所指的初学 者,是指从来没有编写过程序,甚至是连编程二字都没有听说过的人。这样的书是如此之少, 以至于要去购买或是阅读到他们都是很困难的事。在我个人的学习生涯中我认识到很多编程教 材有个糟糕的倾向。他们要么是一下子告诉你所有的事,好像你能在千分之一秒中突然从菜鸟 变成好手,要么就是认为有些事你早就应该知道,拿你当熟手看,导致你有一种赤身裸体被抛 弃于猛兽横行的非洲旷野的感觉。你还没有穿上衣服走出帐篷,连刀子都没有摸过,他们就试 图告诉你草原上有多少可以捕获的猎物以及他们的位置,告诉你几百种武器和毒药的使用秘 籍,告诉你两百条以上的陷阱安放要领。

8、你没有经过丝毫的练习,甚至还没有杀死过只刚出 壳的小鸡,他们就要你独自去捕猎数卜头饥饿的狮子。这种看似荒谬的情况从过去持续到今 天,至今仍然存在。这并不是说那些写教材的朋友都是傻瓜,这件事当然有它的原因,因为他 们面向的读者是程序员。程序员就象是猎人,他们更换语言就像猎人更换武器一样,不管他使 用哪种武器,捕猎的基本原理没有变化,变化的只是武器的使用方法。对一个成熟的猎人而 言,再强调基本原理就没有必要,所以教材们对人所共知的些事也就避而不提。一个成熟的 猎人,她心中的捕猎知识是浑然一体的,武器的选择,野兽的习性,陷阱的安放,怎样做和为 什么这样做都结合在起,没有哪一部分可以独立出来,一部分一

9、部分的教给别人是极度困难 的的,要教就只能混杂在起。程序员的情况类似,知识体系是完整系统的,谈到个问题总 会牵扯到另个,最后的结果就是别人总是希望并想当然的认为你可以一口吃成一个胖子。这样的后果就是,些很明显的事情,老手认为那是你应该知道的因而不予回答,而新人 却发现没有任何地方可以找到解释,也不知道该到哪里去找答案。(不懂得如何找答案也是新 人的特点之一)。有一个典型例子与这种情况很类似,鼠标,我们己经习以为常并且很熟练地 使用着,但是很多第一次接触电脑的人那却是完全摸不着头脑的东西。在各地的论坛里,总有 大量的新人提出诸如“学C+好还是VC,VC+好? ”“c+也可以编窗口程序吗? ”这样

10、的毫无常 识的问题。我的FAQ就是为了来一次性解决这种问题的。编程为何物编程就是编制程序。程序是让计算机发挥功能的命令的集合。程序有两种形式,让计算机 真正执行的是电脉冲形式,叫机器码,程序员编制的通常是文本形式,叫源代码。使用个称 为编译器的工具,可以把源代码转变为机器码。而编程就是产生那些源代码的工作。这个工作 类似于谱曲、编菜谱、写工作手册。我们知道,谱曲并不是一蹴而就的,往往需要反复的修 改,白到最后满意为止,编程也是样,接近工作时间的30%是完成粗制成品,剩下的70%时 间是在不断的修改,这是相当枯燥和乏味的。有志于投身编程的朋友们,不要忘记这点。如果这就是编程,那语言是怎么冋事文本

11、形式的源代码,其实有些规定的。就像我们和老美用英语交流。首先你得说英文单 词,不能冒法语词汇日文假名出来,其次你得按语法讲话,不能一个个单词往外蹦。程序也同 样有词汇和语法上的些规定,这些规定就构成一门语言。显然任何一门编程语言都是人造语 言。人造的东西,因发明人的想法而不同,就彫成了不同的语言。我为啥要学编程这个问题有两层意思。首先是编程为啥要学,很简单,因为这玩意不是生来就会,就像木 匠活样属于一门手艺,自然要通过学习才能掌握。你怎么也得花上几年来学英语不是。第二层涵义是重点,为啥我要学它。答案因人而异。有人为了上学有人为了考试,有人 为了求职挣钱,还有人就是吃饱撑没事做自虐。什么为了开发

12、智力啊证明自己啊寻找成就感 啊,那都属于自虐,在下便属于自虐一族。没啥说的,确定你的目的,也许只是好奇想接触下 啥是编程,也许是有课业的任务,也许是想以后靠他找工作,或者是羡慕那些黑客。总之,想 继续深入的,往下看,没信心的趁早走人,外面帅哥美女多的是,不要浪费大好时光青春年华 在一台破机器上,ok?听说编程很难,是真的么,那我能学会吗?你觉得说中文难么?你能流利的说普通话是不是。但是你知道么,汉语是世界上最难学习 掌握的语言。稍后我会介绍计算机的特征,你就会明白知道基本I:编程这件事的难度等价于指 挥IQ=3个数相加都必须转化成持续的两个数相加,就是先把第一个第二个加起来得 到结果之后,才能

13、和第三个相加,照此重复求得所有的和。这时目前的科技无法改变的铁律。这个时候我要请你记住一个重要的思想:编程中任何问题都要分解到足够小,小到机器可 以一次解决的程度。回到刚才的那个题目:寻找N个正整数中的最大值。我们知道宜接解决是 不可能的。而按照刚讲过的铁律,我们知道直接找到两个数中的最大值是一次可以做到的。 怎样从2个扩展到N个呢。这里就是算法的天下了。种很常见的想法是,完全可以从两个中 找出最大值,再让他和接下来的一个比较,这就是N=3的情况,再把三个中的最大值和第四个 比较,这就解决了 N=4,以此类推,我们似乎找到了通用的算法,是的,找到前N-1个中的最 大值,然后与第N个比较。不要怀

14、疑,这个算法方向是正确的。接下来就是把它细化使他能变 成代码。你注意到,首先要设法从1增加到N,而且每次前进一步都要做类似的操作。显然用 个循环来实现。每一次循环中,都需要将保留的最大值和当前的这第n个数比较,如果最大 值比他大,那就保留,否则就要把最大值替换成新的。这就是条件语句的作用了。写完这个循 环之后,还有些小细节,比如这个最大值在于第一个数比较之前应该是多少呢,太大的话,可 能会比整个数列的数都大,这就会出问题,常用的做法是,就让他等于第一个数。然后包括读 入那N个数,输出这个最大值这些琐碎的细节就属于收尾工作了,没什么可多谈的。当然,即使是这样的小题,也不仅这种算法。你记不记得有一

15、种叫做单淘汰赛的机制, 最后顶点的就是最大值。用在这个地方正合适。不过,如果要把这个淘汰赛算法实现成程序的 话,如何实现分组,如何表达这个淘汰过程和取出顶点的值,正是算法描述里要解决的。这个 就是排序里很有名的最大堆排序。一旦算法描述齐备,程序编写不过是打字校对的工作。现在你明白本节讨论的情况的实质在哪里了吧,是的,是算法。为什么你可以看懂别人的 程序呢,因为他的算法隐含在程序中已经被实现了。就像你读一段高明小说家的风景大物描 写,总能在眼前浮现出那幅画面。但轮到自己写,却描绘不出那样的画面。一方面是因为你胸 无成竹,不知道怎样找到可实现的算法,另一方面是即使你找到了算法,也是爱你在心口难 开

16、,也不清楚怎样去表达他。算法总是从问题出发,通过一定的模式,逐渐细化再细化,直到可以直接转成程序。新手 很难一下子领会怎样的算法是可以实现的。但好在新手接触的问题不是很难,算法通常很清楚 明白,所以重点先要解决后面那个表达的问题。这就是为什么我建议各位默写教材上的例题程 序的原因。很显然对于那些例题,只要你用心看过就会领会他的算法。那么,你再默写一遍, 即使和他的原程序样子不一样,也总算是把这个算法表达出来了。反复这样练习,这个表达问 题不就解决了么。而且在这个过程中,至少你学到了一个算法。基于此原则,任何你遇到的可 以看懂的例程,我都建议你默写它。尤其是例如等级考试的题库的标准答案那样的东西

17、,以及 开源的精品代码。我英语xx不行,咋办无法回避的事实,今日世界中的信息技术,绝大部分是欧美人的发明,更明白地说,是美 国人的功劳。顺理成章的,各种资料文档技术手册,尤其是记载最新技术的,都是用美国通用 语也就是英语撰写的。可能在其他领域不懂英语没有什么问题,但在IT业,不懂英语就是无 法掌握最先进的技术,基本等于没有出头之日。话说回来,不是说你一定要有个托福雅思的高分才能去学编程的。就编程本身而言。他所 需要的英语水平不过是死记硬背三五个单词而已。你在看好莱坞大片时,一部片子下来总能记 住主角和主要配角的名字吧,C语言全部关键字共32个,而其中有6到7个的使用率超过 78%。这样你还有什

18、么可担心的。但是,要想成为高手,阅读大量的相关资料是免不了的,这 个时候,英语就显出它的重要性了。刚谈过算法。前辈们已经总结出很多算法和产生算法的方法,我们可以直接学习。如果 你积极进取,总有一天,你会发现有需要自己开创新的算法的时候。这个时候,数学功底会帮 你很大的忙。也许只是数学工具在起作用,但更有可能是你的大脑受过的数学思想训练在帮助 你。总之,为了前途着想,提高数学素养是没错的。这不是说多背数学公式和多做数学题,而 指种 数学的 思 维 ,式看不懂英语,那编程还有什么前途。数学不行,成为大师的希望不大了。不能匕网,你完 蛋一半。没有机器,难道要我买给你。指法不行,练去。记得没人会同情你

19、,我亲爱的兄弟。不会就去学吧,没有什么是不可跨越的障碍。请记住这段话:在信息时代,任何主观障碍都不存在。如果你要研发什么新技术的话,只 需要一台便宜的二手电脑、张linux光盘和一个上网账号,再加上为之献身的决心,你就可 以达到想要的任何编程深度。这话是一位大牛说的,那是谁,回想一下提问的智慧,然后自己 上线查。关于态度、情绪和其他和技术无关,关于学习态度和方法的些提示。循序渐进学编程http:/www. 1353&PN=2 个程序员给初学编寝人的建议http:/w ww. c语言学习经验请示要做浮躁的人http:/www. 1359&PN=2成为软件高手的几个忌讳http:/www. 155

20、&PN=8程序员四大忌http:/www. 174&PN=8=分割线二、选择C/C+语言c语是什么语言是种计算机编程语言。语言是什么,请查阅上面的内容。1970年前后,AT&T贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名 为B的语言,之后Dennis Ritchie在此基础上设计发明了 C语言,并首次在UNIX操作系统的 DEC PDP-1!计算机上使用。随后,C语言和UNIX操作系统起,攻占了计算机世界的大片领 地。在发展的过程中,出现了许多略有差别的C语言版本。1989年,美国国家标准研究所 (ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准,就是

21、所谓的C89。当然经过 10年的发展,在C89的基础上又颁布了 C99标准。现在流行的大部分编译器完全支持C89,部 分编译器完全支持C99。对于初学者来说,掌握经典的C89即可。C+语言是什么C+和C的关系非比寻常。1979年,当Bjarne Stroustrup在新泽西州的Murray Hil!实验室 工作时,发明了 C+。Stroustrup最初把这种新语言称为“带类的C”, 1983年,改名为C+。 C+通过增加面向对象的特性扩充了 C。因为C+产生在C的基础之上,因此它包括了 C所有 的特征、属性和优点。在这个意义上,你可以认为C+是C语言的进化,这个进化的原因是复 杂性(compl

22、exity)。一旦一个程序的代码超过25 00100 00行,就很难从总体上把握它的 复杂性了。C+突破了这个限制,帮助程序员理解并且管理更大的程序。当然今天的C+已经不只是C的进化那么简单,他还包含了其它很多很多的新内容,它是 如此的复杂以至于你要花上几倍于学习C的时间来学习他。但由于他和C的历史渊源,所有支 持C+的编译器都能支持Co因此他俩也就被合称为C/C+语言。C+对于C的进化着重体现在规模上,几乎C+的所有新特性,都是为大规模编程服务 的。如果说C语言编程是单兵小组作战的话,C+编程就是集团军运动。为何要选择纯C在某些时候,我们不得不只使用C语言而不是C+,这种情况称为纯C编程。最常见是因 为以下两个原因:C+的语法很复杂,所以C+的编译器很难制作。因此在很多平台上没有现成的C+编译 器,而C编译器因为足够简单

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com