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

来源:互联网 发布:山东网络问政平台 编辑:程序博客网 时间:2024/06/04 01:04

第一章 简介

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;}elsehighest = 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
原创粉丝点击