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

2023-11-06

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

【循环引入】

 

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

 

分析:

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

步骤

说明

图形

步骤1

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

步骤2

代码为:

pen.fd(30);

      pen.rt(90);

      pen.fd(30);

      pen.lt(90);

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

步骤3

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

 

怎样编程完成步骤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;  

}

 

新知识:

程序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齿梳子形。

 

分析:

简单化的基本问题是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次下面的基本步骤:

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;  

}

 

 

提示:

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

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;  

}

N=10fdLen=100bkLen=50

N=6fdLen=100bkLen=0

 

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

 

【学习目标】

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

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

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

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

 

【拓展学习】

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

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

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

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

l 截取图像最简单的方法是:运行程序后,点击“工具”菜单再选择“保存图形”项:

会出现十字形光标,点击拖拽截取图像

选择“复制到剪贴板”,就可以粘贴到word中。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第五课 for循环(1)--循环次数控制 的相关文章

  • 模式识别(1)协方差矩阵相关和K-means聚类算法实现(含源码)

    模式识别实验一 实验一 协方差矩阵和矩阵特征值 特征向量的计算 题目简介 给定一组数据 实现该组数据的协方差矩阵的计算 并用代码实现计算一个方阵的特征值和特征向量 一 协方差部分 1 协方差的定义 协方差在概率论和统计学中用于衡量两个变量的

随机推荐

  • java-maven的使用

    一 加载maven项目 1 idea工具栏file open 选择项目加载进来 2 右键pom xml 选择add as maven project 3 如果在pom xml上的某个依赖一直报红且依赖本身没有问题 本pom其他的依赖也没有问
  • 面试概率题目

    概率题目 现在的面试中 大部分公司都会问道概率相关的问题 我们现在给出几道常见的概率问题 1 三角形问题 题目 给你一根铅笔 将铅笔折两次 组成三角形的概率是多大 解析 设 铅笔长度是1 折两次之后 得到三条边 对应的长度分别是x y 1
  • css3实现动画的三种方式

    css实现动画主要有3种方式 第一种是 transition实现渐变动画 第二种是 transform转变动画 第三种是 animation实现自定义动画 transition渐变动画 过渡 语法格式 transition 要过渡的属性 花
  • win10 凭据管理

    点击WIN10左下角的开始选项 选择所有程序 找到WINDOWS系统 点开找到控制面板 打开控制面板 找到里面的 凭据管理器 打开凭据管理器 找到 WINDOWS凭据 然后点击 添加WINDOWS凭据 进入凭据添加页面 添加WINDOWS凭
  • 图像分割中的损失函数

    图像分割中的损失函数 文章目录 图像分割中的损失函数 前言 一 交叉熵损失 二 Dice loss 三 Focal loss 四 IOU损失函数 总结 前言 在深度学习中 所有算法都依赖于最小化或最大化一个函数 称之为损失函数 损失函数用于
  • 蓝桥杯基础练习(1)---数列排序

    一 数列排序问题的解决 问题描述 给定一个长度为n的数列 将这个数列按从小到大的顺序排列 1 lt n lt 200 输入格式 第一行为一个整数n 第二行包含n个整数 为待排序的数 每个整数的绝对值小于10000 输出格式 输出一行 按从小
  • 全球13台DNS根服务器分布:

    全球13台DNS根服务器分布 美国VeriSign公司 2台 网络管理组织IANA Internet Assigned Number Authority 1台 欧洲网络管理组织RIPE NCC Resource IP Europeens N
  • 解决curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 问题

    自动化使用要去下载图像识别的工具 Tesseract mac 需要用到brew 但是我的电脑没有 就先需要下载homebrew 然而按照官网的命令 bin bash c curl fsSL https raw githubuserconte
  • 将一个链表分为奇偶两个链表

    1 问题描述 设计一个算法 将一个头结点为A的单链表 其数据域为整数 分解成两个单链表A和B 使得A链表只含有原来链表data域为奇数的节点 而B链表只含有原链表中data域为偶数的节点 而且保持原来的顺序 2 思路分析 这个问题不是在线网
  • python pandas.set_option()详解

    一 简介 set option是pandas里的一个函数 用法为pandas set option pat value 主要作用是设置一些指定参数的值 供设置的选项如下 后面会逐一进行介绍 compute use bottleneck us
  • python研究生导师_研究生导师布置的作业!利用Python和API收集与分析网络数据!...

    猜猜看 下面这一组调查对象是什么 为什么会这样呢 因为我在布置作业的时候 很贴心地给了一个样例 是我之前写的一篇教程 如何用R和API免费获取Web数据 于是 多组作业 都雷同 讲到这里 他们一副不好意思的表情 我却发觉 这里蕴藏着一个问题
  • 上传文件,提交数据---FormData对象格式

    上传文件 提交数据 FormData对象格式 在进行上传文件 例如Excel 时 处理的几步 否则无法上传 一 修改请求头 在修改请求头 是至关重要的 因为请求数据格式是不同的 header multipart form data 注 在写
  • 4- OpenCV+TensorFlow 入门人工智能图像处理-灰度化处理

    图片特效及线段文字的绘制 特效1 灰度处理 mark 完成彩色图片灰度化 彩色图片有三个颜色通道RGB 灰度图片也是三通道的话 RGB值相等 单通道的灰度图片的值 需要经过RGB值进行计算 图中两个公式 一个是取均值 一个是根据公式 特效2
  • OD-求字符串中所有整数的最小和(Python)

    题目描述 说明 字符串s 只包含 a z A Z 合法的整数包括 1 正整数 一个或者多个0 9组成 如 0 2 3 002 102 2 负整数 负号 开头 数字部分由一个或者多个0 9组成 如 0 012 23 00023 输入描述 包含
  • 华为云DevCloud平台部署bootdo博客论坛实战【开发者专属集市】

    华为云DevCloud平台部署bootdo博客论坛实战 开发者专属集市 一 bootdo blog开源博客介绍 二 本次实践所用工具及平台 三 购买华为RDS数据库 1 购买RDS数据库 2 查看RDS数据库状态 四 创建项目 1 登录华为
  • sqli-labs通关记录

    sqli lab通关记录 docker搭建 运行 docker info 查看docker信息 确认docker正常 搜索sqli labs docker search sqli labs 建立镜像 docker pull acgpiano
  • sharding-jdbc 分库分表配置方案

    Java配置 Yaml配置 Spring Boot配置 Spring命名空间配置 http shardingsphere io document current cn manual sharding jdbc configuration c
  • 【送书活动】AI时代,程序员需要焦虑吗?

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • C++的std::is_same与std::decay

    一 背景 有一个模板函数 函数在处理int型和double型时需要进行特殊的处理 那么怎么在编译期知道传入的参数的数据类型是int型还是double型呢 include
  • 第五课 for循环(1)--循环次数控制

    第五课 for循环 1 循环次数控制 循环引入 例题5 1 画下面形状的5级梯形 分析 研究问题的方法之一是 从简单到复杂 步骤 说明 图形 步骤1 先分析简单的1级梯形基本问题 步骤2 代码为 pen fd 30 pen rt 90 pe