Self--Study Chapter One (Summary programme principle)

本文介绍如何使用C++中的类、对象和方法实现生命游戏。重点讲解了类的公共与私有成员、成员选择运算符及实用程序包的应用。此外,还详细探讨了编程风格、函数的输入输出参数及编码测试等实践技巧。

                            Self--Study Chapter One

                          (Summary programme principle)

The Game of Life

解决方案:类,对象和方法

1 类,对象(class  object:C++中,我们使用类(class)来组合数据和用于访问或修改这些数据的方法,数据和方法这样的组合称为属于给定类的对象。For the Life game,we shall call the class Life,so that configuration becomes a Life object.we shall then use three methods for this object:initialize()will set up the in initial configuration of living and dead cells;print()will print out the current configuration ;and update()will make all the changes that occur in moving from one generation to the next.

2 C++类,方法(C++classes methods

每个C++类由表示变量或函数的成员所组成。表示变量的成员称为数据成员(data members),这些成员用于存储数据值。表示某个类的函数的成员称为方法(members)或成员函数(member functions),

类的方法一般用于访问或改变数据成员。

3 成员选择运算符(member selection operator

We can now apply methods to work with configuration ,using the C++operator .(the member selection operator ).For example ,we can print out the data in configuration by writing:

4 私有和公用(private and public

当开始实现类life时 ,需要决定如何存储数据,并且需要变量和函数来操作这些数据,然而所有这些变量和函数是这个类私有的,客户仅需要这个类说明和定义的公用方法。

Convention :Methods of a class are public .Functions in a class are private.

5 使用程序包(utility package) 此程序已包含文件开始,使得它能够用类life和标准C++的输入和输出库。使用函数user_says_yes()utility.h中声明,对于Life程序,我们所需要的关于utility.h的仅有的其他信息是以如下的指令开始:

      #include<iostream>

      using name space std;

这条指令允许我们使用标准的C++ 输入和输出流,如cincout(在较老的编译器上,一条替代的指令#include<iostream.h>具有同样的效果)

Programming Precept:Include precise preconditions with every program,function,and method that you write.

6 函数(function

程序说明的第三部分是它所使用的类和函数的列表,每个程序,函数或方法都应包含一个类似的列表。

7 程序的动作(action of the program

Life 程序中我们仍然必须编写代码来实现:

The class life.

The method initialize ()to initialize a life configuration.

The method print()to output a Life configuration.

The method update ()to change a life object so that it stores the configuration at the next generation .

The function use_says_yes()to ask the user whether or not to go on to the next generation.

The function instructions() to print instructions for using the  program.

 

二 Programming Style

1 名称

特别注意的是:使用的前缀和后缀来关联同一常规类型的名称,例如在一个程序中使用的文件可以被称为:

Input_file   transaction_file total_file out _file reject_file

避免采用故意的误拼和无意义的后缀来获得不同的名称

避免那些本身意义与问题毫无关系或只有很少关系的漂亮名程

避免选择拼写互相接近或者其他方面一语混淆的名称

应小心使用字母“l”(小写的ell),“o”(大写的oh)和“0”(零)

2 文档和格式(Documentation and Format)

1)注意避免机械模仿代码的功能的注释,如:

cout++;   //将counter1

或者使用无意义的行话,如

//Horse string length into correctitude

(2)格式 程序中的空格空白行和缩排是一种重要的文档形式

Programming Precept

The reading time for programs is much more than the writing time.Make reading easy to do.

3 细化和模块化(Refinement and Modularity

参数:细化过程最重要的部分之一就是确切地确定每个函数的任务,精确地确定每个函数的任务,首先必须对函数中使用的参数进行精确的说明(1)输入参数使用单不被函数修改,在C++中,输入参数是通过值传递的。(2)输出参数包含函数的计算结果。

 

三 编码,测试和进一步细化CODINS,TEST,AND,FURTHER REFINEMENT

1 占位函数(stubs

为正确的编译主程序,再用到的每个函数上应该有点东西,因此我们必须放上简短的哑函数,又称为占位函数。Note that in writing the stub functions we must at least pin down their associated parameters and return types

2 更新网络,方法update

首先使用存储在配置中的数据来计算名为new_gride的矩形数组中的各个元素,new_gride记录了更新后的配置,然后逐个元素地将new_grid复制回Life对象的grid成员中,为创建new_grid,我们用一个在行row和列col上的嵌套的循环,在矩阵数组grid中的非栅栏元素上运行一遍,这些嵌套的循环体由多路选择语句switch组成,函数neighbor_count(row,col)的返回值是0~8中的某一个,对其中的每种情况可以采取一种不同的动作。

3 输入和输出(1instructions

流出运算符“<<”是预定义的插入符,作用在流对象的cout上便可以实现最一般的屏幕输出。格式如下;

cout<<表达式1<<表达式2<<...

(2)initializations 

输入运算符 最一般的键盘输入是将提取符作用在流类对象cin上,格式如下cin>>表达式1>>表达式2>>......

4 用户响应 在C++中,函数get()实际上仅是类istream的一个方法,在我们的应用程序中,应有的方法cin.get()属于istream的对象cin

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值