欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

上课笔记-1

程序员文章站 2022-04-26 09:39:33
...

4班 20200320 笔记

课前-自己写开平方根(square root)函数

开平方根的原理很简单

一开始a=1,然后每次a = (a+ x/a)/2

上课笔记-1

// 这个函数只是单纯的求绝对值函数 
float abs(float aNum){
    if (aNum< 0){
        return - aNum;
    } else {
        return aNum;
    }
}

// 这个函数只负责判断两个数的临近程度 
bool closeEnough(float aRoot, float aNum){
    return abs(aNum- aRoot)< 0.000001;
}

// 这是求平方根的函数,它了解求平方根的算法 
float sqrt(float aNum){
    float f1= 1;
    while (!closeEnough(f1* f1, aNum)){
        f1= (f1 + aNum/ f1)/ 2;
    }
    return f1;
}

简单吧

编程英语

学英语,作为programer,英语很重要的哦~,更多见https://editor.csdn.net/md/?articleId=104996813

上课笔记-1

PI蒙特卡洛


// 这个函数只负责求最大公约数 
int gcd(int aNum1, int aNum2){
    if (aNum2> 0){
        return gcd(aNum2, aNum1 % aNum2);
    } else {
        return aNum1;
    }
}

// 这个函数只负责判断两个随机数是否互质 
bool coPrime(){
    int a, b;
    a= rand();
    b= rand();
    if (gcd(a, b)== 1){
        return true;
    } 
    return false;
}

// 这个函数负责各种蒙特卡洛测试,只负责返回结果的数量 
int Mante(int aCount, bool test()){
    int cc= 0;
    for (int i=0; i< aCount; i++){
        if (test()){
            cc++;
        }
    }
    return cc;
}

// 这个函数了解蒙特卡洛测试原则和pi的计算公式 
// 任意两个数互质的概率是6/pi*pi 
float gcdCalcPi(){
    float f1;
    int a= 100000000;
    f1= Mante(a, coPrime);
    f1= f1/ a;
    f1= 6/ f1;
    f1= sqrt(f1);
}

// 主程序只负责高端显示 
int main(){
    srand(time(0));
    float f1= gcdCalcPi();
    cout << f1 << endl; 
    return 0;
}

算法的时间复杂度并不大,线性结构,但可以求出π的近似值。

结构体与类

面向对象和面向过程

举个最简单点的例子来区分 面向过程和面向对象
有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择
1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。
2、去饭店,张开嘴:老板!来一份鱼香肉丝!

这就是面向对象面向过程

结构体与类的命名规范开头大写

做个实验试试struct和class。**提示:**class如果想类外调用,必须要public。

都挺简单,不多说。

重载-比较类
class node {
public:
    int a;
    int b;
};
node d1, d2;
...
int main() {
    if (d1 < d2) {
        cout << d2 << endl;
    }
    return 0
}

​ 这个程序能成功吗,不能,因为两个类不能比较,那我不服!不支持就重新定义小于号,这种方法就是运算符重载,运算符重载是典型的重载样例。

运算符重载的新关键字是operator
实例:

struct Date{
    int year;
    int month;
    int day;
	void show(){
		cout << year << "-" << month << "-" << day << endl;
	}
	bool operator>(Date ad){
		if (year> ad.year){
			return true;
		} else if (year< ad.year){
			return false;
		} else if (month > ad.month) {
			return true;
		} else if (month < ad.month) {
			return false;
		} else if (day > ad.day){
			return true;
		} else {
			return false;
		}
	}
};

​ 这样子再调用就没事了,这个operator函数重载了大于号,当然也可以重载别的,这个函数不需要显式调用,是隐式调用。不懂可以查。main函数中就可以比较两个类了(只能比较大于号)

int main(){
	Date d1, d2;
	d1={2020,3,20};
	d2={2020,1,24};
	d1.show(); 
	d2.show(); 
	cout << (d1> d2) << endl;
	cout << (d2> d1) << endl;
}

成功!????

详细代码:https://github.com/Github-Programer/Program/tree/master/C%2B%2B/LearnClass/20200320-zhao

作业

上课笔记-1

相关标签: 研发管理