本文共 2680 字,大约阅读时间需要 8 分钟。
第一章 简介
1、测试程序;
2、防错编程——结构化编程技术;
3、如何有效地使用调试器(debugger);
第二章 基本数据类型
1、引入有意义的符号名(具有描述性);
2、变量在定义声明时进行“初始化”是一个好的程序设计习惯;
3、空白字符(空格、制表符、回车)用来分割数字的输入;
4、“坦白讲,cin输入并不适用于与用户进行交互,它非常适合于从文件中读取数据,并且对程序来说非常简单!”;
5、键盘输入时带缓冲的。只有当用户键入回车键后,用户的输入才会被处理!(4、5详见程序coins2.cpp)
#includeusing 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()、fixed、setfill()只需使用一次(如果不想对所有输出都进行这些设定,需要在某些特定需求时重新设定,eg:setfill(‘空格’),另外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;}
2、p105循环不变式!
第七章 高级控制流
1、表达式cin>>word的值为cin,而对cin进行测试与测试!cin.fail()相同! Eg:while(cin>>word){ }
2、string line;
while(getline(cin,line))
{
Process line;
}
循环测试部分利用getline函数返回cin的引用这一特性来测试cin是否处于失败状态!
2、p213,第七章,输入输出重定向,和管道,以及两者的组合使用!
4、#include<cstdlib> int r=rand() 产生的是伪随机数,并不是绝对意义上的随机数,产生的伪随机数本质上是由公式计算生成的!
5、模拟实验模式本质:
(1)在一个循环中生成大量样本,并记录每个试验样本的特定观察值;
(2)模拟结束时,打印观察值的平均值;
Eg:模拟银行的客户排队模型!(在计算机中模拟客户的到达和交易情况)
6、返回一个随机整型数:(a到b之间)
return a + rand()%( b - a +1);
返回一个随机浮点数:(a到b之间)
return a +(b - a)* (rand()*(1.0 / RAND_MAX));
第五章 函数
1、一个通用的程序设计原则是:函数除了返回值以外,不要留下其他任何痕迹。
(1)如果输出信息,那么这种函数在没有输出流的环境中使用就没有任何意义,例如图形程序或是银行的柜员机控制程序。
(2)若是输出错误信息(eg:cout<<”Bad value!”),这将会严重限制函数的重用!
A.这样的函数只能用于使用cout输出的程序,而不能用于图形程序;
B.只能用于用户可见输出的应用程序中,而不能用于后台处理的程序中;
★注:如果程序必须要有输入/输出信息,要么将这些输入输出操作组织在一起,要么放在main函数中!让函数只做计算,不要报告信息!
2、在调用函数时,引用参数必须绑定到某个变量上,而值参数却可以绑定到任何的表达式!滥用引用参数,会限制调用方式!也绝对禁止将引用绑定到表达式上!(P130)
3、常量引用!
4、利用全局变量在不同函数之间传递数据并不是一种好的方式。应该在程序中尽量避免使用全局变量。
★注:如何避免使用全局变量?答案是使用类和参数来代替全局变量。因为总是可以通过函数参数来完成函数间数据的传递。如果函数需要访问多个变量,传统的参数传递比较麻烦。在这种情况下,可以利用类将相关的这一组变量封装在一起!
5、Assert宏机制处理异常:
assert(expression);
如果表达式为真,则什么都不做;否则,则终止程序,显示当前出错的文件、代码行号、和表达式!
对于文本程序,错误信息显示在终端屏幕上;对于图形程序,错误信息则显示在对话框中!
转载地址:http://rzopi.baihongyu.com/