第五课 for循环(1)--循环次数控制

第五课  for循环(1)—循环次数控制

【循环引入】

 

例题5.1:画下面形状的5级梯形。

《第五课 for循环(1)--循环次数控制》

 

分析:

研究问题的方法之一是“从简单到复杂”。

步骤

说明

图形

步骤1

先分析简单的1级梯形基本问题。

《第五课 for循环(1)--循环次数控制》

步骤2

代码为:

pen.fd(30);

      pen.rt(90);

      pen.fd(30);

      pen.lt(90);

《第五课 for循环(1)--循环次数控制》

注意开始和结束的pen方向。

步骤3

重复用前面的代码5次,画出51级梯形。

《第五课 for循环(1)--循环次数控制》

 

怎样编程完成步骤3?用“ctrl-Cctrl-V”这种“复制、粘贴”大法?要画100级梯形怎么办?进一步的问题是画N级梯形怎么办?这个问题值得大家发散思维进行研究!

程序设计语言对重复操作提供了一种专门的方法:循环结构

C++语言有3种实现循环结构的语句,其中比较简的叫for语句,本节课就利用for语句来实现上面的重复功能。下面先用画5级梯形的样例程序5.1来学习for语句的使用。

样例程序5.1

图形

int main()

{      

  for(int i=0; i<5; i++)

  {

     pen.fd(30);

      pen.rt(90);

      pen.fd(30);

      pen.lt(90);

  }

  return0;  

}

《第五课 for循环(1)--循环次数控制》

 

新知识:

程序5.1中的有2个新知识点要说明。

(1)   复合语句把几条语句合成为一个功能块。

语句

说明

     pen.fd(30);

      pen.rt(90);

      pen.fd(30);

      pen.lt(90);

步骤24个语句。

  {

     pen.fd(30);

      pen.rt(90);

      pen.fd(30);

      pen.lt(90);

  }

合成为1个复合语句。

 

pen.fd(30);   pen.rt(90);    pen.fd(30);    pen.lt(90);”无论写成1行还是4行只是排版格式不同,都是4个语句。程序要重复的“步骤2”有4个语句,要把这4个语句当成整体,需要用花括号”{}”组合在一起,这个整体就叫复合语句

 

(2)   for循环语句

语句

说明

for(int i=0; i<5; i++)

 步骤2

 

功能:执行5步骤2步骤2可以一个简单语句,也可以是一个复合语句。

(1) for在这里可以看成是“从…”的意思。本句可读成:i04循环。

(2)for后面是用圆括号()括起来的3部分,用2个分号” ; ”隔开。

(3)中间的i<5读作:i小于5,这里5就是控制循环执行步骤2次数的。

 

 

for循环语句格式的进一步的说明参见下一课。

 

 

例题5.2:使用变量N,画下面形状的N齿梳子形。

《第五课 for循环(1)--循环次数控制》

 

分析:

简单化的基本问题是1个齿的形状:《第五课 for循环(1)--循环次数控制》

程序定义一个整型变量N,用变量N作为控制循环次数的值( i < N )。

样例程序5.2

图形

int main()

{      

  int N=6;

  for(int i=0; i <N; i++)

  {

     pen.fd(30);    pen.rt(90);

      pen.fd(30);    pen.rt(90);

      pen.fd(30);    pen.lt(180);

  }

  return0;  

}

《第五课 for循环(1)--循环次数控制》

 

 

新知识

程序5.2的第一句“int N=6;”用到C++语言特有的缩写功能:定义+赋值,这句定义了整型变量N,并且赋N初始值为6,即把“int N;N=6;”两句简便缩写成一句。

C++语言中类似的缩写功能还有很多,比如:“i++”是“i= i+1”的简写。

甚至在GoC软件新版中,“pen.fd(30);   pen.rt(90); pen.fd(30);”三句可以缩写为“pen.fd(30).rt(90).fd(30);”一句。

 

 

【画正多边形】

前面的课程里我们学习了编程画正三角形和四边形(矩形)。这课我们研究一下怎样画正五边形、六边形、七边形等等。

研究问题的方法之一是“从简单到复杂,从已知到未知”。

首先回顾一下正三角形和四边形的画法:

正三角形

正四边形

《第五课 for循环(1)--循环次数控制》

