C ++ Primer | 第五章 语句

使用控制流语句 (flow of control) 以支持复杂的执行路径。

5.1 简单语句

最简单的语句是空语句(null statement) 它只有一个分号;
注意不要多写分号或者少写分号,while或者if后面没有分号
复合语句 compound statement 是指用花括号括起来的语句和声明的序列,复合语句也被称作block块。在一些语句中,语法上需要一条语句,但是逻辑上需要多条语句,则应该使用复合语句,如while或者for。

5.2 语句作用域

while (int i= get_num())
    cout<<i<<endl;
i=0;//错误,在循环外部无法访问

5.3 条件语句

5.3.1 if

if (condition)
    statement
//-----------------------
if (condition)
    satement
else
    statement2

5.3.2 switch

unsigned a=0,b=0;
char ch
while(cin>>ch){
switch(ch){
case 'a'://注意这里必须为整型常量
    ++a;// 如果要为分支定义并初始化一个变量,我们应该把变量定义在块{}内,从而确保,后面的标签都在作用域之外
    break;// 一定要有break,要不然会继续运行
case 'b':
    ++b;
    break;//break的作用是转移控制权,如果都没有匹配上就会运行switch之后的的语句
defaultbreak;//
    }
}

5.4 迭代语句

5.4.1 while 语句

当不确定到底要迭代多少次的时候,或者想在循环结束后访问循环控制变量。

5.4.2 传统的for语句

//注意在for语句中定义的对象只有在for循环体内可以见。在for循环结束后init的对象就不能使用了
for (init-statemen;condition;expression)//init-statement 负责初始化一个值,一般为声明语句、表达式语句、或者空语句;也可以同时定义多个语句;最后的expression也可以为空语句
    statement

5.4.3 范围for语句

这是c++11中新引入的一种更加简单的for语句

for(declaration:expression)//expression必须是使用花括号括起来的初始值列表或者数组、vector、string等,他们有能返回迭代器的beginend成员,范围变量必须是引用类型(&)才能对其中的元素进行写操作
    statement

5.4.4 do while 语句

do 
    statement
whilecondition);//注意,作为循环的条件不能定义在do的内部

5.5 跳转语句

break; continue; goto;return

5.5.3 goto语句

注意:不要在程序中使用goto语句,既难理解又难已修改

goto label;//label是用于表示一条语句的标示符,labeled statement是一种特殊的语句,在她之前有一个标识符及一个冒号:
begin:
    int sz=get_size();
    if (sz<=0){
        goto begin;
        }
//标签提示符独立于变量的其他标识符的名字,goto语句和控制全转向的那条带标签的语句必须位于同一个函数之内
//----
     goto end;
     int ix=10; // 错误:goto语句绕过了一个带有初始化的变量定义
end:
  ix=42;//错误,此处的需要使用ix,但是goto语句绕过了他的声明

5.6 try 语句块和异常处理

异常是指超出函数正常功能的范围,当程序检测到它无法处理的问题时,需要用到异常处理,一旦发出异常信号,检测出问题的部分也就完成了任务,无需知道如果解决。
异常处理包括:
- throw 表达式;
- try 语句块:使用catch clause 来处理异常
- exception class ;异常类用以在throw和catch之间传递异常的具体信息

5.6.1 throw 表达式

//检测两条数据是否相同
if (item1.isbn()!=item2.isbn())
    throw runtime_error("Data must refer to same ISBN");// runtime_error 是标准异常库中的一种,stdexcept中定义

5.6.2 try 语句

try{
    program-statement
    }catch (exception-declaration){
        handler-statements
    }catch(exception-declaration){
        handler-statements
    }

5.6.3 异常标准

  • exception 头文件: 只定义了最通用的异常类exception,只报告异常的发生,不含具体信息
  • stdexcept 包含几种异常类
  • new头文件定义了bad_alloc异常类
  • type_info 定义了bad_cast异常类
    注意exception、bad_alloc 、bad_cast只能使用默认初始化,但是其他类不可以使用默认初始化
内容概要:本文介绍了一种利用遗传算法优化BP神经网络进行回归预测的方法,并提供了完整的MATLAB程序代码。主要内容包括数据预处理、遗传算法BP神经网络的结合、适应度函数的设计以及最终的预测结果展示。文中详细解释了如何将Excel格式的数据导入MATLAB并进行归一化处理,如何定义适应度函数来优化BP神经网络的参数(如激活函数和学习率),并通过遗传算法找到最优解。实验结果显示,在某工业数据集上,经过遗传算法优化后的BP神经网络预测精度显著提高,从原来的0.82提升到了0.91。此外,还提到了一些实用技巧,比如调整遗传代数、修改激活函数等方法进一步改进模型性能。 适合人群:对机器学习有一定了解的研究人员和技术爱好者,特别是那些希望深入了解遗传算法BP神经网络结合应用的人士。 使用场景及目标:适用于需要快速构建高效回归预测模型的场景,尤其是当传统BP神经网络无法达到预期效果时。通过本篇文章的学习,读者能够掌握一种有效的优化手段,从而提高模型的泛化能力和预测准确性。 其他说明:代码可以直接应用于新的数据集,只需确保数据格式符合要求(Excel格式)。对于想要深入探索或改进现有模型的人来说,还可以尝试更换不同的激活函数或其他调节方式来获得更好的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值