40
崑山科技大學 資訊工程系 專題製作報告 對話輔助學習程式撰寫系統 Dialogue Assisted Programming Learning System 學生:李昱霆 林均穎 陳昱廷 胡傑雄 指導老師: 黃志賢 中華民國 103 年 6 月

崑山科技大學 - ir.lib.ksu.edu.twir.lib.ksu.edu.tw/bitstream/987654321/21780/2/專題製作.pdf · 由C語言和C++衍生而來,繼承了其強大的效能,同時又以.NET框架類別庫

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

  • 崑山科技大學

    資訊工程系

    專題製作報告

    對話輔助學習程式撰寫系統

    Dialogue Assisted Programming Learning System

    學生:李昱霆

    林均穎

    陳昱廷

    胡傑雄

    指導老師: 黃志賢

    中華民國 103 年 6月

  • 崑山科技大學

    資訊工程系

    專題製作報告

    對話輔助學習程式撰寫系統

    Dialogue Assisted Programming Learning System

    學生: 李昱霆 Yu-Ting Lee

    林均穎 Chun-Ying Lin

    陳昱廷 Yu-Ting Chen

    胡傑雄 Jie-Shiung-Hu

    指導老師: 黃志賢 Chih-Hsien Huang

    中華民國 103 年 6月

  • I

    對話輔助學習程式撰寫系統

    學生:李昱霆 指導老師:黃志賢

    林均穎

    陳昱廷

    胡傑雄

    崑山科技大學資訊工程系

    摘要

    學習程式設計,最基本的學習內容有兩項,一個是程式設計所需的邏輯

    概念,另一個是程式語言語法。 首先邏輯屬於概念性的東西,一時之間初

    學者不容易抓到其中的訣竅,必須要長時間的練習才能融會貫通, 而程式

    語法是很制式的東西,但卻是訓練邏輯的第一把鑰匙,而有句話說「工欲善

    其事,必先利其器」 就是說要把邏輯訓練的好,第一步就是把程式語法徹

    底熟練! 剛開始學習程式設計的,多半是透過某一種程式設計語言來學習、

    實作、體會程式設計的竅門。 所以,如何通達一門程式語言,如何透過該

    程式語言來熟悉程式設計的邏輯概念,便是程式設計初學者最大的挑戰。 我

    們在本專題中將嚐試提出一套使用對話來輔助程式主要練習撰寫 JAVA程式

    的系統, 其設計之主旨在於提供學生一個程式撰寫的輔助環境。 當學生在

    上完程式設計課程後,可以運用本系統,透過與系統的對話往來, 慢慢的

    也紮實的學習程式的語法,把每一項程式的變數、函數、運算式、判斷式等

    逐一琢磨學習透徹 等一看到就能立刻理解這個函數的運用方法,接下來就

    是更加努力訓練邏輯能力 這個程式的賣點就是「師父引進門,修行在個人」,

    老師學校教完,回家馬上有一個系統可以練習 逐一建構出初學者所需之程

    式實力,這就是我們的宗旨。

  • II

    Dialogue Assisted Programming

    Learning System

    Yu-Ting Lee Chih-Hsien Huang

    Chun-Ying Lin

    Yu-Ting Chen

    Jie-Shiung-Hu

    Department of Information Engineering, Kun Shan University of

    Technology

    Abstract

    In order to learn how to program, there are two fundamental materials. The

    one is the logic concepts, and the other is the programming language syntax. First,

    logic is a set of choices that a computer uses to solve a problem. The beginners

    usually feel hard to grasp the key to logic, so they need to practice for a long time

    to master it. Although the program syntax is formal and not interesting, it is a

    useful key to train logic. It is said that, "In order to work productively, one must

    first sharpen his tools." For good logic training; the first step is to thoroughly

    practicing programming syntax as much as possible. When one starts learning

    how to program, he has to learn, practice and understand the capability of

    programming through one certain programming language. Therefore, how to be

    familiar with a program language is one of the beginner’s challenges. We

    proposed a project which uses dialogue procedure to assist the beginners in

    design a Java program. After students have took the programming courses, they

    can use this system to practice fundamental syntax to improve their capability of

    programming. The value of this project is to provide a helpful tool for, "you can

    lead a horse to water, but you can't make him drink." After taught by teacher in

  • III

    school, students immediately have a system in which you can practice each

    fundamental program structure at home. That is our primary and the most

    important claim.

  • IV

    誌謝

    本次專題可以順利完成,首先要感謝的是從三年級就開始引導我們做專

    題的老師黃志賢老師,老師給予我們很多的意見和幫助。像是專題文件、程

    式撰寫和專題報告書的撰寫,我們常會遇到一些問題和錯誤,但老師總是耐

    心的教導和引導我們找出錯誤,並指出專題上的問題與錯誤,讓我們可以克

    服專題過程中所遇到的問題,使得專題可以如期完成。

    最後要感謝專題的所有組員,謝謝大家從三年級到四年級這段期間一起

    研究製作專題,雖然其中有些意見不同,但是大家還是互相的溝通和討論,

    且一起努力解決遇到的問題,才能使專題能在時間內完成,謝謝大家。

  • V

    目錄

    對話輔助學習程式撰寫系統 ........................................................................................................ I

    Abstract ......................................................................................................................................... II

    誌謝 .............................................................................................................................................. IV

    目錄 ............................................................................................................................................... V

    圖例 ............................................................................................................................................. VII

    第一章 緒論 ................................................................................................................................. 1

    1.1 專題題目 ..................................................................................................................... 1

    1.2 研究動機與目的 ......................................................................................................... 1

    1.3 研究方法與概述 ......................................................................................................... 2

    第二章 相關研究 ......................................................................................................................... 3

    2.1 C#簡介 ......................................................................................................................... 3

    2.1.1 C語言簡介 .......................................................................................................... 4

    2.1.2 C++簡介 ............................................................................................................... 5

    2.2 Visual Basic 簡介 ................................................................................................... 6

    2.3 Java語言 簡介 ........................................................................................................... 9

    第三章 系統架構 ....................................................................................................................... 11

    3.1 系統架構流程圖 ....................................................................................................... 11

    3.2 系統架構與模型 ....................................................................................................... 12

    3.3 系統操作圖 ............................................................................................................... 13

    3.4 系統開發流程圖 ....................................................................................................... 14

    3.5 系統結構分析圖 ....................................................................................................... 15

    3.6 系統類別圖 ............................................................................................................... 16

    第四章 軟體流程 ....................................................................................................................... 17

    4.1. 電腦端 ....................................................................................................................... 17

  • VI

    4.1.1 使用者操作 ....................................................................................................... 17

    第五章 測試服務功能 ............................................................................................................... 18

    5.1 操作環境 ................................................................................................................... 18

    5.2 軟體需求 ................................................................................................................... 18

    5.3 硬體需求 ................................................................................................................... 19

    5.4 測試資料 ................................................................................................................... 19

    5.5 測試環境 ................................................................................................................... 20

    第六章 系統實現 ....................................................................................................................... 21

    6.1 使用者介面 ............................................................................................................... 21

    6.1.1. 開啟系統 ........................................................................................................... 21

    6.1.2. 功能選擇 ........................................................................................................... 22

    6.1.3. 數值填寫 ........................................................................................................... 23

    6.1.4. 自動排版功能 ................................................................................................... 24

    6.1.5. 內層功能 ........................................................................................................... 25

    6.1.6. 輸出功能 ........................................................................................................... 27

    第七章 總結 ............................................................................................................................... 29

    參考文獻資料 ............................................................................................................................. 30

  • VII

    圖例

    圖 3.1系統流程圖................................11

    圖 3.2系統架構圖................................12

    圖 3.3系統操作圖................................13

    圖 3.4系統開發流程圖............................14

    圖 3.5系統結構分析圖............................15

    圖 3.6系統類別圖................................16

    圖 4.1 使用者操作流程圖......................... 17

    圖 6.1.1 開啟系統圖............................. 21

    圖 6.1.2 功能選擇圖............................. 22

    圖 6.1.3 數值填寫圖............................. 23

    圖 6.1.4 自動排版功能圖 .........................24

    圖 6.1.5 內層功能圖 1............................ 25

    圖 6.1.5 數值填寫圖 2.............................26

    圖 6.1.5 數值填寫圖 3.............................26

    圖 6.1.6 輸出功能圖 1.............................27

    圖 6.1.6 輸出功能圖 2.............................28

  • 1

    第一章 緒論

    1.1 專題題目

    對話輔助學習程式撰寫系統

    1.2 研究動機與目的

    動機:

    現在這個時代已經離不開 3C產品了,各式的 3C產品除了炫人耳目的硬

    體外觀之外,如何讓內在也和外觀一樣炫,就要透過精心設計來搭配的各式

    軟體了。要能讓一項 3C 產品拿起來吸引人,操作起來也順手,如何設計出

    符合需求的軟體,對於公司研發部份來說,這是極大的考驗。相對於硬體製

    造需要各式大大小小、功能各異的設備,軟體開發所需要的是有精密思緒、

    熟練程式設計技術的開發團隊。「精通程式設計」是軟體開發上,最重要的

    核心。從硬體控制之介面、作業系統核心、人機介面服務、各式軟體應用程

    式,都是軟體開發的範圍。所以,如何精通程式設計,正是一項相關科系學

    生所必須下苦功去學習的專業技藝。於是促使我們計畫寫出一套使用對話來

    輔助程式撰寫練習的系統。

    目的:

    本系統設計之目的在於提供學生一個程式撰寫的輔助練習環境。當學生

    上過程式設計課程後,便可以使用本系統,透過與系統的對話往來,逐一建

    構出基本程式內容。回想當初接觸程式設計時,書本上基本概念的學習是沒

    有問題,但當知識一直累積,但是卻沒有對應的程式設計練習,越學越多之

    後,就會開始感到混亂,漸漸的會因為不知道要從哪裡下手練習,而對寫程

    式越來越反感,所以才會想設計一套對話輔助學習程式撰寫系統,讓初學者

    學習基本概念後,開始使用此系統,透過與系統對話一步一步來練習撰寫程

    式,當然此系統不侷限於初學者,當同學想複習程式時也可以使用此系統來

    複習,至於此系統畫面我們也希望可以簡單明瞭的讓使用者知道自己要如何

    操作,如果畫面太花俏有時也會讓人反感,使用者也會不知道如何操作。

  • 2

    1.3 研究方法與概述

    研究方法:

    本系統應用選項問答機制來逐步建構出 Java 程式碼內容,系統本身則

    是運用兩種程式語言來完成,分別為 Visual Basic和 C#,Visual Basic是

    用於撰寫系統的人機介面部份程式,而關於表示 Java 程式碼結構的程式部

    份,則是運用 C#撰寫,之後再把這兩個部份結合起來。

    產品概述:

    對話輔助學習程式撰寫系統 (Dialogue Assisted Programming Learning

    System,DAPLS),主要是中文化的系統,可以讓中文語系的學生在使用此系

    統時,能輕鬆操作,而系統主要是讓初學者透過引導的方式,去學習撰寫程

    式和練習撰寫程式。

    此專題能達到 4項表現: 1.初學者能按照步驟學習撰寫程式。

    2.初學者方便練習撰寫程式。

    3.不受限於上課時間隨時隨地即可練習

    4.能讓中文語系的學生方便學習程式

  • 3

    第二章 相關研究

    2.1 C#簡介

    C#是微軟推出的一種基於.NET框架的、物件導向的高階程式語言。C#

    由 C語言和 C++衍生而來,繼承了其強大的效能,同時又以.NET框架類別庫

    作為基礎,擁有類似 Visual Basic的快速開發能力。

    C#在設計成為一種「簡單、現代、通用」,以及物件導向的程式語言,

    此種語言為在分散式環境中開發提供適用的元件開發應用。

    C#適合為獨立和嵌入式的系統編寫程式,從使用複雜作業系統的大型系

    統到特定應用的小型系統均適用。雖然 C#程式在儲存和操作能力需求方面

    具備經濟性,但此種語言並不能在效能和程式大小方面與 C語言或組合語言

    相抗衡。

    相對於 C和 C++,這個語言在許多方面進行了限制和增強:

    指標(Pointer)只能被用於不安全模式。大多數對象訪問通過安全

    的參照實作,以避免無效的使用,並且有許多演算法用於檢查溢位,

    指標只能用於使用值類別,以及受垃圾收集控制的託管對象。

    對象不能被顯示釋放,替代為當不存在被參照時通過垃圾回收器回

    收。

    只允許單一繼承(single inheritance),但是一個類別可以實現多

    個介面

    C#比 C++的類別更加安全。預設的安全轉換是隱含轉換,例如由短整

    數型態轉換為長整數型態和從衍生類轉換為基礎類。而介面布林代數

    同整數型態,及列舉(enum)型同整數型態不允許隱含轉換,非空指

    標(通過參照相似對象)同用戶定義類別的隱含轉換欄位被顯示的確

    http://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80http://zh.wikipedia.org/wiki/C%2B%2Bhttp://zh.wikipedia.org/wiki/%E6%8C%87%E6%A8%99http://zh.wikipedia.org/wiki/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)http://zh.wikipedia.org/wiki/%E5%96%AE%E4%B8%80%E7%B9%BC%E6%89%BFhttp://zh.wikipedia.org/wiki/%E6%8E%A5%E5%8F%A3http://zh.wikipedia.org/wiki/%E9%A1%9E%E5%9E%8B%E5%AE%89%E5%85%A8http://zh.wikipedia.org/w/index.php?title=%E9%9A%B1%E5%90%AB%E8%BD%89%E6%8F%9B&action=edit&redlink=1

  • 4

    定,不同於 C++的複製構造函式。

    陣列宣告的語法不同("int[] a = new int[5]"而不是"int a[5]")。

    列舉(enum)位於其所在的命名空間中。

    C#中沒有模組(Template),但是在 C# 2.0中引入了泛型(Generic

    programming),並且支援一些 C++模組不支援的特性。比如泛型參數

    中的類別約束。另一方面,表達式不能像 C++模組中被用於類別參數。

    屬性支援,使用類似訪問成員的方式調用。

    完整的反射支援。

    2.1.1 C 語言簡介 C語言是一種通用的、程序式的程式語言,廣泛用於系統與應用軟體的

    開發。具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點。

    C語言特色

    C語言是一個有結構化程式設計、具有變數作用域(variable scope)

    以及遞迴功能的程序式語言。

    C 語言傳遞參數均是以值傳遞(pass by value)[,另外也可以傳遞

    指標(a pointer passed by value)。

    不同的變數類型可以用結構體(struct)組合在一起。

    只有 32個保留字(reserved keywords),使變數、函式命名有更多

    彈性。

    部份的變數類型可以轉換,例如整型和字元型變數。

    透過指標(pointer),C語言可以容易的對記憶體進行低階控制。

    編譯預處理(preprocessor)讓 C語言的編譯更具有彈性。

    http://zh.wikipedia.org/wiki/%E6%9E%9A%E4%B8%BEhttp://zh.wikipedia.org/wiki/%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4http://zh.wikipedia.org/wiki/%E6%A8%A1%E6%9D%BF_(C%2B%2B)http://zh.wikipedia.org/wiki/%E6%B3%9B%E5%9E%8Bhttp://zh.wikipedia.org/w/index.php?title=%E5%B1%AC%E6%80%A7&action=edit&redlink=1http://zh.wikipedia.org/wiki/%E5%8F%8D%E5%B0%84_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)http://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80http://zh.wikipedia.org/wiki/%E7%B3%BB%E7%BB%9F%E8%BD%AF%E4%BB%B6http://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E8%BD%AF%E4%BB%B6http://zh.wikipedia.org/wiki/%E7%A7%BB%E6%A4%8D_(%E8%BB%9F%E9%AB%94)

  • 5

    2.1.2 C++簡介 C++是一種使用非常廣泛的電腦程式設計語言。它是一種靜態資料類型

    檢查的,支援多範型的通用程式設計語言。C++支援程序化程式設計、資料

    抽象化、物件導向程式設計、泛型程式設計、基於原則設計等多種程式設計

    風格。

    和 C 語言相比,C++引入了更多的特性,包括:陳述性宣告,類似函式

    的強制轉型,new/delete 運算子,布林類型,參考類型,預設參數,函式

    重載,命名空間,型別(包括所有和型別相關的特性,如繼承、成員函式、

    虛擬函式、抽象型別和建構子),運算子重載,模板,::運算子,異常處理

    和執行時期識別。

    C++在某些案例中(見下「與 C 不相容之處」),進行比 C 還要多的類

    型檢查。以「//」起始作為註解起源自 C 的前身 BCPL,而後被重新引入到

    C++。

    C++的一些特性,C不久之後也採用了,包括在 for迴圈的括弧中宣告,

    C++風格的註解(使用//符號,和 inline,雖然 C99 定義的 inline 關鍵字

    與 C++的定義不相容。不過,C99 也引入了不存在於 C++的特性,如:可變

    參數巨集,和以陣列作為參數的較佳處理;某些 C++編譯器可能實作若干特

    性,以作為擴展,但其餘部分並不符合現存的 C++特性)。

    一個常見的混淆其實只是一個微妙的術語問題:由於它的演化來自 C,

    在C++中的術語物件和C語言一樣是意味著記憶體區域,而不是類別的實體,

    在其它絕大多數的物件導向語言也是如此。舉例來說,在 C和 C++中,語句

    int i;定義一個 int型別的物件,這就是變數的值 i將來在指派時,所存入

    的記憶體區域。

    http://zh.wikipedia.org/w/index.php?title=%E9%9D%9C%E6%85%8B%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B%E6%AA%A2%E6%9F%A5&action=edit&redlink=1http://zh.wikipedia.org/w/index.php?title=%E9%9D%9C%E6%85%8B%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B%E6%AA%A2%E6%9F%A5&action=edit&redlink=1http://zh.wikipedia.org/wiki/%E5%A4%9A%E9%87%8D%E7%BC%96%E7%A8%8B%E8%8C%83%E5%BC%8Fhttp://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E8%AA%9E%E8%A8%80http://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BA%8F%E5%8C%96%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88http://zh.wikipedia.org/w/index.php?title=%E8%B3%87%E6%96%99%E6%8A%BD%E8%B1%A1%E5%8C%96&action=edit&redlink=1http://zh.wikipedia.org/w/index.php?title=%E8%B3%87%E6%96%99%E6%8A%BD%E8%B1%A1%E5%8C%96&action=edit&redlink=1http://zh.wikipedia.org/wiki/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88http://zh.wikipedia.org/wiki/%E6%B3%9B%E5%9E%8B%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88http://zh.wikipedia.org/wiki/%E5%9F%BA%E6%96%BC%E5%8E%9F%E5%89%87%E8%A8%AD%E8%A8%88http://zh.wikipedia.org/wiki/BCPLhttp://zh.wikipedia.org/wiki/C_(programming_language)#C99http://zh.wikipedia.org/wiki/%E5%B7%A8%E9%9B%86http://zh.wikipedia.org/wiki/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91

  • 6

    2.2 Visual Basic 簡介

    Visual Basic(VB)是由微軟公司開發的包含協助開發環境的事件驅動

    程式語言。它源自於 BASIC程式語言。VB擁有圖形化使用者介面(GUI)和

    快速應用程式開發(RAD)系統,可以輕易的使用 DAO、RDO、ADO 連線資料

    庫,或者輕鬆的建立 ActiveX 控制項。程式設計師可以輕鬆的使用 VB 提供

    的元件快速建立一個應用程式。

    VB 的中心思想就是要便於程式設計師使用,無論是新手或者專家。VB

    使用了可以簡單建立應用程式的 GUI系統,但是又可以開發相當複雜的程式。

    VB 的程式是一種基於表單的視覺化元件安排的聯合,並且增加代碼來指定

    組建的屬性和方法。因為預設的屬性和方法已經有一部分定義在了元件內,

    所以程式設計師不用寫多少代碼就可以完成一個簡單的程式。過去的版本裡

    面VB程式的效能問題一直被放在了桌面上,但是隨著電腦速度的飛速增加,

    關於效能的爭論已經越來越少。

    表單控制項的增加和改變可以用拖放技術實作。一個排列滿控制項的工

    具箱用來顯示可用控制項(比如文字域或者按鈕)。每個控制項都有自己的

    屬性和事件。預設的屬性值會在控制項建立的時候提供,但是程式設計師也

    可以進行更改。很多的屬性值可以在執行時候隨著使用者的動作和修改進行

    改動,這樣就形成了一個動態的程式。舉個例子來說:表單的大小改變事件

    中加入了可以改變控制項位置的代碼,在執行時候每當使用者更改視窗大小,

    控制項也會隨之改變位置。在文字域中的文字改變事件中加入相應的代碼,

    程式就能夠在文字輸入的時候自動翻譯或者阻止某些字元的輸入。

    http://zh.wikipedia.org/wiki/%E5%BE%AE%E8%BD%AFhttp://zh.wikipedia.org/w/index.php?title=%E5%8D%8F%E5%8A%A9%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83&action=edit&redlink=1http://zh.wikipedia.org/wiki/%E4%BA%8B%E4%BB%B6%E9%A9%85%E5%8B%95http://zh.wikipedia.org/wiki/%E4%BA%8B%E4%BB%B6%E9%A9%85%E5%8B%95http://zh.wikipedia.org/wiki/BASIChttp://zh.wikipedia.org/wiki/%E5%9B%BE%E5%BD%A2%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2http://zh.wikipedia.org/wiki/GUIhttp://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BChttp://zh.wikipedia.org/wiki/RADhttp://zh.wikipedia.org/w/index.php?title=DAO&action=edit&redlink=1http://zh.wikipedia.org/w/index.php?title=RDO&action=edit&redlink=1http://zh.wikipedia.org/wiki/ADOhttp://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93http://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93http://zh.wikipedia.org/wiki/ActiveXhttp://zh.wikipedia.org/wiki/ActiveXhttp://zh.wikipedia.org/wiki/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F

  • 7

    Visual Basic的特色

    使用 Visual Basic 可以很容易地開發出功能強大的圖形使用者介面應

    用程式,對專為客戶開發訂製應用程式的公司而言,使用 Visual Basic 開

    發應用程式可以降低應用程式開發的時間和成本。Visual Basic 具高度親

    和力的操作介面,使得 Visual Basic 成成程式設計師眼中優秀的視窗程式

    開發工具。

    新的使用者喜歡使用滑鼠操作應用程式,以及應用程式一致的操作介面,

    有經驗的使用者喜歡使用應用程式易於操作的功能,例如下拉式列示盒和同

    時可以開啟多個視窗的應用程式。

    Microsoft Office、VBA(Visual Basic for Applications),和很多其

    他公司開發的應用程式都使用 Visual Basic當做程式語言。

    由於 Visual Basic提供了以上幾種重要的功能,使得 Visual Basic變

    成一種非常傑出的語言,適合用來快速開發全功能的視窗應用程式。它有下

    列幾個重要的功能 :

    • 資料存取功能

    Visual Basic 提供的資料存取功能,你可以很容易地建立資料庫的前

    端程式、開發具資料存取功能的元件,使應用程式或元件可以存取大部分的

    企業資料庫。

    • ActiveX技術

    利用 ActiveX技術,您可以很容易地使用像是 Word、Excel,或是其他

    Windows 應用程式所提供的函式,您甚至可以使用 Visual Basic 專業版或

    企業版開發出來的應用程式或物件提供的功能。

    • 網際網路功能

    應用程式可以利用 Visual Basic 提供的網際網路功能,讓透過網路使

    用其他的應用程式和文件變得更容易。

    • RAD(快速應用程式開發)

    • 多語程式支援

    • 互動的除錯功能

  • 8

    VB(6.0 及以前)不擁有的特性:

    繼承:Visual Basic 5 以後,VB 雖然提供了簡化的類別支援,但

    仍然不能滿足程式員的需求。

    多執行緒支援:雖然可以使用 Windows API完成,不過穩定性與偵錯

    都很難保證。

    異常處理:只支援"On Error Goto line"語句。

    對指標的支援非常有限。

    VB只能支援 8到 32位元的整數,很多語言都有無限制的支援。

    VB不允許在任何數組記憶體在不變的變量。

    VB不支援其它程式語言共享程式代碼。

    Visual Basic .NET(VB 7.0)以後的版本基本支援了上述特性。

    VB 6 與 VB.NET 比較:

    很多程式編寫者也會留戀 VB6。VB6仍保留了一些 script語言的特性,

    例如:不用事先宣告變量類型。 當第一次對未宣告類型的變數進行賦值時,

    VB6 便會把這個值的類型作為該變數的類型。這種 script 語言的特性,對

    程式的可維護有很多不良的影響,尤其對初階程式員來說,更會被培養成不

    良的編寫程式習慣,所以 VB.NET之後的版本已不保留這種特性。

    Basic是作為初學者的編程語言而被製作,當時是以直譯語言(參見 VB

    虛擬碼)的形式出現。同樣擁有不用事先宣告變量類型的特性。這種特性對

    於幫助初學者快速入門,其實是有正面的作用,可以使初學者更快完成簡單

    的代碼編寫,而不用顧慮到程式要用哪些變量,要選哪些類型。對於有一定

    程式編寫經驗的人來看,要經常為 for i=1 to 9 中的變量 i 宣告類型也頗

    煩人,所以這種特性在某些場合上,是相當討人歡心的。

    VB.NET 的具體變革如下:

    子程式(函式)的定義與呼叫。

    陣列的初值設定並且需要註明範圍。

    函式在格式上的改變:Date 函式、Time 函式、部分數學函式部分不

    能直接使用,String函式不能使用,DatePart、DateAdd、DateDiff函式的

    第一個參數在定義上有所改變。

    Set保留字不再使用。

    Wend保留字以 End While取代。

    新增運算子:+=、-=、/=、*=、&=。

    http://zh.wikipedia.org/wiki/%E7%BB%A7%E6%89%BF_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)http://zh.wikipedia.org/wiki/%E5%A4%9A%E7%BA%BF%E7%A8%8Bhttp://zh.wikipedia.org/wiki/Windows_APIhttp://zh.wikipedia.org/wiki/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86http://zh.wikipedia.org/wiki/%E6%8C%87%E6%A8%99http://zh.wikipedia.org/wiki/%E6%95%B4%E6%95%B8http://zh.wikipedia.org/wiki/%E7%9B%B4%E8%AD%AF%E8%AA%9E%E8%A8%80http://zh.wikipedia.org/wiki/VB_%E4%BC%AA%E4%BB%A3%E7%A0%81http://zh.wikipedia.org/wiki/VB_%E4%BC%AA%E4%BB%A3%E7%A0%81

  • 9

    2.3 Java語言 簡介

    Java 是一種電腦程式設計語言,擁有跨平台、物件導向、泛型程式設

    計的特性,廣泛應用於企業級 Web應用開發和行動應用開發。

    Java 程式語言是個簡單、物件導向、分布式、解釋性、健壯、安全與

    系統無關、可移植、高效能、多執行緒和動態的語言。

    Java 不同於一般的編譯語言和直譯語言。它首先將原始碼編譯成位元

    組碼,然後依賴各種不同平台上的虛擬機器來解釋執行位元組碼,從而實作

    了「一次編寫,到處執行」的跨平台特性。

    Java之所以被開發,是要達到以下五個目的:

    應當使用物件導向程式設計方法學

    應當允許同一程式在不同的電腦平台執行

    應當包括內建的對電腦網路的支援

    應當被設計成安全地執行遠端程式碼

    應當易於使用,並借鑒以前那些物件導向語言(如 C++)的長處。

    物件導向:

    物件導向就是 Java的特點之一,是程式設計方法的一種。「物件導向程

    式語言」的核心之一就是開發者在設計軟體的時候可以使用自訂的型別和關

    聯操作。程式碼和資料的實際集合體叫做「物件」。一個物件可以想像成繫

    結了很多「行為(程式碼)」和「狀態(資料)」的物體。對於資料結構的改

    變需要和程式碼進行通訊然後操作,反之亦然。物件導向設計讓大型軟體工

    程的計劃和設計變得更容易管理,能增強工程的健康度,減少失敗工程的數

    量。

    跨平台性:

    跨平台性就是 Java語言的第二個特性,也就是說使用 Java語言編寫的

    程式可以在編譯後不用經過任何更改,就能在任何硬體裝置條件下執行。這

    個特性經常被稱為「一次編譯,到處執行」。

    執行 Java應用程式必須安裝 Java Runtime Environment(JRE),JRE

    內部有一個 Java虛擬機器(Java Virtual Machine,JVM)以及一些標準的

    類別庫(Class Library)。透過 JVM才能在電腦系統執行 Java應用程式(Java

    Application),這與.Net Framework的情況一樣,所以電腦上沒有安裝 JVM,

    那麼這些程式將不能夠執行。

    http://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E8%AA%9E%E8%A8%80http://zh.wikipedia.org/wiki/%E8%B7%A8%E5%B9%B3%E5%8F%B0http://zh.wikipedia.org/wiki/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91http://zh.wikipedia.org/wiki/%E6%B3%9B%E5%9E%8B%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88http://zh.wikipedia.org/wiki/%E6%B3%9B%E5%9E%8B%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88http://zh.wikipedia.org/wiki/%E7%B7%A8%E8%AD%AF%E8%AA%9E%E8%A8%80http://zh.wikipedia.org/wiki/%E7%9B%B4%E8%AD%AF%E8%AA%9E%E8%A8%80http://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E7%A0%81http://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E7%A0%81http://zh.wikipedia.org/wiki/%E4%B8%80%E6%AC%A1%E7%BC%96%E5%86%99%EF%BC%8C%E5%88%B0%E5%A4%84%E8%BF%90%E8%A1%8Chttp://zh.wikipedia.org/wiki/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1

  • 10

    Java語言使用解釋層最初是為了輕巧性。所以這些程式的執行效率比 C

    語言和 C++要低很多,使用者也對此頗有微詞。很多最近的調查顯示 Java

    的程式執行速度比幾年前要高出許多,有些同樣功能的程式的效率甚至超過

    了 C++和 C語言編寫的程式。

    Java 語言在最開始應用的時候是沒有解釋層的,所有需要編譯的程式

    碼都直接轉換成機器的原始程式碼。這樣做的後果就是獲得了最佳的效能,

    但是程式臃腫異常。從 JIT 技術開始,Java 的程式都經過一次轉換之後才

    變成機器碼。很多老牌的第三方虛擬機器都使用一種叫做「動態編譯」的技

    術,也就是說虛擬機器即時監測和分析程式的執行行為,同時選擇性地對程

    式所需要的部分進行編譯和最佳化。所有這些技術都改善了程式碼的執行速

    度,但是又不會讓程式的體積變得失常。

    程式的輕便性事實上是軟體編寫很難達到的一個標的,Java 雖然成功

    地實作了「一次編譯,到處執行」,但是由於平台和平台之間的差異,所編

    寫的程式在轉換程式碼的時候難免會出現微小的、不可察覺的錯誤和意外。

    Java試圖通過新的方式解決軟體編寫的複雜性。但是 Java並不是一門

    完美的語言。

    http://zh.wikipedia.org/wiki/%E5%8B%95%E6%85%8B%E7%B7%A8%E8%AD%AF

  • 11

    第三章 系統架構

    3.1 系統架構流程圖

    對話輔助學習程式撰寫系統,我們主要目的是透過對話導引提供初學者

    學習如何撰寫程式。初學者能按照步驟學習撰寫程式,初學者也可以利用此

    系統來增強程式 5個基本功能的能力,變數、迴圈、判斷式、輸入、輸出,

    來讓程式基礎更紮實。

    圖 3.1系統架構流程圖

  • 12

    3.2 系統架構與模型

    本子系統提供點選位置、判斷功能、輸入參數、自動排版與判斷所有程

    式碼問題和儲存等,使用者只要點選位置後,將會讓使用者選擇所要的功能,

    然後輸入參數,系統將會自動排版,且能輸出和儲存程式碼好讓使用者使

    用。

    圖 3.2系統架構圖

  • 13

    3.3 系統操作圖

    此圖為本作品對話輔助學習程式撰寫系統操作分解圖。

    圖 3.3系統操作圖

  • 14

    3.4 系統開發流程圖

    此圖為本作品對話輔助學習程式撰寫系統在電腦開發流程圖。

    圖 3.4系統開發流程圖

  • 15

    3.5 系統結構分析圖

    此圖為本系統對話輔助學習程式撰寫系統在創作時,所把寫程式常用的

    步驟歸納成兩張圖來解析。

    圖 3.5系統結構分析圖

  • 16

    3.6 系統類別圖

    此圖為本系統對話輔助學習程式撰寫系統的系統類別圖。

    圖 3.6系統類別圖

  • 17

    第四章 軟體流程

    4.1. 電腦端

    4.1.1 使用者操作 當使用者開啟對話輔助學習程式撰寫系統時,就會有宣告、輸入、輸出、

    for、while、if else選項供給使用者選擇。當選擇不同的選項,下方就會

    跳出固定格式供使用者填入數值。

    例如,選擇 for擇下面會跑出宣告、判斷式和運算式,而宣告的類別有

    int、double……等,供使用者選擇所要的類別。而在判斷式裡面 、

  • 18

    第五章 測試服務功能

    5.1 操作環境

    (1) 軟體測試,電腦需是 Windows作業系統。

    (2) 需安裝 Visual Basic,任何版本皆可。

    (3) 需安裝 C#,任何版本皆可。

    5.2 軟體需求

    項次 名稱 數量 規格

    1 Visual Basic 1 皆可

    2 C# 1 皆可

  • 19

    5.3 硬體需求

    項次 名稱 數量 規格

    1 桌上型電腦 1 Windows 7

    2 筆記型電腦 1 Windows 7

    5.4 測試資料

    本測試的測試資料來源可分成下面的資料來源:

    (1) 對話輔助學習程式撰寫系統

    (2) 功能選擇服務

    (3) 輸入數值服務

    (4) 自動排版服務

  • 20

    5.5 測試環境

    本系統測試前的資料整理與測試後的資料蒐集與分析則需要下面

    的工具輔助:

    (1)測試功能實體:筆記型電腦、桌上型電腦

    (2)測試軟體程式功能:Visual Basic、c#

  • 21

    第六章 系統實現

    本章節主要是將整個專題的操作步驟一一做詳細解說。

    6.1 使用者介面

    使用者可以開啟本系統後,依個人需求而選自己需要的功能,使用者介

    面簡單,使用者在操作上會更容易。

    6.1.1. 開啟系統

    使用者在開啟系統後,能看到輸入、輸出、for、while、if else等功

    能,使用者可以依自己需求選擇。

    圖 6.1.1 開啟系統圖

  • 22

    6.1.2. 功能選擇

    我們利用此系統來撰寫學程式都會學到的 9*9乘法表來當範例,當選擇

    for時下方即會跳出宣告、判斷式和運算式等格子,使用者則在下列格子填

    入數值。

    圖 6.1.2 功能選擇圖

  • 23

    6.1.3. 數值填寫

    選擇 for後,在宣告的型別那有 int、double……等選項,之後在名稱

    和內容分別填入變數名稱和初始值,當宣告完畢就可以選擇判斷式的內容,

    最後就是填入運算式內容。

    圖 6.1.3 數值填寫圖

  • 24

    6.1.4. 自動排版功能

    當數值都填寫完畢後,選擇確定鈕,系統會將使用者所輸入的值,自動

    排版的放在右邊的主程式程式碼裡。

    圖 6.1.4 自動排版功能圖

  • 25

    6.1.5. 內層功能

    因為最基礎的 9*9乘法表示由兩個 for迴圈來構成,以上步驟以填寫第

    一個 for迴圈了,現在要加入第 2個 for迴圈,所以先將第 2個 for迴圈的

    宣告、判斷式和運算式依照以上步驟在次的填寫,內層功能在下一頁介紹。

    圖 6.1.5 內層功能圖 1

  • 26

    根據以上步驟填寫數值完後,將內層功能打勾,在選擇確定鈕。

    圖 6.1.5 數值填寫圖 2

    第 2個 for迴圈就會被包進在第一個 for迴圈裡了

    圖 6.1.5 數值填寫圖 3

  • 27

    6.1.6. 輸出功能

    當程式撰寫完畢後,最重要的就是輸出的功能,所以先選擇輸出功能,

    之後再內容裡填寫所要輸出的結果。

    圖 6.1.6 輸出功能圖 1

  • 28

    之後在勾選內層選像,使用者所要輸出的內容就會在第 2個 for迴圈裡,

    且如果要換行也可以勾選此換行此選項。

    而如果使用者在操作或是填寫數值錯誤時,可以使用 Undo 鈕也就是回

    上一步來修改錯誤,當程式碼確定後,使用者必須自行複製主程式裡的程式

    碼,貼至記事本裡,之後再用命令提示字元來觀看結果,之後會將直接開啟

    命令提示字元觀看結果的功能列入下一次改版。

    圖 6.1.6 輸出功能圖 2

  • 29

    第七章 總結

    電腦在現代越來越普及,已經成為必要的生活工具之一,我們使用電腦

    來幫助我們來解決問題,但是如果要讓電腦發揮 100%的功能,就必須要學

    習程式語言,雖然電腦上已經有許多的程式可供我們使用,但是那終究是別

    人寫的,還是會有一點不方便或者是沒有需要的功能,這就必須要靠自己來

    創造寫程式不但能夠解決問題,還可以訓練邏輯思考的能力,國外也越來越

    多從小就開始來學習程式語言的課程,未來會有越來多人學習程式語言,這

    時候就要有程式來幫助學習者寫程式,讓學習者知道哪裡可以寫什麼,不可

    以寫什麼,程式有各式各樣語言,有 Java、C#、C語言等等的語言,雖然寫

    法不太一樣,但是邏輯都是相同的,對於程式的架構的理解,讓學習者有更

    好的學習方式。

  • 30

    參考文獻資料

    [1] http://zh.wikipedia.org/zh-tw/VB

    [2] http://zh.wikipedia.org/zh-tw/%EF%BC%A3%EF%BC%83

    [3] http://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80

    [4] http://zh.wikipedia.org/wiki/C%2B%2B

    [5]施威銘研究所,最新 JAVA 2程式設計與 SCJP認證,旗標出版股份有限

    公司

    [6]

    http://worren.net/works/doc/CLASS/VB%B1%D0%A7%F7/Ch1%20Visual%20Basic%

    20%C2%B2%A4%B6.pdf VB簡介

    [7] http://msdn.microsoft.com/zh-tw/library/2x7h1hfk.aspx Visual Basic 程式語言簡

    [8] http://msdn.microsoft.com/zh-tw/library/kx37x362.aspx Visual C#

    [9] http://liveism.com/ Live數位國中數學

    [10]劉偉晟 對話輔助之程式設計學習系統 崑山課技大學數位生活科技研究所 碩

    士論文

    http://zh.wikipedia.org/zh-tw/VBhttp://zh.wikipedia.org/zh-tw/%EF%BC%A3%EF%BC%83http://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80http://zh.wikipedia.org/wiki/C%2B%2Bhttp://worren.net/works/doc/CLASS/VB%B1%D0%A7%F7/Ch1%20Visual%20Basic%20%C2%B2%A4%B6.pdfhttp://worren.net/works/doc/CLASS/VB%B1%D0%A7%F7/Ch1%20Visual%20Basic%20%C2%B2%A4%B6.pdfhttp://msdn.microsoft.com/zh-tw/library/2x7h1hfk.aspxhttp://msdn.microsoft.com/zh-tw/library/kx37x362.aspxhttp://liveism.com/http://ndltd.ncl.edu.tw/cgi-bin/gs32/gsweb.cgi?o=dnclcdr&s=id=%22101KSUT0115015%22.&searchmode=basic&extralimit=asc=%22%E5%B4%91%E5%B1%B1%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%B8%22&extralimitunit=%E5%B4%91%E5%B1%B1%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%B8http://ndltd.ncl.edu.tw/cgi-bin/gs32/gsweb.cgi?o=dnclcdr&s=id=%22101KSUT0115015%22.&searchmode=basic&extralimit=asc=%22%E5%B4%91%E5%B1%B1%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%B8%22&extralimitunit=%E5%B4%91%E5%B1%B1%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%B8