程式語言基本概念、功能及應用2


為何要學程式設計?

解說:

程式設計能力是未來新的"讀寫算能力", 是一項重要而又基本的技能

1.資訊科學改變世界一切事物

軟體吃掉全世界(資料比油田更重要)

2.增進培養「運算思維」及「邏輯思維」能力,做事更精確、有效率

https://www.managertoday.com.tw/articles/view/55799

資料來源:https://learn.hnvs.cy.edu.tw/mod/url/view.php?id=7490&forceview=1

3.提高升學競爭力或社會競爭力

學程式設計的目的不是一定要當資訊工程師或程式設計師,而是學習資訊科學的運算邏輯思維解決問題

程式設計觀念溝通

1.寫程式是一種技能(技術) 需要實際動手操作 才能累積一手經驗 就像食譜書不是看完就會做菜要真的去做實際做菜

2.為何使用別人寫的程式很簡單.但自己設計卻很困難

3. 程式設計是實踐運算思維的一種手段.而各種程式語言只是一個工具或媒介來達成其目標

4.有人說: 程式語言成必備技能,專家:不一定要會寫,但至少要懂.

(1)不實作, 怎會懂? 怎能解決問題? 怎能培養解決問題的能力?

(2)不會寫程式, 怎會懂程式設計?

(3)學習程式設計, 至少必須了解: 程式語言/工具環境, 程式設計方法, 演算法, 資料結構, 這些都必須讀書和實作.

(4)沒有實作配合的"運算思維", 只是個笑話.

(5)自以為懂, 其實只是假懂, 缺了實作, 真懂很難做到

(6)不實作, 怎知錯?

(7) 實作, 才知不足!

(8) 實作, 才會有樂趣!

資料引用:臥龍小三FB


程式設計核心-運算思維(Computational Thinking)

教導運算思維重要觀念:

要學好運算思維與程式設計,是需要大量且長時間的思維訓練方得以畢竟其功,不要把國、英、數、社、自等課程減少時數來上程式設計?喔!不!千萬不要這樣做!這有幾個非常重要的理由:

1.每個人的資質不同,不是每個小朋友都適合進行這種抽象的程式訓練,如果他沒有興趣或學起來痛苦,就不要強迫他學吧!教育的本質是啟發與引導,而不是用大人對未來的思維,然後強加到這些幼苗上。

2.這裡要再次強調強調再強調基礎知識的重要,就以數學為例,一位加減乘除都不會的小朋友,別期望他會用電腦來設計程式;不知道月形變化的學生是無法設計出依月形自動判斷日期的程式!基礎知識不管是運算思維或是程式設計或是其它更多更複雜的學習,就像是大地一樣,支撐著未來可能的所有一切!

3.讓學生能夠在一般的課程中,日復一日年復一年的反覆訓練(無形中無意中),才能讓學生能夠『直覺的反應』,這樣才能具備將問題程式化的能力。學習系統化解決問題,並具備實踐創意的能力。

4.教學生寫程式,不代表他們就有運算思維,反過來說,懂運算思維不見得會寫好程式,那又如何?話說寫程式也只是初步,資訊世界還很寬廣,如果懂得資訊世界的運作,心中有運算思維之後,或許有人會想閱讀程式去更加理解資訊世界。

完整概念

1.計算(運算)概念

計算是指“資料”在“運算符號”的操作下,按“規則”進行的資料變換。 簡單的例子:從小時候開始學習和訓練的算術運算,如“1+2=3”到國中較複雜的例子:對 ax2+bx+c=0 方程式求解等.由

算盤----->>-----加法器-->>-----計算機-->>----電腦---->>-----雲端

2.科學與思維

一般而論,三種科學對應著三種思維:

a.理論科學 ←→理論思維: 理論思維又叫推理思維,以推理和演繹為特徵,以數學學科為代表。

b.實驗科學 ←→實驗思維: 實驗思維又叫實證思維,以觀察和總結自然規律為特徵,以物理學科為代表。

c.計算科學←→計算思維: 計算思維又叫構造思維,以設計和構造為特徵,以電腦學科為代表

3.CT的概念

(1)提出計算思維的周教授觀點

CT的本質是抽象(Abstract)自動化(Automation)。它是如同所有人都具備“讀、寫、算”(簡稱3R)能力一樣,都必須具備的思維能力。

