C語言程序設(shè)計課件01 程序設(shè)計技-沈高峰_第1頁
C語言程序設(shè)計課件01 程序設(shè)計技-沈高峰_第2頁
C語言程序設(shè)計課件01 程序設(shè)計技-沈高峰_第3頁
C語言程序設(shè)計課件01 程序設(shè)計技-沈高峰_第4頁
C語言程序設(shè)計課件01 程序設(shè)計技-沈高峰_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第1章程序設(shè)計技術(shù)概述

本章知識要點程序設(shè)計語言和程序設(shè)計的概念算法的概念、特征以及描述方式軟件編制的基本步驟

C語言特點及其運行環(huán)境1.1程序設(shè)計語言概述

1.程序程序就是按某種順序排列的,能使計算機執(zhí)行某種任務(wù)(例如,解題、檢索數(shù)據(jù)或?qū)σ粋€系統(tǒng)進行控制等)的、連續(xù)執(zhí)行的一條條指令集合。2.程序設(shè)計語言

程序設(shè)計語言,通常稱為編程語言,是一組用來定義計算機程序的語法規(guī)則。一種程序設(shè)語言能夠準(zhǔn)確地定義計算機所需要使用的數(shù)據(jù),并能精確定義在不同情況下所應(yīng)當(dāng)采取的操作。程序設(shè)計語言按照使用的方式和功能可分為:機器語言、匯編語言等低級語言和面向過程向?qū)ο蟮母呒壵Z言。(1)機器語言。機器語言(MachineLanguage)是直接用二進制編碼指令表示的計算機語言,就是機器指令的集合,它與計算機同時誕生屬于第一代計算機語言,其指令是由0和1組成的一串代碼,有一定的位數(shù),并被分成若干段,各段的編碼表示不同的含義。(2)匯編語言。匯編語言(AssemblyLanguage)也是面向機器的程序設(shè)計語言。在匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替地址碼。所以這種用符號代替機器語言的二進制碼的計算機語言也被稱為符號語言。匯編語言源程序匯編的過程(3)高級語言高級語言語法和結(jié)構(gòu)更類似普通英文,更關(guān)鍵的是不依賴于特定計算機的結(jié)構(gòu)與指令系統(tǒng),用同一種高級語言縮寫的源程序,一般可以在不同計算機上運行而獲得同一結(jié)果,計算機的硬件結(jié)構(gòu)沒有多大關(guān)系。目前常用的高級語言有BASIC、FORTRAN、COBOL、PASCAL、PL/M、C等。高級語言完全采用了符號化的描述形式,用類似自然語言的形式描述對問題的處理過程,使得程序員可以認(rèn)真分析問題的求解過程,不需要了解和關(guān)心計算機的內(nèi)部結(jié)構(gòu)和硬件細(xì)節(jié),更易于被人們理解和接受。(4)面向?qū)ο蟮恼Z言面向?qū)ο笳Z言(Object-OrientedLanguage)是以對象作為程序基本結(jié)構(gòu)單位的程序設(shè)計語言,程序設(shè)計的核心是對象,對象是程序運行的基本成分。面向?qū)ο笳Z言的發(fā)展有兩個方向:一種是純面向?qū)ο笳Z言,如Smalltalk、Eiffel等;另一種是混合型面向?qū)ο笳Z言,即在過程式語言及其它語言中加入類、繼承等成分,如C++、Objective-C等。面向?qū)ο笳Z言刻畫客觀系統(tǒng)較為自然,便于軟件擴充與復(fù)用。綜上所述,以上四種計算機語言各有優(yōu)缺點。程序員在使用時,需根據(jù)應(yīng)用場合選用。一般在實時控制中,特別是在對程序的空間和時間要求很高,需要直接控制設(shè)備的場合,通常采用匯編語言;在系統(tǒng)程序設(shè)計、多媒體應(yīng)用、數(shù)據(jù)庫等諸多領(lǐng)域采用面向?qū)ο笳Z言比較合適,面向過程是程序設(shè)計的基礎(chǔ),所以對程序設(shè)計的初學(xué)者來說,只有學(xué)習(xí)好面向過程的程序設(shè)計,才能對程序設(shè)計的學(xué)習(xí)打下堅實的基礎(chǔ).1.2算法1.算法的概念什么是算法?當(dāng)代著名計算機科學(xué)家D.E.Knuth在他的一本書中寫到:“一個算法,就是一個有窮規(guī)則的集合,其中之規(guī)則規(guī)定了一個解決某一特定類型的問題的運算序列?!焙唵蔚恼f,算法(Algorithm)就是確定的解決問題方法和有限步驟。計算機算法通??梢苑譃閮纱箢悾阂活愂怯糜诮鉀Q數(shù)值計算,如科學(xué)計算中的數(shù)值積分、解線性方程等計算方法,就是數(shù)值計算的算法;另一類是用于解決非數(shù)值計算如信息管理、文字處理、圖象圖形進行排序、分類、查找等操作,就是非數(shù)值計算的算法?!纠?.1】求1×3×5×7×9。

