2012年6月12日 星期二

周蟒積木版範例(一)

要驗證積木版這個概念行不行得通,就是把之前寫的咬一口周蟒的範例拿來再做一遍,看看能不能跑

下載與安裝 https://code.google.com/p/zhpy/wiki/DownloadInstall

學習程式的第一個範例 https://code.google.com/p/zhpy/wiki/ExampleHello



不用安裝,直接到 http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html 執行

開了就是預設的編輯器。也不用適應額外的編輯器

Hello world 範例如下

學習過程中不用再去學習quote、留白。要看「印出」語句的功能,只要將滑鼠移到對應積木上一陣子,就會出現功能說明(英文)。


基礎觀念 https://code.google.com/p/zhpy/wiki/BasicConcept

印出變數範例如下


不需記憶有哪些運算元,要字串或數字時,從對應的積木區塊中挑選即可。

目前版本的缺點是不支援copy/paste積木,每個積木都得從積木區塊中選取。


運算符號和表達式 https://code.google.com/p/zhpy/wiki/OperatorExpressions

算面積與周長範例如下


「建立字串使用」積木比較要稍微學習一下,但還算容易使用。


控制流程 https://code.google.com/p/zhpy/wiki/ControlFlow

猜數字範例如下


2012/8/19更新) 新版本的輸入積木支援預設輸入型別(數字或文字):



在javascript上執行正常,但因為缺乏型別轉換(type conversion),產生的python script少了一個"int",不正確。

猜數字迴圈範例如下


迴圈的使用效果讓我印象很深刻。

for迴圈範例如下


看起來還不錯。

輸入範例如下

運作良好。


在試驗範例的過程中,我也根據實際使用修正了一下語句,現在應該更接近周蟒了。

因為不需要考慮輸入簡易度,「停止」(break)迴圈的另一個選擇是「繼續下一個」(continue)迴圈,比原本周蟒的「繼續」(continue)語句顯得更直白一些。

2012年6月9日 星期六

加入'輸入'積木


周蟒積木版在「字串」分類中加上「輸入」積木,現在可以做文字互動遊戲啦。

但因為目前generator的限制, 現在只能用變量來接兩個語句,不能嵌套著用。



畫面右側也多加入了儲存/載入按鈕,但目前只有在Chrome瀏覽器上測試過。

可讀性

Programs are meant to be read by humans and only incidentally for computers to execute
- Don Knuth

周蟒積木版


周蟒積木版 集各種不實用編程(中文編程+視覺化編程)於一身 XD
透過拖拉積木的方式編程,結果可輸出為Python, Javascript等語言,並可在網頁上執行即時查看結果。


http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html

這個版本是基於google blockly製作的, 

http://code.google.com/p/google-blockly/

為了支援中文編程,我協助 blockly 的 developer : 
* 將messaging抽出,方便i18n化
* 支援non ASCII變量名
* 加入在網頁上直接執行(透過javascript)功能

這些改進都已經commit進Blockly svn裡了。

周蟒積木版跟周蟒的關係主要體現在
* 目標都是中文編程
* 盡量使用和周蟒一致的變量名
* 一樣可輸出Python

有興趣的朋友可以試玩看看


與周蟒相比,周蟒積木版免去了打程式碼的功夫、
能透過web使用,並提供更多種語言輸出(javascript,python)
也許會對教小朋友學編程更有幫助?

2011年6月25日 星期六

周蟒支援Python3!

今天參加完Pyctw 2011活動後,發佈了相容python3的周蟒3.0.0a1

版本代號 Tusk (獠牙)

http://pypi.python.org/pypi/zhpy3/

可以在python3環境使用

$ easy_install zhpy3

命令來安裝

所有之前周蟒的範例都能執行

http://code.google.com/p/zhpy/source/browse/#hg%2Fzhpy3%2Fexamples

目前周蟒3.0.0a1版和原周蟒(2.x)相比,還不完整,目前的特性有

  • 僅支援腳本執行
  • 不支援匯入中文模組
  • 不支援interpreter
  • 不支援轉換成Python腳本


歡迎有興趣的人參與進來,學習python3的同時,也協助後進還不太懂英文卻想學寫程式的小朋友 :)
http://code.google.com/p/zhpy

2010年1月13日 星期三

溫度換算(流程導向與物件導向)

最近天氣冷到爆。身在國外的同事問台灣這邊的氣溫。由於法國那邊報出來的溫度是用華氏(F)來表示,而在台灣這是用攝氏(C)來表示,所以報給他的溫度得要先轉換一下再告訴他。

剛好想起來很久沒寫文章了,就拿這個狀況題,來當做解釋流程導向與物件導向不同的例子吧 :)


首先把國小物理課中所教的溫度計算轉換式寫出來,就是

華氏溫度 = 攝氏溫度 * 9 / 5 + 32

上面這段是正確的周蟒程式,打開周蟒直譯器就可以直接得到運算結果 :)


若是要重用這個運算,寫成程式碼式很好的方式。如果套用流程導向方法來寫程式,就是包成一個函式來用:

定義 轉換成華氏溫度(攝氏溫度值):
    返回 攝氏溫度值 * 9 / 5 +32

在使用時,只要呼叫

華氏溫度 = 轉換成華氏溫度(攝氏溫度值)

就可以得到結果。

如果是套用物件導向方法,則是把上述的函式跟提供的值包在一起,可以這麼寫:

類別 攝氏溫度(物件):
    定義 __初始化__(我, 溫度值):
        攝氏溫度值 = 溫度值 
    定義 轉換成華氏溫度(我):
        返回 攝氏溫度值 * 9 / 5 +32

使用時呼叫

現在溫度 = 攝氏溫度(9)
華氏溫度 = 現在溫度.轉換成華氏溫度()

也可以得到相同結果。

2009年12月7日 星期一

周蟒 1.7.3 發佈

周蟒 1.7.3 (代號 審判) 已發佈。可前往網站下載, 或使用

easy_install -U zhpy

命令來更新。


版本控制改用 Mercurial,支持「自个儿」語句。