Presentation is loading. Please wait.

Presentation is loading. Please wait.

第1章 程式邏輯、程式設計與Visual Basic的基礎

Similar presentations


Presentation on theme: "第1章 程式邏輯、程式設計與Visual Basic的基礎"— Presentation transcript:

1 第1章 程式邏輯、程式設計與Visual Basic的基礎
1-1 微軟Visual Basic語言與Visual Studio 1-2 程式邏輯、演算法與流程圖 1-3 程式設計的基本步驟 1-4 結構化程式設計 1-5 fChart流程圖直譯工具 1-6 使用fChart進行邏輯訓練

2 1-1 微軟Visual Basic語言與Visual Studio
NET Framework的基礎 1-1-3 微軟的Visual Studio

3 1-1-1 Visual Basic語言的基礎 BASIC是在1964年由John Kemeny和Thomas Kurtz在Dartmouth學院開發的程式語言,這是一種非常簡單且容易學習的程式語言,其目的是讓學生作為學習當時其他更強大程式語言FORTRAN和ALGOL的墊腳石。 2012年推出Visual Basic 2012版,支援非同步程式設計,和Iterators來讓我們更容易走訪集合物件和陣列。2013年的.NET Framework是4.51版,即Visual Studio Express 2013 for Desktop,2015年是4.6版,即Visual Studio Express 2015 for Desktop。

4 1-1-2 .NET Framework的基礎 - 說明
.NET Framework是微軟新世代的程式開發平台,它是由CLR(Common Language Runtime)和.NET Framework類別所組成。我們可以使用.NET Framework支援的程式語言,例如:Visual Basic 、C++和C#等來建立.NET應用程式。 .NET Framework程式檔案在使用.NET編譯程式編譯時,並不是直接編譯成CPU的機器語言,而是一種中間程式語言稱為「MSIL」(Microsoft Intermediate Language)。

5 1-1-2 .NET Framework的基礎 - 圖例
等到執行程式時,CLR使用「JIT」(Just In Time)編譯程式將MSIL轉換成機器語言來執行,其架構如下圖所示:

6 1-1-2 微軟的Visual Studio - 說明
微軟Visual Basic語言的整合開發環境是Visual Studio,它是微軟公司開發的整合開發環境,能夠在同一套應用程式編輯、編譯、除錯和測試Visual Basic等.NET語言的應用程式。 Visual Studio是一套支援.NET Framework的整合開發環境,可以使用C#、Visual Basic、C++和J#等語言來建立Windows、ASP.NET、主控台和Web Services等各種不同的應用程式。

7 1-1-2 微軟的Visual Studio - 圖例
在Visual Studio整合開發環境建立的應用程式是在.NET Framework的CLR平台上執行,如下圖所示:

8 1-2 程式邏輯、演算法與流程圖 1-2-1 程式邏輯的基礎 1-2-2 演算法 1-2-3 流程圖

9 1-2-1 程式邏輯的基礎 – 說明 我們使用程式語言的主要目的是撰寫程式碼建立應用程式,所以需要使用電腦的程式邏輯(Program Logic)來寫出程式碼,如此電腦才能執行程式碼解決我們的問題。 讀者可能會問撰寫程式碼執行程式設計(Programming)很困難嗎?事實上,如果你可以一步一步詳細列出活動流程、導引問路人到達目的地、走迷宮、從電話簿中找到電話號碼或從地圖上找出最短路徑,就表示你一定可以撰寫程式碼。

10 1-2-1 程式邏輯的基礎 – 人類的邏輯 對於人類來說,我們只需檢視地圖,即可輕鬆寫下開車從高速公路北上到台北巿大安森林公園的步驟,如下所示: Step 1:中山高速公路向北開。 Step 2:下圓山交流道(建國高架橋)。 Step 3:下建國高架橋(仁愛路)。 Step 4:直行建國南路,在紅綠燈右轉仁愛路。 Step 5:左轉新生南路。 上述步驟告訴人類的話(使用人類的邏輯),這些資訊已經足以讓我們開車到達指定的目的地。