《第五课 for循环(1)--循环次数控制》

程序片段:

   pen.fd(100); pen.rt(120);

   pen.fd(100); pen.rt(120);

   pen.fd(100); pen.rt(120);

程序片段:

   pen.fd(100); pen.rt(90);

   pen.fd(100); pen.rt(90);

   pen.fd(100); pen.rt(90);

   pen.fd(100); pen.rt(90);

 

画法的基本步骤:

(1)   pen前进,画一边长:pen.fd(100);

(2)   pen转弯一个角度a。三角形:pen.rt(120);,四边形:pen.rt(90);

 

三角形重复基本步骤3次,四边形重复基本步骤4次。

显然的是五边形要重复基本步骤5次,六边形要重复基本步骤6…,N边形要重复基本步骤N次。剩下的问题是转弯度数a怎么算?

观察pen的方向,pen开始向上,转动一圈最后又向上,总共转动一周360°。显然,对三角形每次要转动360÷3(=120);对四边形每次要转动360÷4(=90);对五边形每次要转动360÷5(=72)N边形,每次转动360÷N()

 

因此,得到画正N边形的方法(程序设计中称为算法)。

重复N次下面的基本步骤:

1pen前进,画一边长。

2pen转弯一个角度a=360÷N

 

 

例题5.3:画正N边形。

样例程序5.3

图形

int main()

{      

   pen.speed(4);

   pen.show();

  int N=6;

  for(int i=0; i< N; i++)

  {

     pen.fd(100);

     pen.rt(360/N);

  }

  return0;  

}

《第五课 for循环(1)--循环次数控制》

 

 

提示:

l 把程序5.3中的N=6分别换成3,4,5,6,7,8,9,10,11运行试试。

l 程序5.3是有瑕疵的,N=7N=11时,画出的图形不精确,原因是pen.rt(360/N);这句中的“360/N”运算表达式有问题。在C++语言中规定2个整型数相除结果也是整数,称为“整除”。N=11时,360/N的结果是商32,而不是比较精确值32.7273。修正的方法是至少让其中一个数变为“小数”,比如把这句改为:pen.rt(360.0/N);程序就正确了。

 

 

【练习】

(1)观察图形,完善程序。程序5.5中只要修改3个赋值语句,给NfdLenbkLen适当的值,就会画出左边的三种或更多种图形。程序有2个空,请填空完善右边的程序段。

图形

要完善的程序5.5

《第五课 for循环(1)--循环次数控制》

N=5fdLen=100bkLen=100

 

int main()

{      

   pen.show().speed(4);

  int N;         //N是循环次数

  int fdLen;    //fdLen是前进的长度

  int bkLen;   //bkLen是后退的长度

   N=5;

   fdLen=100;

   bkLen=100;

  for(int i=0; i<N; i++)

  {

     pen.fd( fdLen );

     pen.bk(         );

     pen.rt(         );

  }

  return0;  

}

《第五课 for循环(1)--循环次数控制》

N=10fdLen=100bkLen=50

《第五课 for循环(1)--循环次数控制》

N=6fdLen=100bkLen=0

 

(2)研究下面图形,创作自己的作品。

《第五课 for循环(1)--循环次数控制》

《第五课 for循环(1)--循环次数控制》

《第五课 for循环(1)--循环次数控制》

《第五课 for循环(1)--循环次数控制》

 

【学习目标】

(1)      初步理解程序设计的循环结构。

(2)      了解for循环语句、复合语句的简单语法格式。

(3)      学会用for语句实现重复次数控制。

(4)      掌握绘制正多边形、旋转图形的角度计算方法。

 

【拓展学习】

怎样方便地把自己的程序和绘制的图形保存在word文档里,如同上面课程中出现的表格?

l word里插入2列多行的表格。

l 把程序复制粘贴到第1列;

l 截取程序运行的图像,复制粘贴到第2列。

l 截取图像最简单的方法是:运行程序后,点击“工具”菜单再选择“保存图形”项:
《第五课 for循环(1)--循环次数控制》
会出现十字形光标,点击拖拽截取图像
《第五课 for循环(1)--循环次数控制》
选择“复制到剪贴板”,就可以粘贴到word中。

 

    原文作者:ahwhjt
    原文地址: https://blog.csdn.net/ahwhjt/article/details/48816393
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