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
廣告