版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計概述1.1程序設計語言1.2程序設計的基本方法1.3程序設計語言的內容體系1.4C語言的特點1.5基本C語言程序結構實操訓練課外練習
1.1程序設計語言
為什么要學習程序設計語言?從計算機外部來看,計算機似乎具有人的智能,能實現(xiàn)人的各種意圖。而事實上,計算機是程序控制的高度自動化的信息處理工具。要讓計算機來實現(xiàn)人的意圖,必須將意圖編寫成程序,輸入并存儲到計算機的存儲器中,只有當計算機執(zhí)行程序時,才會按人的意圖進行規(guī)定的操作。也就是說,沒有程序,計算機就表現(xiàn)不出任何功能。
程序是解決某一問題的方法和步驟向計算機的表達或描述。這種表達或描述必須采用人與計算機能進行交互的語言。這種與計算機交互的語言就是程序設計語言。
編程語言有哪些?各具有什么特點?
隨著計算機應用技術的發(fā)展,程序設計語言也經歷了不同的發(fā)展階段,出現(xiàn)了多種語言。根據(jù)人與計算機的交互性,程序設計語言可分為低級語言和高級語言。低級語言包括機器語言、匯編語言,高級語言則分為面向過程的高級語言和面向對象的高級語言。
機器語言是計算機能夠直接識別的語言,它是一組二進制編碼指令。在計算機應用初期,人們用機器語言編寫程序。但是機器語言是冗長的二進制代碼,難理解、難記憶、難編程,只有少數(shù)計算機專業(yè)人員才會使用。隨著計算機應用技術的發(fā)展,計算機語言一直朝著“人性化”的方向發(fā)展,先后出現(xiàn)了匯編語言和不同種類的高級語言。
匯編語言是用一組便于人們記憶的助記符號來表示機器語言的指令。匯編語言中的一條指令對應一條機器指令。機器語言和匯編語言都是面向具體計算機的語言,每一種計算機都有自己獨特的機器語言和匯編語言。由于它們依賴具體的計算機,所以被稱為低級語言。
1.面向過程的語言
所謂過程,其實質是某個輸入集合到某個輸出集合的一個映射,可以用某種描述形式來說明這種映射的細節(jié)。從解決問題的角度來講,可以把解決問題的方式抽象為較大的過程,再把這個較大的過程分解為較小的過程,一直到具體的操作步驟。這些過程都可以用某種高級語言按照一定的順序和規(guī)則進行描述。這種類型的程序設計語言稱為面向過程的高級語言。也就是說,用面向過程的語言編程只需根據(jù)解決問題的過程,把過程的每一步按順序用語言描述出來,也稱為基于算法的編程語言。面向過程的編程語言有BASIC、FORTRAN、COBOL、PASCAL、C、Ada、LISP等。
2.面向對象的語言
面向對象的語言是用客觀世界中描述事物的方法來描述一個程序要描述的事物,使程序設計更接近現(xiàn)實世界的思維方式,更簡捷高效。面向對象的程序設計是以處理的數(shù)據(jù)為對象,根據(jù)對象的屬性與操作進行封裝并定義接口來組織程序。常用的面向對象的程序設計語言有VisualC++、VisualBasic、Dephi、Java等。
計算機編程語言只是提供了一種人與計算機進行交互的方法或工具。計算機唯一能識別的語言只有機器語言,所有非機器語言編寫的程序都要轉換為機器語言,才能在計算機中執(zhí)行。這種轉換一般稱為編譯。編譯由系統(tǒng)軟件來完成。所以,為了方便用戶使用,任何高級語言都有一個實現(xiàn)編譯等操作功能的語言處理軟件。C語言的語言處理軟件有多種,如TouberC、VisualC++6.0等。
如何將非機器語言程序轉換為計算機能夠識別的機器語言代碼?
由非機器語言編寫的程序一般稱為源程序,能被計算機直接執(zhí)行的程序稱為可執(zhí)行程序。把一個源程序變換成一個可執(zhí)行程序,一般要經過圖1.1所示的處理。圖1.1源程序轉換處理步驟
高級語言的種類很多,不同的語言各有不同的特點與使用場合,但從原理上看,各種語言都包含一些相同的功能和結構。對初學者來說,只要選擇有代表性的語言,掌握了程序設計語言的規(guī)律和內在功能結構,就很容易學習和應用其他語言?,F(xiàn)在一般都把C語言作為程序設計的入門語言。
1.2程序設計的基本方法
程序設計需要哪些知識與技術?程序設計涉及多方面的知識和技術,可以將程序設計所包含的內容表示為程序?=?算法?+?數(shù)據(jù)結構?+?程序設計方法?+?語言工具程序設計是以上四個方面知識的綜合運用與貫通。事實上,這四個方面中的每一個都屬于專門課程的范疇。本書的重點是通過C語言來學習程序設計,但對算法、數(shù)據(jù)結構、程序設計方法應有一個初步了解,以便于理解和設計C語言程序。
1.2.1數(shù)據(jù)結構與算法
數(shù)據(jù)結構與算法具有密切的聯(lián)系。數(shù)據(jù)結構是加工對象,算法則是對數(shù)據(jù)結構加工處理的方法。不同的數(shù)據(jù)結構可能需要采取不同的算法,不同的算法可以對不同的數(shù)據(jù)進行加工處理。
1.數(shù)據(jù)結構
何謂數(shù)據(jù)結構?數(shù)據(jù)結構在程序中如何表示?
數(shù)據(jù)結構指的是數(shù)據(jù)的組織形式,例如,字符數(shù)組、方程組系數(shù)矩陣、人員的基本信息表、反映部門組織機構關系的樹形圖、反映網(wǎng)絡結構及信息的網(wǎng)狀圖等都是不同的數(shù)據(jù)
結構。
一般情況下,數(shù)據(jù)元素之間不是相互孤立的,常常存在某些邏輯上的聯(lián)系,這些聯(lián)系與存儲無關,獨立于計算機。我們把客觀事物本身的邏輯關系稱為邏輯結構。
數(shù)據(jù)要能被計算機處理,就必須存儲在計算機中。通常把數(shù)據(jù)元素及其關系在計算機內的表示稱為數(shù)據(jù)的存儲結構,它是數(shù)據(jù)的邏輯結構在計算機存儲器中的映射。
組織和存儲數(shù)據(jù)的目的是能被計算機處理,即對數(shù)據(jù)施加各種運算。因此,可以在邏輯結構上定義運算集合,而在存儲結構上實現(xiàn)這些運算。
2.算法
何謂算法?算法如何表示?
所謂算法,是解決某一問題所采取的方法和步驟。程序設計中的算法把解決問題的每一步驟具體化為計算機的操作,即算法解決計算機在什么情況下應該“做什么”和“怎樣做”的問題。
軟件行業(yè)把軟件開發(fā)分為設計和編碼兩個不同的階段。所謂設計,就是算法的設計,編碼則是對算法以編程語言來表示。算法的設計就是算法的分析與表示。算法設計沒有固定的模式。同一個問題可有多種算法,不同的設計者可以設計出不同的算法。下面通過一個實例來介紹算法及算法設計。
例如:一個班有30個學生,要求將一門課考試成績不及格的學生的學號和成績打印
出來。
假設用c表示學生的學號,ci代表第i個學生的學號,用s表示學生的成績,si代表第i個學生的成績,則問題的算法步驟如下:
(1)?1?i(相當于設立了一個指針,先指向第一個學生);
(2)如果si<60,則打印出學號ci和成績si,否則不打?。?/p>
(3)?i+1?i(相當于修改指針,使其指向下一個學生);
(4)如果i≤30,返回步驟(2),繼續(xù)執(zhí)行,否則算法結束。
算法要采用一定的形式表示出來,其目的是便于用一種計算機編程語言把算法變換成能在計算機上實現(xiàn)的程序。算法的描述有多種方式,如圖解方式、語言方式等。其中,流程圖是最容易理解的一種最基本的算法描述方法。為了使讀者在C語言學習中會分析并表示算法,下面對流程圖作一簡單介紹。
流程圖采用一些規(guī)定的圖形符號來表示相應的處理流程。常用的圖形元素如圖1.2所示。
上例用流程圖表示則如圖1.3所示。圖1.2流程圖中常用的圖形元素圖1.3算法流程圖
流程圖的另一種表示形式是N_S圖。N_S圖是去掉流程線,把算法寫在一個框內的流程圖。幾種基本程序結構的N_S圖符號如圖1.4所示。圖1.3算法的N_S圖表示如圖1.5所示。圖1.4幾種基本程序結構的N_S圖符號圖1.5N_S圖示例
1.2.2程序設計方法
程序設計的基本方法有哪些?
程序設計方法涉及非常豐富的內容,但模塊化程序設計思想始終貫穿所有程序設計的過程。
模塊化程序設計方法的基本思想就是抽象和分解。
抽象是人類認識世界的基本法則之一?,F(xiàn)實世界中的某些事物、狀態(tài)或過程之間總是存在著某些相似的方面,把這些方面集中和概括起來,暫時忽略它們之間的差異,或者說抽出事物的本質特性而暫時不考慮其細節(jié),這就是抽象。
抽象包含了系統(tǒng)的觀點和分層的觀點,即可以把程序設計問題看成一個系統(tǒng),這個系統(tǒng)可用高級的抽象概念來理解和構造,這些高級的抽象概念又可用較低級的抽象概念來理解和構造,如此進行下去,直到最低層次的模塊可用某種程序設計語言的語句來表示為止。
實際上,對系統(tǒng)的每一次抽象都是向更具體的方面推進的過程,也是進一步分解的過程。因此,在抽象的過程中,同時伴隨著分解。當我們遇到一個較大、較復雜的問題時,不應急于編寫程序代碼,而應該首先把問題自頂向下逐步分解,細化成一個個程序模塊,然后對每一個模塊進一步細化。處于不同層次的模塊應該只考慮本模塊內部的問題而不必考慮其他模塊內部的問題,頂層模塊控制系統(tǒng)的主要功能并影響全局,底層模塊則完成對數(shù)據(jù)的具體處理。
信息隱蔽和局部化是模塊化程序設計方法的另一基本思想。這一思想的大意是:在模塊化的程序設計過程中,一個模塊內包含的信息不能被不需要這些信息的模塊訪問,也就是說,模塊的劃分應該遵循獨立性原則,即模塊彼此之間互相依賴的程度要小,而模塊內部各元素彼此之間的結合要緊密。
結構化程序設計是程序設計的重要方法。結構化程序設計是以模塊設計為中心的,任何簡單或復雜的算法都可以由順序結構、選擇結構和循環(huán)結構這三種基本結構組合而成。所以,這三種結構就被稱為程序設計的三種基本結構。
1.3程序設計語言的內容體系
程序設計語言包括哪些基本內容?應以怎樣的思想方法學習程序設計語言?程序設計語言是人與計算機進行交互的語言。它既具有自然語言的要素和規(guī)律,又有計算機處理所要求的一些特點。
為了從自然語言體系來聯(lián)想程序設計語言體系,圖1.6對自然語言和程序設計語言進行了對比。從圖中可以看出,程序設計語言與自然語言具有可類比的體系內容,但它們又有很大差別。自然語言中,在字詞及符號的基礎上,依據(jù)語法規(guī)則可造句。而程序設計語言中,每一條語句表示計算機內部的一個功能操作,且有嚴格的格式規(guī)定,必須按照規(guī)定書寫,否則計算機系統(tǒng)就不能識別。程序依據(jù)算法,由相應的功能語句構成,要求計算機實現(xiàn)一個特定的功能。學習了簡單數(shù)據(jù)對象和簡單算法的結構語句就可以編寫簡單程序,進一步學習復雜數(shù)據(jù)對象、復雜算法的結構語句就可以編寫復雜功能程序了。圖1.6自然語言和程序設計語言的對比
1.4C語言的特點
為什么要學習C語言?C語言是20世紀70年代初貝爾實驗室的D.M.Ritchie在總結之前高級語言優(yōu)、缺點的基礎上,針對UNIX操作系統(tǒng)的研發(fā)而設計出的高級編程語言。隨著UNIX操作系統(tǒng)的聞名,C語言很快風靡世界,成為最流行的程序設計語言。在C語言的發(fā)展初期,出現(xiàn)了多種版本,標準不一。
C語言內部具有許多功能結構和應用特點,這些特點只有在學習C語言的過程中才能領悟。下面僅對C語言的一般特點作簡要介紹。
(1)語言簡潔,使用靈活,易于學習和使用。C語句接近于自然語言和數(shù)學語言,功能與語義緊密聯(lián)系,容易理解和應用。
(2)數(shù)據(jù)類型豐富。C語言包含豐富的數(shù)據(jù)類型,涵蓋了實際中所面臨的各種數(shù)據(jù)結構,幾乎不需要用戶自己定義數(shù)據(jù)結構,給程序設計帶來了很大便利。
(3)數(shù)據(jù)處理功能強。C語言包含數(shù)值運算符、字符運算符、邏輯運算符和字/位運算符,它們與豐富的數(shù)據(jù)類型相結合,構成了靈活多樣的表達式,可以實現(xiàn)其他高級語言難以實現(xiàn)的運算。
(4)具有低級語言對計算機的一些硬件資源進行控制的功能。C語言不但具有其他高級語言的功能和應用方式,還兼有低級語言的許多功能,例如對存儲器或I/O端口的地址訪問、位操作等功能,不僅是通用的程序設計語言,又廣泛地應用于系統(tǒng)軟件開發(fā)和實時控制應用系統(tǒng)開發(fā)中。
(5)既支持結構化程序設計,又支持面向對象程序設計。隨著程序設計方法和技術的發(fā)展,在基本C語言的基礎上,又產生了C語言的超集C++語言,二者具有良好的兼容性和繼承性,使得基本C語言支持結構化程序設計,C++語言支持面向對象程序設計。學習基本C語言是學習C++的基礎。C語言程序可以在C++編譯系統(tǒng)中運行,本書中的所有程序都是在VisualC++6.0環(huán)境中運行的。
(6)生成的目標代碼效率較高。匯編指令與機器碼指令一一對應,匯編語言源程序生成的目標代碼幾乎不包含冗余碼。一般高級語言源程序生成的目標代碼都包含一定量的冗余代碼,C語言源程序生成的目標代碼所包含的冗余代碼較少,其目標代碼的效率僅比匯編語言的低10%~20%。
(7)可移植性好。C語言程序幾乎可在各種類型的計算機和操作系統(tǒng)上運行。
1.5基本C語言程序結構
C語言程序是什么樣子的?C語言程序書寫有什么基本要求?在學習有關C語言的具體內容之前,對基本程序結構應有一個初步了解,這樣一方面能認識C語言的一些特點,另一方面能了解一個C語言程序的基本組成,從而有助于后面的學習。下面通過一個簡單的C語言程序來說明其構成特點。
1.結構角度的C語言程序的構成特點
(1)?C語言程序由函數(shù)構成。函數(shù)是C語言程序的基本單位,是一個實現(xiàn)特定功能的程序模塊,相當于其他語言中的子程序。一個C語言程序必須有一個主控函數(shù)(main),程序從main()函數(shù)的第一條可執(zhí)行語句開始執(zhí)行。一個C語言程序可以包含若干個函數(shù)(系統(tǒng)提供的庫函數(shù)和用戶定義的函數(shù)),由函數(shù)調用關系形成完整的功能體系。從這個角度來說,一個C語言程序的設計,就是一個個函數(shù)及其調用關系的設計。在例1.1中,因功能簡單,所以只有一個主函數(shù)。
(2)一個函數(shù)由函數(shù)首部和函數(shù)體兩部分構成。因為C程序中的函數(shù)是一個功能相對獨立的模塊,所以在函數(shù)首部要定義本函數(shù)被引用的名稱及其模塊之間需傳遞的參數(shù);函數(shù)體是功能的具體實現(xiàn)部分,函數(shù)體被一對大括號界定。具體的函數(shù)定義內容將在后續(xù)章節(jié)中介紹。
(3)函數(shù)體中每一條語句用“;”作為結束符,也就是說,“;”是C語言程序中語句的唯一標識。
(4)在一個C語言程序中若要調用標準庫函數(shù),在程序首部應用預處理命令#include把有關信息包含在本程序中。C語言編譯系統(tǒng)為各類標準庫函數(shù)提供了原型定義,分別包含在擴展名為?.h的頭文件中。使用哪一類庫函數(shù),應用#include把相應的頭文件包含進來。
(5)在C語言程序的任一語句行可以用“//”進行注釋。注釋只是為了提高程序的可讀性,對程序的功能及處理沒有絲毫影響。注釋內容可以采用程序員習慣的語言字符。
2.功能角度的C語言程序的構成特點
從功能角度來看,一個程序就是對特定數(shù)據(jù)進行存儲和處理,并將處理結果輸出給用戶的過程。所以,一個C語言程序應包含提供原始數(shù)據(jù)、數(shù)據(jù)存儲、數(shù)據(jù)處理、數(shù)據(jù)輸出這幾個環(huán)節(jié)的操作語句。如例1.1中:
(1)“inta,b,s;”用于為存儲數(shù)據(jù)定義了三個變量。在C語言程序中,一個變量代表存放一個數(shù)據(jù)的單元。
(2)“scanf("%d,%d",&a,&b);”用于提供原始數(shù)據(jù),即從鍵盤上輸入兩個運算數(shù)。
(3)“s=a+b;”用于對數(shù)據(jù)加工處理,即實現(xiàn)兩數(shù)相加的運算。
(4)“printf("sum=%d\n",s);”用于將處理結果輸送給用戶。沒有這個語句,就得不到運行結果。
3.?C語言程序設計規(guī)范
利用C語言編寫程序,必須遵守C語言系統(tǒng)的基本規(guī)定,例如基本字符集、各種關鍵字、符號命名規(guī)則、語句格式、函數(shù)定義規(guī)則和程序結構等。為了提高程序的可讀性和軟件開發(fā)的效率,在C語言系統(tǒng)基本規(guī)定的基礎上,還有不同的編程規(guī)范。附錄E列出了一種編程規(guī)范,可供讀者參考。在初學C語言程序設計時,可以暫不關心C語言系統(tǒng)基本規(guī)定之外的編程規(guī)范,但建立編程規(guī)范意識和習慣,對將來開發(fā)實際應用系統(tǒng)是很有好處的。
實操訓練
實訓任務學習
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年浙江紹興市中醫(yī)院赴溫州醫(yī)科大學招聘應屆醫(yī)學類畢業(yè)生74人筆試備考題庫及答案解析
- 能級工資專項集體合同(2篇)
- 《孔乙己》說課稿10篇
- 南京工業(yè)大學浦江學院《招聘與培訓課程設計》2023-2024學年第一學期期末試卷
- 南京工業(yè)大學浦江學院《社會學概論》2021-2022學年第一學期期末試卷
- 分數(shù)的認識說課稿
- 內蒙古自治區(qū)呼和浩特市蘭亭文苑C座住宅樓工程施工組織設計
- c語言維數(shù)組說課稿
- 南京工業(yè)大學浦江學院《計算機組成原理》2022-2023學年期末試卷
- 南京工業(yè)大學浦江學院《前廳運營與管理》2022-2023學年第一學期期末試卷
- 財務管理中的財務財務財務人際關系
- 護理生涯發(fā)展展示
- 2024年存儲服務器技術培訓
- 與時代同向與祖國同行
- 線性微分方程的基本理論
- 2024年度醫(yī)院放射科醫(yī)務人員績效評價報告課件
- 區(qū)塊鏈技術在農業(yè)行業(yè)中的應用
- 目標管理之SMART原則
- 物聯(lián)網(wǎng)踐與探索
- 《裝備質量問題歸零實施指南》
- 水電改造工程投標方案(技術標)
評論
0/150
提交評論