11 1-2-1 程式邏輯的基礎 – 電腦的程式邏輯 如果將上述步驟告訴電腦,電腦一定完全沒有頭緒,不知道如何開車到達目的地,因為電腦一點都不聰明,這些步驟的描述太不明確,我們需要提供更多資訊給電腦(請改用電腦的程式邏輯來思考),才能讓電腦開車到達目的地,如下所示: 從哪裡開始開車(起點)?中山高速公路需向北開幾公里到達圓山交流道? 如何分辨已經到了圓山交流道?如何從交流道下來? 在建國高架橋上開幾公里可以到達仁愛路出口?如何下去? 直行建國南路幾公里可以看到紅綠燈?左轉或右轉? 開多少公里可以看到新生南路?如何左轉?接著需要如何開?如何停車?

12 1-2-2 演算法 - 認識演算法 如同建設公司興建大樓有建築師繪製的藍圖,廚師烹調有食譜,設計師進行服裝設計有設計圖,程式設計也一樣有藍圖,哪就是演算法。 「演算法」(Algorithms)簡單的說是一張食譜(Recipe),提供一組一步接著一步(Step-by-step)的詳細過程,包含動作和順序,可以將食材烹調成美味的食物,例如:製作蛋糕的食譜是一個演算法,如下圖所示:

13 1-2-2 演算法 - 定義 不只電腦程式,日常生活中所面臨的任何問題或做任何事,為了解決問題或完成某件事所採取的步驟和方法,就是演算法,其基本定義如下所示: 演算法是完成目標工作的一組指令,這組指令的步驟是有限的。除此之外,演算法還必須滿足一些條件,如下所示: 輸入(Input):沒有或數個外界的輸入資料。 輸出(Output):至少有一個輸出結果。 明確性(Definiteness):每一個指令步驟都十分明確,沒有模稜兩可。 有限性(Finiteness):這組指令一定會結束。 有效性(Effectiveness):每一個步驟都可行,可以追蹤其結果。

14 1-2-2 演算法 – 演算法的表達方法 文字描述:使用一般語言的文字描述來說明執行步驟。
虛擬碼(Pseudo Code):一種趨近程式語言的描述方法,並沒有固定語法,每一行約可轉換成一行程式碼,如下所示: /* 計算1加到10 */ Let counter = 1 Let sum = 0 while counter <= 10 sum = sum + counter Add 1 to counter Output the sum /* 顯示結果 */ 流程圖(Flow Chart):使用標準圖示符號來描述執行過程,以各種不同形狀的圖示表示不同的操作,箭頭線標示流程執行的方向。

15 1-2-3 流程圖 - 認識流程圖 對於程式語言來說,流程圖是使用簡單的圖示符號來表示程式邏輯步驟的執行過程,可以提供程式設計者一種跨程式語言的共通語言,作為與客戶溝通的工具和專案文件,事實上,如果我們可以畫出流程圖的程式執行過程,就一定可以將它轉換成指定的程式語言。 所以,就算你是一位完全沒有寫過程式碼的初學者,也一樣可以使用流程圖來描述執行過程,以不同形狀的圖示符號表示操作,在之間使用箭頭線標示流程的執行方向,筆者稱它為圖形版程式(對比程式語言的文字版程式)。

16 1-2-3 流程圖 - 圖例 目前演算法使用的流程圖是由Herman Goldstine和John von Neumann開發與製定。

17 1-2-2 流程圖 - 流程圖的符號圖示 流程圖的符號圖示 說明 長方形的【動作符號】(或稱為處理符號)表示處理過程的動作或執行的操作
橢圓形的【起止符號】代表程式的開始與終止 菱形的【決策符號】建立條件判斷 箭頭連接線的【流程符號】是連接圖示的執行順序 圓形的【連接符號】可以連接多個來源的箭頭線 【輸入/輸出符號】(或稱為資料符號)表示程式的輸入與輸出

18 1-3 程式設計的基本步驟 – 說明 程式設計是將需要解決的問題轉換成程式碼,程式碼不只能夠在電腦上正確的執行,而且可以驗證程式執行的正確性。基本上,程式設計的主要過程可以分成五個階段,如下圖所示:

