版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章
程序設(shè)計(jì)初步參考書:編程思想及基礎(chǔ):《數(shù)據(jù)結(jié)構(gòu)》、《計(jì)算機(jī)算法基礎(chǔ)》、《算法設(shè)計(jì)與分析》、《面向面向?qū)ο蠹夹g(shù)》各種編程語言:《C語言程序設(shè)計(jì)》、《visualC++面向?qū)ο蟪绦蛟O(shè)計(jì)教程》、《JAVA程序設(shè)計(jì)》等章節(jié)內(nèi)容4.1計(jì)算機(jī)程序的一般概念
4.2結(jié)構(gòu)化程序設(shè)計(jì)方法的產(chǎn)生
4.3結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想
4.4計(jì)算機(jī)程序的運(yùn)行過程
4.5C語言對(duì)結(jié)構(gòu)化程序設(shè)計(jì)方法的支持4.6算法
4.7
面向?qū)ο缶幊趟枷?/p>
4.1計(jì)算機(jī)程序的一般概念做一件事或解決一個(gè)問題都要有程序(具體的步驟)計(jì)算機(jī)程序:計(jì)算機(jī)為完成某一任務(wù)所必須執(zhí)行的一系列的指令的集合。!要想更好地駕馭計(jì)算機(jī),就需要進(jìn)行“編程(Programming),即程序設(shè)計(jì)。老兄,幫我計(jì)算一下2+3=?自然語言機(jī)器語言程序設(shè)計(jì)語言編程翻譯或解釋4.1計(jì)算機(jī)程序的一般概念當(dāng)然,若有現(xiàn)成的軟件,就無需編程了。程序設(shè)計(jì)語言的發(fā)展簡史機(jī)器語言匯編語言例:C++,JAVA等面向?qū)ο蟮慕咏祟惖淖匀徽Z言和數(shù)學(xué)語言。例:Fortran、Basic、C、Prolog等面向過程的用助記符表示指令由0、1序列構(gòu)成的指令碼例:SQL等面向問題的高級(jí)語言/~nkinners/LangList/Extras/langlist.htm簡單介紹了約2500種計(jì)算機(jī)語言各種語言編寫的1+1程序機(jī)器語言:101110000000000100000000000001010000000100000000匯編語言:MOVAX,1ADDAX,1像不像天書?C語言:printf("%d\n",1+1);一個(gè)計(jì)算機(jī)程序主要描述兩部分內(nèi)容:一是實(shí)施的動(dòng)作,二是動(dòng)作所施加的對(duì)象。程序的共性目的性:有窮性:有序性:操作性:4.1計(jì)算機(jī)程序的一般概念4.2結(jié)構(gòu)化程序設(shè)計(jì)方法的產(chǎn)生20世紀(jì)60年代,在開發(fā)大型軟件的過程中出現(xiàn)了所謂的“軟件危機(jī)”,其主要表現(xiàn)是:開發(fā)進(jìn)度被推遲;成本超出預(yù)算;軟件產(chǎn)品不可靠。人們認(rèn)識(shí)到軟件開發(fā)要比想象的復(fù)雜得多。為解決“軟件危機(jī)”,誕生了“結(jié)構(gòu)化程序設(shè)計(jì)”的概念。4.3結(jié)構(gòu)化程序設(shè)計(jì)
的基本概念、理論和方法44.自頂向下,逐步求精將一個(gè)大的原始問題分解為多個(gè)可獨(dú)立進(jìn)行編程的小問題(即小模塊)。學(xué)生成績處理輸入輸出查找排序輸入到內(nèi)存按學(xué)號(hào)查找按姓名查找從文件讀數(shù)據(jù)統(tǒng)計(jì)總分輸出到文件排序從文件讀數(shù)據(jù)從文件讀數(shù)據(jù)輸出到屏幕輸出到屏幕輸出到屏幕4.3結(jié)構(gòu)化程序設(shè)計(jì)
的基本概念、理論和方法33.單入口和單出口無需對(duì)內(nèi)部具體過程進(jìn)行詳細(xì)的了解,只由入口與出口與其他模塊相連即可。第i個(gè)模塊和上一個(gè)模塊的出口相連和下一個(gè)模塊的入口相連4.3結(jié)構(gòu)化程序設(shè)計(jì)
的基本概念、理論和方法11.結(jié)構(gòu)定理
三種結(jié)構(gòu):順序、選擇、循環(huán)BABNA條件PYA假條件PNY4.3結(jié)構(gòu)化程序設(shè)計(jì)
的基本概念、理論和方法22.goto之爭
Goto語句不符合結(jié)構(gòu)化程序設(shè)計(jì)的基本原則,或者說它破壞了三種結(jié)構(gòu)有一定的用處結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想
信息隱蔽和局部化是結(jié)構(gòu)化程序設(shè)計(jì)方法的另一基本思想。
結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想還應(yīng)該包括盡量使用3種基本結(jié)構(gòu)、保持單入口和單出口形式、限制使用goto語句等,使得程序容易理解、容易維護(hù)和容易驗(yàn)證其正確性。
W邊解釋邊運(yùn)行1、編輯:程序員按某種程序設(shè)計(jì)語言的語法規(guī)則編寫程序源代碼4運(yùn)行可執(zhí)行程序2編譯3連接可執(zhí)行程序4.4計(jì)算機(jī)程序的運(yùn)行過程
編輯-編譯-連接-運(yùn)行4.4計(jì)算機(jī)程序的運(yùn)行過程
1.操作系統(tǒng):語言處理軟件的基礎(chǔ)(環(huán)境)
2.編輯程序:書寫程序代碼的程序?qū)懞玫某绦蛞韵鄳?yīng)的文件擴(kuò)展名存放在磁盤上。3.翻譯程序:將程序設(shè)計(jì)語言翻譯為機(jī)器語言(目標(biāo)程序)4.連接程序:將目標(biāo)程序與引用的其它程序等連接成一個(gè)整體。C語言的發(fā)展簡史原型ALGOL60語言1963年CPL(CombinedProgrammingLanguage)1967年BCPL語言1970年B語言1973年C語言1978年
《TheCProgrammingLanguage》1982-90年制定現(xiàn)行的C語言標(biāo)準(zhǔn)--ANSIC1983年C++C語言的設(shè)計(jì)者
DennisM.Ritchie4.5C語言對(duì)結(jié)構(gòu)化程序設(shè)計(jì)方法的支持為什么選擇C語言?是一種高級(jí)語言具有所有高級(jí)語言所具備的易學(xué)、易用、易讀、易懂、強(qiáng)大、可移植的特點(diǎn);歷史悠久,戰(zhàn)勛卓著誕生于上世紀(jì)70年代初,成熟于80年代“ANSIC”標(biāo)準(zhǔn)的發(fā)布是C語言成熟的標(biāo)志很多重量級(jí)軟件都是用C寫的上天入地,無所不能幾乎沒有不能用C寫出來的軟件,且代碼簡潔沒有不支持C的系統(tǒng)為什么選擇C語言?硬件(Hardware)操作系統(tǒng)(OS)應(yīng)用程序
(Application)低級(jí)語言的地盤高級(jí)語言的地盤C語言的地盤為什么選擇C語言?C語言被分類為高級(jí)語言,但實(shí)際上它是一種介于高級(jí)語言和低級(jí)語言之間的語言。很多流行語言、新生語言都借鑒了它的思想、語法從C++,到Java,再到C#正確地學(xué)好C語言,是學(xué)習(xí)這些流行語言的基礎(chǔ),也是學(xué)好其它后續(xù)課程的基礎(chǔ)。4.5C語言對(duì)結(jié)構(gòu)化程序設(shè)計(jì)方法的支持4.5.1C程序設(shè)計(jì)的一般結(jié)構(gòu)(三種結(jié)構(gòu))4.5.2子程序結(jié)構(gòu)(模塊化)C語言的順序結(jié)構(gòu)
順序結(jié)構(gòu)是指程序中語句的執(zhí)行次序是按照語句在程序中的自然次序來一條條執(zhí)行。
BAmain(){
printf(“welcometoC!”);
printf(“welcomeagain!”);}選擇結(jié)構(gòu)(分支結(jié)構(gòu))選擇結(jié)構(gòu)又稱分支結(jié)構(gòu)。三種:單分支,雙分支,多分支BNA條件PYNA表達(dá)式PYA1條件P有n種情況情況1?A2情況2?An情況n?…C語言的選擇結(jié)構(gòu)(分支結(jié)構(gòu))if(條件P){
執(zhí)行語句1; 執(zhí)行語句2; …}else{
執(zhí)行語句m;
執(zhí)行語句m+1;
…}
switch(條件P){
case
值1:語句1;…;break;
case
值2:語句m;…;break; …
case
值n:語句k;…;break;
default:語句k;…;break;}C語言的循環(huán)結(jié)構(gòu)APT循環(huán)變量增加步長循環(huán)變量賦初值F1.while語句
while(條件A) {
執(zhí)行語句1;執(zhí)行語句2;…}
2.do…while語句
do{
執(zhí)行語句1;執(zhí)行語句2;…}while(條件A);3.for語句:for(初始化表達(dá)式1;條件判斷表達(dá)式2;計(jì)數(shù)表達(dá)式3) {執(zhí)行語句1;… }4.5.2子程序結(jié)構(gòu)在C語言中,每一個(gè)模塊都是一個(gè)函數(shù),即子程序,也稱子函數(shù)。函數(shù)是一組相關(guān)語句的集合,能完成一個(gè)獨(dú)立的功能調(diào)用和被調(diào)用轉(zhuǎn)向語句1、break語句break語句只能用在switch語句或循環(huán)語句中,其作用是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。由于break語句的轉(zhuǎn)移方向是明確的,所以不需要語句標(biāo)號(hào)與之配合。2、continue語句continue語句只能用在循環(huán)體中,執(zhí)行該命令后結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。小結(jié)程序與程序設(shè)計(jì)語言結(jié)構(gòu)化程序設(shè)計(jì)思想(重點(diǎn))程序的運(yùn)行過程理解結(jié)構(gòu)化程序設(shè)計(jì)思想在C語言中的具體體現(xiàn)作業(yè)思考題第2題4.6算法
4.6.1算法概述4.6.2算法的表示4.6.3算法舉例
一個(gè)公式計(jì)算機(jī)程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)語言
一、數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)元素之間具有某種相互關(guān)系,稱之為數(shù)據(jù)結(jié)構(gòu)。常指數(shù)據(jù)的邏輯結(jié)構(gòu)。邏輯結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)線性非線性樹圖存儲(chǔ)結(jié)構(gòu)鏈接存儲(chǔ)結(jié)構(gòu)順序存儲(chǔ)結(jié)構(gòu)抽象運(yùn)算:初始化、讀取訪問、插入、刪除等二、算法-程序設(shè)計(jì)的靈魂1、算法的概念:為解決一個(gè)問題而采取的具體方法和步驟。2、算法的分類:數(shù)值運(yùn)算和非數(shù)值運(yùn)算3、特點(diǎn):(1)有窮性:每個(gè)步驟執(zhí)行的次數(shù)及時(shí)間是有限的(2)確定性:每個(gè)步驟含義明確,無二義性。(3)可行性:描述的操作都可實(shí)現(xiàn)。(4)輸入:一個(gè)算法應(yīng)具有一個(gè)或多個(gè)輸入。(5)輸出:一個(gè)算法應(yīng)具有一個(gè)或多個(gè)輸出。二、算法-程序設(shè)計(jì)的靈魂4、評(píng)價(jià)算法的標(biāo)準(zhǔn):正確性與可靠性簡單性與易理解性效率5、算法的表示方法:(1)自然語言描述(2)流程圖描述(3)N-S盒圖(4)偽碼表示法等現(xiàn)在的問題是:找出三個(gè)數(shù)的最大值。先來分析一下問題(1)自然語言描述求三個(gè)數(shù)最大值:
先將兩個(gè)數(shù)a和b進(jìn)行比較,找出其最大者,然后再把它和第三個(gè)數(shù)c進(jìn)行比較,如果它比第三個(gè)數(shù)大,則它就是最大數(shù),否則第三個(gè)數(shù)c就是最大數(shù)。特點(diǎn):書寫簡單,但比較哆嗦,看起來結(jié)構(gòu)也不夠清晰
(2)流程圖這是一種圖語言表示法,它用一些不同的圖例來表示算法的流程。常用的圖例主要有如下幾種。流程圖表示法常用圖例求三個(gè)數(shù)的最大值問題的流程圖表示優(yōu)點(diǎn):結(jié)構(gòu)清晰缺點(diǎn):流程線過長,圖較大(3)N-S盒圖也是一種圖語言表示法,其特點(diǎn)是在一個(gè)矩形框內(nèi)完成算法的流程說明AB順序AB條件TF選擇當(dāng)條件成立A直到條件成立A循環(huán)N-S圖表示的三種基本結(jié)構(gòu)求三個(gè)數(shù)的最大值問題的N-S盒圖表示優(yōu)點(diǎn):結(jié)構(gòu)清晰(4)偽碼表示法所謂偽碼就是類似于程序設(shè)計(jì)語言的語句,但又不是任何一種真實(shí)的程序設(shè)計(jì)語言的語句,
優(yōu)點(diǎn):很容易將其轉(zhuǎn)換成程序設(shè)計(jì)語言ifa>bthen把a(bǔ)交給maxelse把b交給maxifmax>cthen輸出最大值maxelse輸出最大值cif(a>b)max=a;elsemax=b;if(max>c)
printf(“themaxis%d\n”,max);else
printf(“themaxis%d\n”,c);總之,選擇一種自己習(xí)慣讀、寫的一種去表示即可??偨Y(jié):程序設(shè)計(jì)的大致步驟開始分析問題,確定數(shù)據(jù)結(jié)構(gòu)和算法寫算法用程序設(shè)計(jì)語言編程結(jié)束編譯調(diào)試4.6.3算法舉例
例4.1:將兩個(gè)變量a,b的值交換.c=a
a=b
b=c開始結(jié)束4.6.3算法舉例例4.2、求一元二次方程的解。要求輸入系數(shù)a、b、c的值,判斷是否有解,并得出該方程的解。
是開始delta=b*b-4acDelta<0?delta=0?結(jié)束是否否輸入a,b,c的值輸出:沒有實(shí)根輸出兩個(gè)相同的實(shí)根輸出兩個(gè)不同的實(shí)根4.6.3算法舉例例4.3:求1+2+3+4+……+100的值。
是開始結(jié)束sum=0,n=1n=n+1n<=100?sum=sum+n否輸出sum課堂練習(xí)國王的許諾:相傳國際象棋是古印度舍罕王的宰相達(dá)依爾發(fā)明的。舍罕王十分喜歡象棋,決定讓宰相自己選擇何種賞賜。這位聰明的宰相指著8×8共64格的象棋盤說:陛下,請(qǐng)您賞給我一些麥子吧,就在棋盤的第一個(gè)格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盤上的64個(gè)格子,我就感恩不盡了。sum=1+2+22+23+…+263是開始結(jié)束sum=0,n=0n=n+1n<=63?sum=sum+2n否輸出sum4.7面向?qū)ο缶幊趟枷?/p>
面向過程與面向?qū)ο竺嫦蜻^程:數(shù)據(jù)與操作分離面向?qū)ο螅簲?shù)據(jù)與操作一起封裝起來面向?qū)ο蠹夹g(shù)的基本概念對(duì)象:客觀事物由(內(nèi)部)屬性和行為組成例:一個(gè)學(xué)生,其內(nèi)在屬性指班級(jí)、學(xué)號(hào)等相關(guān)信息或數(shù)據(jù),行為可以是對(duì)其各項(xiàng)數(shù)據(jù)的查詢、修改、輸出等。類:具有相同屬性和行為的對(duì)象的集合類是對(duì)同類對(duì)象的抽象(歸納),模板對(duì)象是類中一個(gè)具體的實(shí)例例:學(xué)生類類的劃分至關(guān)重要面向?qū)ο蠹夹g(shù)的基本概念消息是指對(duì)象間相互聯(lián)系和相互作用的方式。一個(gè)消息主要由5部分組成:發(fā)送消息的對(duì)象、接
收消息的對(duì)象、消息傳遞辦法、消息內(nèi)容(參數(shù))、反饋消息是對(duì)象之間發(fā)出的行為請(qǐng)求,也是描述事件發(fā)生的信息,事件由多個(gè)消息組成。程序的執(zhí)行順序不再是預(yù)先設(shè)定好了的,而是由事件驅(qū)動(dòng)的。面向?qū)ο蠹夹g(shù)的特性抽象性:學(xué)生1學(xué)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)自動(dòng)化工程(系統(tǒng)調(diào)試)試題及答案
- 【歷史】期末復(fù)習(xí)開放性試題課件-2025-2026學(xué)年統(tǒng)編版八年級(jí)歷史上冊(cè)
- 中大紡織介紹
- 中國航空科普
- 2026年集美區(qū)雙嶺小學(xué)產(chǎn)假頂崗教師招聘備考題庫及參考答案詳解一套
- 2025 小學(xué)四年級(jí)思想品德下冊(cè)低碳出行優(yōu)化方式推廣活動(dòng)課件
- 2025年度質(zhì)量文化建設(shè)成果匯報(bào)暨2026年升級(jí)規(guī)劃
- 2026年音樂公益活動(dòng)組織試題含答案
- 2026年四川衛(wèi)生系統(tǒng)應(yīng)聘面試題庫解析
- 2026年慢性病管理試題及飲食運(yùn)動(dòng)調(diào)理建議含答案
- 海參供貨合同范例
- DB41T 1448-2017 濕式堆存尾礦庫安全技術(shù)規(guī)程
- GB/T 22081-2024網(wǎng)絡(luò)安全技術(shù)信息安全控制
- 江蘇南京市、鹽城市2025屆高二上數(shù)學(xué)期末教學(xué)質(zhì)量檢測試題含解析
- 江蘇省2021年普通高中學(xué)業(yè)水平合格性考試數(shù)學(xué)試題(解析版)
- 市場營銷《大數(shù)據(jù)營銷》課程教學(xué)大綱
- 4S店總經(jīng)理績效考核方案
- 2024年華能山東發(fā)電有限公司招聘筆試參考題庫含答案解析
- 高三英語定語從句公開課課件
- 學(xué)前教育-幼兒園戶外建構(gòu)游戲安全與對(duì)策的研究論文
- 門急診病歷質(zhì)控檢查評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論