算法分析:這是一最原始方法:步驟1:先求1×3,得到結(jié)果3。步驟2:將步驟1得到的乘積3乘以5,得到結(jié)果15。步驟3:將15再乘以7,得105。步驟4:將105再乘以9,得945。這樣的算法雖然正確,但太繁鎖。改進的算法:s1:使t=1s2:使i=3s3:使t×i,乘積仍然放在在變量t中,可表示為t×i→ts4:使i的值+2,即i+2→is5:如果i≤9,返回重新執(zhí)行步驟s3以及其后的s4和s5;否則,算法結(jié)束?!纠?-3】對給定的兩個正整數(shù)m和n(m大于等于n),求它們的最大公約數(shù)。

【算法分析:本題中屬于一種數(shù)學(xué)數(shù)值運算題目,利用它成熟的算法可以很好的解決這個問題,這個算法就是輾轉(zhuǎn)相除法求解最大公約數(shù)。例如:假設(shè)m=35,n=15,余數(shù)用r表示,它們的最大公約數(shù)的求法為:35/15商為2余數(shù)為5將n作新的m,以r作新的n,繼續(xù)相除;15/5商為3余數(shù)為0當(dāng)余數(shù)為零時,所得n就是兩數(shù)的最大公約數(shù)。所以35和15的最大公約數(shù)為5。使用計算機解題的算法描述如下s1:將兩個正整數(shù)分別存放到變量m和n中。s2:求余數(shù):將m除以n,所得到的余數(shù)存放到變量r中。s3:判斷余數(shù)r是否為0,如果余數(shù)為0則執(zhí)行s5,否則執(zhí)行s4。s4:更新被除數(shù)和除數(shù):將n的值放入m中,余數(shù)r的值方如入到n中,然后轉(zhuǎn)向到s2。S5:輸出n當(dāng)前的值。S6:算法結(jié)束。2.算法的特性算法是有窮規(guī)則的集合,通過這些規(guī)則可以確定出解決某些問題的運算序列。對于該類問題的任何輸入值,都需要一步一步地執(zhí)行計算,經(jīng)過有限步驟后終止計算并產(chǎn)生輸出結(jié)果。歸納起來,算法包括以下基本特性:①有窮性②確定性③可行性④零個或則多個輸入⑤一個或多個輸出:一個算法中有一個或多個輸出。3.算法的描述原則上來說,算法可以用任何形式的語言和符號工具來表示,采用不同的算法描述工具對算法的質(zhì)量有很大的影響。通常算法常用的表示方法有自然語言、傳統(tǒng)流程圖、結(jié)構(gòu)化N-S圖、偽代碼、程序設(shè)計語言等。自然語言自然語言就是人們?nèi)粘I钪惺褂玫恼Z言,可分為英語、漢語或其他語言等,理想狀態(tài)下,算法的描述過程應(yīng)當(dāng)使用自然語言表達,因為其表示時算法通俗易懂,無需任何的專業(yè)訓(xùn)練就能看明白。程序流程圖程序流程圖(ProgramFlowChart)是最早提出的用圖形表示算法的工具,也稱為傳統(tǒng)流程圖。用它表示算法,具有直觀性強、清晰性好、便于閱讀、易于理解等特點,也便于轉(zhuǎn)化成計算機程序設(shè)計語言,是軟件開發(fā)人員經(jīng)常使用的算法描述方式,具有程序無法取代的作用常用的流程圖符號

