内容正文:
全国信息学奥赛C++入门案例分析
1、C++对C的扩展
1简单的C++程序
1.1求圆的周长和面积
数据描述:
半径,周长,面积均用实型数表示
数据处理:
输入半径 r;
计算周长 = 2*π*r ;
计算面积 = π* r2 ;
输出半径,周长,面积;
方法1:用结构化方法编程,求圆的周长和面积
// count the girth and area of circle
#include<iostream.h>
using name std;
void main ()
{ double r, girth, area ;
const double PI = 3.1415 ;
cout << "Please input radius:
" ; //操作符重载
cin >> r ; //输入
girth = 2 * PI * r ;
area = PI * r * r ;
cout << "radius = " << r << endl ;
cout << "girth = " << girth << endl ;
cout << "area = " << area << endl ;
}
方法2:用面向对象方法编程,求圆的周长和面积
#include<iostream.h>
using name std;
class Circle
{ double radius ; //成员变量
public : //类的访问控制
void Set_Radius( double r ) { radius = r ; } //成员函数
double Get_Radius() { return radius ; } //通过成员函数设置成员变量
double Get_Girth() { return 2 * 3.14f * radius ; } //通过成员函数获取成员变量
double Get_Area() { return 3.14f * radius * radius ; }
} ;
void main()
{
Circle A, B ; //用类定义对象
A.Set_Radius( 6.23 ) ; //类的调用
cout << "A.Radius = " << A.Get_Radius() << endl ;
cout << "A.Girth = " << A.Get_Girth() << endl ;
cout << "A.Area = " << A.Get_Area() << endl ;
B.Set_Radius( 10.5 ) ;
cout << "B.radius = " << B.Get_Radius() << endl ;
cout << "B.Girth=" << B.Get_Girth() << endl ;
cout << "B.Area = " << B.Get_Area() << endl ;
}
总结:建立类、对象、成员变量、成员函数,输入输入流基本概念。
1.2初学者易犯错误模型
// demo02_circle_err.cpp
#include<iostream>
using namespace std;//c++的命名空间
class circle
{
public:
double r;
double pi = 3.1415926;
double area = pi*r*r;
};
int main()
{
circle pi;
cout << "请输入area" << endl;
cin >> pi.r;
cout << pi.area << endl; //乱码
system("pause");
return 0;
}
总结: 从内存四区的角度,解释为什么会出现乱码
理解为什么需要成员函数
2程序设计方法的发展历程
面向过程的结构化程序设计方法
· 设计思路
· 自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。
· 程序结构:
· 按功能划分为若干个基本模块,形成一个树状结构。
· 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。
· 其模块化实现的具体方法是使用子程序。
· 优点:
有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
· 缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件
· 把数据和处理数据的过程分离为相互独立的实体。
· 当数据结构改变时