Logo - 快速指南



Logo - 简介

Logo 是一种非常简单易学的编程语言。它用于教授学生和儿童如何编程计算机。

我们为什么要学习 Logo 语言?

  • 因为它很有趣,非常有趣。
  • 增强儿童的逻辑思维能力。
  • 培养编程技能。
  • 它是真正的计算机科学。

Logo 是一种非常简单有趣的编程语言。它具有足够的深度,几乎可以完成任何其他计算机编程语言可以完成的任何操作。

如何下载和安装 MSW Logo 软件?

如果计算机上没有安装 Logo 编程软件,我们可以从以下链接免费获取它:

www.softronix.com/mswlogo.html

安装后,它会在计算机桌面上放置一个 Logo 图标。

Logo Icon

MSW Logo 屏幕有两个部分:

  • 上面是一个绘图窗口,中间有一个三角形形状的“海龟”。
  • 如下面的屏幕截图所示,一个命令窗口。
MSW Logo Screen

我们将在命令行(即命令窗口底部的文本框)中编写命令。要执行或运行这些命令,请按 Enter 键或单击“执行”按钮。我们也可以一次在线编写和运行多个命令。

命令历史记录将显示在灰色框中。单击历史记录中的一行以使其跳转到相应的命令行,然后我们可以进行更改(如果需要)。完成后,按 Enter 键或单击“执行”按钮。

Logo - 海龟

简单的 Logo 绘图命令可以使海龟向前和向后移动,也可以向右或向左转动。命令及其缩写如下:

  • fd – 前进
  • bk – 后退
  • rt – 右转
  • lt – 左转
  • cs – 清屏

可以使用这些命令的任何版本。除了 cs 命令外,每个命令后面都必须跟随一个称为参数的值。fd 和 bk 的参数是单位;rt 和 lt 的参数是角度,可以是任何整数。360 度旋转是一个完整的旋转,因此 375 度旋转与 1/15 度相同。

  • forward 60fd 60 表示向前走 60 步

  • right 90rt 90 表示右转 90 度

  • left 90lt 90 表示左转 90 度

  • back 60bk 60 表示后退 60 步

  • clearscreencs 表示擦除所有图形。这将海龟设置在中心

图形窗口具有坐标系。中心处的两个坐标(通常称为 x 和 y)的值为 0, 0。在东北角,它们是 250, 250;在东南角,它们是 250, -250。在西南角,它们是 -250, -250;等等。如果海龟试图走到屏幕的一侧,它会绕一圈。右侧环绕到左侧,顶部环绕到底部。

许多编程系统都使用相同类型的双轴“xy”坐标平面,我们也在代数中使用它。

Turtle

这里,“0 0”是中心或原点(这里没有逗号或括号!)。在其居中、缩放“正常”状态下,Logo 的绘图屏幕显示了从中心向上或向下大约 150 个点,向右或向左大约 300 个点的区域。

海龟可以通过与罗盘玫瑰相对应的标题进行引导,其中 0 或 360 度指向正上方,90 度指向正右方,依此类推。您可以将变量设置为 0 到 360 之间的数字,然后沿着该路径行走。

海龟命令

现在让我们尝试一些命令。每个命令将在一行中发出,后跟回车键。可以在命令窗口中连续输入这些命令中的几个,然后按回车键。对海龟的影响是相同的。但是,如果您键入一个需要一个或多个输入的命令并在下一行提供缺少的输入,Logo 将显示错误。

以下是一个练习命令,它在右侧显示了所需的结果。

Turtle Commands

命令 – fd 50 rt 120 fd 50 rt 120 fd 50 rt 120,使海龟绘制一个三角形,您可以通过尝试它们来查看。

这些命令从左到右读取。由于命令 fd 需要一个参数,因此将其作为下一个值。类似地,rt 也需要一个参数。因此,Logo 可以为每个字符字符串赋予明确的含义。对于某些 Logo 命令,需要分隔符。

以下是几个练习命令,右侧显示了所需的结果。

Practice 2

Practice 2

Practice 2

Practice 2

以下是一项练习,用于检查您对本章中迄今为止所学内容的理解能力。

Exercise

Logo - 控制海龟和画笔

Logo 还有许多其他绘图命令,其中一些如下所示。

  • pu − 抬笔

  • pd − 落笔

  • ht − 隐藏海龟

  • dt − 显示海龟

  • 设置笔粗细

