這節課我們來了解下流程圖和偽代碼。
孩子學編程了,很多家長都說:“我的孩子會寫軟件了,會編程了”。但是什麼是軟件?什麼是程序?
![少兒編程系列-Scratch初級教程:第五課-流程圖和偽代碼](http://p2.ttnews.xyz/loading.gif)
what?
恐怕就是學了很久的Scratch的孩子也說不上來吧。今天我們就通過這些問題來進行一些瞭解。
1.程序與算法
首先什麼是軟件?
軟件=計算機程序+文檔資料。
可見一個完備的可以解決實際問題的系統,我們可以叫做它計算機程序,而設計說明、用戶手冊、輸入輸出這些東西我們可以稱為文檔資料。
那什麼是程序呢?
程序=數據結構+算法+程序設計方法+語言工具和環境
舉例來說,我們要篩選出今年6月1日之前還不到10歲的小朋友,並在六一兒童節給他們一個特別的禮物。如何通過計算機程序來幫助我們完成這個工作呢?
簡單的說一份學生名單(包含了學號、學生姓名、出生日期)就是我們要處理的數據結構,這個結構是一張表格;從學生名單中挑選出6月1日之前還不到10歲的小朋友,用循環的方式一個一個從學生名單裡挑選,這是我們的算法;那麼輸入、處理、輸出這個過程我們叫程序設計方法;使用Scratch或者Python來實現我們的程序設計,叫做語言工具和環境。
2.什麼是算法以及為什麼要學習算法?
算法是對特定問題求解步驟的一種描述。算法是計算機科學的基礎,是程序的基石。
舉個例子來說,學生常見的雞兔同籠問題,它有幾種解決方法呢:
公式1:(兔的腳數×總只數-總腳數)÷(兔的腳數-雞的腳數)=雞的只數 總只數-雞的只數=兔的只數
公式2:( 總腳數-雞的腳數×總只數)÷(兔的腳數-雞的腳數)=兔的只數 總只數-兔的只數=雞的只數
公式3:總腳數÷2—總頭數=兔的只數 總只數—兔的只數=雞的只數
公式4:兔總只數=(雞兔總腳數-2×雞兔總只數)÷2 雞的只數=雞兔總只數-兔總只數
公式5:雞的只數=(4×雞兔總只數-雞兔總腳數)÷2 兔的只數=雞兔總只數-雞的只數
公式6 :4×+2(總數-x)=總腳數 (x=兔,總數-x=雞數,用於方程)
上述的6個公式其實就是算法,如果掌握了這些公式,無論題目怎麼變化,我們都可以很快速的用其中一種方式解答出問題的答案。
算法是基礎,算法能夠提升智力。就軟件開發行業來說,懂算法的人多走的是架構師的路。把基礎掌握牢,有高於一般人的認知水平,能夠類比別的領域的相似事物去學習,擁有不錯的智力,學習能力自然就強了。
3.算法的表示方法
我們用了什麼來描述上面雞兔同籠的算法?用的是自然語言。
我們編程的過程大部分是在實現算法的過程,那麼算法都有哪些表示方法呢?
常用的有:自然語言、流程圖、偽代碼。
4.流程圖
流程圖(Flow Chart):使用圖形表示算法的思路是一種極好的方法,因為千言萬語不如一張圖。
流程圖有如下基本符號:
![少兒編程系列-Scratch初級教程:第五課-流程圖和偽代碼](http://p2.ttnews.xyz/loading.gif)
流程圖基本符號
流程圖怎麼用?
例子:要求輸入兩個數,交換他們的值,用流程圖表示該算法:
流程圖
那麼請思考一下下面這個流程圖做了什麼?
流程圖
上面的流程圖是求ABC三個數中的最小數。
5.偽代碼
偽代碼是用介於自然語言和計算機語言之間的文字和符號來描述算法。目的是為了使得被描述的算法可以容易的使用任何一種編程語言實現。
偽代碼的書寫規則:
算法的開始和結束,使用begin和end來表示。
輸入和輸出,使用read和write來表示。
指令的表示,可以用文字來表述,是為了避免與主要問題無關的細節使算法雜亂無章。
賦值符號:用箭頭符號或者等號,例如:ab
分支判斷:用if ... then,如圖:
分支判斷
循環語句:包括計數循環和條件循環,如圖:
計數循環
計數循的環循環次數=終值-初值+1,from可以用=來代替
條件循環如圖所示:
條件循環
流程圖和偽代碼一起使用對比,例如已知圓的半徑為r,計算圓的面積:
流程圖和偽代碼
6.使用Scratch實現算法
現在我們用Scratch來實現上面用流程圖和偽代碼表示的算法
(1)、新建一個作品
新建作品
(2)、新建一個變量,名稱為“圓的半徑”
新建一個變量
將便令命名為圓的半徑
(3)、編寫代碼
第5課完整代碼
(4)、運行代碼
運行代碼
我們輸入5以後點擊對勾,小貓就立刻將計算結果說出來。
運行結果
同樣的道理,如果我們在編程之前,先用流程圖和偽代碼將我們的算法寫出來,然後再用編程工具去驗證我們的算法,你會發現編寫程序非常簡單,完全按照流程圖和偽代碼去走,幾乎就成了純體力活,只需要拖拽積木過來就行了。可見流程圖和偽代碼對我們解決問題的邏輯思維上起了很大作用,在後面的課程中,我將延續這種做法,在編程之前先畫流程圖和偽代碼,然後再編程。
課後練習:
將你遇到的數學問題,用流程圖和偽代碼先畫出來,然後再用Scratch去編程並驗證您的流程圖和偽代碼的正確性。
這節課程就到這裡,下一節課程我們講解 “運動”模塊,通過運動模塊,來對Scratch舞臺區的座標系統進行進一步的認識。
閱讀更多 碼農傑哥 的文章