第五课 for循环(1)--循环次数控制
来源:互联网 发布:全站仪数据是什么格式 编辑:程序博客网 时间:2024/06/06 07:16
第五课 for循环(1)---循环次数控制
【循环引入】
例题5.1:画下面形状的5级梯形。
分析:
研究问题的方法之一是“从简单到复杂”。
步骤
说明
图形
步骤1
先分析简单的1级梯形基本问题。
步骤2
代码为:
pen.fd(30);
pen.rt(90);
pen.fd(30);
pen.lt(90);
注意开始和结束的pen方向。
步骤3
重复用前面的代码5次,画出5个1级梯形。
怎样编程完成步骤3?用“ctrl-C、ctrl-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;
}
新知识:
程序5.1中的有2个新知识点要说明。
(1) 复合语句---把几条语句合成为一个功能块。
语句
说明
pen.fd(30);
pen.rt(90);
pen.fd(30);
pen.lt(90);
步骤2有4个语句。
{
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在这里可以看成是“从…到…”的意思。本句可读成:i从0到4循环。
(2)for后面是用圆括号”()”括起来的3部分,用2个分号” ; ”隔开。
(3)中间的”i<5”读作:i小于5,这里5就是控制循环执行步骤2次数的。
for循环语句格式的进一步的说明参见下一课。
例题5.2:使用变量N,画下面形状的N齿梳子形。
分析:
简单化的基本问题是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;
}
新知识:
程序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);”一句。
【画正多边形】
前面的课程里我们学习了编程画正三角形和四边形(矩形)。这课我们研究一下怎样画正五边形、六边形、七边形…等等。
研究问题的方法之一是“从简单到复杂,从已知到未知”。
首先回顾一下正三角形和四边形的画法:
正三角形
正四边形
程序片段:
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次下面的基本步骤:
(1)pen前进,画一边长。
(2)pen转弯一个角度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;
}
提示:
l 把程序5.3中的N=6分别换成3,4,5,6,7,8,9,10,11运行试试。
l 程序5.3是有瑕疵的,N=7或N=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个赋值语句,给N、fdLen、bkLen适当的值,就会画出左边的三种或更多种图形。程序有2个空,请填空完善右边的程序段。
图形
要完善的程序5.5
N=5,fdLen=100,bkLen=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;
}
N=10,fdLen=100,bkLen=50时
N=6,fdLen=100,bkLen=0时
(2)研究下面图形,创作自己的作品。
【学习目标】
(1) 初步理解程序设计的循环结构。
(2) 了解for循环语句、复合语句的简单语法格式。
(3) 学会用for语句实现重复次数控制。
(4) 掌握绘制正多边形、旋转图形的角度计算方法。
【拓展学习】
怎样方便地把自己的程序和绘制的图形保存在word文档里,如同上面课程中出现的表格?
l 在word里插入2列多行的表格。
l 把程序复制粘贴到第1列;
l 截取程序运行的图像,复制粘贴到第2列。
l 截取图像最简单的方法是:运行程序后,点击“工具”菜单再选择“保存图形”项:
会出现十字形光标,点击拖拽截取图像
选择“复制到剪贴板”,就可以粘贴到word中。
- 第五课 for循环(1)--循环次数控制
- for循环次数
- for循环达到指定循环次数
- smarty foreach 控制循环次数
- <c:foreach>控制循环次数
- For循环次数计算公式
- Matlab修改for循环次数
- for循环次数的验证
- for循环控制语句
- Linux-循环控制/for
- for循环控制
- 第十二课:循环控制语句之for
- smarty 中foreach 循环次数控制输出
- 循环次数
- for循环次数,元素下标,数组对应
- vue规定v-for循环的次数
- 关于for循环和while循环中的次数问题
- PHP学习系列$第五章:FOR循环
- NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)
- 逻辑回归梯度下降公式详细推导
- Linux桥接网络配置
- 移动应用开发必备工具盘点
- Less定义
- 第五课 for循环(1)--循环次数控制
- 几种常见的library cache lock产生的原因
- 学习笔记 - FileInputStream读字节文件并打印出来
- Java集合分析思想(二)HashMap、HashTable、ConcurrentHashMap
- Express学习之指南<1>
- 带你玩转Visual Studio——带你了解VC++各种类型的工程
- java篇 【3】java程序基本构成、注释规则、标识符命名规则、关键字、变量
- 怎样在github上协同开发
- django之todolist(一)