回 帖 发 新 帖 刷新版面

主题:写了2年的初学者C++基础教程,今天终于出版了《易学C++》

[size=3][color=FF0000]本书已交由人民邮电出版社出版发行。[/color]

[b][size=4][color=0000FF]购买《易学C++》网址:[url]http://www.china-pub.com/39862[/url],欢迎大家捧场![/color] [/size][/b]

完整版含附录,其中包括C++常用关键字及含义、所有练习的参考答案等。[/size]
编写的主旨就是不要一下子把什么都说出来,而是一点一点循序渐进地增长读者的能力。
摒弃直接使用专业的术语,而是以形象地比喻来介绍程序设计中的内容,比如把变量比作箱子,把分支语句比作开关等等。对没有程序设计基础的朋友来说,也能够轻松地看懂。
同时也注重提高读者的实际能力,在书中穿插讲述一些常用的小算法和小技巧,尽量避免看得懂书却写不来程序的情况。
[color=FF0000][size=4]下载[/size]请到[url]http://www.tomatostudio.net.cn[/url]
e-mail:[email]tomatostudio@126.com[/email][/color]

回复列表 (共59个回复)

沙发

内容节选

在VC++中,工程(Project)是什么? 
设计程序就好像造房子需要图纸、建筑材料和建筑工具一样,也需要各种各样的东西,如程序代码、头文件或一些额外的资源。这些东西都是放在一个工程里的。工程能够帮助协调组织好这些文件和资源,使得设计更有序,查找更方便。 

“<<”和“>>”怎么记? 
在cin语句中,双箭头的方向和插入操作符的方向相反。“>>”叫做抽取操作符。虽然这两个符号的名字都比较难记,但是它们的功能却很好理解。“<<”是箭头从字符串指向外面,好像把东西从字符串里拿出来,所以就是输出功能;而“>>”是箭头指向变量,好像是把东西放进去,所以就是输入功能。 

什么是变量和数据类型? 
电脑具有存储的功能。我们可以通过Word打开一个保存的文章,也可以通过FPE(整人专家,一款游戏修改软件)来查看或锁定内存中保存的游戏人物的生命值。那么,一个程序是如何把数据存到电脑里,又是如何把电脑里的数据取出来的呢?在设计程序的时候,我们把要存储的数据放在一个叫变量(Variety)的东西里。它就好像是一个可供存放数据的箱子。……可是不同的东西也要放到对应的箱子里。如果把吃的东西放在文具盒里,把衣服放进饼干盒里,显然是不合适的。变量也是一样的。有些数据是文字(字符或字符串),有些数据是数字(整数或者实数),把它们随便乱放,那么电脑就可能无法理解这些数据的含义了。 

交换 
交换是程序设计中最基础最常用的一种操作。它的算法在现实生活中也有着形象的操作。交换两个变量里的数据就好像交换AB两个碗中的水。我们必须再拿一个碗来(临时变量),将A碗里面的水先倒到这个临时的碗里,再将B碗的水倒到空的A碗里,最后把临时碗里的水再倒回B碗,那么就完成了这个工作。至于这个算法的代码,也是非常好记的。记住把临时变量放在首位,然后把任一变量放在等号的右边,下一句语句开头的必然也是这个变量。简单地记就是首尾相连。 

我们来设想一下赛车的实际情况,当比赛开始,赛车越出起跑线的时候,车子跑了0圈,然后车子开到赛道的某个地方,会看到车迷举着一块标牌。过一会儿,赛车跑完了一圈,这时候已跑圈数还没有达到比赛指定的圈数,所以比赛还要继续,车子还要继续跑……开到刚才那个地方,又看到一次车迷举的标牌……当赛车跑完第60圈,也就是最后一圈时,已跑圈数已经等于比赛所要求的圈数,比赛就结束了。问车手一共看到了几次粉丝举的标牌呢?很显然,答案是60次。

如果你还对for语句嵌套的运行方法不能理解,那么我们可以找出一个生活中的例子。我们都知道,时钟的运行方式:分针走完一圈,时针走一大格,分针走完12圈,时针才走完一圈。在for语句的嵌套中,内循环就像分针,而外循环就像是时针,它走得很慢,要等到内循环走完一圈它才走一格。

我们知道,在程序设计中,大多数数据都是存放在变量里的。如果我们要处理较多的数据,增加存放数据的空间最简单的方法就是多开设一些变量。然而,变量多了就难以管理了。这就好像一个班级里的学生名字有长有短,即使没有重复的名字,要在一长串名单里找到一个同学的名字也不是件容易的事情。于是,最方便的方法就是给同学们编上学号了,把名单按学号排列好以后,查找起来只要找学号就可以了。因为数字的排列是从小到大的,是有序的,所以查找起来要比在一堆长短不一的名字中查找要方便多了。