19 1-3 程式設計的基本步驟 – 需求 需求(Requirements)
程式設計的需求是在了解問題本身,以確切獲得程式需要輸入的資料和其預期產生的結果,如下圖所示:

20 1-3 程式設計的基本步驟 – 設計 設計(Design)
在了解程式設計的需求後,我們就可以開始找尋解決問題的方法和策略,簡單的說,設計階段是找出解決問題的步驟,如下圖所示:

21 1-3 程式設計的基本步驟 – 分析 分析(Analysis)
在解決需求時只有一種解決方法嗎?例如:如果有100個變數,我們可以宣告100個變數儲存資料,或是使用第8章的陣列(一種資料結構)來儲存。 分析階段是將所有可能解決問題的演算法都寫下來,然後分析比較哪一種方法比較好,選擇最好的演算法來撰寫程式。

22 1-3 程式設計的基本步驟 – 撰寫程式碼 撰寫程式碼(Coding)
現在我們就可以開始使用程式語言撰寫程式碼,以本書為例是使用Visual Basic語言。 在實際撰寫程式時,可能發現另一種方法比較好,因為設計歸設計,有時在實際撰寫程式時才會發現其優劣,如果是良好的設計方法,就算改為其他方法也不會太困難。

23 1-3 程式設計的基本步驟 – 驗證 驗證(Verification)
驗證是證明程式執行的結果符合需求的輸出資料,在這個階段可以再細分成三個小階段,如下所示: 證明:執行程式時需要證明它的執行結果是正確的,程式符合所有輸入資料的組合,程式規格也都符合演算法的需求。 測試:程式需要測試各種可能情況、條件和輸入資料,以測試程式執行無誤。如果有錯誤產生,就需要除錯來解決問題。 除錯:如果程式無法輸出正確結果,除錯是在找出錯誤的地方。我們不但需要找出錯誤,還需要決定找出更正錯誤的方法。

24 1-4 結構化程式設計 1-4-1 結構化程式設計 1-4-2 流程控制結構

25 1-4-1 結構化程式設計-說明 「結構化程式設計」(Structured Programming)是使用由上而下設計方法(Top-down Design)找出解決問題的方法,在進行程式設計時,首先將程式分解成數個主功能,然後一一從各主功能出發,找出下一層的子功能,每一個子功能是由1至多個控制結構組成的程式碼,這些控制結構只有單一進入點和離開點,我們可以使用三種流程控制結構:循序結構(Sequential)、選擇結構(Selection)和重複結構(Iteration)來組合建立出程式碼(如同三類不同的積木),如下圖所示:

26 1-4-1 結構化程式設計 - 連接1 每一個子功能的程式碼是由三種流程控制結構連接的程式碼,也就是從一個控制結構的離開點,連接至另一個控制結構的進入點,結合多個不同的流程控制結構來撰寫程式碼。如同小朋友在玩堆積木遊戲,三種控制結構是積木方塊,進入點和離開點是積木方塊上的連接點,透過這些連接點組合出成品。例如:一個循序結構連接1個選擇結構的程式碼,如右圖所示:

27 1-4-1 結構化程式設計 - 連接2 我們除了可以使用進入點和離開點連接積木外,還可以使用巢狀結構連接流程控制結構,如同積木是一個盒子,可以在盒子中放入其他積木(例如:巢狀迴圈),如下圖所示:

28 1-4-1 結構化程式設計 - 主要觀念 基本上,結構化程式設計的主要觀念有三項,如下所示: 由上而下設計方法(前述)。
流程控制結構(第1-4-2節、第5章和第6章)。 模組(第7章)。

29 1-4-2 流程控制結構 - 說明 程式語言撰寫的程式碼大部分是一行指令接著一行指令循序的執行,但是對於複雜的工作,為了達成預期的執行結果,我們需要使用「流程控制結構」(Control Structures)來改變執行順序。

30 1-4-2 流程控制結構 - 循序結構(Sequential)
循序結構是程式預設的執行方式,也就是一個敘述接著一個敘述依序的執行(在流程圖上方和下方的連接符號是控制結構的單一進入點和離開點,循序結構只有一種積木),如右圖所示:

