1.1 程序設計的基本概念
1.1 程序設計的基本概念
1.1.1 程序和程序設計語言
什么是程序?怎樣設計程序?這往往是計算機語言初學者首先遇到的問題。有人以為計算機是“萬能”的,只要把任務告訴計算機,計算機就會自動完成一切,并給出正確結果。這其實是一種誤解,要讓計算機按照人的意志來完成某項任務,首先要制訂該項任務的解決方案,再將其分解成計算機能夠識別并可以執(zhí)行的基本操作指令,把這些指令按一定的規(guī)則組織排列起來存放于計算機內存儲器中,當給出執(zhí)行命令后,計算機按照規(guī)定的流程依次執(zhí)行存放在內存儲器中的指令,最終完成所要實現(xiàn)的目標。人們把這種計算機能夠識別并可以執(zhí)行的指令序列稱為程序。也就是說,程序是人與計算機進行“交流”的工具,它用我們常說的程序設計語言來描述。
程序設計語言是計算機能夠理解和識別的語言。它通過一定的方式向計算機傳送操作指令,從而使計算機能夠按照人們的意愿進行各種操作處理。任何一種程序設計語言都有一定的使用規(guī)則,通常稱為語法規(guī)則。要學習程序設計語言,必須注意學習它的語法規(guī)則,就像學習漢語要學習漢語語法一樣。而學習程序設計語言的目的就是為了設計計算機程序。
程序設計語言的種類很多,大體上經過了由低級語言到高級語言的發(fā)展過程,目前廣泛使用的有C、C++、Java、Visual BASIC、Visual FoxPro等高級語言,這些高級語言采用的都是接近于人們熟悉的數(shù)學語言和自然語言的表達形式,使人們的學習和使用更加容易和方便。我們把由高級語言編寫的程序稱為源程序。顯而易見,用高級語言編寫的源程序,計算機不能直接識別并執(zhí)行,因為計算機只能識別和執(zhí)行二進制形式的指令或數(shù)據(jù),因此,必須有一個工具先將源程序轉換成計算機能夠識別的二進制形式的程序,我們把這種二進制形式表示的程序稱為目標程序,而承擔轉換的工具稱為語言處理程序。每一種程序設計語言都有與它對應的語言處理程序,語言處理程序對源程序的處理方式有編譯方式和解釋方式兩種,相應的轉換工具分別稱為編譯程序和解釋程序。編譯方式是指將源程序輸入到計算機中后,用相應的編譯程序將整個源程序轉換成目標程序,然后再通過裝配連接程序形成可執(zhí)行程序,最后運行可執(zhí)行程序得到結果。目標程序和可執(zhí)行程序都是以文件的方式存放在磁盤上的,再次運行該程序,只需直接運行可執(zhí)行程序,不必重新編譯和連接。解釋方式是指將源程序輸入到計算機中后,用相應的解釋程序將其逐條解釋,邊解釋邊執(zhí)行,得到結果,而不保存解釋后的機器代碼,下次運行該程序時還要重新解釋執(zhí)行。采用編譯方式,程序的運行速度快,效率高。因此,在目前常用的高級語言中除 BASIC 語言采用解釋方式外,大部分高級語言都采用編譯方式。
1.1.2 程序設計
對于初學者來說,往往把程序設計簡單地理解為只是編寫一個程序,這是不全面的。程序設計是指利用計算機解決問題的全過程,它包含多方面的內容,而編寫程序只是其中的一部分。利用計算機解決實際問題,通常先要對問題的性質與要求進行深入分析并確定求解問題的數(shù)學模型或方法,然后考慮數(shù)據(jù)的組織方式和算法,并用某一種程序設計語言編寫程序,最后調試程序,使之運行后能產生預期的結果,這個過程稱為程序設計。程序設計的基本目標是實現(xiàn)算法和對初始數(shù)據(jù)進行處理,從而完成對問題的求解。
有些初學者,在沒有把所要解決的問題分析清楚之前就急于編寫程序,結果編程思路紊亂,很難得到預期的效果。因此,為了用計算機解決一個實際問題,作為設計人員,從拿到任務到得出正確結果,往往要經過以下6個設計階段。
① 分析問題。即分析問題需求,也就是弄清楚該問題有哪些已知數(shù)據(jù),程序運行需要輸入什么數(shù)據(jù),需要輸出什么結果,需要進行哪些處理,等等。
② 確定處理方案。如果是數(shù)學問題,就要根據(jù)該問題的數(shù)學解法,考慮所用到的數(shù)學公式或相關函數(shù);如果是工程問題,就要先建立該問題的數(shù)學模型,把工程問題轉化成數(shù)學問題,以便用計算機解決。對同一個問題可以用不同的方案來處理,不同的方案決定了不同的處理步驟,效率也有所不同。
③ 確定操作步驟。根據(jù)選定的處理方案,具體列出讓計算機如何進行操作的步驟。這種規(guī)定的操作步驟稱為算法,而這些操作步驟之間的執(zhí)行順序就是控制結構。通常使用流程圖來描述算法,把算法思想表達清楚,比較簡單的問題可直接進入編寫程序階段。
④ 根據(jù)操作步驟編寫源程序。用計算機語言編寫的操作步驟就是計算機程序。
⑤ 運行調試程序。將計算機程序輸入計算機中,經過編譯、連接和運行,如果程序是正確的,應該能得到預期的結果。如果得不到正確的結果,應檢查程序是否有錯誤,改正后再試運行,直到得出正確的結果為止。
⑥ 整理輸出結果,寫出相關文檔。
圖1.1所示為程序設計的一般過程。
圖1.1中,前兩個步驟類似于人們解決問題的一般過程,即分析問題,然后確定一種處理方案。后4步則是程序設計的環(huán)節(jié),其中最關鍵的是第③步“確定操作步驟”,或稱算法設計。只要算法是正確的,編寫程序就不會太困難。對于一個具體問題,編程者應該具備設計算法和正確使用已有算法的能力。