英文期刊https://www.cs.cmu.edu/~15110-s13/Wing06-ct.pdf

(2)生活和電腦中通用的思維模式

既然某個思維模式在電腦科學中可執行的,那麼如果能夠用它解決生活問題,說明該思維模式在生活中同樣是可以執行的。因此運算思維就是電腦中和生活中都能執行的通用思維模式。

範例

1.模組化,也是運算思維的一部分。

食譜當中的模組有哪些?「勾芡」就是太白粉加水。「切丁」把食材切成小方塊狀,這同樣是個模組。

2.平行化,在程式設計時,讓程式同時處理類似或互不干擾的流程。而在實驗流程裡,也會這樣做,像是進行某些加熱實驗時,我們會安排在加熱過程中,順道進行別的工作。或是同步測量兩種溶液的溫度,或是同時測量某個燈泡的電流、電壓值。而不是測完一個,再測另一個,理解平行化的同步處理優點,就可以有效率地解決問題。

(3)各種觀點運算思維的定義

圖片來源http://a-chien.blogspot.com/2017/04/6.html

解說:

牛刀小試1

1.模式識別:找規律性

牛刀小試2

2.抽象化:把現實世界中的物件轉到電腦世界的物件,藉由移除不重要細節,降低理解現實世界複雜度


實作1-視覺化程式語言-Blockly

Blockly Games

教學影片

機器人(貓熊)走迷宮

 


第一關主要是讓學生熟悉環境,如果已經有學過 Scratch 的學生應該會很快就上手。把程式積木依說明指示拉進程式區後,可按執行程式。如果還沒過關,可以按「重設」讓主角回到出發點,修改程式後再執行一次。如要移除程式積木,可以把積木拉進指令區或是垃圾筒。


第二關開始加入了「向左轉」、「向右轉」的概念,可以訓練學生的方向感,要完成任務的程式碼也比較多。



第三關開始,加入了一個「重複執行」(迴圈) 的程式積木,老師可以示範原地旋轉。由於程式會限制可以使用的積木數量,所以一定會讓學生使用「重複執行」的積木,只需提醒把向前移動拉進重複的區域中即可。



第四關開始才是真正練習使用「重覆執行」,一共可以使用 5 塊程式積木。老師也許可以先引導不用使「重複執行」積木,只用向前、向左、向右寫程式,來讓學生觀察程式重複性,或用紙筆寫下程式執行步驟。後續再把結論用「重複執行」包起來。


第五關是讓學生可以判斷何時才運用重複執行,何時不需要。例如最前面一小段路,如果重複執行向前移動,主角會一直撞牆,可做為上課笑點,後面引導至長的直路時才使用迴圈的概念。



第六關加入了「偵測」的概念,並且需要「如果…,就執行…」的邏輯判斷,並且刻意設計成只有左轉的路徑。提醒老師,左方有路的偵測積木,裡面是有下拉選單可以偵測「前方有路」和「右方有路」的。還有左、右轉方塊也有下拉選單可用。



第七關的解法不只一種,但最基本的概念有兩種,一種是「摸著左邊的牆走」另一種是「摸著右邊的牆走」,也就是較短路徑的方式。可做為後續較難關卡的一個基礎教學,讓學生仔細觀察兩種走法的不同。



第八關由於沒有叉路,很適合學生自行練習偵測左方有沒有路,或是右方有沒有路。但往往容易遺忘偵測「前方」有沒有路,老師可適時提點一二。另外偵測的順序也很值得讓學生在這關學習測試。



第九關加入了「如果…,否則…」的程式積木,讓整個程式更加複雜困難。還有許多叉路、圓環在混洧視聽。此關,可以讓學生先畫好要走的路線,並加入程式碼後,讓學生練習從腦海模擬程式執行,之後再看程式是否如設想的一樣。是需要 Step by Step 測試的一關。過關後學生邏輯和抽象思考能力會大大提升。



第十關這可以說是 Blockly 中最難的一關。所謂最難,指的是如何在有限程式碼內,找出最短行走路徑的程式邏輯。以下提供一種解答,一開始有提示告訴你可以靠左邊走,所以我們沿著小人左方的路徑,只要左邊有路就先左轉後再移動,沒有左邊的路則往前走,如果左邊和直行都沒辦法,才選擇右轉,走進死路也沒關係只要再走出來即可。

資料引用中央輔導團長安國中呂添仁老師簡報

參考網站