走进 GOC 的编程世界
📖 第1课: 网上科技展
—-欣赏GoC编程作品
o,oo 命令学习
这趟旅程,椰小程将带你从“网上科技展”开始,饱览无人驾驶汽车、氚气灯管、交通安全警示系统、无叶风扇、无人机、智能机器人、全息投影、自动感应、高铁列车、环形空间站等各式各样的高科技产品,从中学会前进、转弯、变色、显示图片、输入数据、判断、重复等编程技能,用GoC 中神奇的画笔创作出心仪的科技产品,体验一番“画笔生辉,科技强国”的学习乐趣。
WEB GOC 介绍
- 单击主菜单中的“命令”按钮便能打开GoC的命令板,在编程区中将光标移到要插入命令的位置,再单击命令板上的命令就可插入该命令,最后填补命令所需要的参数即可。
- 单击“文件”菜单里的“帮助”项,便能打开帮助页面了解命令的详细说明。
GoC命令书写说明:
- (a)直接指挥笔动作的命令通常以“pen.”(可简写为“p.”)开头。
- (b)除特殊情形外,命令名称中的字母一般用小写。
- (c)每行命令的末尾要加分号“;”,表示该行命令的结束。
- (d)每行命令输入后,要按回车键发送。
🔆指令学习
空心圆命令:p.o(半径,颜色)
实心圆命令:p.oo(半径,颜色)
参数说明:r(圆的半径),c(圆的颜色)
半径是指圆的中心到圆周的直线段长度,通常用字母r表示(radius英 [ˈreɪdiəs] 半径长度)。
从圆的中心到圆周上任意一点的距离都是相等的。
课堂练习
绘制同心圆
椰小程要画红绿黄3个不同半径的同心圆,要求红色(1号)的是最大半径圆,绿色(3号)的是第2大半径的圆,黄色(5号)的是最小半径的圆。但输入是的的3个数可能并没有从大到小。
比如输入的3个半径分别是50,30,40:
这3个圆一定要按照正确的次序才能画出正确的图形。比如你最后画最大的圆形,就只能看见一个红色的大圆。 请你帮小C编程解决这个问题。
int main()
{
pen.oo(50,1);
pen.oo(40,3);
pen.oo(30,13);
return 0;
}
画圆环
题目描述
输入2个不同的正整数a和b,其中较大的数作为外半径,较小的作为内半径,画一个红色(1号色)的圆环。
输入格式
一行2个不同的正整数a,b:范围在[10..100]。
输入样例 70 40 ,同学们可以试试其它数值
总结
一、GoC是什么?
GoC是Go to C++!
GoC采用编程画图形的方法,快速入门C++!
WebGoC是学习 GoC的工具,它通过编程区绘图,绘图区显示图形的方法,形象直观的让学生了解C语言的三大基本结构:顺序
、循环
和选择
。
二、画圆命令o/oo
📖 第2课:无人驾驶汽车
—-前进、后退与转弯
fd、bk、rt、lt命令学习
分析行驶路线
椰小程和小伙伴的家及科技馆的位置如图路线所示,要接齐所有人,可以按下步骤行驶:
- (1)第一步(从起点到椰小程家):前进100。
- (2)第二步(从椰小程家到同学A家):右转90度,
________
. - (3)第三步(从同学A家到同学B家):
________
,前进200。 - (4)第四步(从同学B家到科技馆):后退50。
用“命令”指挥无人驾驶汽车
只要我们输入正确的命令,就能指挥无人驾驶汽车。
进入教学网站第2课的“开汽车—指挥汽车”页面,单击“演示”按钮行程序,输入正确的命令指挥无人驾驶汽车。
🔆指令学习
前进命令:p.fd(长度);
作用:让画笔按指定长度前进。
示例:“p.fd(100);”是前进100。
【视频:fd() 指令 :forword 前进】
后退命令:p.bk(长度);
作用:让画笔按指定长度后退。
示例:“p.bk(50);”是后退50。
【视频:bk() 指令 :back 后退】
右转命令:p.rt(角度);
作用:让画笔按指定的角度右转改变方向。
示例:“p.rt(90);”是右转90度。
【视频: rt() 指令 :right 右转】
左转命令:p.lt(角度);
作用:让画笔按指定的角度左转改变方向。
示例:“p.lt(90);”是左转90度。
【视频:lt() 指令 :left 左转】
汽车在“行驶”中会画出直线,全靠GoC中有一支神奇的画笔✏️
.在GoC中按命令要求画出各种各样的图案来。
int main(){
p.fd(100);
p.rt(90);
p.fd(400);
p.lt(90);
p.fd(200);
p.bk(50);
}
课堂练习
爱心
爱心 尽寸自自定
int main()
{
p.rr(100,100);
p.fd(50).oo(50);
p.bk(50).rt(90);
p.fd(50).oo(50);
return 0;
}
尺(che)
题目描述
请画出下面形状的尺。
说明:横的每段长度是10; 高度有2种:高的是10,矮的是5。
// 自行编写实现
轮廓(扩展练习)
题目描述
学校准备在颁奖会把这次比赛的前10名的成绩用图形表示出来。小C记得去年是用一个直方图的形式表示的,就是以输入的次序把每个成绩的分数作为高,画一个宽度为20的矩形。 假如输入的10个成绩是:100 90 70 60 80 95 120 105 95 71 ,绘制的图形如下。
这个图形是做在一个展板上的,经过一年的风吹雨淋,展板上的线条都褪色了,只能看出展板的轮廓。请你使用GoC编程,画出展板的轮廓。具体形状参见输入输出样例。
输入格式 一行10个空格分隔开的正整数:分别表示10名同学的比赛成绩。
输出格式 相应的展板轮廓。
输入/输出例子1
输入:
100 90 70 60 80 95 120 105 95 71
输出:
输入/输出例子2
输入:
50 30 20 90 80 100 60 70 110 120
输出:
// 自行编写实现
总结
GoC的四个基本命令前进fd、后退bk、右转rt、左转lt 。
📖 第3课:氚气灯管
—-设置颜色和粗细
c、size为笔选颜色和粗细命令学习
进入科技馆,椰小程随即被一排色彩斑斓的氚(chuān)气灯管深深吸引了。氚气灯管不需要通电和补充能量就能自动发光二十年以上,在深水、矿井等各种恶劣的环境下都能正常发光。
怎样用GoC中的画笔画出图3-1中黄色的“氚气灯管”呢?
经过认真观察和思考,椰小程发现如果能设置画笔的颜色和粗细,再使用p.fd()
命令就能画出以上的“氚气灯管”了。
一、设置氚气灯管的颜色
五颜六色的氚气灯管让椰小程流连忘返,如何设置这些漂亮的颜色呢?
int main(){
p.fd(360);
}
本程序画出了一根蓝色的灯管,如果要画黄色的氚气灯管,怎么改变画笔的颜色呢?
int main(){
// 设置画笔颜色为 5 号黄色
p.c(5);
p.fd(360);
}
为了方便指挥画笔,可以将多个命令按一定的顺序和格式编写成一个程序,在需要的时候运行它。
一个完整的GoC程序一般包括以下几部分:
- 注释部分:以“//”开头,是为方便人们阅读程序而添加的说明,不是程序必需的内容,计算机也不会执行。
- 主函数“int main()”:每个程序必须有一个主函数。
- 主函数体:跟在主函数名后,用一对大括号
{ }
括起来,里面按一定的顺序和格式编写各种命令。在程序中书写的每一行命令,也可称为语句。 - 返回语句“return 0;”:是主函数体的最后一个语句,表示主函数到此结束。
🔆指令学习
设置颜色命令:p.c(颜色编号)
作用:按指定的颜色编号设置画笔颜色。
示例:“p.c(1);”将画笔的颜色设置为红色(1号)。
GoC中16种颜色对应的编号如下:
【视频:c() 指令 :color 前进】
连发命令:p.命令1.命令2.·命令n
作用:把多个画笔命令连接起来书写,按从左到右的顺序执行各个命令。在书写连发命令时,只需要一个p.
开头,随后的命令均省略p.
。
示例:p.c(5).bk(46):
先设置5号色,然后后退 46步以该颜色画线。
设置氚气灯管的粗细
椰小程很快就画出了一根彩色氚气灯管,但是这根灯管太细了,用什么命可以让它变粗呢?
int main(){
p.size(30);
p.c(5);
p.fd(360);
p.hide();
return 0;
}
课堂练习
彩色旗帜
题目描述
请编写程序,根据图形中红色数字指定的长度,画出下面图形。
🔆指令学习
设置画笔粗细命令:p.size(数值);
作用:按指定的数值设置画笔的粗细,数值越大,画出的线条就越粗。
示例:“p.size(10).fd(100):”能画出粗为10 长度为100的线条。
【视频:size() 指令: size 粗细】
隐藏画笔命令:p.hide();
作用:让画笔隐身,以免遮挡所画的图形。“hide()”的括号里不用写参数。
示例:“p.c(6).size(5).fd(72).hide();”先画出一条6号色、粗为5、长为72的线,然后隐藏画笔。
尝试把“p.size(30);”命令中“30”为不同的数并运行程序,观察图形的变化。
把命令”p.hide()”放在”p.fd(360)”之前,再执行程序,观察执行效果有什么不同
课堂练习
小丑的帽子
题目描述
通过控制笔的粗细、交替的颜色变化,我们还可以绘制一顶小丑的帽子。
//通过控制笔的粗细、交替的颜色变化,我们还可以绘制一顶小丑的帽子。
int main(){
p.text("小丑的帽子",0,30,0,0,300);//显示标题,小丑的帽子
p.speed(1.5);//设置速度1.5较慢
p.c(1).size(300).fd(23);
p.c(12).size(270).fd(23);
p.c(11).size(240).fd(23);
p.c(13).size(210).fd(23);
p.c(12).size(180).fd(23);
p.c(14).size(150).fd(23);
p.c(4).size(120).fd(23);
p.c(2).size(90).fd(28);
p.c(12).size(80).fd(3);
p.hide();//隐藏笔头
return 0;
}
总结
本节了解了编程的工具:WebGoC,学习了设置颜色命令c,设置画笔粗细命令size,矩形与实心矩形r,rr。
一、设置笔色命令pen.c(color)
颜色代码:0-15
画笔默认颜色是蓝色(颜色代码:2)
可使用pen.c(颜色代码)的方式设置想要的颜色。
设置颜色后,笔将以所设置的颜色绘图,直到下一次笔色命令改变颜色。
二、设置画笔宽度:pen.size(width)
执行设置画笔宽度命令之后,画笔将以此宽度画图。
笔宽和线条示例:
三、命令中涉及的英文单词:
c—color 英[ˈkʌlə(r)] 中文释义:颜色;彩色。
size英[saɪz] 中文释义:大小;尺码。
- r--rectangle 英[ˈrektæŋɡl] 中文释义:长方形;矩形。
- w--width英[wɪdθ] 中文释义:宽度;广度。
- h--height英[haɪt] 中文释义:高;高度;身高。
课堂练习
金箍棒
📖 第4课 交通安全警示系统
—-画矩形与抬笔、落笔
r、rr、up、down命令学习
在智能交通展厅中,椰小程看见一套新型示系统”,它由“语音提示桩”和“人脸识别显示屏”等多个部分组成,有LED提示、语音提醒、拍照、人脸识别等功能.能及时警示行人,避免交通违规。
画语音提示桩
// 程序 4-1
int main()
{
p.rr(100,20,13);
p.fd(160);
p.rr(80,300,13);
p.rr(60,180,0);
return 0;
}
🔆指令学习
实心矩形命令:p.rr(宽,高,颜色)
作用:以笔的位置为中心,按给定的宽、高和颜色画一个实心矩形。若不写颜色参数,则以画笔当前颜色画矩形。
示例:“p.rr(100,200.1):”将画一个宽100、高200的红色实心矩形。
空心矩形命令:p.r(宽,高,颜色);
作用:以笔的位置为中心,按给定的宽、高和颜色画一个空心矩形。 示例:“p.r(80,50,3);”将画一个宽80、高50的绿色空心矩形。
画“安全警示线”
“红灯停、绿灯行”、人们在等待交通指示灯切换的时候,应该站在安全区域内等待。请参考图4-1编程效果图画出“安全警示线”。
// 程序4-2
int main()
{
p.c(13).size(8);
p.fd(100);
p.up().fd(50).down();
p.fd(100);
return 0;
}
🔆指令学习
抬笔命令:p.up();
作用:抬笔使画笔移动时不画出直线。本命令不需要参数。抬笔只影响fd、bk命令,对画矩形、圆、椭圆等命令没有影响。
示例:“p.rt(90).fd(20).up().fd(80);”将画出一 ✏️
落笔命令:p.down();
作用:落下画笔以便移动时画出直线。本命令不需要参数。在GoC中,画笔初始状态是落笔状态。
示例:“p.rt(90).fd(20).up().fd(10).down().fd(80);”将画出— — — ✏️
课堂练习
场记板
题目描述 椰小程同学和家人去影视城游玩,刚好看到一个剧组在拍电影,其中有一位工作人员在负责打板,同时大喊:”Action”,小C觉得很有趣,才知道原来那块板叫场记板,请你帮忙使用GoC编程绘制出来。
(注意:两块板之间的夹角为45度)
乐谱
题目描述
输入n个音符数值,画n个音符。每个音符用宽度是10,颜色由输入的数值确定,高度是颜色号的30倍。
例如输入:3 2 1 2 画出下面图形
说明:4个矩形宽度10,颜色分别是3、2、1、2,高度分别是90、60、30、60。
相邻矩形的中心在一条直线上,距离15。
总结
一、矩形命令:pen.r(w,h,c)/实心矩形命令:pen.rr(w,h,c)
接收画矩形命令之后,将以画笔位置为中心,画矩形。
参数: width 宽度; height 高度; color 颜色
示例:pen.r(200,300,7);(画宽度200,高度300,颜色代码为7的矩形)
示例:pen.rr(300,100,10);(画宽度300,高度100,颜色代码为10的实心矩形)
提示:画矩形命令也可以写作: pen.r(w,h) 或 pen.rr(w,h)
当矩形命令的颜色参数缺少时,以当前笔色画矩形。
二、抬笔命令up()
说明:up()是无参数命令,括号中没有参数;执行抬笔命令up(),画笔将抬起,移动时不会画出直线。
使用up()命令,来移动画笔到合适的位置画图。
三、落笔命令down()
说明:down()是无参数命令,括号中没有参数;画笔在抬笔状态下,执行落笔命令down(),画笔将再次放下,移动时重新可以画出直线。
down()命令,用来解除画笔抬笔状态,重新可以画出直线。
注意:
1、Up()与down()命令配合,可以移动画笔到合适的位置画图。
2、画笔在抬笔状态下,不可以画直线,但不影响其他图形mlr/rr/o/oo等命令的执行。
📖 第5课 无叶风扇
——画实心与空心椭圆
e、ee命令学习
正在用心体验科技产品的椰小程,忽然感受到一阵阵清凉之风。原来是科技馆安装了很多无叶风扇,这些风扇能360度旋转吹风,而且能智能感应室温调节风力。
画出出风框
// 程序 5-2
int main()
{
p.size(30);
p.e(80,160,10);
p.up().bk(220);
p.rr(100,150,10);
p.ee(10,10,1);
return 0;
}
🔆指令学习
实心椭圆命令:p.ee(横半径,纵半径,颜色):
作用:以笔的位置为中心,按指定的横半径、纵半径和颜色绘制一个实心椭圆。
示例:“p.ee(80,50,1);”将画出一个横半径80、纵半径50的红色实心椭圆。
空心椭圆命令:p.e(横半径,纵半径,颜色);
作用:以笔的位置为中心,按指定的横半径、纵半径和颜色绘制一个空心椭圆。
示例:“p.e(120,70.1);”将画出一个横半径120、纵半径70的红色空心椭圆。
程序中 p.ee(10,10,1); 将横半径、纵半径 设置为相同的数值来绘制圆形,我们也可以直接使用 o / oo 来实现。
总结
📖 第6课 无人机
—-计算旋转角
角度大小学习
在航空展厅中,椰小程看到多种“萌萌哒”无人机,有的像“章鱼”,有的像“小蜜蜂”,还有的像微缩型的直升机。无人机不仅能高空摄影,还能用于农业植保、物流配送、电力巡检、环境监测和抢险救援等方面。
旋转角度分析
// 程序 6-3
int main(){
p.hide();
p.rt(45);
p.fd(100).e(30,30,1).ee(20,3).bk(100);
p.rt(90);
p.fd(100).e(30,30,1).ee(20,3).bk(100);
p.rt(90);
p.fd(100).e(30,30,1).ee(20,3).bk(100);
p.rt(90);
p.fd(100).e(30,30,1).ee(20,3).bk(100);
p.rt(90);
p.rr(30,50).ee(10,40,1);
return 0;
}
🔆指令学习
代码复制方法:
使用快捷键Ctrl+C(复制)和Ctrl+V(粘贴),实现对相同代码的复制。
示例:在编辑程序6-3时 可以输入以下两行语句p.fd(100).e(30,30,1).ee(20,3).bk(100);
p.rt(90);
然后再复制1次并先后粘贴3次,完成画4根机轴的代码。
实心椭圆命令的特殊形式:p.ee(横半径,纵半径);
作用:以画笔的当前颜色画椭圆。空心椭圆命令也有类似的特殊形式。
示例:“ee(20,3)”表示以画笔的当前颜色画横半径20、纵半径3的椭圆。
课堂练习
炊烟
题目描述
编程,画出下面图形,椭圆中心距离50,长半径分别是20、40、60、80、100,短半径是长半径一半。颜色号分别是1、2、3、4、5。
菱形
题目描述
菱形是四条边相等的四边形,但角度不确定。请编程画出如下图的边长为100,内角分别是45度和135度的菱形。
说明: 上图中红色数字是标明尺寸的,不需要画出。
总结
一、角度
角:具有公共端点的两条射线组成的图形。这个公共端点叫做角的顶点(B),这两条射线(AB/BC)叫做角的两条边。
锐角:指大于0°而小于90°(直角)的角。
直角:等于90°的角。
《几何原本》中的定义:当一条直线和另一条横的直线交成的邻角彼此相等时,这些角的每一个被叫做直角,而且称这一条直线垂直于另一条直线。
钝角:大于直角(90°)小于平角(180°)的角。
平角:等于180°的角。
平角是一条射线绕它的端点旋转,当始边和终边在同一条直线上,方向相反时,所构成的角。
周角:是指一条射线绕着它的端点旋转一周所形成的角(360°)。
二、圆周360°与量角器:
古代巴比伦人定义一周角分为360等份,每份定义为1度(1°)
量角器又称“半圆仪”。将半圆形硬塑料板分成180度,用来测量角度或画出所需的角。
量角器有内圈和外圈两层刻度,根据实际情况选择合适的刻度。
量角器使用方法:1:定点;2:对边;3:读值。
📖 第七课 智能机器人
—-调入与显示图片
picL、pic、picU命令学习
来到机器人展厅,椰小程发现里面各式各样的机器人伙伴可聪明啦,迎宾机器人在门口热情迎客,送餐机器人正在向客人赠送饮料,快递机器人正在模仿快递传送,还有机器人在热烈跳舞呢,令人惊叹不已!
进入机器人展厅
//程序7-1
int main()
{
p.picL(1,"venue.png"); //调入机器人展厅图片“venue.png”并编为1号
p.pic(1); //显示1号图片(机器人展厅)
return 0;
}
🔆指令学习
调入图片命令:o.picL(图片编号,图片文件名);
作用:调入图片文件名对应的图片并编号。图片文牛名要用双引号括住。
示例:“p.picL(6,”park.png”);”调入图片“park.png”编为6号。
显示图片命令:p.pic(图片编号);
作用:显示指定编号的图片。
示例:“p.pic(3);”显示3号图片。
使用选择面板,载入图片:
让快递机器人转弯
//程序7-4
int main()
{
p.picL(1,"road.png");
p.picL(2,"robot3.png");//调入快递机器人图片“robot3.png”并编为2号
p.pic(1).up();
p.picU(1); //设定图片按向上显示
//======在A,B,C三个位置显示机器人===
p.lt(90).fd(150).rt(90); //把画笔移到A点
p.pic(2); //显示2号图片(机器人)
p.fd(250).rt(90).fd(150);//把画笔移到B点
p.pic(2);
p.fd(200).rt(90).fd(250);//把画笔移到C点
p.pic(2);
return 0;
}
🔆指令学习
设置图片方向属性命令:p.picU(1或0);
作用:设定p.pic()
执行时是否按画笔的方向显示图片。当参数为1时或没使用p.picU()
命令时,图片按原来的方向显示:当参数为0
时,图片按当前画笔的方向旋转后显示。
示例1:“p.picL(1.”arrow.png”).rt(45).picU(0).pic(1);”图片按笔方向右转45度后显示。
示例2:“p.picL(1,”arrow.png”).rt(45).picU(1).pic(1);”不受画笔方向影响,图片按原来的方向显示。
总结
一、 命令学习:picU(0)/picU(1)随笔旋转命令
功能:
执行pen.picU(1),设置图片(图形)的方向始终向上;
执行pen.picU(0),设置的图片(图形)方向不是一直向上,而是按笔的方向显示。
(U是up的意思)
说明:默认图片方向是始终朝上的。
二、旋转图形
以画笔位置为旋转点,旋转显示图形。
技能:旋转的三要素(旋转中心点、方向、角度)。
方法:空间观念和想象力。
图示1:
三、中心发散图形
中心发散图形循环体:从中心出发,返回到中心
技能:picU,for循环。
方法:空间观念和想象力。
图示2:
四、线型循环图形
技能:线性循环体分析(循环起始角度和结束角度一致)。
方法:空间观念和想象力。
图示3:
五、中心旋转与线型循环结合
技能:循环路线形成闭合图形(中心点与循环路线的结构)。
方法:空间观念和想象力。
图示4:
图示5:
📖 第 8 课 全息投影
—-输入与存放数据
变量和键盘输入语句
椰小程正沿着线路参观,忽然一头恐龙呼啸着扑面而来,仿佛已置身于神秘的恐龙世界,原来他进入了配备全息投影的动就可在观众感影厅。
全息投影技术是一种不需要配戴3D眼镜,面前显示立体虚拟场景的技术。
//程序8-1
int main()
{
p.hide();
p.picL(1,"sl.jpg").pic(1); //调入并显示背景图片
p.picL(2,"kl.png"); //调入恐龙图片
p.pic(2); // p.pic(2, 宽度,高度)
return 0;
}
改数据让恐龙变身
恐龙太大,走出屏幕边界了,如何修改程序将其缩小呢?
🔆指令学习
显示图片命令:p.pic(图片编号,宽,高);
作用:以画笔的位置为中心,按指定的宽和高显示编号对应的图片。如果只按原来的大小显示图片,可以不写宽和高两个参数,这就是该命令的特殊形式p.pic(图片编号);”。
示例:“p.pic(2,200,500);”按照宽200、高 500 显示 2号图片。
输入数据让恐龙变身
//程序8-3
int main()
{
p.hide();
p.picL(1,"sl.jpg").pic(1);
p.picL(2,"kl.png"); //调入恐龙图片
int w; //定义变量w
cin>>w; //输入图片的宽度并存入变量w
p.pic(2,w,500); //按照宽w、高500显示恐龙图片
return 0;
}
🔆指令学习
定义整数变量:int变量名;
作用:定义一个整数变量,用来存放一个整数。每个变量都要有一个变量名,变量名只能由字母、数字和下划线组成,且必须以字母开头。
示例:“inttz8:”定义了一个可存放整数的变量tz8。
输入语句:cin>>变量名:
作用:接受从输入窗口输入的数据 并存放到指定的变量中。
示例:“cin>>se:”接受输入的数据,并存放到变量Sg。
输入图片的宽度和高度
🔆指令学习
定义多个整数变量:int变量名;,变量名2,…,变量名n;
作用:同时定义多个整数变量。变量名之间用逗号隔开。
示例:“intw.h:”定义两个整数变量w和h,变量名之间 作用等同于:
int w;
int h;
输入多个变量的值:cin>>变量名>>变量名>>…>>变量名n;
作用:输入多个变量的值。每个变量名前都要加“>>”号。
示例:“cin>>w>>h;”从键盘输入两整数,分别存放在变量w和h中。在输入数据时,第1个值与第2个值之用空格隔开。
📖 第 9 课 自动感应—-用if语句判断
if大小判断命令学习
经过自动门进入游客休息室,各种家居科技产品立刻映入椰小程的眼帘,令人大开眼界,有感温水杯、自动窗帘……这些产品的共同特点,都是使用了一类叫传感器的部件接收外界信息,以实现产品的“自动”功能。
自动感应门
//程序9-1
int main()
{
p.picL(1,"open.png"); //调入开门图片
p.picL(2,"close.png"); //调入关门图片
p.pic(2); //显示关门图片
int n; //定义变量n,用于存放距离
cin>>n;
if(n<300) p.pic(1); //如果距离n小于300就显示开门图片
return 0;
}
🔆指令学习
判断语句:if(条件表达式)语句;
作用:当条件表达式的值为True(即“真”)时执行后面的语句,否则不执行后面的语句。当if后面需要执行多个画图命令时,可以写成连发命令,也可以用一对大括号“”将多个单独写的命令括起来。
示例:“if(il<150)p.pic(1):”表示如果jl小于150就显示1号图片。
关系表达式
作用:由关系运算符连接起来的运算式子叫关系表达式,其结果为True(“真”)
或False(“假”)
。关系运算包括“>”(大于)
、“<”(小于)
、“>=”(大于或等于)
、“<=”(小于或等于)
、“==”(等于)
、“!=”(不等于)
共6种。
示例:t=200时,“t<280”的运算结果为True;x=80时,“x+10>100”的运算结果为False。
智能感温水杯
在科技馆的休息室中,椰小程发现一些奇妙的智能感温水杯:只要水温不超过55摄氏度,杯子盖上的标志就是绿色,超过55摄氏度就是红色的。
智慧宝箱
椰小程在展馆发现了一个宝箱,现场工作人员告诉他,这个智慧宝箱的密码是当前的月份数。请你跟他齐心合力完善程序9-3,以便能输入正确的密码打开宝箱。
第10 课 高铁列车—-用for语句实现重复
for语句初步学习
来到科技馆的现代交通展区,椰小程看到里面陈列着各式各样的交通工具,特别是其中长长的高铁列车模型尤其引人注目。高铁列车的奔跑时速可达300公里以上,相比传统火车更快、更安全、更舒适。
显示多节车厢
//程序10-4
int main()
{
p.up().rt(90).bk(300);
p.picL(1,"ct.png").picL(2,"cx.png");
p.pic(1);
for(int i=0;i<6;i++) //重复6次
p.fd(100).pic(2); //显示1节车厢
return 0;
}
🔆指令学习
重复语句:
for(int 循环变量=0:循环变量<次数:循环变量++)
循环体;
作用:按指定的次数重复执行循环体中的语句。示例:
p.rt(90);
for(int i=0;i<5;i++)
p.e(30,30).fd(60);
运行结果是:
总结
- 一、for语句格式:
说明:for语句可以实现重复动作的多次执行:
- 二、循环体:
有一类图形,它是由一组相同的动作组合,重复执行多次完成的。
这组相同的动作组合,在for循环里称为循环体。
循环体的划分,需要细致的观察。
- 三、for语句的快捷输入:
直接点击命令面板中的命令,相应的命令代码将快捷显示在光标停留处。
📖 第 11 课 环形空间站—-画正多边形
正多边形的角度学习
在科技馆的航天展区,椰小程发现了一种造型独特的环形空间站模型,欲一探奥秘。环形空间站是一种在近地轨道长时间运行、可供多名航天员巡访、长期工作和生活的载人航天器。
空间站的形状 为准确分析,椰小程找来科技馆的专业人士对环形空间站的模型进行扫描绘图,发现它的内圈是一个正十二边形。
- 正多边形的所有边、所有角都相等。
- 边数为n的正多边形,就叫作正n边形。
画正方形
我们知道了空间站内圈是一个正十二边形,怎么把它画出来呢?我们先从常见的正方形开始吧。
//创意园
int main()
{
p.c(1);
for(int i=0; i<4; i++){
p.fd(100).rt(90);
}
return 0;
}
画正三角形
int main()
{
p.c(1);
for(int i=0; i<3; i++){
p.fd(100).rt(120);
}
return 0;
}
画正多边形
int main()
{
int n;
cin >> n ;
for(int i=0; i<n ; i++ ){
p.fd(100).rt(360.0 / n);
}
return 0;
}
🔆指令学习
算术表达式
用加、减、乘、除等运算符将数或变量连接起来进行计算的式子,叫算术表达式。表达式中的乘号要用“*”表示,除号要用“/”表示。
示例:35+7
,20*13
,2.6*k
,x/5
等都是算术表达式。
画正n边形时画笔转角的计算:
用“360.0/n”计算转角,以便能保留小数。如果写成“360/n”,则只取结果的整数商(如360/7的值为51)。
总结
一、正多边形
正多边形是指二维平面内各边相等,各角也相等的多边形,也叫正多角形。
画笔完成一个正多边形的绘制,一共旋转360°
根据正多边形的性质,我们可以计算出正多边形的外角:
正 N 边形的转角: 360.0 / N
程序示例:
for(int i = 0; i < n; i++)
pen.fd(100).rt(360.0/n);
说明:表达式360.0/n是精确算法,表达式360/n是整除运算。
例:C语言的表达式中:360/7的结果为51;360.0/7的结果为51.42。
注意:画笔既可以顺时针方向旋转,完成正多边形的绘制;也可以逆时针方向旋转,完成绘制。
📖 第 12 课 抽取纪念品—-巧用随机函数
随机函数初步学习
椰小程参观完科技馆,编程画出了很多漂亮的科技产品。为鼓励椰小程爱科学、学科学,馆长给了椰小程一个抽奖机会,让他在各种科技产品的模型中,抽取其中一个作为纪念品。
神奇的抽号机
如何随机抽取一种纪念品呢?我们可以设计一个抽号机来帮助椰小程。运行抽号程序,屏幕显示的数字就是抽中的纪念品编号。
//程序12-1
int main()
{
p.picL(1,"num.png");
p.pic(1);
int m;
m=rand(1,8); //随机产生1~8中的一个整数,存入变量m中。
p.text(m,1,100); //屏幕显示m的值
return 0;
}
🔆指令学习
随机函数:rand(整数1,整数2);
作用:在整数1到整数2之间随机取一个整数。示例:“rand(1.8);”能在1至8之间随机生成一个整数。
显示文字命令:p.text(文字内容,颜色,大小);
作用:按指定的颜色和大小在当前画笔的位置显示文字内容。在实际书写该命令时,因为文字内容是一个字符串,因此要用双引号。 示例:“p.text(“您好!”,1,50);”将在屏幕显示大小为50的红色文字“您好!”。
赋值语句:变量名=表达式;
作用:计算“=”右边表达式的值并存放到左边的变量中。其中“=”称为赋值号。 示例:“x3=rand(10,60);”在10至60之间随机取-个整数,存放到变量x3中。
跳动的数字
为了烘托抽奖的紧张气氛,我们可以在同一位置连续显示随机产生的数字,从而呈现数字“跳动”的效果。
🔆指令学习
等待命令:wait(秒数);
作用:让程序等待指定的秒数,再执行下一个语句。示例:“wait(0.2);”执行时会等待0.2秒。
复合语句:{多个语句}
作用:用“{ }”把多个语句括起来,这部分就叫复合语句。
for语句的循环体若多于一个语句,就必须用{ }
括起来,以组成一个复合语句。
示例:
幸运大转盘
参观科技馆之行将要结束,馆长再奖励椰小程拨动一次幸运大转盘,以奖励他一件小礼品,看看椰小程能获得什么小礼品。
//程序12-3
int main()
{
p.picL(1,"zhuangpan.png"); //转盘图片
p.picL(2,"zhizhen.png"); //指针图片
p.hide().speed(10); //让转盘快速转动
int x;
x=rand(10,20);//控制转盘转10~20次
for(int i=0; i<x; i++) // 动感旋转转盘
{
p.rt(36); //每次转动36度
p.picU(0).pic(1);
p.picU(1).pic(2);
wait(0.04);
}
return 0;
}
第13 课 for语句里的循环变量(扩展)
数字队列、text()、wait()
🔆指令学习
总结
一、画写文字命令:text(s,c)
格式1:text(s,c) s表示的是输出的内容,c是颜色代码。
以c的代码颜色画写s的文字内容。
格式2:text(s)
当颜色参数缺省时,以当前笔色画写文字。
text还可以实现更丰富的画写文字功能,请参看文件中的帮助一栏text内容。
注:text【tekst】中文释义:文本
二、for循环的运行
for循环语句示例:
注:for循环的三个语句功能:
i=0: 循环变量i开始为0
i<3: 循环变量要小于3
i++: 循环变量每次加1
循环变量i的值分别为0,1,2
循环运行流程:
…
三、循环变量i的使用
循环变量可以出现在参数位置,利用循环变量的规律变化,实现更多的功能。
text(i)
fd(i) bk(i)
rt(i) lt(i)
size(i)
c(i)
oo(i)
rr(i,i)
大家开动脑筋,结合前面所学的知识,利用循环变量的变化,创作更多的作品吧!
二、动画的实现:
连续动作1à停留à连续动作2à停留à连续动作3à停留à连续动作4à停留…
利用视觉暂留的特点,我们就看到一组连续动作出现了。
三、等待命令
格式:wait( second );
wait 英[weɪt] 中文释义:等待; 等; 等候
second 英[ˈsekənd , sɪˈkɒnd] 中文释义:秒(时间单位)
功能:程序运行到这里会等待指定时间,再继续运行。
等待的时间单位是秒,可以是小数。
说明:wait不是pen的命令,格式不能“pen.”开头
。适当的使用wait不仅方便调试程序和演示绘图过程,还是实现动画的必要方法。second要保证>=0
。
样例:wait(0.2)
;
表示程序在这里停留0.2秒。
第 14 课 练习与巩固
一、学会观察和思考 做一名小小观察家,观察日常生活中,哪些物品包含你所学习的图形呢?
说说你身边的有趣图形吧!
二、图形里的数学计算:
我们学习了矩形命令r/rr,画圆命令o/oo,椭圆命令e/ee。
我们发现:这些图形在绘制的时候,都是以画笔为中心点去画图形的!
当这些图形组合成更多有趣图形时,其中包含了很多的数据,是需要我们去计算的。
1、画笔移动的距离
描述:黑色正方形上面有一个红色实心圆。
问题:画笔需要怎样移动,才可以画出这个图形呢?
这需要我们了解边长和半径,有了这两个数据,这个图形就可以画出来了。
举一反三:那这些图形呢?你还发现哪些图形需要这样的计算?
2、画笔旋转的角度
描述:正方形里面有一个内切圆,圆形被均匀的分成了8份。
问题1:正方形的边长与圆的半径是什么关系?
问题2:圆形被切分成了均匀的8份,每一份的角度是多少呢?
正方形的边长是这个圆的半径的2倍;
360.0/8=45°,这就是每一份的角度。
举一反三:那这些图形呢?你还发现哪些转角的计算?
3、画笔旋转方向的判断
画笔既可以顺时针
绘制正多边形,也可以逆时针
绘制正多边形。
利用两种转向,就可以画出下面红、蓝两色正六边形。
在当前画笔所指方向,顺时针绘制红色正六边形,逆时针绘制蓝色正六边形。
举一反三:那这些图形呢?是否结合了顺时针和逆时针转向呢?
三、顺序结构的认识
计算机的程序执行是按照顺序来运行的。
顺序不同,显示的结果不同。
举一反三:那这些图形呢?图形是怎样变化和叠加的?
四、for循环和循环变量可以通过图形来显示
1.循环节的判断
合理设置循环节,进行for循环,可以绘制各种奇妙图形!
2、循环变量i有大用途
例1:循环变量i设置画笔颜色和前进长度,结合前进与转角动作,产生了下面的五彩星形!
int main(){
p.speed(10);
for(int i = 0; i < 100; i ++)
p.c(i).fd(i).rt(150 );
return 0;
}
例2:循环变量i成为矩形的宽度变量,画出了二维码。
int main(){
p.rt(90).up();
for(int i = 0; i < 14; i++)
p.rr(i,100).fd(15);
return 0;
}
思考一下,你还能列举出循环变量的奇妙用途吗?
五、平行四边形(Parallelogram),是在同一个二维平面内,由两组平行线段组成的闭合图形。
5.1、 平行四边形的边:
ab与cd平行
bc与ad平行
image.png
写作: ab//cd ; bc//ad
二、平行四边形的角:
平行四边形的四个顶点上的角,∠1、∠2、∠3、∠4 。
1.平行四边形的内角和是360°;
∠1+∠2+∠3+∠4=360°
2.平行四边形的对角相等;
∠1和∠3相对,∠2和∠4相对
∠1=∠3; ∠2=∠4
3.平行四边形的邻角之和是180°。
∠1和∠2相邻,∠2和∠3相邻,∠3和∠4相邻,∠4和∠1相邻:
∠1+∠2=180° ; ∠2+∠3=180° ; ∠3+∠4=180°; ∠4+∠1=180°
三、平行四边形的外角:
平行四边形的四个外角,∠1和∠8组成了平角,∠2和∠5组成了平角,∠3和∠6组成了平角,∠4和∠7组成了平角, 。
∠1+∠8=180° ; ∠2+∠5=180° ; ∠3+∠6=180°; ∠4+∠7=180°
∠1+∠2+∠3+∠4=360°
∠5+∠6+∠7+∠8=360°
注:平行四边形的英文:(parallelogram [ˌpærəˈleləɡræm])