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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

【例1.4】將例1.1求1×3×5×7×9的算法用流程圖表示,流程圖如圖1-3所示。如果需要打印出來運(yùn)算結(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在書寫流程圖時(shí),人們規(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年美國(guó)學(xué)者I.Nassi和B.Shneiderman提出了一種新型流程圖形式,其中N-S是兩位學(xué)者的姓氏的首字母。這是一種去掉了流程線的流程圖,算法的描述是在一個(gè)矩形框內(nèi),每個(gè)框內(nèi)又可以包含下級(jí)矩形框,一個(gè)矩形框表示一個(gè)獨(dú)立功能的N-S圖,因?yàn)槠浞辖Y(jié)構(gòu)化程序設(shè)計(jì)要求的特點(diǎn),比較適合在軟件工程中進(jìn)行使用。(4)偽代碼雖然用流程圖描述算法直觀易理解,但畫起來比較麻煩,當(dāng)算法稍微復(fù)雜時(shí),算法修改很不方便。為使算法設(shè)計(jì)容易修改,使用偽代碼描述算法比較合適。偽代碼也稱為類程序設(shè)計(jì)語言,是一種近似高級(jí)語言但又不受語法約束的一種算法語言描述形式,是介于自然語言和計(jì)算機(jī)語言之間的文字符號(hào)來描述算法。通過用偽代碼描述的算法看到,其中可以包含計(jì)算機(jī)語言語句,也可以不用像計(jì)算機(jī)語言語法那樣嚴(yán)格,有些地方還可以用自然語言進(jìn)行描述。這樣的方式方便修改算法,很大程度上可以簡(jiǎn)化了算法的設(shè)計(jì)工作。(5)計(jì)算機(jī)語言直接使用計(jì)算機(jī)語言書寫算法,可以令算法由設(shè)計(jì)到實(shí)現(xiàn)一步到位,通常對(duì)計(jì)算機(jī)語言非常熟悉的程序員來說,直接使用計(jì)算機(jī)語言編寫算法很方便,這種方法的優(yōu)點(diǎn)是避免了算法到計(jì)算機(jī)語言的轉(zhuǎn)換,其缺點(diǎn)是要求程序員在書寫時(shí)嚴(yán)格謹(jǐn)慎,必須按照程序語言的語法規(guī)則編寫語句,否則無法運(yùn)行,同時(shí)改成其他計(jì)算機(jī)語言編程時(shí),又需按照新的計(jì)算機(jī)語言規(guī)則重新編寫,對(duì)于不熟悉程序語言的人來說,看不懂書寫的算法。允許在算法的描述和實(shí)現(xiàn)方法上有所不同,用各種算法描述方法描述的同一算法功用是一樣的。1.3軟件的編制步驟

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論