31 1-4-2 流程控制結構 - 選擇結構(Selection)
選擇結構是一種條件判斷,這是一個選擇題,分為是否選、二選一或多選一三種。程式執行順序是依照關係或比較運算式的條件,決定執行哪一個區塊的程式碼,如下圖所示:

32 1-4-2 流程控制結構 - 重複結構(Iteration)
重複結構是迴圈控制,可以重複執行一個程式區塊的程式碼,提供結束條件結束迴圈的執行,依結束條件測試的位置不同分為兩種:前測式重複結構(左圖)和後測式重複結構(右圖),如下圖所示:

33 1-5 fChart流程圖直譯工具 1-5-1 fChart工具的安裝與啟動 1-5-2 建立第一個fChart流程圖

34 1-5 fChart流程圖直譯工具 fChart流程圖直譯工具是一套流程圖直譯程式,我們不只可以編輯繪製流程圖,還可以使用動畫來完整顯示流程圖的執行過程和結果,輕鬆驗證演算法是否可行和訓練讀者的程式邏輯。 fChart流程圖直譯教學工具是使用Visual Basic 6.0語言開發的應用程式,在書附光碟是一套綠化版本的應用程式,沒有安裝程式,我們可以直接在Windows作業系統上執行此工具。

35 1-5-1 fChart工具的安裝與啟動 – 安裝fChart工具
fChart工具不需要安裝,只需將相關程式檔案複製至指定資料夾,例如:「C:\FlowChart」資料夾,【FlowProgramming_Edit.exe】是fChart流程圖直譯教學工具的執行檔。

36 1-5-1 fChart工具的安裝與啟動- 啟動fChart工具(步驟)
在複製fChart工具的相關檔案後,我們可以在Windows作業系統執行fChart流程圖直譯教學工具,其步驟如下所示: Step 1:請開啟fChart工具所在的「C:\FlowChart」資料夾。 Step 2:因為OCX檔案的權限問題,我們需要使用系統管理員身份來啟動fChart工具,請在【FlowProgramming_Edit.exe】圖示上,執行右鍵快顯功能表的【以系統管理員身份執行】指令,可以啟動fChart流程圖直譯教學工具。

37 1-5-1 fChart工具的安裝與啟動- 啟動fChart工具(圖例)

38 1-5-2 建立第一個fChart流程圖

39 1-5-2 建立第一個fChart流程圖

40 1-5-2 建立第一個fChart流程圖

41 1-5-3 fChart的基本使用 – 流程圖符號的對話方塊(輸出符號)
在【訊息文字】欄輸入輸出的文字內容;【變數名稱】欄位輸入或選擇輸出的變數值,例如:運算結果,如下圖所示:

42 1-5-3 fChart的基本使用 – 流程圖符號的對話方塊(輸入符號)
在【提示文字】欄輸入提示文字內容;【變數名稱】欄位輸入或選擇輸入的變數名稱,可以讓使用者輸入資料儲存至指定變數,如下圖所示:

43 1-5-3 fChart的基本使用 – 流程圖符號的對話方塊(動作符號)
在【定義變數】標籤可以輸入欲建立的變數名稱(或選擇存在的變數)和變數值(也可以指定成其他變數名稱的變數值),【算術運算子】標籤是建立數學的算術運算式(目前只支援2個運算元,在中間可以選擇算術運算子),【字串運算子】標籤是建立字串運算式,如下圖所示:

44 1-5-3 fChart的基本使用 – 流程圖符號的對話方塊(決策符號)
在上方中間選擇條件運算子後,可以建立一個擁有2個運算元的條件運算式,在下方框的右上角選擇邏輯運算子AND或OR,就可以連接第2個條件運算式,如下圖所示:

45 1-5-3 fChart的基本使用 – 編輯流程圖符號
對流程圖編輯區域建立的流程圖符號,按二下符號圖示,可以開啟符號的編輯對話方塊,重新編輯流程圖符號。

46 1-5-3 fChart的基本使用 – 連接兩個流程圖符號