本书摒弃直接使用专业的术语,而是以形象的比喻来介绍程序设计中的内容,比如把变量比作箱子,把分支语句比作开关等等。对没有程序设计基础的同学来说,也能够轻松地看懂。另外,本书也注重提高读者的实际能力,在书中穿插讲述一些常用的小算法和小技巧,避免以前有些学生看得懂书却写不来程序的情况

板凳

对不起,好久没有更新了。不是我把写书忘了,也不是我偷懒了,前一段时间都在应付考试。好在最后成绩还算可以,也对得起我耽误下来的这些工作。

言归正传,这次我写的是指针。大家一直都说指针是最难学的部分,其实我也这样认为。我觉得这次有些地方还是写得有些不清不楚,所以还希望大家能够多多提意见。如果觉得哪里模糊了概念、难以理解或者不太合理,欢迎来和我交流。

在内容取舍方面,我把字符串和函数指针去掉了。因为C++主要是面向对象的,把C-String放进来讲得很深就有把C和C++风格混淆之嫌。所以我想等到面向对象了,把string和vector一起说。至于函数指针,基本上没什么大用处,大家还没学汇编,对指令什么的还不熟悉,所以不说也罢。

堆内存其实一直是指针里的重头戏,我把关于堆内存到底处在什么位置省略了,我觉得这个只会让初学者更迷茫。大家只要知道堆内存是动态申请的就可以了。要知道什么是堆内存,需要知道什么是堆什么是栈什么是段等等,对初学者来说没必要。对于C里面的malloc和free我也不说了,这个对初级C++程序员来说完全是增加负担,多此一举。

大家如果觉得有哪些重要的地方被我忽略了,希望能够提出来,我再斟酌一下,有必要的话我会补写。最后还是要感谢大家支持!下面给出本章一些节选:

什么是指针

在我们的桌面上,往往有这样一些图标:在它们的左下角有个小箭头,我们双击它,可以调出本机内的一些程序或文件。然而我们发现这些图标所占的存储空间很小,一般也就几百到几千字节。可是那么小的文件怎么会让上百兆的程序执行起来的呢?
后来,我们知道那些有小箭头的图标文件称为快捷方式。它所存储的内容并不是所要调用的程序本身,而是所要调用的程序在本机磁盘上的位置。(比如D:\Tencent\QQ\QQ.exe,如图8.1所示)使用快捷方式的目的就是为了快捷方便,不用去查找程序就能去执行它。不过如果所要调用的程序不存在或位置不正确,那么双击了这个快捷方式就会导致错误发生。
在内存中,可能会有一些数据,我们不知道它的变量名,却知道它在内存中的存储位置,即地址。我们能否利用快捷方式的原理对这些数据进行调用和处理呢?
很幸运,在C++中,也可以给内存中的数据创建“快捷方式”,我们称它为指针(Pointer)。它和整型、字符型、浮点型一样,是一种数据类型。指针中存储的并不是所要调用的数据本身,而是所要调用的数据在内存中的地址。我们可以通过对指针的操作来实现对数据的调用和操作。

更灵活的存储——堆内存

家里要来客人了,我们要客人们泡茶。如果规定只能在确定来几位客人之前就把茶泡好,这就会显得很尴尬:茶泡多了会造成浪费,泡少了怕怠慢了客人。所以,最好的方法就是等客人来了再泡茶,来几位客人泡几杯茶。
然而,我们在使用数组的时候也会面临这种尴尬:数组必须在程序运行前声明,即数组的大小在编译前必须是已知的常量表达式。空间申请得太大会造成浪费,空间申请得太小会造成数据溢出而使得程序异常。所以,为了解决这个问题,我们需要能够在程序运行时根据实际情况申请内存空间。
在C++中,允许我们在程序运行时根据自己的需要申请一定的内存空间,我们把它称为堆内存(Heap)空间。

3 楼

支持哦

4 楼

希望你有动力继续下去

5 楼

支持!对于我们这样的新人很有用处!

6 楼

支持哦

7 楼

写的太好了,简单易懂,支持啊

8 楼


麻烦再写下去,对我这样的新人,尽量再写简单点,我现在都感觉复杂[em17]

9 楼


支持!对于我们这样的新人很有用处!
    在多写点哦老大!~我还想看!~

10 楼

感谢楼上诸位支持!
下一版将说到自定义数据类型。同时对前面的基础部分也有不少的修改和补充。也希望大家多多提出意见……

我来回复

您尚未登录,请登录后再回复。点此登录或注册