落笔和抬笔命令分别告诉海龟在移动时是否在屏幕上留下墨水。隐藏海龟和显示海龟命令隐藏或显示海龟,但不影响它在移动时留下墨水的能力。home 命令使海龟返回到屏幕的中心。当海龟返回到屏幕的中心时,它可能会留下墨迹。setpensize 命令决定绘图笔的粗细。

  • penuppu 表示抬起笔,这样您就可以移动海龟而不留下痕迹。

  • pendownpd 表示放下笔,这样您就可以移动海龟并留下痕迹。
  • hideturtleht 表示隐藏海龟,这样您就可以欣赏您的绘画。

  • showturtlest 表示显示海龟,这样您就可以继续绘画。

  • setpensize 表示它可以使笔更大,更容易看到。默认笔粗细为 –[1 1]。

以下是几个练习命令,右侧显示了所需的结果。

Practice Command 1

Practice Command 2

Practice Command 3

Logo - 海龟世界

Logo 还有许多其他绘图命令,其中一些如下所示。

  • home
  • cleartext 或 ct
  • label
  • setxy

label 命令将单个单词作为带引号的字符串(例如“a_string”)或 [ ] 括号中的单词列表(例如 [a string of letters])作为参数,并在海龟所在位置的图形窗口中打印它们。让我们考虑以下代码。

Commander

setxy 命令接受两个参数,将第一个参数视为横坐标(水平轴)的值,将第二个参数视为纵坐标(垂直轴)的值。它将海龟放置在这些坐标处,可能在到达这些坐标时留下墨迹。在以下三个图中,我们展示了如何使用 setxy 命令。

Figure1

Figure2

Figure3

cleartext 命令,缩写为 ct,清除命令窗口的文本区域。

Cleartext Command

练习

以下是一项练习,用于检查您对本章中迄今为止所学内容的理解能力。

以下命令序列产生什么图形?

cs pu setxy -60 60 pd home rt 45 fd 85 lt 135 fd 120

在您从左到右阅读这些命令时,对其进行解释。尝试一下以找出结果。

以下是命令摘要表。

命令名称 用途
setx 100

将海龟的 x 坐标设置为 +100

将其移动到中心的右侧 100 个点

没有垂直变化

setx -200

将海龟移动到中心的左侧 200 个点

没有垂直变化

sety 150

将海龟的 y 坐标设置为 150

将其移动到中心的上面 150 个点

没有水平变化

sety - 50

将海龟移动到中心的下方 50 个点

没有水平变化

setxy 100 100

将海龟移动到 xy 坐标 100 100

show xcor

show ycor

报告海龟的 x 坐标

报告海龟的 y 坐标

setheading 0

seth 0

将海龟指向正上方,“正午”

seth 120

将海龟移动 120 度,指向 4 点钟位置

以下屏幕截图是对上述一些命令的实际演示。

Practical Demostration

Logo - 变量

变量是内存位置的名称,该内存位置可以包含一个值。在计算机中,每个内存位置都有一个整数地址。由于记住程序使用的每个包含值的地址都很困难,因此计算机科学家已经找到了为这些位置赋予符号名称的方法。一旦变量有了名称,我们就可以使用和操作它。

变量被赋予名称,这些名称是字母字符串。变量名可以包含字母(不区分大小写)、数字和下划线。可以使用变量名前面的“:”来访问变量名进行计算。让我们考虑屏幕截图中的以下示例。

Variables

在上面的示例中,我们定义了两个变量 first_name, 100_last_name_200 并使用以下语句将其初始化为值 AmalDas

  • make “first_name “Amal
  • make “100_last_name_200 “Das

此外,我们使用语句 print :first_name 和 print :100_last_name_200 打印了这两个变量。

以下示例显示了如何定义数值变量:

Numeric Variables

这里,我们定义了两个数值变量 val1val2。我们还使用它们执行了加法和减法。

Logo - 算术运算

Logo 提供了通常的算术运算,即加法、减法、乘法和除法,分别用符号 +、-、*、/ 表示。每个运算都会产生结果。如果您不对结果执行任何操作(例如打印它),Logo 将显示错误。

使用 print 命令,可以在命令窗口中使用和打印算术运算的结果。以下屏幕截图中给出的示例演示了相同的内容。

Arithmetic Operators

其他有用的命令包括:

  • sqrt − 它接受一个非负参数并返回其平方根。

  • power − 它接受两个参数,分别称为“a”和“b”,并生成 a 的 b 次幂。

  • ln − 它接受一个参数并返回其自然对数。

  • exp − 它接受一个参数并计算 e 的该次幂,e 是自然数 2.718281828。

  • log10 − 它接受其一个参数的以 10 为底的对数。

以下屏幕截图显示了上述命令及其相应输出的示例。

Useful Commands

算术运算符具有确定其求值顺序的优先级。

注意 − print 60 * sqrt 2 和 print sqrt 2 * 60 会产生不同的答案。这里 * 运算符优先于 sqrt 运算符。因此,如果存在选择,* 将在 sqrt 之前执行,就像在第二种情况下一样。

