当前位置:首页 > 知识基础 > 硬件技巧 > C语言之循环结构(1)

C语言之循环结构(1)

发表日期:2016-10-31 14:59:40文章编辑:浏览次数: 标签:    

    顺序结构的特点是程序段中的语句按书写顺序执行,每个执行语句执行且只执行一次。

    分支结构是根据所设定的条件,在几个执行程序段中选择一个符合条件地执行。在每种条件下,仅执行一个分支而忽略其它分支。

    循环结构:顾名思义是反复执行某一程序段,直到循环的条件被破坏而退出。

    除非将一个循环程序段放到

    void init()

    {

    }

函数体内,否则,这个函数体内的语句不会被反复执行。

    但放在函数

    void repeat()

    {

    }

    里的语句,将无条件地多次被执行。由于机器人程序通常是一个“接收信息--处理信息”的循环往复的执行过程,所以,机器人程序的主体部分,往往放在这个函数体内。例如下面的程序段:

    void init()                                                     void init() {}

    {                                                               void repeat()

         beep(1000);                                              {

    }                                                                     beep(1000);

   void repeat(){}                                                 }

   我们仅听到机器人一秒钟的叫声。如果改成右边的程序,就会听到不断的叫声,直到关机。

   机器人这一长叫声,其实是机器人不断反复执行beep(1000)的结果,只是由于循环的速度快得我们无法觉察它是一连串声音的连续而已。

   改程序如下

   void init(){}

   void repeat()

   {

          beep(1000);delay(1000);

  }

   执行结果就会让你清楚听出它们是循环往复的结果。

   录入并运行下面的程序(接上LED灯板)

   #include <LNDZ.h>

   LED led(23);

   int i=0,j;

   void init(){ }

   void repeat()

   {

       i++;

       if (i>1000) while(1);                                 //  当 i 的值累加到1000时停下,循环终止,程序结束。

       j=i % 9;                                                    // 将 i  的值除以 9 的余数做为亮灯的序号。

       led.sw(j,1);delay(500);led.sw(j,0); 

  }

  上述程序我们可以改写为:

   #include <LNDZ.h>

   LED led(23);

   int i=0,j;

   void init()

   {

        for (i=0;i<=1000;i++)                        // 变量 i 自动从0逐一增至1000为止

        {

              j=i % 9;

              led.sw(j,1);delay(500);led.sw(j,0);

       }

   }

   void repeat() { }

   请读者将 for (i=0;i<=1000;i++) 改为for (i=1000,i>=0;i--)再运行上述程序,观察对结果的影响,理解for 循环的意义。

   下面这段程序,会输出一组有趣的数字,你不忍试试:

void init()

{  

   int a=1,i;

   for (i=1;i<20;i++)

   {

        winprintln(a);

        a=a+2*i+1;        //或写成a+=2*i+1

   }

}

       观察运行结果,理解这些数字是如何递推出来的。

      还有一个著名的数安序列,称为菲波拉契数列,它的前几项是

      1,1,2,3,5,8,13,21……

      明白人一看就知道,从第三项起,它的每一项是其前面两项之和。下面的程序段,求出该数列的前25项。

      int a=1,b=1;

      int i,c;

      winprint("1  1");

      for (i=3;i<26,i++)

      {

            c=a+b;

            winprint(c);winprint("  ");

            a=b;b=c;

      }

C语言之循环结构(1)
 

 

 

 

如没特殊注明,文章均为亮宁电子原创,转载请注明出处
相关新闻

win10系统下安装可视化平台问题解决

部分win10系统下安装亮宁机器人可视化平台(如图1所示)时,会报如图2所示的错误提示。 此时,我们点“否”关闭这个错误提示。从亮宁机器人官网(www.robedu.cn)或者亮宁机...

日期:2018-03-24

特殊材料的特殊用途

亮宁机器人套装的搭建材料有多种材质。例如铜柱、铝角码和塑料辐条等。但最基本的也是最主要的还是树脂板材。这种树脂板材具有金属的硬度,却比金属耐磨,且不易变形。因...

日期:2017-04-08

机器人遇墙壁右转

#include <LNDZ.h> ground gro(23); //地面灰度传感器连接23、25、27.....31号数字口,33号口为障碍物传感器 void init() {} int n; void repeat() { n=gro.getV(6); //获取第6号传感器(连接在33号数字口...

日期:2016-10-31

循迹机器人

车型机器人沿黑线走(暂不处理遇T型路口的情况)...

日期:2016-10-31

二进制开关板输入

二进制开关板输入二进制数,并利用LCD液晶屏显示输入的二进制数以及相对应的十进制数...

日期:2016-10-31

模拟板输入

通过调整模拟板上三个小轮,将指针指向对应的数字,可以很方便地输入十进制数,输入每次最多三位,按键后再次输入,就可以输入六位、九位。 #include <LNDZ.h> analog ana(0,42); //模拟板连接0,1,2三个模拟口,开...

日期:2016-10-31