《C++核心思想》学习笔记(1)

第一章 简介

1、测试程序;

2、防错编程——结构化编程技术;

3、如何有效地使用调试器(debugger);

 

第二章 基本数据类型

1、引入有意义的符号名(具有描述性);

2、变量在定义声明时进行“初始化”是一个好的程序设计习惯;

3、空白字符(空格、制表符、回车)用来分割数字的输入;

4、“坦白讲,cin输入并不适用于与用户进行交互,它非常适合于从文件中读取数据,并且对程序来说非常简单!”;

5、键盘输入时带缓冲的。只有当用户键入回车键后,用户的输入才会被处理!(45详见程序coins2.cpp

#include <iostream>

using namespace std;

int main()
{  
   cout << "How many pennies do you have? ";
   int pennies;
   cin >> pennies;
   
   cout << "How many nickels do you have? ";
   int nickels;
   cin >> nickels;
   
   cout << "How many dimes do you have? ";
   int dimes;
   cin >> dimes;
   
   cout << "How many quarters do you have? ";
   int quarters;
   cin >> quarters;
   
   double total = pennies * 0.01 + nickels * 0.05 
      + dimes * 0.10 + quarters * 0.25;
      /* total value of the coins */

   cout << "Total value = " << total << "\n";

   return 0;
}

6、static_cast <type_name> (expression)强制类型转换;

7、不要使用幻数,影响程序代码可读性,可以使用常量定义,还方便了程序维护,

          Eg: const  double  VOLUME  =  30

8、cin>>读入以空白字符分割的字符串;

   getline()读入回车之前的所有字符;

9、str.substr( start, length)

10、字符串连接 “+”;

11、#include<iomanip>

setw(width):设置输出域宽(右对齐);

setprecision():设置精度()小数点后位数;

fixed:固定输出的小数宽度;

setfill(‘ch’):设置填充字符;

注意:setprecision()fixedsetfill()只需使用一次(如果不想对所有输出都进行这些设定,需要在某些特定需求时重新设定,egsetfill(‘空格’),另外setfill()是与setw()配合一起使用,若后续的不再设定setw(),则也不再填充!),所有流将保持所指定的格式;而setw()需要在每次输出时都要设定一次!

 

第四章 基于控制流程

1、处理一组输入时:

一定要先测试输入是否失败.fail(),再测试.eof()

Eg:
bool more=true;               //利用bool变量
while (more)
{
cin >> next;
if (cin.fail())
{
more = false;
if (cin.eof())
cout << "end data!" << endl;
}
else
highest = next;
}

2p105循环不变式!

 

第七章 高级控制流

1、表达式cin>>word的值为cin,而对cin进行测试与测试!cin.fail()相同!         Egwhilecin>>word{    }

2string line

while(getline(cin,line))

{

Process  line;

}

循环测试部分利用getline函数返回cin的引用这一特性来测试cin是否处于失败状态!

2、p213,第七章,输入输出重定向,和管道,以及两者的组合使用!

http://blog.csdn.net/zww0815/article/details/7953058

http://www.cnblogs.com/hjslovewcl/archive/2011/01/10/2314356.html

 

4、#include<cstdlib>    int r=rand()    产生的是伪随机数,并不是绝对意义上的随机数,产生的伪随机数本质上是由公式计算生成的!

5、模拟实验模式本质:

(1)在一个循环中生成大量样本,并记录每个试验样本的特定观察值;

(2)模拟结束时,打印观察值的平均值;

Eg:模拟银行的客户排队模型!(在计算机中模拟客户的到达和交易情况)

6、返回一个随机整型数:(ab之间)

return  a + rand()%( b - a +1);

返回一个随机浮点数:(ab之间)

return  a +b - arand()*1.0 / RAND_MAX));


第五章 函数

1、一个通用的程序设计原则是:函数除了返回值以外,不要留下其他任何痕迹。

(1)如果输出信息,那么这种函数在没有输出流的环境中使用就没有任何意义,例如图形程序或是银行的柜员机控制程序。

(2)若是输出错误信息(egcout<<”Bad value!”),这将会严重限制函数的重用!

A.这样的函数只能用于使用cout输出的程序,而不能用于图形程序;

B.只能用于用户可见输出的应用程序中,而不能用于后台处理的程序中;

★注:如果程序必须要有输入/输出信息,要么将这些输入输出操作组织在一起,要么放在main函数中!让函数只做计算,不要报告信息!

2、在调用函数时,引用参数必须绑定到某个变量上,而值参数却可以绑定到任何的表达式!滥用引用参数,会限制调用方式!也绝对禁止将引用绑定到表达式上!(P130

3、常量引用!

http://www.cnblogs.com/charley_yang/archive/2010/12/14/1905161.html

http://www.cnblogs.com/lbsx/archive/2009/08/28/1555581.html

4、利用全局变量在不同函数之间传递数据并不是一种好的方式。应该在程序中尽量避免使用全局变量。

★注:如何避免使用全局变量?答案是使用类和参数来代替全局变量。因为总是可以通过函数参数来完成函数间数据的传递。如果函数需要访问多个变量,传统的参数传递比较麻烦。在这种情况下,可以利用类将相关的这一组变量封装在一起!

5、Assert宏机制处理异常:

assert(expression);

如果表达式为真,则什么都不做;否则,则终止程序,显示当前出错的文件、代码行号、和表达式!

对于文本程序,错误信息显示在终端屏幕上;对于图形程序,错误信息则显示在对话框中!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书运用现代工具对计算机科学进行传统的介绍。作为计算机领域的科学家,很幸运能够给学生介绍一种易于实践、使人满足并且需要不断深入才能掌握的活动,即编程。正如大多数计算机科学家一样,我相信编程始终是计算机科学的核心主题。因此,本课程的目的是教学生怎样编写程序。 虽然本书在形式上保持了传统风格,但也使用了许多新技术,主要表现在三个方面: ● 所用的编程语言是一个C++子集。虽然将C++作为一门完美的教学语言还相去甚远,但其本身是一门十分注重实效的语言。在软件界中,C++是应用十分广泛的编程语言。在所有主要平台上都有便于使用的C++编程环境。特别是,C++在介绍编程思想方面具有极大优势。本书通过使用标准C++语言的新特性,如引用参数、流库、string类以及vector模板,从而最大限度地避免使用易于出错的程序结构。指针也只主要应用在多态和链表的实现上。 ● 较早引入对象。本书分两个阶段介绍对象。从第2章开始,学生开始学习使用对象,特别是流对象、字符串对象、简单的Time和Employee类实例以及图形对象。本书按照传统方式逐步地介绍分支、循环、函数和过程,并在这一过程中使学生逐渐了解对象、调用成员函数等概念。然后,在第6章开始学习如何实现类和成员函数。 ● 可选图形编程。学生一般都喜欢图形编程,本书包括很多可视化信息的练习。为此,本书使用一个在许多流行平台上都可以得到的简单图形库。与传统的图形库不同,该库在对象使用上更加直接、有效。该简单图形库的使用同样是可选的。此外,在第18章中通过使用一个类似于Microsoft基本类库(MFC)的开放源代码工具包来介绍图形用户界面编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值