Pages

20/12/2017

Kids Programming Kids Code 10

今天就說一說較早時候google 為慶祝Kids Code 10周年 推出的 Doodles


去玩遊戲
https://www.google.com/doodles/celebrating-50-years-of-kids-coding



背景

Google Doodles (Google 塗鴉),是為慶祝節日、紀念日、成就以及紀念傑出人物等而對Google首頁商標的一種特殊的臨時變更。
回到那裡,杜芬宅Coding好像也沒有10年,那是什麼一回事?
由奧巴馬開始,在美國大力推行人人Programming,不論大人、小孩、長者。近年來,那熱潮傳到亞洲多個地區。
坊間很多興趣班或學枚提供的課外活動,與這有關的便是LEGO機械人。一套上千元,
中小學生難以負擔的一件教材,所教的就是Kids Programming。
杜芬宅首次接觸的是一代︰lego mindstorms RCX
有朋友帶過二代給杜芬宅玩︰lego mindstorms nxt 2.0
現在已經到了第三代,老了,杜芬宅老了︰lego mindstorms ev3

答案

為什麼推出那些課程,小孩子學Programming有用嗎。
因為末來的趨勢,在短時間內離不開電腦,所以編程是一門不怕失業的職業,在可預見的將來,應該是吧@_@

LEGO機械人,主要是訓練寫程式的思考模式、概念、技巧。懂得寫程式可以製作電腦軟件,手機程式……

不過以杜芬宅『多年』的編程經驗,LEGO機械人只是件沒什麼用的玩具。
因為有很多網上資源就可以學習相關課題,而且是免費,非必要學LEGO機械人。

Q1 ANS


Q2 ANS


Q3 ANS


Q1 ~ Q3 的答案都是很直接的,你一看便懂。
唯獨Q3 提出了一個在程式很重要的概念,當人類需要在程式進行重覆的動作時,不需要重覆寫同一段的程式很多次。只需要寫一次,然後命令執行幾次。
即是LOOP 的概念。

Q4


那個好似好難,但吾等要進入程序猿的思考模式。首先程序猿都是超懶惰的,不,應該是很多人包括杜芬宅都是超懶惰的。所以你可以寫成叫免子
→→↷→→↷→→↷→→
→→↶→→↶→→↶→→
但杜芬宅絕對不會那樣寫,因為杜芬宅超懶惰的。
立即想到以上22步的解法後,首先要想得簡單一點,圖中可以看見兩個正方形
一個正方形可以由
→→↷→→↷→→↷→→
簡化成
『→→↷』重覆4次

如果免子站的位置正確,兩個正方形都可以重用那一段,所以當完成以上動作時,需要修正免子面向的方向

Q4 ANS

→→↷』重覆4次重覆2次

Q5


那個田字的物體,即是四個口組成。
每個口都能以
『→→↷』重覆4次
攻略完成

不論免子站在1/2/3/4只要面向紅字箭頭的方向,都可以使用以上方法走完
當免子站在2位置時,只要面向左邊或2點鐘方向(太懶不改圖,自行想像)。
就同樣能以上方法走完所以只需走完以上後轉一次左。
然後它是旋轉對稱的,解決!


Q5 ANS


Q6


找出重覆的地方,是一個4x3的長方體。
即是
『→→重覆2次
可以走完4x3的長方體
假設免子在點1開始,執行以上走完紅線後回到起點,往點2開始
再執行一次即是會走綠線。


Q6 ANS v1

根據以上的思考,將走一次4x3的長方體。
『→→重覆2次
寫成了
重覆3次 重覆2次重覆2次
所以解法如下。
重覆3次 重覆2次重覆2次 重覆4次
但並不是最短

Q6 ANS v2

之後想了想,取巧一點,故意寫成︰
假設免子在點1開始,
但是一直重覆走
→→
有些位置只有兩格,寫成前進三格,即使免子想往前跳第三次,但結果會停在原地。
→→重覆2次
所以好像不用特別寫出去處理
可以簡化一點,結果以下︰


Q6 ANS v3

根據 v2 的結果,走法巧妙地達到理想的結果。
所以最後簡化成成功,雖然有點誤打誤撞,但是下班後的程序猿活動能力是差一點的了。


小結

LOOP 是編程其中一個基本概念,還有一個叫IF的概念。即是如果,
以日常生活舉例,成績表上會列印分數,學科的分數不合格會以紅字或括號表示。

例設 分數滿分為100分,40分或以上合格,40以下即0-39分不合格。
那種情況就會需要使用IF

程式的邏輯是

IF 分數 >=40
顯示 分數
IF 分數 <40
顯示 分數在括號中

所以IF在任何時侯也有很大機會被用到,為什麼那個遊戲沒有IF?
因為如果有,就太簡單又很無聊。
如果有IF,6關也可以使用同一段程式把所有路走完。
試問那一段程式如何寫?

隨此之外,小朋友編程的玩貝/教學大多以flowchart、pseudocode 形式進行。
那些本來就是給程序猿菜鳥去更易理解,思想,建立解決方法的工具。

現在亦有不少以遊戲學習,不可能叫小學生對著真的程式~!@#$%^&*()_+,因為太沒趣味不能剌激官感。
在此推薦一下其它小孩子編程的網上資源,真是免費的。

CodeCombat

那個要大推一下,看畫面不會知道是以教導小朋友寫程式的遊戲。
https://codecombat.com/



ANS

最後公報以上IF的答案

IF 前方有紅蘿蔔→
IF 前方沒有紅蘿蔔↷重覆9999999次

那當然需要遊戲本身支援,可以提供前方有或沒有紅蘿蔔的信息

No comments:

Post a Comment