47 1-5-3 fChart的基本使用 – 刪除連接線與流程圖符號
刪除連接線請分別按一下連接線兩端的流程圖符號(順序沒有關係),然後按左下方「刪除」框的【連接線】鈕刪除之間的連接線,或在沒有符號區域,執行右鍵快顯功能表的【刪除連接線】指令。 當流程圖符號沒有任何連接線時,我們才可以刪除流程圖符號,請按一下欲刪除符號後,按左下方「刪除」框的【區塊】鈕刪除流程圖符號,或在沒有符號區域,執行右鍵快顯功能表的【刪除區塊】指令。

48 1-5-4 執行fChart流程圖的圖形版程式- 圖例

49 1-5-4 執行fChart流程圖的圖形版程式- 說明1
執行:按下按鈕開始執行流程圖,它是以延遲時間定義的間隔時間來一步一步自動執行流程圖,如果流程圖需要輸入資料,就會開啟「命令提示字元」視窗讓使用者輸入資料(在輸入資料後,請按Enter鍵)。 停止:按此按鈕停止流程圖的執行。 暫停:當執行流程圖時,按此按鈕暫停流程圖的執行。 逐步執行:當我們將延遲時間的捲動軸調整至最大時,就是切換至逐步執行模式,此時按【執行】鈕執行流程圖,就是一次一步來逐步執行流程圖,請重複按此按鈕來執行流程圖的下一步。

50 1-5-4 執行fChart流程圖的圖形版程式- 說明2
調整延遲時間:使用捲動軸調整執行每一步驟的延遲時間,如果調整至最大,就是切換成逐步執行模式。 顯示命令提示字元視窗:按下此按鈕可以顯示「命令提示字元」視窗的執行結果。 顯示堆疊視窗:按此按鈕可以顯示「堆疊」視窗,如果是函數呼叫,就是在此視窗顯示保留的區域變數值,如下圖所示: 顯示變數視窗:按下此按鈕可以顯示「變數」視窗,其內容是執行過程的各變數值。

51 1-6 使用fChart進行邏輯訓練 1-6-1 循序結構 1-6-2 選擇結構-是否選條件 1-6-3 選擇結構-二選一條件
1-6-4 選擇結構-多選一條件 1-6-5 重複結構-前測式迴圈 1-6-6 重複結構-後測式迴圈

52 1-6-1 循序結構 – 演算法 循序結構就是指定變數值、算術運算式、字串運算或、輸入和輸出,也就是使用輸入、輸出和動作符號來建立一個符號接著一個符號依序執行的流程圖。 fChart流程圖專案:加法.fpp 請建立fChart流程圖,輸入2個變數a和b的值,可以計算a+b的相加值,其步驟如下所示: Step 1:輸入變數a。 Step 2:輸入變數b。 Step 3:計算r = a + b。 Step 4:輸出計算結果r。

53 1-6-1 循序結構 – 流程圖 請啟動fChart工具建立計算2個數字相加的流程圖,教學影片是:【02_fChart變數與運算子(循序結構).avi】,其建立的fChart流程圖,如右圖所示:

54 1-6-2 選擇結構 - 是否選條件(演算法) 是否選條件是使用決策符號的條件運算式來判斷是否需要執行額外程式碼,如同一條主路徑多出的旁支路徑。 fChart流程圖專案:購物折扣.fpp 請建立fChart流程圖,輸入網購金額amount,如果金額超過1000元,可以打八折,其步驟如下所示: Step 1:輸入金額amount。 Step 2:判斷是否超過1000元,超過: (a). amount * 0.8 打八折。 (b). 顯示打折後的金額。

55 1-6-2 選擇結構 - 是否選條件(流程圖) 請啟動fChart工具建立計算購物折扣的流程圖,教學影片是:【03_fChart是否選(選擇結構).avi】,其建立的fChart流程圖,如右圖所示:

56 1-6-2 選擇結構 - 是否選條件(更正流程圖) 我們需要修改【購物折扣.fpp】流程圖,如果金額沒有超過1000元,就顯示輸入的原始金額,而不是直接結束程式,如右圖所示:

