下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
c語言程序設(shè)計的四個要點
1c語言校園在計算機科技知識的快速發(fā)展和計算機教育內(nèi)容的不斷改進下,如何學(xué)習(xí)c語言顯然是一個古老的話題。C語言功能豐富,表達能力強,兼具低級語言特點,可移植性好,關(guān)鍵是廣泛的應(yīng)用,使其早已替代了Fortran、Pascal成為現(xiàn)今主要的教學(xué)語言。C語言也是進一步學(xué)好C++、C#、Java的必備基礎(chǔ)。對初學(xué)者來說,由于C語言知識點多,靈活多變,學(xué)習(xí)起來如不得法,就會很長時間不能通其精要。學(xué)好C語言程序設(shè)計最主要的是掌握四個要點,即:數(shù)據(jù)類型、表達式、函數(shù)及常用算法。這是通過教學(xué)及編程實踐,以及分析那層出不窮的試題基礎(chǔ)上總結(jié)出的一些經(jīng)驗,供讀者借鑒和探討。2定義一個變量C語言可由基本類型來構(gòu)造數(shù)組及結(jié)構(gòu)體類型,從而也可派生出各種復(fù)雜類型。通過類型定義變量來存儲不同類別的數(shù)據(jù),各種類型可有對應(yīng)的指針類型,用來處理變量的地址。變量具有特定的存儲類別、作用域和生存期。用一種類型定義一個變量要同時這樣理解:(1)在內(nèi)存中分配了特定大小的存儲單元,確定了存儲方式;(2)限定了變量的取值范圍;(3)確定了此變量可進行的運算。如多數(shù)教材中有定義存放一個班學(xué)生數(shù)據(jù)的結(jié)構(gòu)數(shù)組,分析時清楚每個結(jié)構(gòu)體成員占多少字節(jié),可具體算一下整個結(jié)構(gòu)數(shù)組占多少字節(jié),它們又能進行何種運算,怎樣存取成員變量,這些對初學(xué)者是很重要的。C語言構(gòu)造新類型的能力很強,如二叉樹結(jié)點類型的構(gòu)造就可體現(xiàn)其簡潔精巧之處:typedefstructaBiTreeNodeBTN,*BT;structaBiTreeNode{chard;BTlc,rc;};那么BTNs;BTp;分別定義了一個5字節(jié)的樹結(jié)點,和2字節(jié)的結(jié)點指針。3c語言中的運算符及存儲豐富的運算符和運算對象組成靈活多變的表達式,造就了C語言豐富的表達能力;C語言中的運算符多達40多種,優(yōu)先級共分了15級,運算對象可以是常量、變量、函數(shù)、表達式。學(xué)習(xí)C語言要把重點放在理解和掌握表達式上,這也是其精華所在,計算機的“計算”在C語言中主要體現(xiàn)在對表達式的計算上;賦值語句和函數(shù)調(diào)用語句在C語言中也是運算表達式。分析表達式時要考慮運算符所要求的對象、優(yōu)先級、結(jié)合性、運算次序,這幾點在分析復(fù)雜表達式時都是很重要的。在表達式求值時,先按運算符的優(yōu)先級別高低順序執(zhí)行,如果在一個運算對象兩側(cè)的運算符優(yōu)先級別相同,則按規(guī)定的結(jié)合方向處理;C語言中有單目和三目運算符,結(jié)合方向均為自右至左,雙目運算符除賦值運算外都是自左至右。邏輯運算要考慮短路作用,即只要確定了表達式的值就不再進行后面的運算。賦值類運算表達式還要存儲值到“變量”中,C語言中一般只能對簡單類型對應(yīng)的內(nèi)存區(qū)取值、賦值,特殊之處有:(1)數(shù)組名作函數(shù)參數(shù),(2)串常量賦給指針,等同strcpy)函數(shù),(3)相同結(jié)構(gòu)類型的結(jié)構(gòu)變量之間賦值。要正確理解表達式中的賦值:(1)賦值即“寫內(nèi)存”,相當(dāng)于匯編語句MOV,完全不同比較符的等于。(2)因C語言缺乏數(shù)據(jù)類型的一致性檢測機制,賦值號兩端要“相容”,如兩個字節(jié)的整型變量不能完整存放雙精度數(shù),指針變量也不能存放其它類型的變量,同時也不要存放指向其它類型的指針。(3)要有“左值”的概念,即賦值號左邊一定是可存入值的、代表某塊存儲空間的變量。(4)對指針變量的賦值,可理解為“指向”,指針變量存有某變量的地址,也就是指針指向這一變量。(5)和賦值號“=”相當(dāng)?shù)姆绞竭€有變量定義時的初始化,函數(shù)調(diào)用時的實參形參結(jié)合,以及“++”、“--”運算符和一系列復(fù)合賦值運算符。初學(xué)者都覺得指針和數(shù)組是難點,但它還是嚴(yán)格遵循了上述數(shù)據(jù)類型和表達式運用法則的。只要熟練掌握表達式,其實指針和數(shù)組也并不難理解和應(yīng)用。指針加整數(shù)表示以此指針?biāo)冈仡愋痛笮閱挝坏南鄬ξ灰?取下標(biāo)運算符“]”也類似,相當(dāng)于變址再取值。指針是存放地址的變量,數(shù)組名是表示整個數(shù)組首地址的常量,但也可看作是指向該數(shù)組之元素的指針。指針和數(shù)組的定義及運算都可用表達式分析法:(1)考慮運算符的優(yōu)先級、結(jié)合性、運算次序;(2)由類型所決定的運算對象的性質(zhì);(3)對于指針的級別或數(shù)組的維數(shù),定義時“*”、“”使級別升高,運算時“*”、“”使級別降低,“&”使級別升高。分析時最好要簡單畫圖表示內(nèi)存的開辟、存入、取讀等狀態(tài),明白定義時分配了多大存儲空間,以及執(zhí)行或運算時值的變化。4c++函數(shù)形式C程序由函數(shù)組成,實現(xiàn)了程序設(shè)計結(jié)構(gòu)化。函數(shù)有返回類型,可有若干參數(shù),要注意函數(shù)中變量的作用域和生存期。系統(tǒng)提供了大量函數(shù)供用戶調(diào)用來完成復(fù)雜功能。理解函數(shù)的調(diào)用機制要知道計算機的基本組成和工作方式。在馮·諾依曼結(jié)構(gòu)中,程序和數(shù)據(jù)都是要放入存儲器中的。可這樣理解調(diào)用函數(shù)的過程:(1)把函數(shù)代碼復(fù)制存放于內(nèi)存;(2)調(diào)用指令的地址存放于堆棧;(3)分配形參存儲空間;(4)把實參表達式值“賦值”給形參,即傳值調(diào)用;(5)執(zhí)行函數(shù)體,包括分配局部變量存儲空間;(6)結(jié)束執(zhí)行,或遇到return語句開始返回;(7)帶上返回值從棧頂取出返回地址返到主調(diào)函數(shù);(8)釋放被函數(shù)代碼及變量(除static靜態(tài)變量)占用的內(nèi)存。指針作為函數(shù)參數(shù),是傳遞了地址之值,相當(dāng)于實現(xiàn)傳址調(diào)用,在C語言中沒有真正的傳址調(diào)用,在C++中可用引用“&”實現(xiàn)。函數(shù)名也類似數(shù)組名,代表函數(shù)的起始地址或稱入口地址;也可定義指向函數(shù)的指針實現(xiàn)間接調(diào)用,或把一個函數(shù)傳遞給另一個函數(shù)使用;當(dāng)然函數(shù)指針是不能進行諸如++等運算的,其所指對象是不能確定存儲空間大小的,這不同于數(shù)組?!?)”也可看作是函數(shù)調(diào)用運算符,可用上述分析表達式的方式理解函數(shù)指針的定義和使用,如定義in*f()時,因()的優(yōu)先級高于*,則f是一函數(shù),返回類型是整型指針,定義int(*p)()中p先和*結(jié)合,則p是指針,是可指向整型函數(shù)的“函數(shù)指針”。遞歸函數(shù)的特點是有自己調(diào)用到自己的部分和滿足某個條件時結(jié)束并返回的部分。處理某些問題時使用遞歸可不用復(fù)雜的循環(huán),使程序簡化,但分析時還是要按上述函數(shù)調(diào)用機制來套用,機器的執(zhí)行過程不會簡化。5算法的設(shè)計和實現(xiàn)算法設(shè)計的主要工作是分析問題、編寫語句,實現(xiàn)問題空間向程序空間的映射轉(zhuǎn)換,也就是把我們用自然語言描述的解決問題的方法翻譯成計算機語言讓機器來運算。為提高編程能力,設(shè)計出較好的算法,可按以下幾點來學(xué)習(xí)。初學(xué)算法設(shè)計時不但要考慮算法的正確性,也要遵循簡潔可讀、有效性等原則,可靠的算法一定是簡潔的。不要只顧暫時解決問題,而忽略對設(shè)計一個好算法的追求,否則既不能發(fā)揮C語言的簡潔性,也很難提高編程能力。要學(xué)習(xí)和記住一些常用的算法,諸如需選擇和循環(huán)結(jié)合的計算問題(如求素數(shù)、最小公倍數(shù))、數(shù)列或級數(shù)的迭代處理、多維數(shù)組處理、字符串處理、查找排序、某些遞歸算法等。對于算法的設(shè)計和實現(xiàn)可按以下幾個步驟進行:(1)理解題意,把問題分析清楚;(2)考慮人工怎樣解決,理清思路,有的問題一看就知道答案,卻不知怎樣寫語句,其實在這一看之中,我們的大腦也是一步步地進行了運算;(3)再進行思路的細化,按電腦機械式分步計算或處理問題,多數(shù)問題可找出有規(guī)律的部分,用循環(huán)結(jié)構(gòu)完成;(4)確定數(shù)據(jù)結(jié)構(gòu),即定義變量,分配存儲空間,寫流程輪廓;(5)進一步細化寫出代碼,并注意變量的命名和程序的格式;(6)上機調(diào)試,找出錯誤。這一步對初學(xué)者也不易,關(guān)鍵要鍛煉“調(diào)試心理素質(zhì)”,調(diào)試自己編寫的代碼時要能在自信的創(chuàng)作思維和批評性的自我懷疑之間反復(fù)“平和”轉(zhuǎn)換;(7)進一步完善和優(yōu)化,追求一個好的算法,好的算法應(yīng)該有簡潔性、可讀性、節(jié)約存儲
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2北京2024版物業(yè)公司轉(zhuǎn)讓合同:價格、流程與標(biāo)的物
- 二零二五版自然人之間文化創(chuàng)意作品授權(quán)合同2篇
- 屋頂租賃違約金合同(2篇)
- 二零二五年度液化氣站送氣工勞動合同書3篇
- 二零二五版本二手房買賣合同含房屋交易資金監(jiān)管條款3篇
- 二零二五年高端活動贊助廣告發(fā)布合同模板3篇
- 二零二五年度離婚協(xié)議書起草與財務(wù)規(guī)劃服務(wù)合同3篇
- 2025年度汽車租賃行業(yè)擔(dān)保函制定與法律效力確認(rèn)合同3篇
- 二零二五年車庫購置與車位租賃及產(chǎn)權(quán)登記服務(wù)合同樣本2篇
- 二零二五年污水處理廠污水處理能力提升合同3篇
- 2023年河南省公務(wù)員錄用考試《行測》真題及答案解析
- 2024年安徽省公務(wù)員錄用考試《行測》真題及答案解析
- 山西省太原市重點中學(xué)2025屆物理高一第一學(xué)期期末統(tǒng)考試題含解析
- 充電樁項目運營方案
- 2024年農(nóng)民職業(yè)農(nóng)業(yè)素質(zhì)技能考試題庫(附含答案)
- 高考對聯(lián)題(對聯(lián)知識、高考真題及答案、對應(yīng)練習(xí)題)
- 新版《鐵道概論》考試復(fù)習(xí)試題庫(含答案)
- 【律師承辦案件費用清單】(計時收費)模板
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- Unit1FestivalsandCelebrations詞匯清單高中英語人教版
- 2024年上海市中考語文試題卷(含答案)
評論
0/150
提交評論