程式語言

程式語言的簡介

  • 我們使用電腦來工作時,所有的命令都必須變成「程式(Program)」送進電腦處理。在之前的單元我們曾經學過:「DOS的內部命令」在電腦開機時,就會載入記憶體內等待你從鍵盤輸入命令叫它工作,它會將你輸入的命令完成你要的結果,它就是透過已經定義好的指令(Instruction)來指揮電腦執行相關的動作,例如:DIR、TIME、CLS等命令,電腦都能一一完成;而這些可讓電腦完成工作,依照邏輯順序寫成一連串指令的集合,就稱為「程式」。
  • 語言是用來表達訊息和溝通觀念的工具,電腦能夠了解的程式統稱為「程式語言」,程式語言中有一定的格式和符號,稱為「指令」。電腦內所有的資料,都是以「二進制碼(Binary)」─「0與1」的方式儲存,指令也不例外;當資料被讀取至主記憶體內,並送入電腦的控制單元後,電腦才知道它是一個指令,經過處理(解碼)後,才會交給電路依照一定的邏輯順序執行該項指令,完成我們所要解決的問題。
  • 程式語言的類別

  • 人類依國家、種族、地域的不同,有各式各樣的語言,例如:華語、英語、日語、德語等。而電腦的程式語言,一樣的也有許多不同種類,以下就程式語言的難易程度與操作環境來加以區分。
  • 一、以難易程度區分

    (一)低階語言(Low Level Language)

  • 低階語言分為「機器語言(Machine Language)」和「組合語言(Assembly Language)」兩種。一般的個人電腦屬於數位式電腦,資訊的表示方式是由0和1所組成,這兩種符號構成的「機器語言」就是個人電腦所能了解的語言。
  • 要了解由「0」和「1」組合而成的機器語言所代表的意義,必須透過查表才能得知。閱讀和了解機器語言程式相當地困難,使用起來也相當不便;且因為機器語言和硬體架構有關,所以不同電腦的機器語言也各有所不同。例如:麥金塔電腦與IBM個人電腦,兩者的機器語言是不相容的。
  • 「組合語言」是用簡單而有意義的英文字或英文縮寫,來代替「0」與「1」所組合的指令。
  •  組合語言與電腦的硬體架構是有很大的關係,和機器語言的差別只在於使用有意義的英文字,來代替人類看不懂的二進制碼而已,雖然組合語言較容易撰寫。但因為電腦只懂機器語言,所以使用組合語言編寫的程式,必須透過組譯程式(Assembler),翻譯成機器語言後,才能交給電腦執行。組合語言與機器語言十分相似,都必須了解電腦的架構,才能有效正確的使用。
  •  

    (二)高階語言(High Level Language)

  • 為了使電腦更廣泛的使用,就必須採用和人類日常生活用語較接近的程式語言,一般稱為「高階語言」,使用高階語言撰寫的程式,並不是馬上就可在電腦上執行,同樣必須透過「轉換」成機器語言後、才能在電腦上執行,轉換的工具有「直譯程式(Interpreter)」和「編譯程式(Compiler)」,在翻譯過程中,「直譯程式」是每翻譯一行指今後,就立刻將機器語言交付電腦執行,例如:早期的BASIC語言或是網際網路的標準語言HTML。而「編譯程式」則是將全部的高階語言程式翻譯成機器語言後,才將完整的機器語言交由電腦執行,例如:曾經流行於商業上的COBOL語言、應用於科學與工程計算的FORTRAN語言或是最近的Visual C++語言等。一般而言,採用編譯程式完成的語言,其執行速度較直譯式的程式為快。
  • 新一代的程式語言已融入「物件導向」的觀念與架構,例如:Visual BASIC、Visual C++、Delphi等都是屬於物件導向的電腦語言。在先前我們知道Windows的工作原裡,簡單的說就是三個觀念:視窗、事件及訊息。
  • 我們可將視窗看做是一個有範圍的矩形,而每個視窗發生的事件,都是我們藉著點選滑鼠這個動作後產生,接受這項訊息後,視窗將訊息傳送給作業系統,作業系統除了處理這個訊息之外,同時也將此訊息傳給其他的視窗,每個接收到此訊息的視窗便採取了適當的回應動作,以便能達成作業系統所賦予的作用。
  • 所謂物件導向語言,是指程式的撰寫環境,在該電腦語言的整合發展環境下,我們可不需要撰寫大量的程式碼,便可將介面元件的外觀和配置,由該電腦語言的整合發展環境中所預先建立好的物件,拖放到螢幕上的某一點。如此一來,不但簡省許多費神的工作,免除所有低階訊息的處理,同時還能夠迅速地撰寫功能強大的應用程式,毋需再深究一些旁枝末節,這就是物件導向程式語言最主要的功能。
  • 此外還有一種稱之為HTML的語言,就是在網際網路蓬勃發展下的一種新興語言,透過超文件的表達方式,將文字、圖形、影像及聲音等多媒體Visa整合資訊,生動地在電腦上呈現出來。每當我們瀏覽網頁按下超連結時,就是使用這種方式所撰寫出來的語言,HTML是一種由普通的文字檔,加上了各種標記後,透過電腦、網站伺服器及瀏覽器所呈現的一種超文件檔案的標記語言。由於這種語言是以標準文字檔的方式呈現,且網際網路上大多數的瀏覽器都看得懂,故可攜性高。
  • 我們可將HTML視為一種跨平台式的語言,並將其歸類為高階語言。
  • 二、以操作環境區分

    (一)文字模式

  • 依照電腦程式語言的發展環境歷史,先是在文字模式的環境下,利用一般的文字編輯軟體程式,或是語言系統軟體所提供的整合發展環境,做程式撰寫設計,再經除錯與組譯、編譯或是透過直譯工具來產生可讓電腦工作的程式。
  • (二)功能表單、圖形符號模式

  • 目前的作業系統環境大都是以「視窗圖形界面」為主,而程式設計軟體的發展隨著作業系統環境而改變,並且發展得更為簡便與快速。透過圖形化和物件導向功能,用滑鼠指標拖曳相關圖示或按滑鼠按鍵等動作,便能很快地協助完成想要的程式設計,這對於程式設計人員可說是方便又快速。
  • 程式設計的原則

  • 各種程式語言各有其特性和功能,而程式設計的目的,是要電腦依照我們設定好的步驟去逐步執行,完成特定的工作。因此,在設計程式時,應考量到採用何種語言來發展程式,以及如何才能設計出優良的程式。
  • 一、選擇程式語言時應考慮的因素

    (一)系統用途特性:

  • 系統發展程式的主要用途,是以資料處理、科學計算或多媒體呈現為主。
  • (二)作業效率:

  • 編寫程式時,系統所需的電腦記憶體需求和處理速度及優先條件。
  • (三)通用性:

  • 該電腦語言是否有標準化,以適用未來設備的更新或廠牌機種的替換時,仍然可使用該語言發展的程式。
  • (四)操作介面與語法普遍性:

  • 應選擇具共通操作介面、語法相容性高的程式語言,可使研發人員不需再花更多的時間或精神,去學習新的程式語言。
  • (五)偵錯能力:

  • 程式中如有錯誤時,設計人員可很快速的完成除錯工作,找出問題。
  • (六)完整的參考手冊:

  • 有足夠的資料提供設計人員查閱或進修。
  • (七)原有系統的相容性:

  • 與原先使用的程式版本是否相容,或是採用同一種語言來設計程式。
  • (八)成本:

  • 考量經費和時間成本的條件限制下,選擇合宜的語言。
  • 二、良好的程式應該具備的條件

    (一)程式的執行結果必須正確無誤。

    (二)程式內容可讀性要高,各階段的功能有詳細註解說明。

    (三)程式的設計應具模組化或結構化,在修改或更新時更便捷。

    (四)有完整的程式架構說明,以及相關的參考技術與使用手冊。

    (五)程式的作業效率和相容性要高。對於電腦基本設備的需求,不會因更換設備而造成錯誤百出,或是執行速度變慢,造成延遲緩慢的情形。

    程式設計流程

  • 要指揮電腦工作必須透過電腦的程式來轉達;也學習到在設計程式時,應該考量的一些條件和因素。而程式設計的目的,一般是利用電腦來發展研究工具和解決問題,因此在設計的過程中,可按下列步驟來處理:
  • 一、分析問題和需求

  • 當問題或需求產生時,須先認清問題的癥結,對症下藥後,才能夠解決問題和需求。同樣地,在撰寫程式之前,必須對問題詳細的研究與探討,確認該問題應採用何種電腦軟硬體來作業,蒐集完整的相關資料後,經過徹底分析,來找出該問題的最佳解決方法。
  • 二、設計演算法(Algorithm)

  • 問題分析結束後,若是簡單容易的問題,可以「流程圖(Flow Chart)」將解決問題的步驟繪出,再依流程圖的程序來撰寫程式即可。遇到複雜的國際油價問題時,可用流程圖和演算法語言相互搭配。「演算法」就是為解決某一問題的一系列有次序、明確的步驟。
  • 一個好的演算法應該具備下列幾個要件:
  • (一)有限性:要花有限的步驟內解決問題。

    (二)明確性:每個步驟都必須很清楚地表達出來。

    (三)有效性:必須能在有限的時間內完成。

    (四)輸入資料:包含零個或一個以上的輸入資料。

    (五)輸出資料:至少產生一個輸出,即為結果的呈現。

  • 透過流程圖標準的符號,程式設計人員可在撰寫程式前,先決定解決問題的步驟和流程,並以流程圖的形式畫出。而流程圖是用各種標準圖形符號,以圖表和箭頭的方向,來說明解決問題的程序和方法。
  • 三、撰寫程式

  • 以流程圖定義解決問題的步驟以後,程式設計人員根據流程圖的步驟,撰寫程式的指令,並檢查程式敘述的語法是否正確,處理的流程步驟是否和流程圖中的設計相同,經過反覆修改更正後,進行編輯撰寫程式,然後將編輯的程式儲存成檔案。程式檔案的內容如未經編譯時,稱為「原始程式(Source Program)」或「原始碼(Source Code)」。
  • 四、原始程式的處埋

  • 將產生的原始程式進行處理,依照先後順序可分為下列步驟:
  • (一)編譯(Compile)

  • 由「編譯程式(Compiler)」將原始程式翻譯成目的碼,依程式語法正確與否,可能產生的情形如下:
  • 1.程式內有語法錯誤(Syntax Error)編譯後會將原始程式印出(Source Listing),並指出語法錯誤的敘述,產生診斷報表(Diagnostic Report),程式設計人員必須按指示修改錯誤之處,再重新處理。
  • 2.程式語法完全正確
  • 原始程式係由高階語言組成,若語法完全正確,經編譯後會產生機器語言,稱之為「目的程式(Object Program)」或「目的碼(Object Code)」。
  • (二)執行(Execute)

  • 編譯完成的目的程式可交給電腦執行,並得到預期的結果。
  • (三)除錯(Debug)

  • 若執行的結果與預期的結果不同,表示程式的處理過程不完全正確,在編譯階段中,編譯程式會找出所有語法不符的錯誤敘述,但無法找出程式不正確的邏輯設計,如:程式設計人員將「Y+6」誤寫為「Y-6」,此種錯誤是程式邏輯不正確,而且只有在執行時,才會出現的錯誤,這就稱為「邏輯錯誤」。找出邏輯錯誤並加以改正的步驟稱為「除錯」,這種錯誤很難確定在什麼地方發生,所以除錯往往需要靠程式設計人員的耐心和經驗。
  • (四)測試(Test)

  • 一個正確的程式,必須在任何狀況下,都能得到正確的結果,程式設計人員必須準備各種測試資料,以確定程式是否完全正確。因此,選用的測試資料必須周全,如果程式在任何狀況下都與預期結果相符,那麼這個程式必然是萬無一失。
  • 程式語言的應用
  • Powered by 程式設計俱樂部