官术网_书友最值得收藏!

1.1 程序設計的基本概念

學習提示

【了解】程序和程序設計的概念

C語言是一種程序設計工具,用C語言進行編程的過程就是程序設計的過程,因此,在講C語言的用法之前,先介紹一些有關程序和程序設計的基礎知識。

1.1.1 程序和程序設計

人們將需要計算機做的工作寫成一定形式的指令,并把它們存儲在計算機的內部存儲器中,當人為地給出命令之后,它就被計算機按指令操作順序自動運行,這樣程序就被執(zhí)行了。

廣義上說,程序設計是用計算機解決一個實際應用問題時的整個處理過程,包括提出問題,確定數(shù)據(jù)結構、確定算法、編程、調試程序及書寫文檔等一系列的過程。

●提出問題:提出需要解決的問題,形成一個需求任務書。

●確定數(shù)據(jù)結構:根據(jù)需求任務書提出的要求,指定輸入數(shù)據(jù)和輸出結果,確定存放數(shù)據(jù)的數(shù)據(jù)結構。

●確定算法:針對存放數(shù)據(jù)的數(shù)據(jù)結構確定解決問題、實現(xiàn)目標的步驟。

●編寫程序:根據(jù)指定的數(shù)據(jù)結構和算法,使用某種計算機語言編寫程序代碼,輸入到計算機中并保存到磁盤上,簡稱編程。

●調試程序:消除由于疏忽而引起的語法錯誤或邏輯錯誤;用各種可能的輸入數(shù)據(jù)對程序進行測試,使之對各種合理的數(shù)據(jù)都能得到正確的結果,對不合理的數(shù)據(jù)都能進行適當處理。

●書寫文檔:整理并寫出文檔資料。

請注意

數(shù)據(jù)結構是指數(shù)據(jù)在計算機中的存放形式,它用來反映一個數(shù)據(jù)的內部構成,即一個數(shù)據(jù)由哪些數(shù)據(jù)成分構成,以什么方式構成,呈什么結構,如線性表、樹等,本書中不做詳細介紹。

1.1.2 計算機語言

學習提示

【熟記】3種計算機語言的名稱

【了解】常見的高級語言

計算機語言是人與計算機進行交流的工具。計算機語言分為機器語言、匯編語言和高級語言3種。

對于計算機本身來說,它并不能直接識別由高級語言編寫的程序,只能接受和處理由0和1的代碼構成的二進制指令或數(shù)據(jù),這種直接面向計算機的指令稱為“機器語言”。

目前,使用比較廣泛的語言,如 Visuai C++、Java以及本書將要介紹的C語言等,它們都被稱為計算機的“高級語言”。高級語言使用接近人們習慣的自然語言作為語言的表達形式,學習和操作起來十分方便,并且用高級語言編寫的程序具有良好的通用性和可移植性,不依賴于具體的計算機類型。

匯編語言是介于機器語言和高級語言之間的一種語言。

1.1.3 算法的概念

學習提示

【掌握】算法的描述方法

我們知道,“確定算法”是進行程序設計過程中一個相當重要的步驟,那么究竟什么是算法呢?

1 算法的概念

不是只有計算的問題才有算法。廣義上講,算法是為了解決一個問題而采取的方法和步驟。例如,描述跆拳道動作的圖解就是跆拳道的算法;一首歌曲的樂譜也可以稱為該歌曲的算法,因為它指定了歌曲演奏的每一個步驟,按照此步驟就能演奏出預定的樂曲。

計算機科學中的算法是指為解決某個特定問題而采取的確定且有限的步驟,它是為了解決“做什么”和“怎么做”的問題。著名科學家沃思(NikikiausWirth)曾提出一個公式:

數(shù)據(jù)結構+算法=程序

其中,數(shù)據(jù)結構是對數(shù)據(jù)的描述,也就是程序中數(shù)據(jù)的類型和組織形式,而算法則是對操作步驟的描述。

2 算法的描述

算法是程序設計中非常重要的概念,它的處理對象是數(shù)據(jù)。有了算法,就可以用任何一種計算機高級語言將其轉換為程序。看到這里,讀者可能會想:算法既然這么重要,那算法是用什么方法來描述的呢?下面就解開答案。其實,算法可以用各種描述方法進行描述,目前最常用的有3種:偽代碼、流程圖和N-S結構圖。

偽代碼是一種近似高級語言但又不受語法約束的語言描述方法,這種方法比較易于理解,但描述較冗長。

流程圖是一種很好的描述算法的工具,傳統(tǒng)的流程圖由圖1-1所示的幾種基本圖形組成。

圖1-1 流程圖基本構成圖形

