1. 程式人生 > >專為兒童定製的Logo程式語言

專為兒童定製的Logo程式語言

當你在網上搜索LOGO這個詞,搜尋結果應該是各大公司的標誌。你是否知道有門程式語言就叫LOGO呢?

1966年,美國國家科學基金會所資助麻省理工學院(MIT)的人工智慧研究室,希望該實驗室設計一門適合教授兒童程式設計技能的語言,而這個專案由西摩爾·派普特(Seymour Papert)和Wally Feurzeig牽頭,該語言命令為Logo,Logo一詞源自希臘語邏各斯(logos,原意即為思想)。在Logo語言設計之初,Papert在一個假日中出外散步時,偶然間看到一個像海龜的機械裝置而產生靈感。

由於Papert博士已經是LISP語言的專家,因此Logo是基於LISP語言,但修改了LISP的語法使得Logo更易於閱讀,Logo通常也被稱作沒有括號的Lisp。

總的來說,Logo語言是一種早期的程式語言(解釋型語言),它與自然語言非常接近的程式語言,但又和其它的語言有很大的不同,因為Logo語言內建了一套海龜繪圖(Turtle Graphics)系統,通過向海龜傳送命令,使用者可以直觀地學習程式的執行過程,因此它很適合於兒童學習程式設計技能,當然適合作數學教學。

Logo語言之所以是兒童學習計算機程式設計最好的一種語言,就因為它是針對兒童而製作的程式語言,能使兒童在認知與技能上得到較大的發展。Logo語言具有較強的針對性,因為對於兒童來說,“畫畫”比“文書處理”更具有活力,充分發揮自己的想象進行創作,而文書處理卻比較枯燥,不適合兒童。Logo則主要用於“圖畫”製作,並且採用了“海龜繪圖”的方式,適合兒童的特點,能充分引起他們的興趣和學習該門語言的積極性,達到寓教於樂的目的。在Logo語言中,它的作圖方式與現在所用的作圖軟體不一樣,主要區別就在於Logo語言的基本作圖的方法可以不採用座標方式,而是通過向前,後退、向左轉、向右轉、回家等兒童易於理解的語言和命令,這非常適合兒童的知識水平,使這些還未接觸座標為何物的兒童更容易上手。在用Logo語言作圖時,需要學習者對一些常見的幾何特性進行理解,瞭解常用的距離、角度和度數的概念。

Logo語法實現原理:

1.與移動有關的指令:“前進”、“後退”和“歸位”。前進命令可讓海龜前移一定的單位數,例如:執行“Forward(前進) 50”命令後,小海龜則會向前移動50個單位;後退命令則可讓小海龜向後移動,如果執行“Back(後退) 50”命令,那麼小海龜的方向不會發生改變,而會向後退50個單位;執行歸位命令後,不論當前小海龜的位置及方向怎樣,它就會乖乖地回到繪圖區的中央位置,並且朝向螢幕的正上方。

2.與轉彎有關的指令:“右轉”和 “左轉”。右轉命令可讓小海龜按要求向右邊轉動一定的角度,例如:執行“Right(右轉) 45”命令則小海龜的朝向將向右轉動45度角;而左轉命令則可讓小海龜向左轉動,如:執行“Left 45”命令則小海龜的朝向將向左轉動45度角。這幾種命令可以驅動小海龜繞其中心旋轉一定的角度。

3.與控制有關的命令有REPEAT(重複)、IF…THEN…ELSE…(條件執行)等。如執行REPEAT 4[FORWARD 200 RlGHT 9O]就能畫出圖2中的正方形,如果直接將移動命令和轉彎命令相結合,則寫出的語句就比較多,但都是一些重複地使用4次“Forward 100”和“Right 90”命令。

下面是一段Logo程式碼的示例,它可以實現小海龜螺旋畫圈的效果:

to spiral :size
if :size > 30 [stop] ; an exit condition
fd :size rt 15 ; many lines of action
spiral :size *1.02 ; the tailend recursive call
end

spiral 10

