1.学习C++ 最主要的事情就是集中关注概念,不要迷失在语言的技术细节中,对于程序设计和设计技术的理念远比对细节的理解更重要。
2什么是C++ 它是一个更好的C 支持数据抽象 支持面向对象的程序设计 支持通用型程序设计 原始的程序设计范型是 确定你需要的哪些过程 采用你能找到的最好的算法。
2.1变量与算法 bool布尔 char字符型 int整数类型 double双精度浮点类型
+加 -减 *乘 /除 %余
==等于 !=不等于 <小于 >大于 <=小于等于 >=大于等于
void some_funcition(){ //函数不返回值
double d =2.2; //初始化浮点数
int i =7; 初始化整数类型
d=d+i; 将和值赋于d
i=d*i; 将乘积赋予i
}
像c一样 =是赋值 ==是检测
2.2检测循环 C++提供了一组很方便的用于表示选择和循环的语句。
bool accrpt(){
cout<<"Do you want to proceed(y or n)?/n"; //写出提问
char answer =0;
cin>>answer; //读取答案
if(answer =='y') return true;
return false;
}
运算符<<(“送出”)用作输出运算符 cout标准输出流 >>(“取入”)输入运算符 cin标准输入流
通过回答‘n’纳入考虑范围
bool accrpt2(){
cout<<"Do you want to proceed(y or n)?/n"; //写出提问
char answer =0;
cin>>answer; //读取答案
switch(answer){
case ‘y’:
return true;
case ‘n’:
return false;
default:
cout<<“I'll tale that for a no。/n”;
return false;
}
}
swatch会检查对照检查一个值,这些分情况常量必须互不相同。如果这个值与所有常量不匹配 那么就选择default 当然也可以不提供default。
很少有程序不包含循环的
bool accept3(){
int tries =1;
while(tries<4){
cout《“"Do you want to proceed(y or n)?/n”;
char answer = 0;
cin》answer;
switch(answer){
case ‘y’:
return true;
case ‘n’:
return false;
default:
cout<<“Sorry,I don't understand that /n”;
tries = tries + 1;
}
}
cout<<"I'll take that for no /n";
return false;
} 这里while 语句一直执行到条件变成false结束;
2.3 指针与数组
数组可以如下定义: char v[10] //10个字符的数组; v[0]..v[9]
指针类似char* p; //指向字符的指针;
在声明里, []表示“的数组”, 而*表示“的指针”。 所有数组都以0为下界。
p = &v[3]; //p指向v的第4个元素;
一元的&是取地址运算符。
考虑将10个元素从一个数组复制到另一个数组:
void some_funcition(){
int v1[10];
int v2[10];
for(int i=0;i<10; i++) v1[i]=v2[i];
}
2.4模块程序设计
确定你需要的哪些模块;将程序分为一些模块,使数据隐藏于模块之中。被称为数据隐藏原理
C++提供了一种机制,可以把相关数据、函数等 组织到一个独立的名字空间里。例如模块Stack的用户界面可以按如下方式声明和使用;
namespace Stack{
viod push(char);
char pop();
}
void f(){
Stack::push('c');
if(Stack::pop()!=‘c’)error(“impossible”);
}
这里的Stack::限定词表限定push()和pop()是来自Stack名词空间。这些名字的其他使用将不会与之干扰,不会引起混乱。
Stack的定义可以通过程序的另一个单独编译的部分提供:
banespace Stack{
const int max_size = 200;
char v [max_size];
int top =0;
void push (char c) //检查上溢并压入c
char pop() //检查下溢并弹出
}
有关这个Stack模块的关键点是,用户代码完全被隔离于Stack的数据表示之外,隔离方式是通过写出Stack::push 和Stack::pop()代码来实现。
数据实际上只是隐藏起来许多东西中的一类,数据隐藏的概念很容易扩展到信息隐藏,也就是说,例如函数、类型的名字,也很容易做成一个模块里面局部的东西。为此
C++允许任何声明放入名字空间里。
这个Stack模块只是描述堆栈的一种方式, 下面几小结将用各种堆栈作为例子,阐释不同的程序设计风格。