LOGO語言
早期的編程語言
LOGO語言是一種早期的編程語言,也是一種與自然語言非常接近的編程語言,它通過“繪圖”的方式來學習編程,對初學者特別是兒童進行寓教於樂的教學方式。LOGO語言創始於1968年,是美國國家科學基金會所資助的一項專案研究,在麻省理工大學(MIT)的人工智慧研究室完成。LOGO源自希臘文,原意即為思想,是由一名叫西摩爾·帕伯特的心理學家在從事兒童學習的研究中,發現一些與他的想法相反的教學方法,並在一個假日中出外散步時,偶然間看到一個像海龜的機械裝置觸發靈感,於是利用他廣博的知識及聰明的才智而最終完成了LOGO語言的設計。
20世紀60年代,美國麻省理工學院人工智慧實驗室的西摩爾·帕伯特專為孩子們設計了一種叫LOGO的計算機語言,是一種易學、易懂、易於掌握的結構化程序設計語言,出發點是將原本較為枯燥的程序設計形象化,希望學生不要機械地記憶事實,使學生在掌握了為數不多的LOGO原始命令后,能在發現和探索中學習,通過操縱屏幕上的海龜來學習編寫程序,強調創造性的探索能給學生嚴密的計算思維和有趣的學習體驗。它具有三部分功能:一是編輯功能,可以進行命令與過程的編輯,使學生們了解成年人是怎樣進行文字編輯工作的;二是驅使海龜移動業繪出各種圖形的功能,即海龜作圖功能;三是字表處理與數值處理的功能。
LOGO語言是一種結構化程序設計語言。它是互動式的,為人們提供了良好的編程環境;它不僅具備多種優秀程序設計語就能掌握LOGO的基本繪圖指令,高年級學LOGO程序設計自然不是難事。
LOGO語言具有如下的特點:
1.LOGO語言具有豐富的畫圖功能。為了激發初學者尤其是孩子們的興趣,設計了一隻可活動的“海龜”(turtle),各種有趣的圖形恰是它爬行的軌跡。LOGO語言中有著許多海龜動作的命令,如forwardx表示海龜向前走x步,righty表示海龜向右轉y度。用海龜作圖,使孩子們從中學到許多形象直觀的幾何知識。
2.LOGO語言具有表(List)處理能力。表是一種不同於數和字(word)的特殊數據結構,它由數、字和表本身排列而成的。有了表處理功能,就很容易編製處理句子(Sentence)和字的程序。
3.LOGO語言具有很強的人機對話功能。每當給出一條LOGO命令,它都能及時響應和作出回答。這不僅激發了初學者的興趣,還樹立了他們學習的信心。
4.LOGO語言編寫的程序是模塊結構的。程序員可以把一個程序分為若干個稱之為“過程”的模塊。模塊的獨立性很強,既能獨立編製、獨立調試和修改,又允許在不同的過程中使用同名變數而不會相互混淆。程序員用LOGO固有命令定義了一個過程以後,該過程名(及其參數)就可作為用戶定義的命令,和LOGO固有命令一樣可供程序員使用。這種以LOGO固有命令為內核,逐步向外擴充LOGO命令的數量與功能的方式,體現了LOGO語言的可擴展性。
5.LOGO語言的過程可遞歸調用。利用這個特性,就能夠方便地編製出高水平的、複雜的結構化程序。
6.LOGO語言中的變數允許以任意類型的數據賦值。不象BASIC語言,在字元型變是的名字后加後綴“$”,也不象其它高級語言,要預先說明變數的類型。即使是同一個變數,也可以先後賦以不同類型的值,使用起來非常靈活方便 。
首先,程序設計教學要遵循教學過程的一般規律和基本原則。只有遵循教學的一般規律才能增強教學工作的效率和質量,只有遵循正確的教學原則才能幫助教師創造教學的有利條件,從而達到預定的教學目的並獲得良好的教學效果。
其次,LOGO語言符合小學生的年齡特點,也是比較通俗的計算機語言。LOGO語言的學習要為今後複雜軟體工程的程序設計奠定基礎,在教學中要滲透結構化程序設計的思想。LOGO語言的教學要突出程序的結構,要突出程序設計自頂向下逐步求精和模塊化的基本方法,以及程序模塊中只使用順序、選擇和循環三種基本結構。這樣,不管程序中包含有多少個模塊,它仍然具有清晰的結構。結構化程序設計的過程也就是對學生思維進行訓練的過程。結構化程序設計的訓練不僅可以讓學生養成良好的程序設計習慣,而且可以培養學生思維的條理性和邏輯性 。
1、LOGO for Windows 10
這是應用在PC計算機上的基礎的LOGO語言。與中華學習機、APPLE2型等計算機上使用的LOGO語言相差不多,主要是通過控制繪圖區中央的小海龜來繪製幾何圖形。
2、通用LOGO
這一類LOGO語言是在基礎型的LOGO語言上發展起來的。它的最大特點是利用基本命令控制機器人的前進、後退等動作,使機器人能按照命令完成不同的動作。
3、易樂谷
易樂谷是在基本LOGO語言中發展出來的。其特點是圖形化界面、全中文菜單、有三維版本。在後續版本中甚至可以不用鍵盤輸入|命令,只用滑鼠就可以控制繪圖人物的前進、後退、左轉、右轉等動作。
4、CX-LOGO
CX-LOGO進一步增加了很多功能。其特點是中文界面、可換主題人物、流程圖編程、多對象和多任務的工作方式。此外還有三維版本和虛擬控制機器人 。
運行LOGO語言需要一個較大內存容量的解釋程序,因此最早開發LOGO語言的工作是在大型計算機上進行的。但隨著微型計算機的迅速發展和性能的提高,也其備了運行LOGO語言的條件。最先在在Apple Ⅱ型機上配了LOGO語言,現有計算機大多可運行LOGO語言。美國不少計算機公司正努力是LOGO語言幫助成年人熟悉電腦技術。
LOGO語言的教學能幫助學生掌握計算機的基本操作,理解有關概念,豐富學生的觀察力和想象力,能訓練他們的邏輯思維和抽象思維能力,進一步激發學生學習計算機的興趣。LOGO語言具有模塊化的程序結構和遞歸的特點,形象和直觀性強是它的一大特色。LOG0語言的教學,在普及小學生計算機知識,激發小學生學習計算機的興趣,培養和訓練學生的思維能力,發展他們的智力及創造力等方面都能起到積極的作用。
繪圖是LOGO語言中最主要的功能,佩伯特博士就是希望能通過繪圖的方式來培養學生學習電腦的興趣和正確的學習觀念。LOGO語言從開始發展到現在,已有Windows版本——MSWLogo,包括Windows 3.X版及Windows9X版等。在以前的LOGO語言中有一個海龜,它有位置與指向兩個重要參數,海龜按程序中的LOGO指令或用戶的操作命令在屏幕上執行一定的動作,現在,圖中的海龜由小三角形所替代。上世紀90年代,台灣推出繁體版的LOGO語言,稱之為:【葛拉堡/Gerlabau】,其後大陸也推出了中文化的LOGO語言,分別是“易樂谷/ELOGO”、“創新CX-LOGO/微世界”和“Flash版Logo語言”,發揚了中文編程的優勢。
“易樂谷ELOGO中文編程系統”由大連大有吳濤易語言軟體開發有限公司出品的漢語編程工具易語言開發的,是一個以LOGO語言語法為基本語法規則,易語言中文化為實現目標,以流程圖為教學輔助,提供幼兒園、小學、退休人員及小學教學師作為入門級學習編程的一種簡單工具。本程序由大連大有吳濤易語言軟體開發有限公司向幼兒園、小學校、教師、退休人員等編程愛好入門者提供。
CX-LOGO語言是一種結構化程序設計語言。它是互動式的,為少年兒童提供了良好的編程環境。
CX-LOGO語言獨創的流程圖工作方式和過程庫的建立,可方便的使用“搭積木”的方法,構建“知識”,使學習更容易、操作更簡便,學生只需簡單的學習就可以操作。
CX-LOGO語言不僅具備多種優秀程序設計語言的優點,而且更接近自然語言,生動有趣,簡單易學,它能用直觀的運動來體現編程的結果,讓少年兒童在遊戲中進行思考,在趣味中學習,深受少年兒童的歡迎。通過CX-LOGO語言的教學,以學習一種“玩具”為出發點,可以培養學生學習計算機的興趣,使他們初步了解計算機是如何工作的,為他們今後學習其他高級程序語言設計鋪設道路
CX-LOGO語言是專為中國少年兒童開發的創新平台,孩子們可以在電腦上指揮七色瓢蟲移動、轉向、行走、發光、響應外界刺激等。這些具有創造性的學習工具所倡導的“做中學”的學習理念,非常適合課堂教學,極大地激發了孩子們學習的興趣。
Flash版LOGO語言是用Flash的As3語言編寫的程序,模擬了PC-Logo語言中適合中小學生學習的命令,保留了過程、遞歸等重要概念,簡化了一些格式要求,比如變數前不用加冒號和引號等。可以讓學習過PC-Logo語言的學生快速接受。
在成功模擬Logo語言的基礎上,填加了模擬智能機器人的命令。可以用已畫好的圖形轉變成特定的機器人運行所必須的場地,比如可以圖形變火焰,圖形變障礙物,圖形變水波等,可以實現機器人走迷宮,機器人滅火,機器人彈球等。
由於模擬機器人的命令簡單易學,簡單幾條命令就可以實現有趣的機器人走迷宮,而且機器人的探測器是如何工作的也是簡單明了,為以後實戰機器人奠定基礎。
Flash版Logo語言是位一線教師根據多年教學Logo語言的經驗,花費三年多時間,在Flash As3 平台下編寫的,由於是Flash版的,它可以在網頁上運行,只要是支持Flash的系統都可以運行,比如現今在平板和手機上流行的安卓系統都可以運行,以後可以隨時隨地編寫程序玩了。
我們在下面介紹一些LOGO語言中最基本的繪圖命令:
1.與移動有關的指令:“前進”、“後退”和“歸位”。前進命令可讓海龜前移一定的單位數,例如:執行“FD(前進,forward的縮寫) 50”命令后,小海龜則會向前移動50個單位;後退命令則可讓小海龜向後移動,如果執行“BK(後退,back的縮寫) 50”命令,那麼小海龜的方向不會發生改變,而會向後退50個單位;執行歸位命令后,不論當前小海龜的位置及方向怎樣,它就會乖乖地回到繪圖區的中央位置,並且朝向屏幕的正上方。
2.與轉彎有關的指令:“右轉”和“左轉”。右轉命令可讓小海龜按要求向右邊轉動一定的角度,例如:執行“RT(右轉 ,right的縮寫) 45”命令則小海龜的朝向將向右轉動45度角;而執行“LT(左轉 ,left的縮寫) 45”命令則小海龜的朝向將向左轉動45度角。這兩種命令可以驅使小海龜繞其中心旋轉一定的角度。
3.與控制有關的命令有REPEAT(重複)、IF…THEN…ELSE…(條件執行)等。如執行REPEAT 4[FD 200 RT 9O]就能畫出圖2中的正方形,如果直接將移動命令和轉彎命令相結合,則寫出的語句就比較多,但都是一些重複地使用4次“FD 100”和“RT 90”命令。
LOGO語言之所以是兒童學習計算機編程最好的一種語言,就因為它是針對兒童而製作的編程語言,能使兒童在認知與技能上得到較大的發展。LOGO語言具有較強的針對性,因為對於兒童來說,“畫畫”比“文字處理”更具有活力,充分發揮自己的想象進行創作,而文字處理卻比較枯燥,不適合兒童。LOGO則主要用於“圖畫”製作,並且採用了“海龜繪圖”的方式,適合兒童的特點,能充分引起他們的興趣和學習該門語言的積極性,達到寓教於樂的目的。在LOGO語言中,它的作圖方式與現在所用的作圖軟體不一樣,主要區別就在於LOGO語言的基本作圖的方法可以不採用坐標方式,而是通過向前,後退、向左轉、向右轉、回家等兒童易於理解的語言和命令,這非常適合兒童的知識水平,使這些還未接觸坐標為何物的兒童更容易上手。在用LOGO語言作圖時,需要學習者對一些常見的幾何特性進行理解,了解常用的距離、角度和度數的概念。
但是logo語言的功能不止於此,它擁有許多語言不可替代的作用,比如強大的計算能力、先進的視窗理念,並且logo語言的許多理念是可以代表著人類發展的規律的,學習這些,可以讓人變聰明。
一般的編程語言都需要編寫程序,當然,LOGO語言也不例外。由於指令容易輸入錯誤,不易修改且無法保存,更不能重複使用,如果需要重新繪製相同的圖形,那麼必須輸入與以前相同的指令,並且這些曾輸入的指令不能加以組合。至於程序的內容,是由解決問題的步驟所需要的指令組合而成的,需由設計者賦予該程序以名稱,以供識別。使用LOGO語言作圖,雖然可以通過命令行方式進行,但這僅針對初學LOGO語言時,可以開始學一些常用命令,作出一些簡單的圖形,以引起兒童的興趣。在對命令比較了解及熟悉以後,就可以進行針對性地學習一些簡單的程序編寫,作出更加漂亮的圖形。下面我將以MSWLogo V6.4為例來介紹如何建立一個程序的基本語法:
1.作為一個程序是以“起始”為開始,“終止”為結束。當選擇“編輯新程序”時,在程序編輯區中將會出現以下的字元,供程序者填入相應的命令。
To(起始)程序名稱N //修改程序名稱以供識別
(過程體)
End(終止)
2.繪製不同大小的圖形時需要選擇不同的參數,所以使用者在設計程序時,需要使用一個比較適合的並有意義的名稱來代表,傳給參數的數值資料不同則執行結果也就不同,並且程序在執行過程中,也會不斷地變化參數的內容。在選擇參數時,需要在參數名稱前面加上冒號,用來與一般程序中的命令區別開。如:
起始 程序名稱 N :參數1:參數2… //定義列
…………….
Repeat:參數 1[Forward:參數2…] //輸入解決問題所需的命令
…………….
終止
當程序內容含有參數時,必須將所有參數寫在定義列之後,以便執行時能接收必要的資料。
3.IF…THEN…ELSE…條件執行語句
基本格式為:IF條件表達式THEN [命令行1] ELSE [命令行2]
[命令行3]
當條件表達式:成立時,執行[命令行1]內的命令;不成立時,執行[命令行2]內的指令;在執行完[命令行1]或[命令行2]之後,則繼續執行[命令行3]
DRAW - 清屏、海龜回起點位
CLEAN清除基本命令
CS 清屏並複位
CT 清除先前所有文字
FD 前進
BK 後退
RT 右轉
LT 左轉
PU 抬筆
PD 落筆
HT 隱龜
ST 顯龜
HOME - 回出發點
Repeat - 重複
SS 圖文混合屏
FS 全圖形屏
TS 全文字屏
ND 全文字屏、清屏
WRAP - 環繞狀態
WINDOW - 窗口狀態
FENCE - 圍欄狀態
SHOW - 屏幕輸出
TT - 在畫圖區顯示文字
TO……END - 過程頭、尾
IF…THEN…STOP-如果……那麼……停止
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碼值的字元