如果你對Logo語言有深入的興趣,這裡也收集了一些資料,方便大家到這裡查閱:
附錄1:
Logo Foundation(Logo基金組織官網網站,這裡也有Logo的詳細資料可以查閱):
http://el.media.mit.edu/logo-foundation/

中文版Logo程式設計系統:
http://www.onlinedown.net/soft/50555.htm

附錄2:Logo語言命令
DRAW – 清屏、海龜回母位
CLEAN
CLEARSCREEN CS
CLEARTEXT CT
FORWARD FD 前進
BACK BK 後退
RIGHT RT 右轉
LEFT LT 左轉
PENUP PU 擡筆
PENDOWN PD 落筆
HIDETURTLE HT 藏龜
SHOWTURTLE ST 顯龜
CLEARSCREEN CS 清屏
HOME – 回家
REPEAT – 重複
SPLITSCREEN SS 圖文混合屏
FULLSCREEN FS 全圖形屏
TEXTSCREEN TS 全文字屏
NODRAW ND 全文字屏、清屏
WRAP – 環繞狀態
WINDOW – 視窗狀態
FENCE – 圍欄狀態
SHOW – 螢幕輸出
TT – 在畫圖區顯示文字
TO……END – 過程頭、尾
IF…THEN…ELSE
PAUSE
CONTINUE CO
EDIT ALL – 進入編輯部
STOP –
TOPLEVEL –
SETPC – 設定畫筆顏色
SETBG – 設定螢幕底色
座標作圖
SETX – 指定海龜橫向位置
SETY – 指定海龜縱向位置
SETXY – 指定海龜任意位置
SETHEADING SETH – 指定海龜方向
XCOR – 顯示海龜當前位置的X座標
YCOR – 顯示海龜當前位置的Y座標
GETXY – 顯示海龜當前位置的X,Y座標
HEADING – 顯示海龜指向角度
檔案管理
POTS – 顯示工作區內所有過程的標題
POPS(PO ALL) – 顯示工作區內所有過程的內容
PRINTOUT PO 顯示工作區內過程的內容
ERASE(ER ALL) ER 刪除工作區中的過程
DIRECTORY DIR 顯示磁碟檔案目錄
DISK – 顯示當前盤
SETDISK – 設定當前盤
SAVE – 把程式存檔
LOAD – 讀程式檔案
SAVEPIC – 圖形存檔
LOADPIC – 讀圖形檔案
DELETE – 刪除檔案
RENAME REN 檔案改名
數值計算
PRINT PR 換行列印
TYPE – 同行列印
SETCURSOR – 列印格式
OUTPUT OP 輸出
INT – 取整函式
ROUND – 四捨五入函式
QUOTIENT – 求商函式
REMAINDER – 餘數函式
RANDOM – 隨機函式
SQRT – 平方根函式
ABS – 絕對值函式
MAKE – 賦值
PRECISION – 數字顯示精度
字表處理
FIRST – 取首
LAST – 取尾
BUTFIRST BF 去首
BUTLAST BL 去尾
EMPTY? – 判斷是否為空
READ – 從鍵盤上接受一串字元
READCHAR RC 從鍵盤上接受一個字元
READLIST RL 從鍵盤上接受一個表
READQUOTE RQ 從鍵盤上接受一個字
RESULT: – 結果
TRUE – 真
FALSE – 假
COUNT – 測長函式
MAKE – 賦值
ITEM – 輸出表中第:K個元素
TEST – 測試條件
IFTRUE IFT 測試真
IFFALSE IFF 測試假
KEY? – 是否有鍵盤輸入
NUMBER? – 是否是數
WORD? – 是否是字
LIST? – 是否是表
WORD – 連線字
SENTENCE SE 字與表、表與表的連線
FPUT – 連線到表(字)首
LPUT – 連線到表(字)尾
LIST – 組成表
RUN – 執行表
DEFINE – 定義過程
ASCII – 輸出字元的ASCII碼
CHAR – 輸出ASCII碼值的字元