因此,第一个语句打印 60 乘以 2 的平方根的值,而第二个语句打印 120 的平方根,如下面的屏幕截图所示。

Statement Prints the Value

Logo - 重复

我们经常重复一系列命令。计算机程序经常执行重复性任务。几乎每个编程系统都有一个执行这种重复或迭代的方法,正如计算机科学家所说的那样。让我们考虑以下示例:

假设我们想绘制一个边长为 100 的正方形,我们可以使用以下程序:

fd 100
rt 90
fd 100
rt 90
fd 100
rt 90
fd 100
rt 90

我们注意到这两个命令 – fd 100 和 rt 90 重复了四次。难道不更简单地告诉计算机它应该重复这两个命令四次,而不是连续写四次吗?我们可以使用以下命令完全做到这一点:

Repetition Practice 1

它节省了我们输入绘制正方形的时间。通用格式为:repeat number [commands]。我们必须使用关键字 – repeat 后跟一个数字,然后是方括号 [ ] 中的一系列命令。

通常,我们可能需要在 repeat 中重复操作。这称为嵌套。让我们看一些关于这方面的例子。

Repetition Practice 2

Repetition Practice 3

以下是练习,以检查您对本章迄今为止所学内容的掌握程度。

Repetition Exercise

Logo - 随机化

有时,计算结果不可预测会很有趣。Logo 提供了一个随机过程来生成随机数。它有一个参数,并产生一个在 0 或更大且小于其参数值之间均匀随机选择的整数值。因此,如果您想要 0 到 359 度之间的随机角度,可以使用命令random 360来生成它。请记住,除非您对结果执行某些操作(例如打印),否则 Logo 会显示错误。

让我们看下面的例子 -

Randomization Example

我们在上面的命令窗口中多次发出命令 – print random 360,如果您注意到了,每次它都会生成一个随机输出。

以下是几个练习命令,右侧显示了所需的结果。

Randomization Practice1

Randomization Practice2

Logo - 过程

过程提供了一种封装命令集合的方法。创建过程后,就可以像使用内置命令一样使用它。过程的“含义”就是其各个命令的含义。

没有参数的过程在第一行包含单词“to”(保留字)和过程的名称。(Logo 中的保留字不能用作变量,并且具有明确的含义和用途。)它在最后一行包含保留字“end”。

子程序是另一个程序要执行的一系列命名步骤。子程序的其他名称包括过程和函数。在 Logo 中,您告诉计算机如何执行某些操作 - 例如 -

to square
repeat 4 [fd 100 rt 90]
end

一旦我们向 Logo 描述了我们的过程,我们就可以在命令行中输入其名称,就像我们对任何内置内容所做的那样。在这种情况下,我们将在命令行中键入“square”,Logo 会查找绘制正方形的命令。

单击显示Edall(编辑全部)的按钮以调出 Logo 的内置编辑器。(如果您的 Logo 没有 Edall 按钮,请在命令行中键入“edall”。)以下代码块具有子程序所需的结构。

to procedurename
steps of your procedure here
end

过程或子程序必须以单词“to”开头,后跟我们想到的名称。下一步是在命令行中键入所有相同的步骤。过程必须以单词“end”结尾。所有注释或备注行都应以分号(;)开头。

以下是上述示例的实际演示 -

Practical Demonstration

现在,从命令行使用其名称“square”执行过程,如下所示 -

Square

过程不仅可以包含内置命令,还可以包含其他过程。

在下面的示例中,过程“flower”在其主体中调用我们预定义的过程“square”。

Predefined Procedure

以下屏幕截图显示了调用过程“flower”时的输出 -

Flower

我们不希望每个正方形都具有相同的大小 - 我们想要多样性。在 Logo 中,我们创建变量,其值可以更改。在下面的示例中,我们将使用相同的过程 square,并稍作更改。

to square :n
repeat 4 [fd :n rt 90]
end

我们在命令行中为“:n”提供了一个替换值,如下所示。

square 50
square 75
square 100

以下是上述示例的实际演示 -

Command Line

现在让我们讨论如何向过程传递两个参数。以下屏幕截图是相同的实际演示。

Pass Two Arguments

Logo - 递归过程

在递归过程中,将在过程内部进行过程的递归调用。让我们考虑以下代码 -

to spiral_recur :n
   if :n < 1 [stop]
   fd :n
   rt 20
   spiral_recur 0.95 * :n
end

过程 spiral_recur 已从过程主体本身调用。以下屏幕截图显示了代码的执行和输出。

Recursive Procedures

Logo - 决策

