- Logo Tutorial
- Logo - Home
- Logo - Introduction
- Logo - Turtle
- Logo - Controlling the Turtle & Pen
- Logo - Turtle World
- Logo - Variables
- Logo - Arithmetic Operators
- Logo - Repetition
- Logo - Randomization
- Logo - Procedures
- Logo - Recursive Procedures
- Logo - Decision Making
- Logo - Strings
- Logo - Color
- Logo Useful Resources
- Logo - Quick Guide
- Logo - Useful Resources
- Logo - Discussion
徽标 - 快速指南
标志 - 简介
Logo 是一种非常简单易学的编程语言。它用于教学生和儿童如何对计算机进行编程。
为什么我们要学习Logo语言?
- 因为它很有趣,有很多乐趣。
- 增强孩子的逻辑思维能力。
- 培养编程技能。
- 这是真正的计算机科学。
Logo 是一种非常容易学习且有趣的编程语言。它具有足够的深度,几乎可以做任何其他计算机编程语言都可以完成的事情。
如何下载并安装MSW标志软件?
如果计算机上没有安装Logo编程软件,我们可以从以下链接免费获取它 -
www.softronix.com/mswlogo.html安装后,它会在您的计算机桌面上放置一个徽标图标。
MSW 徽标屏幕有两部分 -
- 上面是一个绘图窗口,中间有一个三角形的乌龟。
- Commander 窗口如下面的屏幕截图所示。
我们将在命令行中编写命令,即命令窗口底部的文本框。要执行或运行这些命令,请按 Enter 或单击“执行”按钮。我们还可以一次在线编写和运行多个命令。
命令历史记录将显示在灰色框中。单击历史记录中的一行,使其跳转到相应的命令行,然后我们可以进行更改(如果需要)。完成后,按 Enter 或单击“执行”按钮。
标志-海龟
简单的徽标绘图命令可以使海龟向前和向后移动,也可以向右或向左转动。命令及其缩写如下 -
- fd——转发
- bk——向后
- rt – 右
- lt – 左
- cs – 清屏
可以使用这些命令的任一版本。除 cs 命令外,这些命令中的每一个都必须后跟一个称为其参数的值。fd 和 bk 的参数是单位;rt 和 lt 的角度可以是任意整数。旋转 360 度是完整的旋转,因此旋转 375 度与 1/15 度相同。
forward 60或fd 60表示前进 60 步
right 90或rt 90表示右转 90 度
left 90或lt 90表示左转 90 度
back 60或bk 60表示后退 60 步
clearscreen或cs表示删除所有绘图。这将海龟设置在中心
图形窗口有一个坐标系。中心的两个坐标(通常称为x和y)的值为0、0。在东北角,它们为250、250;在东北角,它们为250、250。在东南角,它们是250、-250。在西南角,它们是-250,-250;等等。如果海龟试图走到屏幕的一侧,它就会绕过去。右侧包裹到左侧,顶部包裹到底部。
许多编程系统都在同一种两轴“xy”坐标平面上工作,我们在代数中也使用这种平面。
这里,“0 0”是中心或原点(这里没有逗号或括号!)。在居中、缩放“正常”状态下,Logo 的绘图屏幕显示距中心大约上下 150 点、左右 300 点的区域。
可以使用与罗盘相对应的方向来引导海龟,0 度或 360 度直接指向上方,90 度直接指向右侧,等等。您可以将变量设置为 0 到 360 之间的数字,然后沿着该路径行走。
海龟命令
现在让我们尝试一些命令。每行发出一个命令,然后回车。可以在命令窗口中连续键入其中几个命令,然后按回车键。对乌龟的效果是一样的。但是,如果您键入的命令需要一个或多个输入并在下一行提供缺少的输入,Logo 将显示错误。
以下是一个练习命令,它在右侧显示了所需的结果。
命令 – fd 50 rt 120 fd 50 rt 120 fd 50 rt 120使乌龟绘制一个三角形,正如您通过尝试看到的那样。
这些命令是从左到右读取的。由于命令fd需要一个参数,因此它被视为下一个值。类似地,rt也接受一个参数。因此,Logo 可以为这些字符串中的每一个赋予明确的含义。对于某些 Logo 命令,需要分隔符。
以下是一些练习命令,右侧是所需的结果。
以下是一个练习,用于检查您对本章到目前为止所学到的内容的能力。
标志 - 控制乌龟和钢笔
Logo 还有许多其他绘图命令,下面给出了其中一些命令。
pu -penup
pd - 下垂
ht - 隐藏的乌龟
dt -showturtle
设置大小
pendown 和 penup 命令分别告诉海龟在移动时在屏幕上留下墨水或不留下墨水。hideturtle和showturtle命令隐藏或显示海龟,但不影响其移动时留下墨水的能力。home 命令使海龟返回到屏幕中央。当海龟返回屏幕中心时,它可能会留下墨水。setpensize 命令决定绘图笔的大小。
penup或pu表示拿起笔,这样您就可以移动乌龟而不留下痕迹。
- pendown或pd表示放下笔,这样您就可以移动乌龟并留下痕迹。
- hideturtle或ht表示隐藏乌龟,以便您可以欣赏您的绘画。
- showturtle或st表示显示乌龟,以便您可以继续绘图。
- setpensize 的意思是可以让笔变大,更容易看清。默认笔尺寸为 –[1 1]。
以下是一些练习命令,右侧是所需的结果。
标志-海龟世界
Logo 还有许多其他附加绘图命令,下面给出了其中一些命令。
- 家
- 明文或 ct
- 标签
- 设定xy
label 命令将单个单词作为带引号的字符串(例如“a_string”)或 [ ] 括号中不带引号的单词列表(例如 [a string of letter])并将它们打印在海龟所在位置的图形窗口上。让我们考虑以下代码。
setxy命令采用两个参数,将第一个参数视为横坐标(水平轴)的值,将第二个参数视为纵坐标(垂直轴)的值。它将海龟放置在这些坐标处,在到达这些坐标时可能会留下墨水。在下面的三图中,我们展示了如何使用 setxy 命令。
明文命令(缩写为ct)清除命令窗口的文本区域。
锻炼
以下是一个练习,用于检查您对本章到目前为止所学到的内容的能力。
下面的命令序列会产生什么样的图形?
cs pu setxy -60 60 pd home rt 45 fd 85 lt 135 fd 120
从左到右阅读这些命令时解释它们。尝试一下就知道结果了。
以下是命令摘要表。
命令名称 | 目的 |
---|---|
设定100 | 将海龟的 x 坐标设置为 +100 将其向中心右侧移动 100 点 无垂直变化 |
塞克斯-200 | 将海龟向中心左侧移动 200 点 无垂直变化 |
塞蒂150 | 将海龟的 y 坐标设置为 150 将其移至中心上方 150 点 无横向变化 |
塞蒂 - 50 | 将海龟移动到中心以下 50 点 无横向变化 |
设置xy 100 100 |
将海龟移动到 xy 坐标 100 100 |
显示 xcor 显示 ycor |
报告海龟的 x 坐标 报告海龟的 y 坐标 |
设置标题 0 赛斯 0 |
将海龟指向正上方,“正午” |
赛斯120 |
将海龟移动 120 度以指向四点钟位置 |
下面的屏幕截图是上述一些命令的实际演示。
徽标 - 变量
变量是可以包含值的内存位置的名称。在计算机中,每个内存位置都有一个整数地址。由于很难记住包含程序使用的值的每个位置的地址,因此计算机科学家找到了为这些位置提供符号名称的方法。一旦变量有了名称,我们就可以使用和操作它。
变量的名称是字母字符串。变量名可以包含字母(不区分大小写)、数字和下划线。可以在计算中使用变量名之前的“:”来访问变量名。让我们考虑一下屏幕截图中的以下示例。
在上面的示例中,我们定义了两个变量first_name、100_last_name_200,并使用以下语句用值Amal和Das初始化它们 -
- 使“名字”阿迈勒
- 使“100_last_name_200”达斯
此外,我们使用语句 print :first_name 和 print :100_last_name_200 打印这两个变量。
以下示例显示如何定义数值变量 -
在这里,我们定义了两个数值变量val1和val2。我们还使用它们进行了加法和减法。
徽标 - 算术运算
Logo 提供了常用的加、减、乘、除算术运算,用符号+、-、*、/表示。这些操作中的每一个都会产生一个结果。如果您不对结果执行某些操作(例如打印结果),Logo 将显示错误。
通过打印命令,可以在命令窗口中使用并打印算术运算的结果。下面的屏幕截图中给出的示例也证明了这一点。
其他有用的命令是 -
sqrt - 它采用一个非负参数并返回其平方根。
power - 它需要两个参数,将它们称为“a”和“b”,并生成 a 的 b 次方。
ln - 它接受一个参数并返回其自然对数。
exp - 它需要一个参数并计算 e 的该幂,e 是自然数 2.718281828。
log10 - 取其一个参数以 10 为底的对数。
以下屏幕截图显示了上述命令及其各自输出的示例。
算术运算符的优先级决定了它们的求值顺序。
注意- print 60 * sqrt 2 和 print sqrt 2 * 60 会产生不同的答案。这里 * 运算符优先于 sqrt 运算符。因此,如果有选择,* 将在 sqrt 之前完成,如第二种情况。
因此,第一个语句打印 60 乘以 2 的平方根的值,而第二个语句打印 120 的平方根,如以下屏幕截图所示。
标志-重复
我们经常重复一系列命令。计算机程序经常执行重复性任务。几乎每个编程系统都有一种执行这种重复或迭代(计算机科学家称之为迭代)的方法。让我们考虑以下示例 -
假设我们想要画一个边长为 100 的正方形,我们可以使用以下程序来实现 -
fd 100 rt 90 fd 100 rt 90 fd 100 rt 90 fd 100 rt 90
我们注意到这两个命令 – fd 100 和 rt 90 重复了四次。告诉计算机只需重复这两个命令四次而不是连续写入四次不是更简单吗?我们可以使用以下命令来做到这一点 -
它节省了我们输入形成正方形的时间。一般形式为:重复编号[命令]。我们必须使用关键字-repeat,后跟一个数字,然后是[方括号]中的一系列命令。
通常,我们可能必须重复重复。这称为嵌套。让我们看一些这方面的例子。
以下是一个练习,用于检查您对本章到目前为止所学到的内容的能力。
徽标 - 随机化
有时,计算结果不可预测是很有趣的。Logo 提供了一个随机过程来生成随机数。它有一个参数,并生成一个随机统一选择的整数值,该值大于或等于 0 且小于其参数的值。因此,如果您想要 0 到 359 度之间的随机角度,可以使用命令random 360来生成它。请记住,除非您对结果执行某些操作(例如打印),否则徽标将显示错误。
让我们看下面的例子 -
我们在上面的命令窗口中多次发出命令 – print random 360 ,如果您注意到的话,每次都会生成一个随机输出。
以下是一些练习命令,右侧是所需的结果。
徽标 - 程序
过程提供了一种封装命令集合的方法。创建过程后,就可以像使用内置命令一样使用它。过程的“含义”是其各个命令的含义。
不带参数的过程在第一行有单词“to”(保留字)和过程名称。(Logo 中的保留字不能用作变量,并且具有明确定义的含义和用途。)它的最后一行有保留字“end”。
子程序是供另一个程序执行的命名步骤序列。子程序的其他名称是过程和函数。在 Logo 中,你告诉计算机如何做某事 - 例如 -
to square repeat 4 [fd 100 rt 90] end
一旦我们描述了 Logo 的过程,我们就可以在命令行中输入它的名称,就像我们对任何内置事物所做的那样。在本例中,我们将在命令行中输入“square”,Logo 会查找命令来制作一个正方形。
单击显示Edall (全部编辑)的按钮以调出 Logo 的内置编辑器。(如果您的徽标没有 Edall 按钮,请在命令行中输入“edall”)。以下代码块具有子程序所需的结构。
to procedurename steps of your procedure here end
过程或子程序必须以单词“to”开头,后跟我们想到的名称。下一步是键入我们在命令行上编写的所有相同步骤。该过程必须以“结束”一词结束。所有注释或备注行前面应加分号 (;)。
以下是上述示例的实际演示 -
现在,从命令行,使用其名称“square”执行该过程,如下所示 -
过程不仅可以包含内置命令,还可以包含其他过程。
在下面的示例中,过程“flower”从其主体中调用我们预定义的过程“square”。
以下屏幕截图显示了调用过程“flower”时的输出 -
我们不希望每个方块大小相同——我们想要多样性。在 Logo 中,我们创建了可以更改其值的变量。在下面的示例中,我们将使用相同的平方过程,但稍加改动。
to square :n repeat 4 [fd :n rt 90] end
我们在命令行上为 Logo 提供了 ':n' 的替换值,如下所示。
square 50 square 75 square 100
这是上面示例的实际演示 -
现在让我们讨论如何将两个参数传递给过程。以下屏幕截图是其实际演示。
徽标 - 递归过程
在递归过程中,过程内会出现过程的重复调用。让我们考虑以下代码 -
to spiral_recur :n if :n < 1 [stop] fd :n rt 20 spiral_recur 0.95 * :n end
过程spiral_recur 已从过程主体本身调用。下面的截图显示了代码的执行和输出。
徽标-决策
决策和变量是相辅相成的。程序需要能够根据情况改变方向。例如,这里是一个绘制螺旋的框架。它有一个循环,是前面所示的重复的变体,循环体供我们填写。
to spiral make "n 1 while [:n < 100] [ make "n :n + 5 fd :n rt 90 ] end
上面的代码展示了 MSW Logo 语法的几个新特性。我们通过键入“make”将变量设置为新值,然后变量名称前面带有双引号“而不是冒号“:”,如下所示。
make "n 1
不过,我们使用一个变量,其名称前面有一个冒号“:”。
while [:n < 100]
当条件为真时,执行“while [条件]”后括号内的代码。当它不再为真时,因为(在本例中)':n' 的值增长到大于 100,所以执行括号后面的代码。
下面的截图显示了上述代码的执行和输出。
现在,我们将讨论“if 语句”的使用,其中的代码仅在给定条件为真时才会执行。
它还显示了一个生成随机数的内置徽标。语句random 3在随机序列中任意生成任意数字 0 或 1 或 2。然后该过程“随机”决定走哪条路。生成的随机数将保存在“r”中,稍后根据变量“r”的值,将执行其中一个 if 语句,这将满足条件。因此如果 -
- r的值为0,则执行[fd 20] 。
- r 的值为 1,则执行[rt 90 fd 20] 。
- r 的值为 2,则执行[lt 90 fd 20] 。
以下屏幕截图显示了上述讨论的执行和输出。
标志 - 字符串
任何字母数字字符序列,例如“america”、“emp1234”等都是字符串的示例。计算字符数是所有字符串处理中最基本的。问题字符串长度“abc12ef”的答案由以下过程给出 -
to stringlength :s make "inputstring :s make "count 0 while [not emptyp :s] [ make "count :count + 1 print first :s make "s butfirst :s ] print (sentence :inputstring "has :count "letters) end
在上面的过程中 -'s' 是包含输入字符串的变量。变量 inputstring 包含输入字符串的副本。变量 count 初始化为 0。在 while 循环中,条件检查字符串是否已变为空。在每个循环计数中,变量加 1 以保存长度计数。语句print first :s只打印存储在 's' 中的字符串的第一个字符。
语句make "s butfirst :s,检索不包括第一个字符的子字符串。退出 while 循环后,我们已经打印了字符数或输入字符串的长度。以下是代码的执行和输出。
标志 - 颜色
计算机屏幕使用红色、绿色和蓝色成分的光,因此有时称为RGB 屏幕。
在徽标的设置菜单上,我们可以设置三个屏幕元素的颜色 -
- 乌龟的笔
- 海龟的填充物(就像外壳的油漆桶)
- 屏幕背景
我们通过左右移动这三个滑块来设置颜色。请记住,黑色是所有颜色的缺失,白色是所有颜色的组合。混合光线不像混合油漆。例如,如果混合红色和绿色油漆,就会得到浑浊的颜色。由于这是一台计算机,每种颜色都有一个内部数字表示。
滑动标尺的左端为零 (0)。右端是 255,这对于计算机来说有点像 99(它是 2 8 - 1)。因此黑色是[0 0 0],红色是[255 0 0],绿色是[0 255 0],蓝色是[0 0 255]。您可以制作这些颜色之间的任何颜色,在所有这些颜色中,有 256 * 256 * 256 种可能的颜色。那是 2 8 * 2 8 * 2 8,或 24 位颜色 — 机器内部的 24 位二进制数字。
以下命令将为您提供一支又粗又大的红笔 -
setpensize [5 5] setpencolor [255 0 0]
当您使用滑块找到喜欢的颜色时,您可以询问 Logo 它是什么:选择笔颜色,然后在命令窗口中输入以下命令。
show pencolor
下面的截图显示了上述代码的执行和输出。
您可以使用以下步骤制作彩色方块 -
步骤 1 - 使用以下命令绘制边长为 40 的正方形。
repeat 4 [fd 40 rt 90]
步骤 2 - 使用以下命令画笔。
pu
步骤 3 - 转到正方形内的一点。例如,使用以下命令将海龟放置在坐标 (20, 20) 处。
setxy 20 20
步骤 4 - 用设置的泛色填充正方形。例如,要将泛光颜色设置为蓝色,请使用以下命令。
setfloodcolor [0 0 255]
下表列出了更多与颜色和笔相关的命令。
颜色和钢笔命令 | 命令的目的 |
---|---|
设置笔颜色 [RGB] 设置PC [RGB] |
设置海龟笔的颜色 RGB 是 [0, 255] 范围内的数字 |
设置泛光颜色[rgb] setfc [RGB] |
设置认可区域的颜色 |
设置屏幕颜色[rgb] 集 [RGB] |
设置背景颜色 |
显示笔色 显示泛色 显示屏幕颜色 |
指定指定项目的 [rgb] 的当前值 |
充满 |
在光标位置转储当前泛色的桶 |
充满 |
在光标位置转储当前泛色的桶 |
尝试执行以下命令集 -
cs - 清除屏幕。
home - 将乌龟带回家。
setpensize [5 5] - 设置笔大小。
setpencolor [255 0 0] - 将笔颜色设置为红色。
setfloodcolor [0 0 255] - 将泛光颜色设置为蓝色。
setscreencolor [0 255 0] - 将屏幕颜色设置为绿色。
重复 4 [fd 40 rt 90] - 画一个边长为 40 的正方形。
pu - 拿起笔。
setxy 20 20 - 将海龟放在坐标 (20, 20) 处。
fill - 用设置的泛光色蓝色填充正方形。
ht - 隐藏海龟。
执行上述命令后,您应该会收到以下输出。