【例1.4】將例1.1求1×3×5×7×9的算法用流程圖表示,流程圖如圖1-3所示。如果需要打印出來運算結(jié)果,這可以用流程圖1-4表示?!纠?.5】將例1.2的算法用流程圖表示,流程圖如圖1-5所示?!纠?.6】將例1.3的算用流程圖表示,流程圖如圖1-6所示圖1-4算法流程圖1→t3→it×i→ti+2→ii>9開始YN打印t結(jié)束結(jié)束1→t3→it×i→ti+2→ii>9開始YN圖1-3算法流程圖開始輸入m和nm/n求得余數(shù)→rr=0?輸出n結(jié)束n→mr→nYN結(jié)束f=3x+af=ax+b+c+c輸入a,b,c,xx≤a?開始YN輸出f圖1-6圖1-5在書寫流程圖時,人們規(guī)定了三種基本結(jié)構(gòu),這些結(jié)構(gòu)按照一定的規(guī)律組成算法結(jié)構(gòu),可以保證算法質(zhì)量。三種基本程序結(jié)構(gòu)為:順序結(jié)構(gòu)(如圖1-7)、分支結(jié)構(gòu)(如圖1-8)和循環(huán)結(jié)構(gòu)圖(如圖1-9)。圖1-8選擇結(jié)構(gòu)程序流程圖(b)直到型循環(huán)(a)當(dāng)型循環(huán)圖1-9循環(huán)結(jié)構(gòu)程序流程圖圖1-7順序結(jié)構(gòu)程序流程圖(3)N-S流程圖N-S流程圖,是1973年美國學(xué)者I.Nassi和B.Shneiderman提出了一種新型流程圖形式,其中N-S是兩位學(xué)者的姓氏的首字母。這是一種去掉了流程線的流程圖,算法的描述是在一個矩形框內(nèi),每個框內(nèi)又可以包含下級矩形框,一個矩形框表示一個獨立功能的N-S圖,因為其符合結(jié)構(gòu)化程序設(shè)計要求的特點,比較適合在軟件工程中進行使用。(4)偽代碼雖然用流程圖描述算法直觀易理解,但畫起來比較麻煩,當(dāng)算法稍微復(fù)雜時,算法修改很不方便。為使算法設(shè)計容易修改,使用偽代碼描述算法比較合適。偽代碼也稱為類程序設(shè)計語言,是一種近似高級語言但又不受語法約束的一種算法語言描述形式,是介于自然語言和計算機語言之間的文字符號來描述算法。通過用偽代碼描述的算法看到,其中可以包含計算機語言語句,也可以不用像計算機語言語法那樣嚴(yán)格,有些地方還可以用自然語言進行描述。這樣的方式方便修改算法,很大程度上可以簡化了算法的設(shè)計工作。(5)計算機語言直接使用計算機語言書寫算法,可以令算法由設(shè)計到實現(xiàn)一步到位,通常對計算機語言非常熟悉的程序員來說,直接使用計算機語言編寫算法很方便,這種方法的優(yōu)點是避免了算法到計算機語言的轉(zhuǎn)換,其缺點是要求程序員在書寫時嚴(yán)格謹(jǐn)慎,必須按照程序語言的語法規(guī)則編寫語句,否則無法運行,同時改成其他計算機語言編程時,又需按照新的計算機語言規(guī)則重新編寫,對于不熟悉程序語言的人來說,看不懂書寫的算法。允許在算法的描述和實現(xiàn)方法上有所不同,用各種算法描述方法描述的同一算法功用是一樣的。1.3軟件的編制步驟

日常生活中可以使用計算機進行畫圖、制表或者閑暇時聽歌曲、看電影,計算機可以幫我們做很多的事情,計算機做為一種批量生產(chǎn)的設(shè)備,只有在安裝了不同的軟件,才能處理問題,換句話說如果沒有是計算機軟件的產(chǎn)生及其廣泛應(yīng)用,計算機也就不會在今天的工作以及生活中產(chǎn)生如此巨大的影響。一個軟件的開發(fā),包含需求分析、可行性分析、初步設(shè)計、詳細(xì)設(shè)計、形成文檔、建立初步模型、編寫詳細(xì)代碼、測試修改、發(fā)布等多個步驟。首先要找到解決問題的突破口(先要搞明白需要做什么,然后再考慮如何做)。至于采用什么表示方法(簡單文本、UML圖、E-R圖)、什么語言開發(fā)工具都是次要的問題。總體來看軟件開發(fā)過程主要包括以下四個階段:第一階段:確定軟件開發(fā)需求第二階段:軟件設(shè)計與開發(fā)問題分析選擇一個全面的解決算法方案編寫程序調(diào)試程序第三階段:文檔整理第四階段:軟件維護1.4C程序設(shè)計語言的產(chǎn)生與特點

C語言是一種得到廣泛重視并普遍應(yīng)用的計算機語言,也是國際上公認(rèn)的最重要的幾種通用程序設(shè)計語言之一,它既可用來寫系統(tǒng)軟件,也可用來寫應(yīng)用軟件。C語言主要特點如下:表達能力強。豐富的數(shù)據(jù)類型和運算符,其中運算符有34種,C把括號、賦值、逗號等都作為運算符處理。從而使C的運算類型極為豐富,可以實現(xiàn)其他高級語言難以實現(xiàn)的運算??芍苯釉L問內(nèi)存物理地址和硬件寄存器,能實現(xiàn)二進制位運算。C語言結(jié)構(gòu)清晰,流程控制結(jié)構(gòu)化、程序結(jié)構(gòu)模塊化。具有順序、分支、循環(huán)三種結(jié)構(gòu)化控制結(jié)構(gòu),便于開發(fā)大型軟件C語言語言簡練、緊湊,。如i=i+1;在C中可寫為i++;C語言生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行速度快。編譯后生成的目標(biāo)程序運行速度高占用存儲空間少,幾乎與匯編語言相媲美。目前C語言版本目前最流行的C語言是MicrosoftC或稱TurboC,這些C語言版本不僅實現(xiàn)了ANSIC標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴充,使之更加方便、完美。1.5C語言程序的運行環(huán)境

