CSDN博客

img nanyu

《2008版 白话C++》实时目录

发表于2008/10/3 17:25:00  23012人阅读

分类: 辅助课程 白话C++

《2008版 白话C++》
------------------------
(消息:本书已经和出版社签定出书合同。出书时间:2009年9月)
 网站: www.d2school.com
另,为了和网上流传的所有旧版 《白话C++》区别,有利于大家搜索,暂时加上前缀“2008版”。
------------------------

第1章 启蒙

  "在成为真正的程序员之前,我们需要接受一场洗礼。"

1.1.开始

学习编程不是一件容易的事——其实,我多么希望在您读完本书之后,能把书,与及书的作者当成朋友,而不是敌人——所以,我应该坦诚地说:学习编程是一件很难的事,而学习C++编程,就更难了……

1.2 什么是计算机

据说,一部《红楼梦》,经学家看见“易”,道学家看见“淫”,才子看见“缠绵”,革命家看见“排满”,而流言家看见宫闱秘事……。同样是计算机,一个程序员和一个非程序员,看到的会有什么不?

1.3 什么是硬件、软件

一个好的驾驶员,主要掌握的是“驾驶技术”。当然一般他也会懂一些汽车的硬件知识。掌握好汽车的硬件知识,不仅在车出现小故障时可以应急维修一下,更重要的是它有利于促进驾驶员的驾驶技术。

一个好的程序员,主要掌握的是“编程技术”。当然一般他也会懂一些电脑的硬件知识。掌握好电脑的硬件知识,不仅在电脑出现小故障时可以应急维修一下,更重要的是它有利于程序员的编程技术。

1.4 什么是程序

让我们来想象一个游戏——游戏中有两个人,其中一个被布蒙上双眼。另一个人是你。场地中混乱地摆上许多啤酒瓶。游戏任务是由你发号施令,指挥被蒙眼者从场地一端穿越到另一端,其间不允许碰倒任意一个啤酒瓶。

1.5什么是编程语言

……等等,机器,没有生命的东西!小猫小狗有语言倒可以接受,机器也有语言,还要我们去学习,这似乎有点亵渎人类的尊严。得把这个结解开,不然部分自尊心特别的学生,可能从此产生心理障碍,无法继续学习编程。


----------辅助教程-------------------

Code::Blocks如何设置热键动画教程

Code::Blocks + wxWidgets 写图形界面(GUI)程序

-----------------------------------------

1.6.什么是集成开发环境

“集成开发环境”当然不是指“国家政策”、“环球经济”之类的环境。“集成开发环境”其实就是一款软件。

 第2章 准备

"决定你能否成为程序员,不在于你的计算机基础,在于你是否有足够的耐心。"

 

2.1. 准备的准备

2.2.安装IDE——Code::Blocks

2.3. 安装msys

2.4.安装wxWidgets

2.5.安装boost

2.6.安装iconv、iconvpp

2.7.安装MySQL、MySQL GUI Tools

2.8 安装 MySQL++

 

2.9.安装xerces-c

2.10.安装 xsd

2.11安装 deelx

2.12.安装gSOAP

2.13.安装SDL

2.14.Code::Blocks配置——全局路径变量

 

 

第3章 感受(一)

Hello world!,Hello C++,我们来了!

--------------感受“面向过程”的开始-------------------

3.1. Hello world 经典版

毫无疑义,一个真正的程序员,总是愿意把自己的第一次——我是说“感受”——献给是“Hello world”。

3.2. Hello world 中文版

一个西方程序员,也许到今天仍然可以傲慢地不去理解“编码、字符集”,但一个真正的中国程序员,必须面对这个问题。

3.3. Hello world 函数版

想象某个阳光明媚的清晨,你走进公司的大楼,心情很好,看到同事小A,你微笑点头:“Hello!”;看到小B,你微笑点头:“Hello!”;看到小C,你微笑点头:“Hello!”……你脖子有些酸了。广告词出现“这时,您需要一个Hello函数”!

3.4. Hello world 交互版

在“函数版”中,我向小A和老板问好。你呢?小伙子把自己关在家里苦学C++编程,精神可嘉!但我还是要非常“恶意”地推测,你写的代码是这样的:

Hello(



"志玲"



);




Hello( "小翠" );

3.5. Hello world 分支版

……新的需求产生了!程序可不可以区分一下,当遇上志玲时,我们需要稍微有点的不同问候方式——至少和碰上BOSS的状况相比。

3.6. Hello world 循环版

分支程序中,每次运行程序,我们只能“遇”见两个人,如上例运行结果中的“志玲”和“丁小聪”。

循环版的任务,就是……

--------------感受“面向对象”的开始-------------------

3.7. Hello object 生死版

虽然用“恐猪”来表示一个崭新的人造物种,那是相当的直观,但在代码中炫耀自己的渊博的生物知识——尤其是科幻片中听来的——永远不是一个程序员所应该做的。所以我们还是老老实实地,使用“Object”这个词吧

3.8. Hello object 成员版

……于是,这个类型的对象拥有自定义的“生”与“死”的过程,然而,光光讨论对象的“生”与“死”,未免太形而上,太哲学,我们要考虑如何从“抽象”过渡到“具体”……读者有没有玩过电脑游戏……

3.9. Hello object 派生版

我听到很多读者在喊“志玲!志玲!”。是啊,有人对我用xiaoA和xiaoB这样两个没有创意的人物来演绎“Hello Object 成员版”表示抗议:“志玲上哪儿去了呢?” 关键是,如果让“志玲”上场,那么我们就需要开始面对一个问题:既然,我们对“志玲”的问好都要与众不同,那么,她的自我介绍,难道就不能来点变化?

3.10. Hello object 多态版