决策和变量是相辅相成的。程序需要能够根据情况改变执行路线。例如,这里有一个绘制螺旋线的框架。它有一个循环,它是前面显示的重复的变体,循环体由我们填写。

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 [condition]”之后的代码将在条件为真时执行。当它不再为真时,因为(在这种情况下)“:n”的值增长大于 100,则执行括号后面的代码。

以下屏幕截图显示了上述代码的执行和输出。

Decision making

现在,我们将讨论“if 语句”的使用,这些语句只有在给定条件为真时才会执行代码。

它还显示了一个生成随机数的内置 Logo。语句random 3以随机顺序任意生成 0 或 1 或 2 中的任何数字。然后,该过程决定以“随机”方式向哪个方向移动。生成的随机数将保存在“r”中,稍后根据变量“r”的值,将执行其中一个 if 语句,该语句将满足条件。因此,如果 -

  • “r”的值为 0,则将执行[fd 20]
  • “r”的值为 1,则将执行[rt 90 fd 20]
  • “r”的值为 2,则将执行[lt 90 fd 20]

以下屏幕截图显示了上述讨论的执行和输出。

Random Sequence

Logo - 字符串

任何字母数字字符序列,例如 –“america”、“emp1234”等,都是字符串的示例。计算字符数是所有字符串处理中最基本的操作。以下过程给出了问题stringlength "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 循环后,我们打印了字符计数或输入字符串的长度。以下是代码的执行和输出。

Strings

Logo - 颜色

计算机屏幕使用红色、绿色和蓝色光成分工作,因此有时称为RGB 屏幕

在 Logo 的“设置”菜单中,我们可以设置三个屏幕元素的颜色 -

  • 海龟的笔
  • 海龟的填充(如用于封闭区域的油漆桶)
  • 屏幕背景
Pen Color

我们通过左右移动这三个滑块来设置颜色。请记住,黑色是所有颜色的缺失,白色是所有颜色的组合。混合光与混合油漆不同。例如,如果您混合红色和绿色油漆,您将获得一种浑浊的颜色。由于这是一台计算机,因此每种颜色都有一个内部数字表示。

滑动刻度的左侧是零 (0)。右侧是 255,对于计算机来说有点像 99(它是 28 - 1)。因此,黑色是 [0 0 0],红色是 [255 0 0],绿色是 [0 255 0],蓝色是 [0 0 255]。您可以在这两种颜色之间创建任何颜色,并且在所有这些颜色中,有 256 * 256 * 256 种可能的颜色。那是 28 * 28 * 28,或 24 位颜色 - 机器内部的 24 个二进制数字。

以下命令将为您提供一个粗大的红色笔 -

setpensize [5 5]
setpencolor [255 0 0]

当您使用滑块找到喜欢的颜色时,您可以询问 Logo 它是什么:选择笔颜色,然后在命令窗口中输入以下命令。

show pencolor

以下屏幕截图显示了上述代码的执行和输出。

Pen Color Selecting

您可以使用以下步骤绘制彩色正方形 -

步骤 1 - 使用以下命令绘制边长为 40 的正方形。

repeat 4 [fd 40 rt 90]

步骤 2 - 使用以下命令抬起笔。

pu

步骤 3 - 移到正方形内的某个点。例如,使用以下命令将海龟放置在坐标 (20, 20) 处。

setxy 20 20

步骤 4 - 使用设置的 floodcolor 填充正方形。例如,要将 floodcolor 设置为蓝色,请使用以下命令。

setfloodcolor [0 0 255]

下表列出了一些其他与颜色和笔相关的命令。

颜色和笔命令 命令的用途

setpencolor [ r g b]

setpc [r g b]

设置海龟笔的颜色

r g b 是 [0, 255] 范围内的数字

setfloodcolor [r g b]

setfc [r g b]

设置已批准区域的颜色

setscreencolor [r g b]

setsc [r g b]

设置背景颜色

show pencolor

show floodcolor

show screencolor

指定命名项目的 [r g b] 的当前值

填充

在光标位置倾倒一桶当前的 floodcolor

填充

在光标位置倾倒一桶当前的 floodcolor

尝试执行以下命令集 -

  • cs - 清除屏幕。

  • home - 将海龟带到初始位置。

  • setpensize [5 5] - 设置笔大小。

  • setpencolor [255 0 0] - 将笔颜色设置为红色。

  • setfloodcolor [0 0 255] - 将填充颜色设置为蓝色。

  • setscreencolor [0 255 0] - 将屏幕颜色设置为绿色。

  • repeat 4 [fd 40 rt 90] - 绘制边长为 40 的正方形。

  • pu - 抬起笔。

  • setxy 20 20 - 将海龟置于坐标 (20, 20) 处。

  • fill - 使用设置的填充颜色蓝色填充正方形。

  • ht - 隐藏海龟。

执行上述命令后,您应该会收到以下输出。

Set Of Commands
广告