(VisualC++6.0編譯環(huán)境)

1.5.1C語言程序上機步驟前面編寫的一些C語言源程序,它們是不能直接直接運行的。因為計算機只識別和執(zhí)行有1和0組成的二進制代碼指令,不能識別和執(zhí)行由高級語言寫的源程序。源程序就是用某種程序設(shè)計語言編寫的程序,其中的程序代碼稱為源代碼。因此,一個高級語言寫的源程序,必須用編譯程序把高級語言程序翻譯成機器能夠識別二進制目標(biāo)程序,通過和系統(tǒng)提供的庫函數(shù)和其他目標(biāo)程序的連接,形成可以被機器執(zhí)行的目標(biāo)程序。一個C語言源程序到擴展名為.exe可執(zhí)行的文件,一般需要經(jīng)過:編輯、編譯調(diào)試、連接、運行四個步驟Li01-01.obj源程序編輯編譯可執(zhí)行程序連接運行目標(biāo)程序Li01-01.cLi01-01.exe結(jié)果1.5.2VisualC++6.0開發(fā)環(huán)境1.VisualC++6.0開發(fā)環(huán)境的啟動與退出有兩種方法可以打開或進入到VisualC++6.0開發(fā)環(huán)境。直接雙擊桌面上VisualC++6.0的圖標(biāo)。在Windows桌面上,單擊“開始”菜單→“程序”→“MicrosoftVisualC++6.0”圖標(biāo)。

VisualC++6.0開發(fā)環(huán)境退出操作方法如下:單擊“開始“菜單中“退出”按鈕,或者單擊開發(fā)環(huán)境右上角的關(guān)閉退出VisualC++6.0。VisualC++6.0啟動后,打開如圖1-16所示集成開發(fā)環(huán)境主窗口,該界面除包含MicrosoftOffice應(yīng)用程序窗口所共有的標(biāo)題欄、菜單欄、工具欄等部件以外,還包含項目窗口、程序編輯窗口和信息輸出窗口三個視窗。信息輸出窗口項目窗口程序編輯窗口1.5.3如何在VisualC++6.0環(huán)境下編輯、運行C程序在VisualC++6.0中有“獨立文件模式”和“項目管理模式”兩種方式來編輯、編譯、運行C語言源程序。當(dāng)需要編寫的源程序文件比較簡單時可采可用獨立文件模式直接創(chuàng)建、錄入、編輯、鏈接、運行;當(dāng)一個程序由多個源程序文件組成時,可使用項目管理模式可以將全部源程序文件合在一起,構(gòu)成一個整體程序,該程序在VisualC++6.0稱為項目。兩種模式在啟動開發(fā)環(huán)境、編譯、連接、運行等方面是相同的,主要區(qū)別在于運行環(huán)境的建立、源程序的錄入與編輯。

圖1.17VisualC++6.0新建對話框圖1-18選擇工程類別對話框圖1-19Win32位控制臺應(yīng)用程序框架說明圖1-20新創(chuàng)建的空工程窗口圖1-21新建工程文件夾中的文件在創(chuàng)建一個

VisualC++6.0工程時,系統(tǒng)會自動產(chǎn)生許多相關(guān)的文件,這些文件不同的類型和作用簡單介紹如下:.dsw文件:工作區(qū)(Workspace)文件,用它可以直接打開工程,屬于級別最高的VisualC++6.0文件。.dsp文件:項目文件,主要用來存放應(yīng)用程序的有關(guān)信息。.opt文件:是工程關(guān)于環(huán)境的選項設(shè)置文件,當(dāng)運行的機器環(huán)境發(fā)生了變化,該文件刪除后也將自動重建。debug文件夾:在剛剛建立工程時里面還沒有任何文件,只有當(dāng)程序編譯、鏈接、運行以后,程序的可執(zhí)行文件等其他相關(guān)文件會放在其中。圖1-22新建C++源文件對話框“項目管理模式”下,一個項目由多個源程序文件組成,應(yīng)該分別對源程序進行創(chuàng)建、錄入、編輯,上一步僅僅創(chuàng)建了一個空的工程,必須將C源程序文件和頭文件添加到工程中去,才能運行工程。以本例題為例在上面創(chuàng)建的工程

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論