57 1-6-3 選擇結構 - 二選一條件(演算法) 二選一條件是使用決策符號的條件運算式判斷屬於二個互斥集合的哪一個,如同有兩條路徑,我們只能依條件走其中一條,請注意!兩條路徑一定只會走其中一條路徑。 fChart流程圖專案:判斷成績.fpp 建立fChart流程圖,輸入成績score,如果超過60分,顯示及格;否則顯示不及格,其步驟如下所示: Step 1:輸入成績score。 Step 2:判斷是否超過60分: (a). 超過,顯示及格。 (b). 沒有超過,顯示不及格。

58 1-6-3 選擇結構 - 二選一條件(流程圖) 請啟動fChart工具建立判斷成績是否及格的流程圖,教學影片是:【04_fChart二選一(選擇結構).avi】,其建立的fChart流程圖,如右圖所示:

59 1-6-4 選擇結構 - 多選一條件(演算法) 多選一條件是使用決策符號的條件運算式來判斷多個互斥的集合,如同有多條路徑,但是,我們只能依條件走其中一條路徑。 fChart流程圖專案:年齡判斷.fpp 建立fChart流程圖,輸入年齡age,如果小於13歲顯示兒童,小於20歲是青少年,大於等於20歲是成年人,其步驟如下所示: Step 1:輸入年齡 age。 Step 2:判斷年齡 < 13: 1):成立,顯示兒童。 2):不成立,判斷 < 20: a. 成立,顯示青少年。 b. 不成立,顯示成年人。

60 1-6-4 選擇結構 - 多選一條件(流程圖) 請啟動fChart工具建立年齡判斷的流程圖,可以判斷輸入的年齡是兒童、青少年和成年人,教學影片是:【05_fChart多選一(選擇結構).avi】,其建立的fChart流程圖,如右圖所示:

61 1-6-5 重複結構 - 前測式迴圈(演算法) 重複結構是迴圈,如同走路時看到有興趣商品,可能重複蹺幾圈來一看再看。前測式迴圈是使用決策符號的條件運算式在迴圈開頭判斷是否執行下一次迴圈,通常,我們需要使用一個計算器變數來記錄迴圈執行的次數。 fChart流程圖專案:1加至10.fpp 建立fChart流程圖計算1加至10,然後輸出加總結果,其步驟如下所示: Step 1:初始計數器變數i = 1。 Step 2:使用迴圈計算從1至10: 1):不成立,結束迴圈至Step 3。 2):成立,計算sum = sum + i。 3):將計數變數i加1後,繼續迴圈Step 2。 Step 3:輸出總和sum。

62 1-6-5 重複結構 - 前測式迴圈(流程圖) 請啟動fChart工具建立1加到10的流程圖,變數i是計數器變數,教學影片是:【06_fChart前測式迴圈(重複結構).avi】,其建立的fChart流程圖,如右圖所示:

63 1-6-6 重複結構 - 後測式迴圈(演算法) 後測式迴圈是使用決策符號的條件運算式在迴圈結尾判斷是否執行下一次迴圈,因為是執行完第一次迴圈後才判斷是否繼續執行下一次迴圈,所以,迴圈至少會執行一次。 fChart流程圖專案:顯示5次大家好.fpp 建立fChart流程圖,可以顯示5次大家好!的字串,其步驟如下所示: Step 1:初始計數器變數a的值為1。 Step 2:輸出大家好!和變數a的值。 Step 3:判斷是否超過5次: (a). 沒有,計算a = a + 1後,跳至Step 2。 (b). 超過,結束迴圈執行。

64 1-6-6 重複結構 - 後測式迴圈(流程圖) 請啟動fChart工具建立顯示5次大家好!的流程圖,教學影片是:【07_fChart後測式迴圈(重複結構).avi】,其建立的fChart流程圖,如右圖所示:

65 1-6-6 重複結構 - 後測式迴圈(更新流程圖) 上一頁fChart流程圖轉換成Visual Basic程式碼需要使用第8-5-1節Exit關鍵字來跳出迴圏。後測式迴圈的fChart流程圖正確畫法,如右圖所示:

66 End


Download ppt "第1章 程式邏輯、程式設計與Visual Basic的基礎"

Similar presentations


Ads by Google