• 《SLAM导航机器人基础》第二章:C/C++编程(中)


    2.3节,程序基本逻辑结构

    本节简述程序设计中的几个逻辑结构:判断结构,循环结构。

    2.3.1判断结构

    判断结构,用于编写有执行条件的语句。有if判断结构和switch判断结构两种。我们以示例进行学习:

    if(speed > 1000) speed = 1000; //如果speed>1000,则赋值1000给speed。这条语句起到限值作用,使得speed的最大值不超过1000。
    if(speed > 700) ControlInterval= 10;//如果speed>700,执行ControlInterval= 10;否者,执行下一个判断else if(speed > 400) 
    else if(speed > 400) ControlInterval= 20;//如果speed>400,执行ControlInterval=20;否者,执行下一个判断else if(speed > 200) 
    else if(speed > 200) ControlInterval= 30;
    else ControlInterval= 40; //以上条件均不满足,执行ControlInterval= 40;
    1 switch(bumperID) //将bumperID与下面的case匹配,相等则运行后面对应的语句,最后break退出,执行大括号外的下一条语句;
    2 {
    3     case 1: cout<<"bumper1="<<bunmper1<<endl;break; //bumperID==1时执行该行,break;执行第8行
    4     case 2: cout<<"bumper2="<<bunmper1<<endl;break; //bumperID==2时执行该行,break;执行第8行
    5     case 3: cout<<"bumper3="<<bunmper1<<endl;break; //bumperID==3时执行该行,break;执行第8行
    6     default:cout<<"bumper id error!"<<endl;break;   //以上情况均不符合时执行该行,break;执行第8行
    7 }
    8 cout<<"ending"<<endl;

    if判断结构可以实现范围条件判断,如上示例的speed 在400~700范围时,ControlInterval = 20,switch判断结构用于取值范围时少数几种的情况。if判断结构需要依次判断执行,例如speed <200时,需要先判断比较三次if(speed > 700);else if(speed > 400);else if(speed > 200)。switch语句,只需要比较一次。

    2.3.2循环结构

    相同代码段需要多次执行时,可以使用循环结构。循环结构有while循环和for循环两种,我们以示例代码段进行学习:

    int speed = 0;
    while(speed<10) //当speed<10时,执行{}内的语句,否则退出循环
    {
        speed ++;//speed自加1
    }
    //example 2.3.2
    #include <iostream>
    using namespace std;
    int main()
    {
       int i;
       for(i=0;i<10;i++) //第一次进入for循环时执行i=0;判断i<10?满足执行{}内容,然后执行i++;再判断i<10?满足执行{}内容,然后执行i++;不满足则结束循环
      {
        cout<<"i:"<<i<<endl;
      }
       return 0;
    }

    我们在在线工具上编译运行,查看以上所学内容

    2.4节,程序基本存储结构

    本节开始学习数据如何在程序中存储。在之前的学习中,我们可以用不同的数据类型定义不同的变量。但是如果我们有很多类似的数据需要做运算时,使用数组类型存储会带来命名和运算上的便利性。

    2.4.1一维数组

    一维数组,对应存储数学上的一行多列的数组。我们在示例中学习数组的定义及使用。

    //example 2.4.1
    #include <iostream>
    using namespace std;
    int main()
    {
       int i;
       int a[3];        //定义长度为3的整型数组a
       int b[3]={1,2,3};//定义长度为3的整型数组b,并初始化数组数据为{1,2,3}
    
       for(i=0;i<3;i++) 
       {
         a[i]=i; //使用for循环依次赋值数组a的元素a[0],a[1],a[2]
         cout<<"a["<<i<<"]="<<a[i]<<endl;
       }
       for(i=0;i<3;i++) 
       {
         cout<<"b["<<i<<"]="<<b[i]<<endl;
       }
       return 0;
    }

    2.4.2 二维数组

    二维数组用于存储多行多列的数据,请看使用示例:

    //example 2.4.2
    #include <iostream>
    using namespace std;
    int main()
    {
       int i,j;
       int a[2][3];        //定义2行3列的整型数组a
       int b[2][3]={{1,1,1},{2,2,2}};//定义数组b,并初始化数据为{{1,1,1},{2,2,2}}
    
       for(i=0;i<2;i++) 
           for(j=0;j<3;j++) 
           {
             a[i][j]=b[i][j]; //使用双重for循环依次赋值数组a的元素
             cout<<"i="<<i<<",j="<<j<<",a["<<i<<"]"<<"["<<j<<"]="<<a[i][j]<<endl;
           }
       return 0;
    }

     同学们动手推导一下程序执行顺序,看结果是否正确。推导程序执行过程,多动手编写代码验证对学习程序至关重要。

    2.5节,函数

    在之前的内容中,我们学习了特殊的main函数。在for循环结构中,我们知道有一些语句是需要多次执行的。事实上,当一个程序足够大时,我们会发现有很多重复的代码。我们应该使用函数,将相同功能的代码段封装起来,使得我们的代码更简洁易懂,易于维护。函数的定义形式如下:

    函数返回值类型 函数名(参数表){函数体}

    下面我们用示例说明函数的使用:

  • 相关阅读:
    java 单例模式-饿懒汉模式
    Java注解
    Java集合
    Java数据类型
    java实现多线程三种方法
    Java并发 线程池
    spring ioc(反转控制)
    事件驱动的Java框架
    js 标签属性与导航
    input 标签和a标签实现超链接的区别
  • 原文地址:https://www.cnblogs.com/Baron-Lu/p/13269343.html
Copyright © 2020-2023  润新知