用傳統(tǒng)流程圖表示算法的優(yōu)點是形象直觀、簡單方便;缺點則是這種流程圖對于流程線的走向沒有任何限制,可以任意轉向,描述算法時費時費力且不易閱讀。

N-S結構圖是由美國學者I.Nassi和B.Shneiderman在1973年提出的。這種流程圖完全去掉了流程線,算法的每一步都用一個矩形框來表示,把一個個矩形框按執(zhí)行的次序連接起來就是一個算法描述。

3 算法的特性

一個算法應該具有以下幾個特性:

●有窮性;

●確定性;

●有零個或多個輸入;

●有一個或多個輸出;

●可行性。

1.1.4 結構化程序設計

結構化程序主要由以下3種基本控制結構組成,在后面的章節(jié)中將做詳細的介紹。

1 順序結構

順序結構是最基本的算法結構,當執(zhí)行由這些語句構成的程序時,將按這些語句在程序中的先后順序逐條執(zhí)行,沒有分支,沒有轉移,沒有步驟之間的相互約束,沒有對某一步驟的多次使用,完全按照步驟的原有次序依次執(zhí)行。順序結構可用圖1-2所示的流程圖表示。其中圖1-2(a)是流程圖,圖1-2(b)是N-S結構圖。

2 選擇結構

選擇結構根據(jù)不同的條件去執(zhí)行不同分支中的語句。選擇結構可用圖1-3所示的流程圖表示,其中圖1-3(a)是流程圖,圖1-3(b)是N-S結構圖。

圖1-2 順序結構

圖1-3 選擇結構

3 循環(huán)結構

循環(huán)結構就是根據(jù)各自的條件,使同一組語句重復執(zhí)行多次。循環(huán)結構的流程如圖1-4和圖1-5所示。圖1-4是當型循環(huán),這種循環(huán)的特點是:當指定的條件滿足(成立)時,就執(zhí)行循環(huán)體;否則就不執(zhí)行。圖1-5是直到型循環(huán),該循環(huán)的特點是:執(zhí)行循環(huán)體,直到指定的條件滿足(成立),就不再執(zhí)行循環(huán)。

由以上3種基本結構組成的算法結構可以解決任何復雜的問題,由它們所構成的算法稱為結構化算法,由它們所構成的程序稱為結構化程序。

圖1-4 當型循環(huán)

圖1-5 直到型循環(huán)

真題演練

【例1】流程圖是描述算法的很好的工具,流程圖一般由幾種基本圖形組成。其中輸入輸出框圖形是( )。

A)平行四邊形    B)長方形

C)橢圓形     D)菱形

【解析】算法可以用各種描述方法進行描述,目前最常用的有3種:偽代碼、流程圖和N-S結構圖。傳統(tǒng)的流程圖由圖1-3所示的幾種基本圖形組成。因此選項A正確。

【答案】A

【例2】算法所具有的特性不包括( )。

A)可行性

B)有窮性

C)確定性

D)美觀性

【解析】一個算法應該具有5個重要的特性:有窮性、確定性、輸入、輸出以及可行性。

【答案】D

【例3】以下不能用于描述算法的是( )。

A)文字敘述

B)程序語句

C)偽代碼和流程圖

D)E-R圖

【解析】算法的描述有偽代碼、流程圖、N-S結構圖等方法。E-R圖是實體聯(lián)系圖,不能用于描述算法。

【答案】D

【例4】以下敘述中錯誤的是(  )。

A)算法正確的程序可以有零個輸入

B)算法正確的程序最終一定會結束

C)算法正確的程序可以有零個輸出

D)算法正確的程序對于相同的輸入一定有相同的結果

【解析】算法的特征如下:①有窮性。一個算法(對任何合法的輸入)在執(zhí)行有窮步后能夠結束,并且在有限的時間內完成。②確定性。算法中的每一步都有確切的含義。③可行性。算法中的操作能夠用已經實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn)。④輸入。一個算法有零個或者多個輸入,零個輸入就是算法本身確定了初始條件。⑤輸出。一個算法有一個或者多個輸出,以反映數(shù)據(jù)加工的結果。所以選項C錯誤。

【答案】C

主站蜘蛛池模板: 阿图什市| 泰来县| 友谊县| 白朗县| 东阳市| 云安县| 阜新市| 济阳县| 宁德市| 紫金县| 昭通市| 西和县| 阿克苏市| 神木县| 乃东县| 马鞍山市| 高邮市| 南京市| 慈溪市| 泾源县| 元阳县| 恩施市| 句容市| 西乌珠穆沁旗| 丽水市| 明星| 乐陵市| 桃园县| 海盐县| 北海市| 宝丰县| 怀仁县| 桂东县| 如皋市| 淮滨县| 永平县| 宜兰市| 额尔古纳市| 靖西县| 报价| 辛集市|