2016年9月28日 星期三

從撲克牌談程式語言中的一些觀念

假設有十三張的撲克牌如下圖:
我們可以由左而右依序排入牌面點數為 A、 2、3、4、5、6、7、8、9、10、J、Q、K的,也就是從最小點數A開始找起,找到A後,將它放左邊數來第一個的位置,找到2後,將它放到左邊數來第二個位置,其餘的點數依照相同作法,如下面兩張圖所示:
 
上述將這十三張牌由小排到大的方法就是程式語言中演算法中的排序(Sorting)。那麼除了此方法外,還有沒有別的方法可將為排序的十三張牌排好呢

在玩撿紅點、九九等遊戲時,我們都會從牌疊上由上往下一張一張抽,這個動作和資料結構堆疊(Stack)的pop動作(取出堆疊頂端之資料)正好一樣;在玩撿紅點或九九的時候,我們會做一些加或減的數學運算,而這也是程式語言中的基本運算之一。玩比大小的遊戲時,也是在學習程式語言中的比較運算,也因此在下覺得用撲克牌來引入程式語言的觀念會比用Scratch更適合吧

會玩多種不同遊戲撲克牌的人,其實都具有一些基本程式語言的邏輯觀念。我們生活周遭有很多跟程式語言的邏輯觀念有關,等著大家去發現。