公元前209年,7月。秦朝著名的两位民工,陈胜、吴广说了一句话:“将相王候,宁有种乎?”。他们在表达一种不满:难道那些有钱人或当官人,天生就和我们有不同人种吗?
我们的例子程序似乎也有这个问题。

3.11. Hello object 封装版

那时——医生把长长的胃镜导管强行从我嘴里,我眼泪一下子哗哗下来——就在那时,我突然意识到,胃应是人类的私有数据,只不过在医生面前,它被暴力破解了。 C++也一样,当你只为图一时方便,想把本应private的数据设置成public时,你应该去医院感受一下胃镜。

3.12. Hello STL 向量篇

“ 好消息!第XXX届国际美女大赛即将在中国举行,届时将有2999名来自世界各地的美女参赛。最新消息表明,本次大赛将对所有数据统一采用专业软件进行管理。另据IT界知情人士透露……”

3.13. Hello STL 列表篇

我不耻地骂了一声:“虚伪!”。丁家老婆腼腆地冲我家一笑,盖上了纸盒。我才发现纸盒上写了几行字:

产地:C++标准委员会

 

结构:std::list 类型: std::list<存款单>

3.14. Hello STL 算法篇 

你肯定知道“我吃饭”中的动词“吃”,是一个“谓语”;但我要特别提醒:“我是一个男人”中的“是”,也是一个谓语。同样,C++中的“谓语/predicate”通常是用来做一个“是什么吗?”的判断,比如:“是大于number吗”,或“是等于number吗”。

3.14. Hello STL 文件篇

(未完待续 2008年11月25日)

 

4.1. Hello GUI 基础篇

我们回到了一个原点,准备再次写一个“Hello world”,但这一次,我们将和“Hello world”重逢于“GUI”的平台。

我们采用支持跨平台的wxWidgets C++图形界面库,在学习本节课程之前,您需要确信已经完成《第2章 准备》所提及的,有关wxWidgets的编译、及配置工作。

 

4.2. Hello GUI 布局篇(1)

无论是C++,还是其它语言的GUI库,只要支持跨平台,则其最主要的布局方法,都不约而同的采用了另外一种方法——“相对定位法”——比如采用“百分比”来定位。

 

4.3. Hello GUI 布局篇(2)

本小节,我们身负双重责任:其一、通过设计一个真实应用的界面, 进一步熟悉wxSmith的使用方法。其二、本节的设计成果,将成为本章后续“Hello Database GUI版”所需要的窗口界面。

 

4.4. Hello Internet

本节我们将使用wxWidgets库的网络功能,访问www.d2school.com 提供的网络资源。过程是:在窗口的编辑框内输入姓名,点击既定按钮,程序通过wxWidgets提供的组件,访问“第二学堂”预设的网络链接,获得一句来自互联网的问候语。

 

4.5. Hello Database 准备

我们将通过三个小节的内容,来完成“Hello Database”的学习。首先是本节的“准备篇”,用以完成以下四个任务:

了解数据库应用编程(“客户/服务”二层结构)的基本概念;

  • 在Code::Blocks中配置和“Hello Database”项目有几个C++扩展库的全局路径变量;
  • 了解 “Hello Database”项目的基本需求;
  • 准备“Hello Database”所需要的数据。

4.6. Hello Database 控制台版

建立连接之后,我们就可以开始查询了。类似打通电话,你就可以来一句:“喂,给我5公斤大米!”。哈哈,大米不可能顺着电话线过来,但对于“数据库连接”,只要客户端说对了话(正确的SQL),所要的数据就会迅速从连接上传回来。

 

4.7. Hello Database GUI版

2008年北京奥运会,我们当然是获得金牌最多的国家!从这个意义上讲,我们的金牌数很多很多。不过如果从数据库的存储量来看,51条记录那可一点不多。因此,本例如果一次将所有备注与图片数据都查回,并且同样保存在内存中,对于流行的个人电脑配置,并不是很大的压力。

 

第五章 基础

“总有一些知识,要在多年以后,我们才能感受得到它的力量。”

 

5.1. 从代码程序

这是一行代码: cout 《 "Hello world!" 《 endl;它是如何变成一段程序,从而在屏幕上打出“Hello world”呢?

 

5.2. 构建C++程序

谈到链接,首先会有困惑:“都已经编译成机器语言了,不就完事了吗?链接干什么?”

 

5.3. C++项目组成

首先我们知道了,写一个C++程序,可能需要多个源文件,比如a.cpp、b.cpp。有没有可能只用一个源文件呢?似乎是可以的,比如我们之前写的 “Hello world”经典版等项目,不就只有一个main.cpp吗。其实,就算是“Hello world”经典版这样一个小程序,我们也要支付链接器同志的出场

 

 

5.4. 进程与内存

当程序安静地躺在硬盘上时,它是一个“文件”,非要给点区别的话,它是一个“可执行文件”;而当程序运行起来,它就从硬盘上一跃进入内存,这时它就被叫做一个“进程/process”了。 

 

 

5.7. 进制.1

我女儿读幼儿园时,我就开始关心起她的算术能力。于是我了解到,她在小班的时候,就会个位数的加法,但一晃两年,到大班要结束了,才见她拿着算盘在那里炫她的百位数以内加减。

5.8. 进制.2

说到十六进制,首先会问:总共只有10个阿拉伯数字:0、1、2、3、4、5、6、7、8、9,如何表达“逢16进1”的概念呢?方法是用英文字母(大小 写均可):A、B、C、D、E、F表达10~15。所以,如果我告诉你:这是一个数:“17FCA0”,你肯定能猜到它是一个十六进制的数,不过如果我说 的是:“12390”,就不好区分是什么进制了。

1 0

相关博文

我的热门文章

img
取 消
img