新手的总结:理解编程思想中抽象的概念
新手的总结:理解编程思想中抽象的概念 这篇文章主要介绍的编程思想称为抽象,认真看一下,我觉得对你的编程很有好处.我是在看完《Linux c编程一站式学习》这本书上的一节内容然后自己整理小结了一下,个人觉得说的真的很不错,敲下来给大家学习一下,也是我个人的学习笔记. 先看部分代码: //复数的结构体 struct complex_struct { double x; //实部 double y; //虚部 };
/* * 复数存储表示层 */ double real_part( struct complex_struct z ) //取复数实部 { return z.x; }
double img_part( struct complex_struct z ) //取复数虚部 { return z.y; }
double magnitude( struct complex_struct z ) //求复数的模 { return sqrt( z.x * z.x z.y * z.y ); }
double angle( struct complex_struct z ) //求复数的幅角 { double PI = acos( -1.0 ); if( z.x > 0 ) return atan( z.y / z.x ); else return atan( z.y / z.x ) PI; } //直角坐标构造复数 struct complex_struct make_from_real_img( double x, double y ) { struct complex_struct z; z.x = x; z.y = y; return z; } //极坐标构造复数,做乘除法比较方便 struct complex_struct make_from_mag_ang( double r, double A ) { struct complex_struct z; z.x = r * cos(A); z.y = r * sin(A); return z; } 拥有帝国一切,皆有可能。欢迎访问phome.net
在此基础上就可以实现复数的加减乘除运算了: /* * 复数运算层 */
//加法 struct complex_struct add_complex( struct complex_struct z1, struct complex_struct z2 ) { return make_from_real_img( real_part(z1) real_part(z2), img_part(z1) img_part(z2) ); }
//减法 struct complex_struct sub_complex( struct complex_struct z1, struct complex_struct z2 ) { return make_from_real_img( real_part(z1) - real_part(z2), img_part(z1) - img_part(z2) ); }
//乘法 struct complex_struct mul_complex( struct complex_struct z1, struct complex_struct z2 ) { return make_from_mag_ang( magnitude(z1) * magnitude(z2), angle(z1) angle(z2) ); }
//除法 struct complex_struct div_complex( struct complex_struct z1, struct complex_struct z2 ) { return make_from_mag_ang( magnitude(z1) / magnitude(z2), angle(z1) - angle(z2) );
} 通过上面的代码可以看出,复数的加减乘除并没有直接访问结构体的成员x和y,而是把整个复数的结构体看成一个整体,通过相关的函数调用来实现需要的功能.这样有什么好处呢?好处多得很呢. 假如现在项目需要复数使用别的数据结构存储,例如改成用极坐标来存储,收集的数据不一定都是用直角坐标,假如收集的是极坐标的数据呢,用上面的函数转换总会损失一些精度,不好. 极坐标存储层的代码: struct complex_struct { double r, A; }; 拥有帝国一切,皆有可能。欢迎访问phome.net
double real_part(struct complex_struct z) { return z.r * cos(z.A); }
double |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |