程序設(shè)計(jì)基礎(chǔ)整理課件_第1頁
程序設(shè)計(jì)基礎(chǔ)整理課件_第2頁
程序設(shè)計(jì)基礎(chǔ)整理課件_第3頁
程序設(shè)計(jì)基礎(chǔ)整理課件_第4頁
程序設(shè)計(jì)基礎(chǔ)整理課件_第5頁
已閱讀5頁,還剩155頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022/12/23《程序設(shè)計(jì)》-2005秋1提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋1提要程序設(shè)計(jì)基2022/12/23《程序設(shè)計(jì)》-2005秋2提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋2提要程序設(shè)計(jì)基2022/12/23《程序設(shè)計(jì)》-2005秋3什么是程序?程序(Program)就是供計(jì)算機(jī)執(zhí)行后,能完成特定功能的指令序列(Instructionssequence)程序=計(jì)算機(jī)指令序列程序包含兩方面的內(nèi)容數(shù)據(jù)對(duì)象(Objects)及數(shù)據(jù)對(duì)象之間關(guān)系數(shù)據(jù)結(jié)構(gòu)(Datastructure)對(duì)這些對(duì)象的處理過程算法(Algorithm)2022/12/18《程序設(shè)計(jì)》-2005秋3什么是程序?程2022/12/23《程序設(shè)計(jì)》-2005秋4程序/數(shù)據(jù)結(jié)構(gòu)/算法程序=數(shù)據(jù)結(jié)構(gòu)+算法Program=DataStructure+Algorithm這個(gè)公式由NiklausWirth首先提出。NiklausWirth是PASCAL之父和結(jié)構(gòu)化程序設(shè)計(jì)的首創(chuàng)者,1984圖靈獎(jiǎng)獲得者。2022/12/18《程序設(shè)計(jì)》-2005秋4程序/數(shù)據(jù)結(jié)構(gòu)2022/12/23《程序設(shè)計(jì)》-2005秋5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)由某一數(shù)據(jù)對(duì)象及該對(duì)象中所有數(shù)據(jù)成員之間的關(guān)系組成。記為:Data_Structure={D,R}其中,D是數(shù)據(jù)對(duì)象,R是該對(duì)象中所有數(shù)據(jù)成員之間的關(guān)系的有限集合2022/12/18《程序設(shè)計(jì)》-2005秋5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)2022/12/23《程序設(shè)計(jì)》-2005秋6數(shù)據(jù)結(jié)構(gòu)(續(xù))程序的處理對(duì)象是描述客觀事物的數(shù)據(jù)由于客觀事物的多樣性,會(huì)有不同形式的數(shù)據(jù)整數(shù)、實(shí)數(shù)、字符,以及所有計(jì)算機(jī)能夠接收和處理的各種各樣符號(hào)集合在程序中,形式不同的數(shù)據(jù)采用數(shù)據(jù)類型來標(biāo)識(shí)變量的數(shù)據(jù)類型說明變量可能取的值的集合、施于變量的操作的集合2022/12/18《程序設(shè)計(jì)》-2005秋6數(shù)據(jù)結(jié)構(gòu)(續(xù))2022/12/23《程序設(shè)計(jì)》-2005秋7數(shù)據(jù)結(jié)構(gòu)(續(xù))數(shù)據(jù)類型一組形式相同的數(shù)據(jù)集,對(duì)這組數(shù)據(jù)可施行的一組操作集對(duì)數(shù)據(jù)結(jié)構(gòu)的總括數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)對(duì)象及其相互關(guān)系和構(gòu)造方法程序的數(shù)據(jù)結(jié)構(gòu)描述了程序中的數(shù)據(jù)間的組織形式和結(jié)構(gòu)關(guān)系2022/12/18《程序設(shè)計(jì)》-2005秋7數(shù)據(jù)結(jié)構(gòu)(續(xù))2022/12/23《程序設(shè)計(jì)》-2005秋8算法算法即問題的求解方法算法由一系列求解步驟組成。算法的描述由經(jīng)明確說明的一組簡單指令和規(guī)則組成,計(jì)算機(jī)按規(guī)則執(zhí)行其中的指令能在有限的步驟內(nèi)解決一個(gè)問題或者完成一個(gè)函數(shù)的計(jì)算算法要求組成算法的規(guī)則和步驟的意義應(yīng)是唯一確定的,是沒有二義性的2022/12/18《程序設(shè)計(jì)》-2005秋8算法算法即問題2022/12/23《程序設(shè)計(jì)》-2005秋9算法(續(xù))算法中的操作是有序的,必須按算法指定的操作順序執(zhí)行,能在有限步驟后給出問題的結(jié)果求解同一問題可能有多種算法,選擇算法主要考慮正確性可靠性簡單性易理解性執(zhí)行效率空間(內(nèi)存和磁盤)代價(jià)等2022/12/18《程序設(shè)計(jì)》-2005秋9算法(續(xù))算法2022/12/23《程序設(shè)計(jì)》-2005秋10算法(續(xù))描述算法的常用工具有流程圖(又稱框圖)流程圖是算法的圖形描述,流程圖往往比程序更直觀清晰,容易閱讀和理解,它不僅可以作為編寫程序的依據(jù),也是交流算法思想的重要工具在逐步求精的結(jié)構(gòu)化程序設(shè)計(jì)方法中,目前多數(shù)采用結(jié)構(gòu)化的偽代碼(pseudocode)來描述算法2022/12/18《程序設(shè)計(jì)》-2005秋10算法(續(xù))描2022/12/23《程序設(shè)計(jì)》-2005秋11數(shù)據(jù)結(jié)構(gòu)vs.算法明確了問題的算法,才能較好設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)要選擇好算法,又常常依賴于合理的數(shù)據(jù)結(jié)構(gòu)程序是和數(shù)據(jù)結(jié)構(gòu)不可分割的。程序在描述算法同時(shí),也必須完整地描述作為算法的操作對(duì)象的數(shù)據(jù)結(jié)構(gòu)。對(duì)于一些復(fù)雜的問題,常有因數(shù)據(jù)的表示方式和結(jié)構(gòu)的差異,問題的抽象求解算法也會(huì)完全不同2022/12/18《程序設(shè)計(jì)》-2005秋11數(shù)據(jù)結(jié)構(gòu)vs2022/12/23《程序設(shè)計(jì)》-2005秋12程序的性質(zhì)目的性程序有明確的目的,程序運(yùn)行時(shí)能完成賦予它的功能分步性程序?yàn)橥瓿善鋸?fù)雜的功能,由一系列計(jì)算機(jī)可執(zhí)行的步驟組成有序性程序的執(zhí)行步驟是有序的,不可隨意改變程序步驟的執(zhí)行順序有限性程序是有限的指令序列,程序所包含的步驟是有限的操作性有意義的程序總是對(duì)某些對(duì)象進(jìn)行操作,使其改變狀態(tài),完成其功能2022/12/18《程序設(shè)計(jì)》-2005秋12程序的性質(zhì)目2022/12/23《程序設(shè)計(jì)》-2005秋13什么是程序設(shè)計(jì)?程序設(shè)計(jì)(Programdesign):設(shè)計(jì)和編制程序的過程設(shè)計(jì)程序:數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì)編制程序:把設(shè)計(jì)轉(zhuǎn)化為某種程序語言的代碼程序設(shè)計(jì)需要程序設(shè)計(jì)方法–軟件工程(SoftwareEngineering)方法學(xué)結(jié)構(gòu)化設(shè)計(jì)方法、面向?qū)ο蠓椒ǔ绦蛟O(shè)計(jì)語言–程序語言學(xué)Basic,Pascal,C,C++,Java,C#……2022/12/18《程序設(shè)計(jì)》-2005秋13什么是程序設(shè)2022/12/23《程序設(shè)計(jì)》-2005秋14什么是好的程序?高效(Efficient)可靠(Reliable)易讀(Easytoread)可維護(hù)(Maintainable)可重用(Re-usable)可移植(Portable)……2022/12/18《程序設(shè)計(jì)》-2005秋14什么是好的程2022/12/23《程序設(shè)計(jì)》-2005秋15什么是程序設(shè)計(jì)語言?程序設(shè)計(jì)語言是人與計(jì)算機(jī)對(duì)話的工具,是用來書寫計(jì)算機(jī)程序的語言人機(jī)語言(human-machinelanguage)程序設(shè)計(jì)語言分三類機(jī)器語言(Machinelanguage)匯編語言(Assemblylanguage)高級(jí)語言(High-levellanguage)2022/12/18《程序設(shè)計(jì)》-2005秋15什么是程序設(shè)2022/12/23《程序設(shè)計(jì)》-2005秋16程序設(shè)計(jì)語言High-levellanguageMachinelanguageAssemblylanguage2022/12/18《程序設(shè)計(jì)》-2005秋16程序設(shè)計(jì)語言2022/12/23《程序設(shè)計(jì)》-2005秋17機(jī)器語言機(jī)器語言:計(jì)算機(jī)的指令系統(tǒng)計(jì)算機(jī)都只能直接執(zhí)行由其自身機(jī)器語言編寫的程序機(jī)器語言與計(jì)算機(jī)的硬件密切相關(guān)機(jī)器語言中的計(jì)算機(jī)指令通常用一個(gè)二進(jìn)制形式的代碼,由若干位1和0組成一條計(jì)算機(jī)指令指示計(jì)算機(jī)一次完成一個(gè)最基本的操作2022/12/18《程序設(shè)計(jì)》-2005秋17機(jī)器語言機(jī)器2022/12/23《程序設(shè)計(jì)》-2005秋18匯編語言匯編語言:用類英語單詞縮寫的符號(hào)指令代替機(jī)器語言的二進(jìn)制代碼指令用匯編語言編寫的程序在計(jì)算機(jī)上執(zhí)行,先要將用匯編語言編寫的源程序轉(zhuǎn)換成機(jī)器語言程序。稱完成這個(gè)轉(zhuǎn)換功能的程序?yàn)椤皡R編程序“(assembler)2022/12/18《程序設(shè)計(jì)》-2005秋18匯編語言匯編2022/12/23《程序設(shè)計(jì)》-2005秋19高級(jí)程序最接近自然語言的程序設(shè)計(jì)語言主要由語句(statements)構(gòu)成,語句是要計(jì)算機(jī)完成任務(wù)的命令有統(tǒng)一的語法,獨(dú)立于具體機(jī)器,便于人們編碼,閱讀和理解用高級(jí)語言編寫的程序(源程序)在計(jì)算機(jī)上執(zhí)行,先要由編譯器(也稱為編譯程序)將源程序轉(zhuǎn)換成機(jī)器語言程序既能方便地描述客觀對(duì)象,又能借助于編譯器為計(jì)算機(jī)所接受的語言2022/12/18《程序設(shè)計(jì)》-2005秋19高級(jí)程序最接2022/12/23《程序設(shè)計(jì)》-2005秋20機(jī)器語言/匯編語言/高級(jí)語言機(jī)器語言計(jì)算機(jī)匯編程序解釋器編譯器高級(jí)語言匯編語言AssemblerInterpreterCompiler2022/12/18《程序設(shè)計(jì)》-2005秋20機(jī)器語言/匯2022/12/23《程序設(shè)計(jì)》-2005秋21高級(jí)語言分類目前的高級(jí)語言可分三類面向過程的語言(Procedurallanguage)面向問題的語言(Declarativelanguage)描述語言面向?qū)ο蟮恼Z言(Object-orientedlanguage)2022/12/18《程序設(shè)計(jì)》-2005秋21高級(jí)語言分類2022/12/23《程序設(shè)計(jì)》-2005秋22面向過程的語言早期最流行最常用的程序設(shè)計(jì)語言為面向過程型的語言Cobol,Fortran,Basic,C,……可獨(dú)立于計(jì)算機(jī)編寫程序,但編寫程序時(shí),程序不僅要說明做什么(what),更重要的是非常詳細(xì)地告訴計(jì)算機(jī)如何做(how),程序需要詳細(xì)描述解題的過程和細(xì)節(jié)2022/12/18《程序設(shè)計(jì)》-2005秋22面向過程的語2022/12/23《程序設(shè)計(jì)》-2005秋23面向問題的語言不必關(guān)心問題的求解算法和求解的過程,只需指出問題是做什么,數(shù)據(jù)的輸入和輸出形式,就能得到所需結(jié)果數(shù)據(jù)庫查詢和操縱語言:SQL(StructuredQueryLanguage)語言邏輯語言/專家系統(tǒng)語言:Prolog,Lisp等2022/12/18《程序設(shè)計(jì)》-2005秋23面向問題的語2022/12/23《程序設(shè)計(jì)》-2005秋24面向?qū)ο蟮恼Z言目的是克服面向過程語言過分強(qiáng)調(diào)求解過程細(xì)節(jié),程序不易復(fù)用的缺點(diǎn)引入了對(duì)象、消息、類、繼承、封裝、抽象、多態(tài)性等機(jī)制和概念用面向?qū)ο笳Z言進(jìn)行程序設(shè)計(jì)時(shí),以問題中的對(duì)象為基礎(chǔ),將具有類似性質(zhì)的對(duì)象抽象成類,利用繼承機(jī)制,對(duì)差異進(jìn)行程序設(shè)計(jì)是目前的主流編程語言:C++,Java2022/12/18《程序設(shè)計(jì)》-2005秋24面向?qū)ο蟮恼Z2022/12/23《程序設(shè)計(jì)》-2005秋25程序設(shè)計(jì)語言分類與自然語言親密關(guān)系機(jī)器語言、匯編語言、高級(jí)語言描述/求解問題方式面向過程語言:Basic,Pascal,C面向問題語言:SQL,Lisp,Prolog面向?qū)ο笳Z言:C++,Java程序設(shè)計(jì)風(fēng)格結(jié)構(gòu)化語言Pascal,C,C++,Java非結(jié)構(gòu)化語言Cobol,Fortran,Basic2022/12/18《程序設(shè)計(jì)》-2005秋25程序設(shè)計(jì)語言2022/12/23《程序設(shè)計(jì)》-2005秋26提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋26提要程序設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋27結(jié)構(gòu)化程序設(shè)計(jì)方法程序結(jié)構(gòu)自頂向下模塊化設(shè)計(jì)方法模塊算法的逐步求精(stepwiserefinement)設(shè)計(jì)方法用結(jié)構(gòu)化控制結(jié)構(gòu)描述算法和編寫程序2022/12/18《程序設(shè)計(jì)》-2005秋27結(jié)構(gòu)化程序設(shè)2022/12/23《程序設(shè)計(jì)》-2005秋28自頂向下模塊化設(shè)計(jì)方法限制程序復(fù)雜性是程序設(shè)計(jì)核心程序結(jié)構(gòu)自頂向下模塊化設(shè)計(jì)方法就是把大程序按功能劃分成一些較小的部分,每個(gè)完成獨(dú)立功能分解模塊的原則是簡單性、獨(dú)立性和完整性。模塊化設(shè)計(jì)方法開發(fā)程序,使程序具有較高的可靠性和靈活性,同時(shí)便于程序的測試和維護(hù)2022/12/18《程序設(shè)計(jì)》-2005秋28自頂向下模塊2022/12/23《程序設(shè)計(jì)》-2005秋29自頂向下模塊化設(shè)計(jì)方法(續(xù))在用模塊化方法劃分程序模塊時(shí),應(yīng)盡量讓模塊具有如下良好性質(zhì):模塊具有單一入口和單一出口模塊不宜過大,模塊功能單一模塊的執(zhí)行不對(duì)環(huán)境產(chǎn)生副作用讓模塊與環(huán)境的聯(lián)系僅限于輸入和輸出參數(shù),模塊的內(nèi)部結(jié)構(gòu)與調(diào)用它的程序無關(guān)盡量用模塊的名字調(diào)用模塊2022/12/18《程序設(shè)計(jì)》-2005秋29自頂向下模塊2022/12/23《程序設(shè)計(jì)》-2005秋30模塊算法逐步求精設(shè)計(jì)方法程序設(shè)計(jì)的基本方法是抽象、枚舉、歸納抽象包括算法抽象和數(shù)據(jù)抽象算法抽象是指算法的尋求(或開發(fā))采用逐步求精、逐層分解的方法數(shù)據(jù)抽象也指在算法抽象的過程中逐步完善數(shù)據(jù)結(jié)構(gòu)和引入新的數(shù)據(jù)及確定關(guān)于數(shù)據(jù)的操作2022/12/18《程序設(shè)計(jì)》-2005秋30模塊算法逐步2022/12/23《程序設(shè)計(jì)》-2005秋31逐步求精設(shè)計(jì)方法(續(xù))算法設(shè)計(jì)采用逐步求精設(shè)計(jì)方法,先設(shè)計(jì)出一個(gè)抽象算法,這是一個(gè)在抽象數(shù)據(jù)上實(shí)施一系列抽象操作的算法,由粗略的控制結(jié)構(gòu)和抽象的計(jì)算步驟組成。抽象操作只指明“做什么”,對(duì)這些抽象操作的細(xì)化就是想方設(shè)法回答它“如何做”采用逐步求精的方法,由粗到細(xì),將抽象步驟進(jìn)一步分解成若干子任務(wù)。分而治之,對(duì)仍不具體的抽象子任務(wù)再進(jìn)行分解。如此反復(fù)地一步步細(xì)化,算法越來越具體,抽象成分越來越少,直至可以編程為止2022/12/18《程序設(shè)計(jì)》-2005秋31逐步求精設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋32程序的基本結(jié)構(gòu)單元順序結(jié)構(gòu)條件選擇結(jié)構(gòu)IfcThenop1Elseop2循環(huán)結(jié)構(gòu)DoWhile循環(huán)結(jié)構(gòu)While循環(huán)結(jié)構(gòu)For循環(huán)結(jié)構(gòu)任何可計(jì)算問題,可用上述三種結(jié)構(gòu)編程解決2022/12/18《程序設(shè)計(jì)》-2005秋32程序的基本結(jié)2022/12/23《程序設(shè)計(jì)》-2005秋33順序結(jié)構(gòu)把復(fù)雜的計(jì)算工作分解成一系列逐條執(zhí)行的操作序列順序結(jié)構(gòu)就是為把一個(gè)復(fù)雜的計(jì)算用若干簡單計(jì)算的順序執(zhí)行提供控制手段。順序結(jié)構(gòu)執(zhí)行時(shí),從序列的第一個(gè)操作開始,順序執(zhí)行序列中的操作,直至序列的最后一個(gè)操作執(zhí)行后結(jié)束2022/12/18《程序設(shè)計(jì)》-2005秋33順序結(jié)構(gòu)把復(fù)2022/12/23《程序設(shè)計(jì)》-2005秋34順序結(jié)構(gòu)實(shí)例實(shí)例:交換變量x和y的值可分解為順序執(zhí)行的三個(gè)操作步驟:{temp=x;/*將x的值暫存于temp*/x=y;/*將x置成y的值*/

y=temp;/*將y置成temp的值*/}2022/12/18《程序設(shè)計(jì)》-2005秋34順序結(jié)構(gòu)實(shí)例2022/12/23《程序設(shè)計(jì)》-2005秋35條件選擇結(jié)構(gòu)條件選擇結(jié)構(gòu)有一個(gè)判斷條件和兩個(gè)供選擇分支操作組成一般形式:

if(判斷條件)

分支操作1;

else分支操作2;2022/12/18《程序設(shè)計(jì)》-2005秋35條件選擇結(jié)構(gòu)2022/12/23《程序設(shè)計(jì)》-2005秋36條件選擇結(jié)構(gòu)執(zhí)行過程先計(jì)算判斷條件,如判斷條件的值為真,即條件成立,則執(zhí)行分支操作1否則,若判斷條件的值為假,即條件不成立,則執(zhí)行分支操作2注意,無論判斷條件為何值,條件選擇結(jié)構(gòu)只執(zhí)行分支操作1或分支操作2之一條件選擇結(jié)構(gòu)中的分支又可以是任何控制結(jié)構(gòu),當(dāng)分支操作又是條件選擇結(jié)構(gòu)時(shí),就呈現(xiàn)嵌套(nested)的條件選擇結(jié)構(gòu)2022/12/18《程序設(shè)計(jì)》-2005秋36條件選擇結(jié)構(gòu)2022/12/23《程序設(shè)計(jì)》-2005秋37實(shí)例intmax(intx,inty)/*定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型*/{intz;/*max函數(shù)中的聲明部分,定義本函數(shù)中用到的變量z為整型*/

if(x>y)z=x;elsez=y;return(z);}2022/12/18《程序設(shè)計(jì)》-2005秋37實(shí)例int2022/12/23《程序設(shè)計(jì)》-2005秋38循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)為描述循環(huán)操作提供控制手段在C中,循環(huán)結(jié)構(gòu)有以下三種:while循環(huán)結(jié)構(gòu)do-while循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)2022/12/18《程序設(shè)計(jì)》-2005秋38循環(huán)結(jié)構(gòu)循環(huán)2022/12/23《程序設(shè)計(jì)》-2005秋39while循環(huán)結(jié)構(gòu)由一個(gè)循環(huán)條件和一個(gè)循環(huán)操作語句(稱為循環(huán)體)組成一般形式:

while(循環(huán)條件)

循環(huán)體2022/12/18《程序設(shè)計(jì)》-2005秋39while2022/12/23《程序設(shè)計(jì)》-2005秋40while循環(huán)結(jié)構(gòu)執(zhí)行過程每次循環(huán)前,先求循環(huán)條件的值,當(dāng)條件成立時(shí),就執(zhí)行循環(huán)體,并接著再次求循環(huán)條件的值,以確定循環(huán)體是否再次被執(zhí)行當(dāng)循環(huán)條件的值一開始為假,或某次循環(huán)后其值為假,則結(jié)束循環(huán)操作2022/12/18《程序設(shè)計(jì)》-2005秋40while2022/12/23《程序設(shè)計(jì)》-2005秋41實(shí)例計(jì)算5!:voidmain(){inti,t;t=1;i=2;

while(i<=5){t=t*i;i=i+1;}printf("%d",t);}2022/12/18《程序設(shè)計(jì)》-2005秋41實(shí)例計(jì)算5!2022/12/23《程序設(shè)計(jì)》-2005秋42do-while循環(huán)結(jié)構(gòu)由一個(gè)循環(huán)條件和一個(gè)循環(huán)操作語句(稱為循環(huán)體)組成一般形式:

do

循環(huán)體

while(循環(huán)條件);2022/12/18《程序設(shè)計(jì)》-2005秋42do-whi2022/12/23《程序設(shè)計(jì)》-2005秋43do-while循環(huán)結(jié)構(gòu)執(zhí)行過程每次循環(huán)前,先執(zhí)行循環(huán)體,接著再求循環(huán)條件的值,當(dāng)條件成立時(shí),再執(zhí)行循環(huán)體如此反復(fù),直到循環(huán)條件的值為假,結(jié)束循環(huán)操作2022/12/18《程序設(shè)計(jì)》-2005秋43do-whi2022/12/23《程序設(shè)計(jì)》-2005秋44實(shí)例求s=1+2+3+…+100用do-while語句可描述成:

s=0;i=1;do{s+=i;i++;}while(i<=100);2022/12/18《程序設(shè)計(jì)》-2005秋44實(shí)例求s2022/12/23《程序設(shè)計(jì)》-2005秋45for循環(huán)結(jié)構(gòu)由為循環(huán)有關(guān)變量賦初值的表達(dá)式、循環(huán)條件、循環(huán)后對(duì)變量的修正表達(dá)式和循環(huán)執(zhí)行的循環(huán)體組成一般形式:for(賦初值表達(dá)式;循環(huán)條件表達(dá)式;修正表達(dá)式)

循環(huán)體2022/12/18《程序設(shè)計(jì)》-2005秋45for循環(huán)2022/12/23《程序設(shè)計(jì)》-2005秋46for循環(huán)結(jié)構(gòu)執(zhí)行過程循環(huán)前,先執(zhí)行賦初值表達(dá)式,為循環(huán)中的有關(guān)變量賦初值每輪循環(huán)開始,先求循環(huán)條件的值,若條件不成立,則結(jié)束循環(huán)當(dāng)條件成立時(shí),執(zhí)行循環(huán)體;然后求變量修正表達(dá)式,更新有關(guān)變量的值;接著再次求循環(huán)條件如此反復(fù),直到條件為假,結(jié)束循環(huán)2022/12/18《程序設(shè)計(jì)》-2005秋46for循環(huán)2022/12/23《程序設(shè)計(jì)》-2005秋47實(shí)例求s=1+2+3+…+100用for語句可以寫成:for(s=0,i=1;i<=100;i++)s+=i;2022/12/18《程序設(shè)計(jì)》-2005秋47實(shí)例求s2022/12/23《程序設(shè)計(jì)》-2005秋48提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋48提要程序設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋49DennisM.Ritchie(丹尼斯里奇)2022/12/18《程序設(shè)計(jì)》-2005秋49Dennis2022/12/23《程序設(shè)計(jì)》-2005秋50DennisM.Ritchie(續(xù))HarvardUniversity獲學(xué)士和博士學(xué)位1967年加入Bell實(shí)驗(yàn)室工作至今1972年發(fā)明C語言1978年,BrianW.Kernighan和DennisM.Ritchie合著《TheCProgrammingLanguage》Turing獎(jiǎng)(1983)和IEEE先驅(qū)獎(jiǎng)(1992)獲得者、美國工程院院士2022/12/18《程序設(shè)計(jì)》-2005秋50Dennis2022/12/23《程序設(shè)計(jì)》-2005秋51C語言發(fā)展史1960年出現(xiàn)的ALGOL60是一種面向問題的高級(jí)語言,它離硬件比較遠(yuǎn),不宜用來編寫系統(tǒng)程序1963年英國的劍橋大學(xué)推出了CPL(combinedprogramminglanguage)語言。CPL語言在ALGOL60的基礎(chǔ)上接近硬件一些,但規(guī)模比較大,難以實(shí)現(xiàn)1967年英國劍橋大學(xué)的MatinRichards對(duì)CPL語言做了簡化,推出了BCPL(basiccombinedprogramminglanguage)語言2022/12/18《程序設(shè)計(jì)》-2005秋51C語言發(fā)展史2022/12/23《程序設(shè)計(jì)》-2005秋52C語言發(fā)展史(續(xù))1970年美國貝爾實(shí)驗(yàn)室的KenThompson以BCPL語言為基礎(chǔ),設(shè)計(jì)出了簡單且很接近硬件的B語言(取BCPL的第一個(gè)字母),并用B語言寫了第一個(gè)UNIX操作系統(tǒng)。但B語言過于簡單,功能有限1972年至1973年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出了C語言(取BCPL的第二個(gè)字母)。C語言既保持了BCPL和B語言的優(yōu)點(diǎn)(精練,接近硬件),又克服了它們的缺點(diǎn)(過于簡單,數(shù)據(jù)無類型等)。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版2022/12/18《程序設(shè)計(jì)》-2005秋52C語言發(fā)展史2022/12/23《程序設(shè)計(jì)》-2005秋53C語言發(fā)展史(續(xù))1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語言問世以來各種版本對(duì)C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn),稱為ANSIC1987年,ANSI又公布了新標(biāo)準(zhǔn)—87ANSIC1990年,國際標(biāo)準(zhǔn)化組織ISO(InternationalStandardOrganization)接受87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)2022/12/18《程序設(shè)計(jì)》-2005秋53C語言發(fā)展史2022/12/23《程序設(shè)計(jì)》-2005秋54一個(gè)C程序?qū)嵗粋€(gè)只輸出一行信息的C程序#include<stdio.h>voidmain()/*主函數(shù)*/{

printf("Thisbookis<ProgrammingwithCandc++languages>.\n");}2022/12/18《程序設(shè)計(jì)》-2005秋54一個(gè)C程序?qū)?022/12/23《程序設(shè)計(jì)》-2005秋55C程序特點(diǎn)一個(gè)C程序有一個(gè)名為main的主函數(shù)主函數(shù)前的關(guān)鍵字void表示該函數(shù)不返回結(jié)果在函數(shù)名之后要有一對(duì)圓括號(hào),里面定義參數(shù)函數(shù)體用花括號(hào)“{}”括住。花括號(hào)可以用來括起任何一組C代碼,從而構(gòu)成復(fù)合語句或分程序簡單C語句之后有一個(gè)分號(hào)“;”程序中的“/*…*/”表示程序的注釋部分。注釋便于人閱讀程序,對(duì)程序編譯和運(yùn)行都沒有作用#include<stdio.h>是編譯預(yù)處理命令行,指明有關(guān)輸入和輸出標(biāo)準(zhǔn)函數(shù)也將是程序的一部分2022/12/18《程序設(shè)計(jì)》-2005秋55C程序特點(diǎn)一2022/12/23《程序設(shè)計(jì)》-2005秋56【例】讀入兩個(gè)整數(shù),輸出它們的和/*1*/#include<stdio.h>/*2*/voidmain()/*3*/{/*變量定義部分*//*4*/

intx,y,sum;/*定義x,y,sum*//*5*/

/*以下為語句序列*//*6*/

printf("Inputxandy\n");/*提示輸入數(shù)據(jù)*//*7*/

scanf("%d%d",&x,&y);/*輸入x和y的值*//*8*/

sum=x+y;/*完成x+y的計(jì)算,求sum=x+y*//*9*/printf("x+y=%d\n",sum);/*輸出結(jié)果*//*10*/}2022/12/18《程序設(shè)計(jì)》-2005秋56【例】讀入兩2022/12/23《程序設(shè)計(jì)》-2005秋57【例】利用公式:C=(5/9)(F-32)輸出F氏溫度與C氏溫度對(duì)照表,設(shè)已知F氏溫度取0、20、…、200。#include<stdio.h>voidmain(){floatf,c;/*變量定義*/

intlower,upper,step;lower=0;upper=200;step=20;f=lower;while(f<=upper){/*循環(huán)計(jì)算*/

c=5.0/9.0*(f-32.0);printf(“%3.0f%6.1f\n”,f,c);f=f+step;}}2022/12/18《程序設(shè)計(jì)》-2005秋57【例】利用公2022/12/23《程序設(shè)計(jì)》-2005秋58【例】輸入兩個(gè)實(shí)數(shù),輸出它們中的小的數(shù)#include<stdio.h>voidmain(){floatx,y,c;/*變量定義*/

floatmin(float,float);/*函數(shù)說明*/

printf(“輸入x和y.\n");scanf("%f%f",&x,&y);c=min(x,y);/*調(diào)用函數(shù)min()*/printf("MIN(%.2f,%.2f)=%.2f\n",x,y,c);}floatmin(floata,floatb){floattemp;/*函數(shù)使用的變量的定義*/

if(a<b)temp=a;elsetemp=b; returntemp;/*返回temp到調(diào)用min()函數(shù)處*/}2022/12/18《程序設(shè)計(jì)》-2005秋58【例】輸入兩2022/12/23《程序設(shè)計(jì)》-2005秋59函數(shù)(Function)C程序由若干函數(shù)組成。每個(gè)程序都有一個(gè)主函數(shù)-main()函數(shù)一個(gè)函數(shù)定義由函數(shù)頭和函數(shù)體組成。函數(shù)頭包括函數(shù)屬性、函數(shù)返回值類型、函數(shù)名、函數(shù)形式參數(shù)名,形式參數(shù)類型。函數(shù)結(jié)構(gòu)的一般形式:

函數(shù)返回值類型函數(shù)名(參數(shù)說明表){說明和定義部分;執(zhí)行語句序列}2022/12/18《程序設(shè)計(jì)》-2005秋59函數(shù)(Fun2022/12/23《程序設(shè)計(jì)》-2005秋60函數(shù)(續(xù))函數(shù)可以沒有參數(shù),但函數(shù)名之后的一對(duì)圓括號(hào)是必須的函數(shù)體是函數(shù)頭之后用一對(duì)花括號(hào)括住的部分。函數(shù)體用于描述實(shí)現(xiàn)函數(shù)功能的代碼,它又包括:說明和定義部分說明數(shù)據(jù)結(jié)構(gòu)(類型)和定義函數(shù)專用的局部變量等執(zhí)行部分由C語句和控制結(jié)構(gòu)代碼組成2022/12/18《程序設(shè)計(jì)》-2005秋60函數(shù)(續(xù))函2022/12/23《程序設(shè)計(jì)》-2005秋61【例】統(tǒng)計(jì)輸入字符行中各數(shù)字符、空白符與制表符符以及其它字符的出現(xiàn)次數(shù)。#include<stdio.h>voidmain(){intc,k,nWhite,nOther;intnDigit[10];/*定義有10個(gè)數(shù)字符的計(jì)數(shù)器*/

nWhite=nOther=0;for(k=0;k<10;k++)

nDigit[k]=0;printf(“Enterstringline\n”);while((c=getchar())!=’\n’)if(c>=’0’&&c<=’9’)/*如是數(shù)字符*/++nDigit[c–’0’];/*對(duì)應(yīng)數(shù)字符的計(jì)數(shù)器增1*/

elseif(c==’’||c==’\t’)++nWhite;

else++nOther;/*其它字符計(jì)數(shù)器增1*/

for(k=0;k<10;k++)/*輸出對(duì)應(yīng)數(shù)字符及其出現(xiàn)次數(shù)*/

printf(”%c:%d\n”,’0’+k,nDigit[k]);printf(”whitespace:%d\nother:%d\n\n”,nWhite,nOther);}2022/12/18《程序設(shè)計(jì)》-2005秋61【例】統(tǒng)計(jì)輸2022/12/23《程序設(shè)計(jì)》-2005秋62C語言詞匯基本符號(hào)數(shù)字10個(gè)(0~9)英文字母大、小寫各26個(gè)(A~Z,a~z)下線字符“_”其他構(gòu)成特殊符號(hào)的字符集基本詞匯字面形式常量特殊符號(hào)(運(yùn)算符)關(guān)鍵字標(biāo)識(shí)符(命名數(shù)據(jù)對(duì)象)2022/12/18《程序設(shè)計(jì)》-2005秋62C語言詞匯基2022/12/23《程序設(shè)計(jì)》-2005秋63關(guān)鍵詞(Keyword)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticstructswitchtypedefunionunsignedvoidvolatilewhile2022/12/18《程序設(shè)計(jì)》-2005秋63關(guān)鍵詞(Ke2022/12/23《程序設(shè)計(jì)》-2005秋64關(guān)鍵詞(續(xù))下面幾個(gè)雖不屬于關(guān)鍵字,但建議把它們看作關(guān)鍵字,不要在程序中隨便使用。它們用在C程序的預(yù)處理命令行中defineundefincludeifdefifndefendiflineelif2022/12/18《程序設(shè)計(jì)》-2005秋64關(guān)鍵詞(續(xù))2022/12/23《程序設(shè)計(jì)》-2005秋65標(biāo)識(shí)符(Identifier)作用:用來標(biāo)識(shí)變量、常量、類型、函數(shù)、語句等程序?qū)ο?,C語言用標(biāo)識(shí)符給它們命名命名規(guī)則:在C語言中,一個(gè)合理的標(biāo)識(shí)符由英文字母或下線符開頭,后跟或不跟由字母、下線符、數(shù)字符組成的字符列。一般以下線符開頭的標(biāo)識(shí)符作內(nèi)部使用2022/12/18《程序設(shè)計(jì)》-2005秋65標(biāo)識(shí)符(Id2022/12/23《程序設(shè)計(jì)》-2005秋66標(biāo)識(shí)符(續(xù))命名要求:標(biāo)識(shí)符作為程序成分對(duì)象的名稱,為了便于聯(lián)想和記憶,建議使用能反映該對(duì)象意義的標(biāo)識(shí)符限制:注意不同C系統(tǒng)對(duì)標(biāo)識(shí)符的有效字符個(gè)數(shù)有不同的規(guī)定。對(duì)于限制標(biāo)識(shí)符8個(gè)有效字符的系統(tǒng)來說,兩個(gè)超過8個(gè)字符的不同標(biāo)識(shí)符,當(dāng)前8個(gè)字符依次相同時(shí),系統(tǒng)就認(rèn)為它們是同一個(gè)標(biāo)識(shí)符2022/12/18《程序設(shè)計(jì)》-2005秋66標(biāo)識(shí)符(續(xù))2022/12/23《程序設(shè)計(jì)》-2005秋67C語言數(shù)據(jù)類型三種數(shù)據(jù)類型基本數(shù)據(jù)類型、指針類型、復(fù)合數(shù)據(jù)類型基本數(shù)據(jù)類型三種整型(short,int,long)實(shí)型(float,double,longdouble)字符型(char)2022/12/18《程序設(shè)計(jì)》-2005秋67C語言數(shù)據(jù)類2022/12/23《程序設(shè)計(jì)》-2005秋68C語言數(shù)據(jù)類型(續(xù))復(fù)合數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉指針類型指針類型直接賦予數(shù)據(jù)對(duì)象在內(nèi)存中的地址的概念2022/12/18《程序設(shè)計(jì)》-2005秋68C語言數(shù)據(jù)類2022/12/23《程序設(shè)計(jì)》-2005秋69常量(Constant)在程序運(yùn)行過程中,其值不能改變或不允許改變的數(shù)據(jù)對(duì)象常量按值的表示形式區(qū)分它的類型整型常量:15浮點(diǎn)型常量:5.0字符型常量:’a’指針常量:NULL字符串常量:”ABC”2022/12/18《程序設(shè)計(jì)》-2005秋69常量(Con2022/12/23《程序設(shè)計(jì)》-2005秋70常量(續(xù))可用宏定義給常量命名其一般形式是

#define標(biāo)識(shí)符字符列如:#definePI3.141592022/12/18《程序設(shè)計(jì)》-2005秋70常量(續(xù))可2022/12/23《程序設(shè)計(jì)》-2005秋71變量(Variable)在程序運(yùn)行過程中,其值可以改變的數(shù)據(jù)對(duì)象變量在內(nèi)存中占據(jù)一定的存貯單元,存放變量的值與變量有關(guān)的概念有:變量名、變量數(shù)據(jù)類型、變量在程序中的有效作用范圍、變量在程序執(zhí)行期間的存在時(shí)間等2022/12/18《程序設(shè)計(jì)》-2005秋71變量(Var2022/12/23《程序設(shè)計(jì)》-2005秋72變量(續(xù))程序通過變量定義引入變量,變量定義的一般形式:

類型變量名表;其中,變量名表由一個(gè)或多個(gè)變量名組成。例如:inti,j,sum;/*定義三個(gè)int型變量*/intindex=100,big_int=100002022/12/18《程序設(shè)計(jì)》-2005秋72變量(續(xù))程2022/12/23《程序設(shè)計(jì)》-2005秋73提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋73提要程序設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋74C程序從開發(fā)到運(yùn)行的六個(gè)階段C程序從開發(fā)到運(yùn)行大致要經(jīng)歷六個(gè)階段編輯(Edit)預(yù)處理(Pre-process)編繹(Compile)連接(Link)加載(Load)執(zhí)行(Execute)2022/12/18《程序設(shè)計(jì)》-2005秋74C程序從開發(fā)2022/12/23《程序設(shè)計(jì)》-2005秋75編輯、預(yù)處理與編譯編輯:程序員用系統(tǒng)環(huán)境提供的編輯器編輯源程序,產(chǎn)生一個(gè)源程序文件.c或.h

預(yù)處理:編譯前,C編繹器先自動(dòng)調(diào)用預(yù)處理程序,對(duì)源程序文件作文字轉(zhuǎn)換,產(chǎn)生一個(gè)新的內(nèi)部程序代碼編譯:若編譯過程中發(fā)現(xiàn)程序有錯(cuò)誤,則輸出錯(cuò)誤的詳細(xì)信息;對(duì)正確的源程序產(chǎn)生機(jī)器語言程序,稱為源程序的目的代碼2022/12/18《程序設(shè)計(jì)》-2005秋75編輯、預(yù)處理2022/12/23《程序設(shè)計(jì)》-2005秋76連接、加載與執(zhí)行連接:連接程序?qū)⒛康拇a和一些庫函數(shù)的目的代碼連接起來,產(chǎn)生計(jì)算機(jī)可直接執(zhí)行的程序映象文件靜態(tài)連接vs.動(dòng)態(tài)連接加載:將要執(zhí)行的程序裝入內(nèi)存執(zhí)行:裝入內(nèi)存的程序在計(jì)算機(jī)的操作系統(tǒng)控制下執(zhí)行2022/12/18《程序設(shè)計(jì)》-2005秋76連接、加載與2022/12/23《程序設(shè)計(jì)》-2005秋77提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋77提要程序設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋78小結(jié)程序是為解決某一問題的某種語言指令的序列程序設(shè)計(jì)是基于某種程序語言設(shè)計(jì)和編制程序的過程結(jié)構(gòu)化程序設(shè)計(jì)方法是常用的、比較有效的程序設(shè)計(jì)方法C語言是一種主流的過程化高級(jí)程序設(shè)計(jì)語言一個(gè)高級(jí)語言程序在運(yùn)行前,要經(jīng)過預(yù)處理、編譯、連接和加載等四個(gè)過程2022/12/18《程序設(shè)計(jì)》-2005秋78小結(jié)程序是為2022/12/23《程序設(shè)計(jì)》-2005秋79作業(yè)設(shè)計(jì)一個(gè)C程序,實(shí)現(xiàn)如下功能C程序?輸入=“2005級(jí)新生”“出國”“讀研”“工作”“失業(yè)”“肆業(yè)”“退學(xué)”2022/12/18《程序設(shè)計(jì)》-2005秋79作業(yè)設(shè)計(jì)一個(gè)2022/12/23《程序設(shè)計(jì)》-2005秋80

謝謝!2022/12/18《程序設(shè)計(jì)》-2005秋802022/12/23《程序設(shè)計(jì)》-2005秋81提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋1提要程序設(shè)計(jì)基2022/12/23《程序設(shè)計(jì)》-2005秋82提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋2提要程序設(shè)計(jì)基2022/12/23《程序設(shè)計(jì)》-2005秋83什么是程序?程序(Program)就是供計(jì)算機(jī)執(zhí)行后,能完成特定功能的指令序列(Instructionssequence)程序=計(jì)算機(jī)指令序列程序包含兩方面的內(nèi)容數(shù)據(jù)對(duì)象(Objects)及數(shù)據(jù)對(duì)象之間關(guān)系數(shù)據(jù)結(jié)構(gòu)(Datastructure)對(duì)這些對(duì)象的處理過程算法(Algorithm)2022/12/18《程序設(shè)計(jì)》-2005秋3什么是程序?程2022/12/23《程序設(shè)計(jì)》-2005秋84程序/數(shù)據(jù)結(jié)構(gòu)/算法程序=數(shù)據(jù)結(jié)構(gòu)+算法Program=DataStructure+Algorithm這個(gè)公式由NiklausWirth首先提出。NiklausWirth是PASCAL之父和結(jié)構(gòu)化程序設(shè)計(jì)的首創(chuàng)者,1984圖靈獎(jiǎng)獲得者。2022/12/18《程序設(shè)計(jì)》-2005秋4程序/數(shù)據(jù)結(jié)構(gòu)2022/12/23《程序設(shè)計(jì)》-2005秋85數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)由某一數(shù)據(jù)對(duì)象及該對(duì)象中所有數(shù)據(jù)成員之間的關(guān)系組成。記為:Data_Structure={D,R}其中,D是數(shù)據(jù)對(duì)象,R是該對(duì)象中所有數(shù)據(jù)成員之間的關(guān)系的有限集合2022/12/18《程序設(shè)計(jì)》-2005秋5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)2022/12/23《程序設(shè)計(jì)》-2005秋86數(shù)據(jù)結(jié)構(gòu)(續(xù))程序的處理對(duì)象是描述客觀事物的數(shù)據(jù)由于客觀事物的多樣性,會(huì)有不同形式的數(shù)據(jù)整數(shù)、實(shí)數(shù)、字符,以及所有計(jì)算機(jī)能夠接收和處理的各種各樣符號(hào)集合在程序中,形式不同的數(shù)據(jù)采用數(shù)據(jù)類型來標(biāo)識(shí)變量的數(shù)據(jù)類型說明變量可能取的值的集合、施于變量的操作的集合2022/12/18《程序設(shè)計(jì)》-2005秋6數(shù)據(jù)結(jié)構(gòu)(續(xù))2022/12/23《程序設(shè)計(jì)》-2005秋87數(shù)據(jù)結(jié)構(gòu)(續(xù))數(shù)據(jù)類型一組形式相同的數(shù)據(jù)集,對(duì)這組數(shù)據(jù)可施行的一組操作集對(duì)數(shù)據(jù)結(jié)構(gòu)的總括數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)對(duì)象及其相互關(guān)系和構(gòu)造方法程序的數(shù)據(jù)結(jié)構(gòu)描述了程序中的數(shù)據(jù)間的組織形式和結(jié)構(gòu)關(guān)系2022/12/18《程序設(shè)計(jì)》-2005秋7數(shù)據(jù)結(jié)構(gòu)(續(xù))2022/12/23《程序設(shè)計(jì)》-2005秋88算法算法即問題的求解方法算法由一系列求解步驟組成。算法的描述由經(jīng)明確說明的一組簡單指令和規(guī)則組成,計(jì)算機(jī)按規(guī)則執(zhí)行其中的指令能在有限的步驟內(nèi)解決一個(gè)問題或者完成一個(gè)函數(shù)的計(jì)算算法要求組成算法的規(guī)則和步驟的意義應(yīng)是唯一確定的,是沒有二義性的2022/12/18《程序設(shè)計(jì)》-2005秋8算法算法即問題2022/12/23《程序設(shè)計(jì)》-2005秋89算法(續(xù))算法中的操作是有序的,必須按算法指定的操作順序執(zhí)行,能在有限步驟后給出問題的結(jié)果求解同一問題可能有多種算法,選擇算法主要考慮正確性可靠性簡單性易理解性執(zhí)行效率空間(內(nèi)存和磁盤)代價(jià)等2022/12/18《程序設(shè)計(jì)》-2005秋9算法(續(xù))算法2022/12/23《程序設(shè)計(jì)》-2005秋90算法(續(xù))描述算法的常用工具有流程圖(又稱框圖)流程圖是算法的圖形描述,流程圖往往比程序更直觀清晰,容易閱讀和理解,它不僅可以作為編寫程序的依據(jù),也是交流算法思想的重要工具在逐步求精的結(jié)構(gòu)化程序設(shè)計(jì)方法中,目前多數(shù)采用結(jié)構(gòu)化的偽代碼(pseudocode)來描述算法2022/12/18《程序設(shè)計(jì)》-2005秋10算法(續(xù))描2022/12/23《程序設(shè)計(jì)》-2005秋91數(shù)據(jù)結(jié)構(gòu)vs.算法明確了問題的算法,才能較好設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)要選擇好算法,又常常依賴于合理的數(shù)據(jù)結(jié)構(gòu)程序是和數(shù)據(jù)結(jié)構(gòu)不可分割的。程序在描述算法同時(shí),也必須完整地描述作為算法的操作對(duì)象的數(shù)據(jù)結(jié)構(gòu)。對(duì)于一些復(fù)雜的問題,常有因數(shù)據(jù)的表示方式和結(jié)構(gòu)的差異,問題的抽象求解算法也會(huì)完全不同2022/12/18《程序設(shè)計(jì)》-2005秋11數(shù)據(jù)結(jié)構(gòu)vs2022/12/23《程序設(shè)計(jì)》-2005秋92程序的性質(zhì)目的性程序有明確的目的,程序運(yùn)行時(shí)能完成賦予它的功能分步性程序?yàn)橥瓿善鋸?fù)雜的功能,由一系列計(jì)算機(jī)可執(zhí)行的步驟組成有序性程序的執(zhí)行步驟是有序的,不可隨意改變程序步驟的執(zhí)行順序有限性程序是有限的指令序列,程序所包含的步驟是有限的操作性有意義的程序總是對(duì)某些對(duì)象進(jìn)行操作,使其改變狀態(tài),完成其功能2022/12/18《程序設(shè)計(jì)》-2005秋12程序的性質(zhì)目2022/12/23《程序設(shè)計(jì)》-2005秋93什么是程序設(shè)計(jì)?程序設(shè)計(jì)(Programdesign):設(shè)計(jì)和編制程序的過程設(shè)計(jì)程序:數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì)編制程序:把設(shè)計(jì)轉(zhuǎn)化為某種程序語言的代碼程序設(shè)計(jì)需要程序設(shè)計(jì)方法–軟件工程(SoftwareEngineering)方法學(xué)結(jié)構(gòu)化設(shè)計(jì)方法、面向?qū)ο蠓椒ǔ绦蛟O(shè)計(jì)語言–程序語言學(xué)Basic,Pascal,C,C++,Java,C#……2022/12/18《程序設(shè)計(jì)》-2005秋13什么是程序設(shè)2022/12/23《程序設(shè)計(jì)》-2005秋94什么是好的程序?高效(Efficient)可靠(Reliable)易讀(Easytoread)可維護(hù)(Maintainable)可重用(Re-usable)可移植(Portable)……2022/12/18《程序設(shè)計(jì)》-2005秋14什么是好的程2022/12/23《程序設(shè)計(jì)》-2005秋95什么是程序設(shè)計(jì)語言?程序設(shè)計(jì)語言是人與計(jì)算機(jī)對(duì)話的工具,是用來書寫計(jì)算機(jī)程序的語言人機(jī)語言(human-machinelanguage)程序設(shè)計(jì)語言分三類機(jī)器語言(Machinelanguage)匯編語言(Assemblylanguage)高級(jí)語言(High-levellanguage)2022/12/18《程序設(shè)計(jì)》-2005秋15什么是程序設(shè)2022/12/23《程序設(shè)計(jì)》-2005秋96程序設(shè)計(jì)語言High-levellanguageMachinelanguageAssemblylanguage2022/12/18《程序設(shè)計(jì)》-2005秋16程序設(shè)計(jì)語言2022/12/23《程序設(shè)計(jì)》-2005秋97機(jī)器語言機(jī)器語言:計(jì)算機(jī)的指令系統(tǒng)計(jì)算機(jī)都只能直接執(zhí)行由其自身機(jī)器語言編寫的程序機(jī)器語言與計(jì)算機(jī)的硬件密切相關(guān)機(jī)器語言中的計(jì)算機(jī)指令通常用一個(gè)二進(jìn)制形式的代碼,由若干位1和0組成一條計(jì)算機(jī)指令指示計(jì)算機(jī)一次完成一個(gè)最基本的操作2022/12/18《程序設(shè)計(jì)》-2005秋17機(jī)器語言機(jī)器2022/12/23《程序設(shè)計(jì)》-2005秋98匯編語言匯編語言:用類英語單詞縮寫的符號(hào)指令代替機(jī)器語言的二進(jìn)制代碼指令用匯編語言編寫的程序在計(jì)算機(jī)上執(zhí)行,先要將用匯編語言編寫的源程序轉(zhuǎn)換成機(jī)器語言程序。稱完成這個(gè)轉(zhuǎn)換功能的程序?yàn)椤皡R編程序“(assembler)2022/12/18《程序設(shè)計(jì)》-2005秋18匯編語言匯編2022/12/23《程序設(shè)計(jì)》-2005秋99高級(jí)程序最接近自然語言的程序設(shè)計(jì)語言主要由語句(statements)構(gòu)成,語句是要計(jì)算機(jī)完成任務(wù)的命令有統(tǒng)一的語法,獨(dú)立于具體機(jī)器,便于人們編碼,閱讀和理解用高級(jí)語言編寫的程序(源程序)在計(jì)算機(jī)上執(zhí)行,先要由編譯器(也稱為編譯程序)將源程序轉(zhuǎn)換成機(jī)器語言程序既能方便地描述客觀對(duì)象,又能借助于編譯器為計(jì)算機(jī)所接受的語言2022/12/18《程序設(shè)計(jì)》-2005秋19高級(jí)程序最接2022/12/23《程序設(shè)計(jì)》-2005秋100機(jī)器語言/匯編語言/高級(jí)語言機(jī)器語言計(jì)算機(jī)匯編程序解釋器編譯器高級(jí)語言匯編語言AssemblerInterpreterCompiler2022/12/18《程序設(shè)計(jì)》-2005秋20機(jī)器語言/匯2022/12/23《程序設(shè)計(jì)》-2005秋101高級(jí)語言分類目前的高級(jí)語言可分三類面向過程的語言(Procedurallanguage)面向問題的語言(Declarativelanguage)描述語言面向?qū)ο蟮恼Z言(Object-orientedlanguage)2022/12/18《程序設(shè)計(jì)》-2005秋21高級(jí)語言分類2022/12/23《程序設(shè)計(jì)》-2005秋102面向過程的語言早期最流行最常用的程序設(shè)計(jì)語言為面向過程型的語言Cobol,Fortran,Basic,C,……可獨(dú)立于計(jì)算機(jī)編寫程序,但編寫程序時(shí),程序不僅要說明做什么(what),更重要的是非常詳細(xì)地告訴計(jì)算機(jī)如何做(how),程序需要詳細(xì)描述解題的過程和細(xì)節(jié)2022/12/18《程序設(shè)計(jì)》-2005秋22面向過程的語2022/12/23《程序設(shè)計(jì)》-2005秋103面向問題的語言不必關(guān)心問題的求解算法和求解的過程,只需指出問題是做什么,數(shù)據(jù)的輸入和輸出形式,就能得到所需結(jié)果數(shù)據(jù)庫查詢和操縱語言:SQL(StructuredQueryLanguage)語言邏輯語言/專家系統(tǒng)語言:Prolog,Lisp等2022/12/18《程序設(shè)計(jì)》-2005秋23面向問題的語2022/12/23《程序設(shè)計(jì)》-2005秋104面向?qū)ο蟮恼Z言目的是克服面向過程語言過分強(qiáng)調(diào)求解過程細(xì)節(jié),程序不易復(fù)用的缺點(diǎn)引入了對(duì)象、消息、類、繼承、封裝、抽象、多態(tài)性等機(jī)制和概念用面向?qū)ο笳Z言進(jìn)行程序設(shè)計(jì)時(shí),以問題中的對(duì)象為基礎(chǔ),將具有類似性質(zhì)的對(duì)象抽象成類,利用繼承機(jī)制,對(duì)差異進(jìn)行程序設(shè)計(jì)是目前的主流編程語言:C++,Java2022/12/18《程序設(shè)計(jì)》-2005秋24面向?qū)ο蟮恼Z2022/12/23《程序設(shè)計(jì)》-2005秋105程序設(shè)計(jì)語言分類與自然語言親密關(guān)系機(jī)器語言、匯編語言、高級(jí)語言描述/求解問題方式面向過程語言:Basic,Pascal,C面向問題語言:SQL,Lisp,Prolog面向?qū)ο笳Z言:C++,Java程序設(shè)計(jì)風(fēng)格結(jié)構(gòu)化語言Pascal,C,C++,Java非結(jié)構(gòu)化語言Cobol,Fortran,Basic2022/12/18《程序設(shè)計(jì)》-2005秋25程序設(shè)計(jì)語言2022/12/23《程序設(shè)計(jì)》-2005秋106提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋26提要程序設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋107結(jié)構(gòu)化程序設(shè)計(jì)方法程序結(jié)構(gòu)自頂向下模塊化設(shè)計(jì)方法模塊算法的逐步求精(stepwiserefinement)設(shè)計(jì)方法用結(jié)構(gòu)化控制結(jié)構(gòu)描述算法和編寫程序2022/12/18《程序設(shè)計(jì)》-2005秋27結(jié)構(gòu)化程序設(shè)2022/12/23《程序設(shè)計(jì)》-2005秋108自頂向下模塊化設(shè)計(jì)方法限制程序復(fù)雜性是程序設(shè)計(jì)核心程序結(jié)構(gòu)自頂向下模塊化設(shè)計(jì)方法就是把大程序按功能劃分成一些較小的部分,每個(gè)完成獨(dú)立功能分解模塊的原則是簡單性、獨(dú)立性和完整性。模塊化設(shè)計(jì)方法開發(fā)程序,使程序具有較高的可靠性和靈活性,同時(shí)便于程序的測試和維護(hù)2022/12/18《程序設(shè)計(jì)》-2005秋28自頂向下模塊2022/12/23《程序設(shè)計(jì)》-2005秋109自頂向下模塊化設(shè)計(jì)方法(續(xù))在用模塊化方法劃分程序模塊時(shí),應(yīng)盡量讓模塊具有如下良好性質(zhì):模塊具有單一入口和單一出口模塊不宜過大,模塊功能單一模塊的執(zhí)行不對(duì)環(huán)境產(chǎn)生副作用讓模塊與環(huán)境的聯(lián)系僅限于輸入和輸出參數(shù),模塊的內(nèi)部結(jié)構(gòu)與調(diào)用它的程序無關(guān)盡量用模塊的名字調(diào)用模塊2022/12/18《程序設(shè)計(jì)》-2005秋29自頂向下模塊2022/12/23《程序設(shè)計(jì)》-2005秋110模塊算法逐步求精設(shè)計(jì)方法程序設(shè)計(jì)的基本方法是抽象、枚舉、歸納抽象包括算法抽象和數(shù)據(jù)抽象算法抽象是指算法的尋求(或開發(fā))采用逐步求精、逐層分解的方法數(shù)據(jù)抽象也指在算法抽象的過程中逐步完善數(shù)據(jù)結(jié)構(gòu)和引入新的數(shù)據(jù)及確定關(guān)于數(shù)據(jù)的操作2022/12/18《程序設(shè)計(jì)》-2005秋30模塊算法逐步2022/12/23《程序設(shè)計(jì)》-2005秋111逐步求精設(shè)計(jì)方法(續(xù))算法設(shè)計(jì)采用逐步求精設(shè)計(jì)方法,先設(shè)計(jì)出一個(gè)抽象算法,這是一個(gè)在抽象數(shù)據(jù)上實(shí)施一系列抽象操作的算法,由粗略的控制結(jié)構(gòu)和抽象的計(jì)算步驟組成。抽象操作只指明“做什么”,對(duì)這些抽象操作的細(xì)化就是想方設(shè)法回答它“如何做”采用逐步求精的方法,由粗到細(xì),將抽象步驟進(jìn)一步分解成若干子任務(wù)。分而治之,對(duì)仍不具體的抽象子任務(wù)再進(jìn)行分解。如此反復(fù)地一步步細(xì)化,算法越來越具體,抽象成分越來越少,直至可以編程為止2022/12/18《程序設(shè)計(jì)》-2005秋31逐步求精設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋112程序的基本結(jié)構(gòu)單元順序結(jié)構(gòu)條件選擇結(jié)構(gòu)IfcThenop1Elseop2循環(huán)結(jié)構(gòu)DoWhile循環(huán)結(jié)構(gòu)While循環(huán)結(jié)構(gòu)For循環(huán)結(jié)構(gòu)任何可計(jì)算問題,可用上述三種結(jié)構(gòu)編程解決2022/12/18《程序設(shè)計(jì)》-2005秋32程序的基本結(jié)2022/12/23《程序設(shè)計(jì)》-2005秋113順序結(jié)構(gòu)把復(fù)雜的計(jì)算工作分解成一系列逐條執(zhí)行的操作序列順序結(jié)構(gòu)就是為把一個(gè)復(fù)雜的計(jì)算用若干簡單計(jì)算的順序執(zhí)行提供控制手段。順序結(jié)構(gòu)執(zhí)行時(shí),從序列的第一個(gè)操作開始,順序執(zhí)行序列中的操作,直至序列的最后一個(gè)操作執(zhí)行后結(jié)束2022/12/18《程序設(shè)計(jì)》-2005秋33順序結(jié)構(gòu)把復(fù)2022/12/23《程序設(shè)計(jì)》-2005秋114順序結(jié)構(gòu)實(shí)例實(shí)例:交換變量x和y的值可分解為順序執(zhí)行的三個(gè)操作步驟:{temp=x;/*將x的值暫存于temp*/x=y;/*將x置成y的值*/

y=temp;/*將y置成temp的值*/}2022/12/18《程序設(shè)計(jì)》-2005秋34順序結(jié)構(gòu)實(shí)例2022/12/23《程序設(shè)計(jì)》-2005秋115條件選擇結(jié)構(gòu)條件選擇結(jié)構(gòu)有一個(gè)判斷條件和兩個(gè)供選擇分支操作組成一般形式:

if(判斷條件)

分支操作1;

else分支操作2;2022/12/18《程序設(shè)計(jì)》-2005秋35條件選擇結(jié)構(gòu)2022/12/23《程序設(shè)計(jì)》-2005秋116條件選擇結(jié)構(gòu)執(zhí)行過程先計(jì)算判斷條件,如判斷條件的值為真,即條件成立,則執(zhí)行分支操作1否則,若判斷條件的值為假,即條件不成立,則執(zhí)行分支操作2注意,無論判斷條件為何值,條件選擇結(jié)構(gòu)只執(zhí)行分支操作1或分支操作2之一條件選擇結(jié)構(gòu)中的分支又可以是任何控制結(jié)構(gòu),當(dāng)分支操作又是條件選擇結(jié)構(gòu)時(shí),就呈現(xiàn)嵌套(nested)的條件選擇結(jié)構(gòu)2022/12/18《程序設(shè)計(jì)》-2005秋36條件選擇結(jié)構(gòu)2022/12/23《程序設(shè)計(jì)》-2005秋117實(shí)例intmax(intx,inty)/*定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型*/{intz;/*max函數(shù)中的聲明部分,定義本函數(shù)中用到的變量z為整型*/

if(x>y)z=x;elsez=y;return(z);}2022/12/18《程序設(shè)計(jì)》-2005秋37實(shí)例int2022/12/23《程序設(shè)計(jì)》-2005秋118循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)為描述循環(huán)操作提供控制手段在C中,循環(huán)結(jié)構(gòu)有以下三種:while循環(huán)結(jié)構(gòu)do-while循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)2022/12/18《程序設(shè)計(jì)》-2005秋38循環(huán)結(jié)構(gòu)循環(huán)2022/12/23《程序設(shè)計(jì)》-2005秋119while循環(huán)結(jié)構(gòu)由一個(gè)循環(huán)條件和一個(gè)循環(huán)操作語句(稱為循環(huán)體)組成一般形式:

while(循環(huán)條件)

循環(huán)體2022/12/18《程序設(shè)計(jì)》-2005秋39while2022/12/23《程序設(shè)計(jì)》-2005秋120while循環(huán)結(jié)構(gòu)執(zhí)行過程每次循環(huán)前,先求循環(huán)條件的值,當(dāng)條件成立時(shí),就執(zhí)行循環(huán)體,并接著再次求循環(huán)條件的值,以確定循環(huán)體是否再次被執(zhí)行當(dāng)循環(huán)條件的值一開始為假,或某次循環(huán)后其值為假,則結(jié)束循環(huán)操作2022/12/18《程序設(shè)計(jì)》-2005秋40while2022/12/23《程序設(shè)計(jì)》-2005秋121實(shí)例計(jì)算5!:voidmain(){inti,t;t=1;i=2;

while(i<=5){t=t*i;i=i+1;}printf("%d",t);}2022/12/18《程序設(shè)計(jì)》-2005秋41實(shí)例計(jì)算5!2022/12/23《程序設(shè)計(jì)》-2005秋122do-while循環(huán)結(jié)構(gòu)由一個(gè)循環(huán)條件和一個(gè)循環(huán)操作語句(稱為循環(huán)體)組成一般形式:

do

循環(huán)體

while(循環(huán)條件);2022/12/18《程序設(shè)計(jì)》-2005秋42do-whi2022/12/23《程序設(shè)計(jì)》-2005秋123do-while循環(huán)結(jié)構(gòu)執(zhí)行過程每次循環(huán)前,先執(zhí)行循環(huán)體,接著再求循環(huán)條件的值,當(dāng)條件成立時(shí),再執(zhí)行循環(huán)體如此反復(fù),直到循環(huán)條件的值為假,結(jié)束循環(huán)操作2022/12/18《程序設(shè)計(jì)》-2005秋43do-whi2022/12/23《程序設(shè)計(jì)》-2005秋124實(shí)例求s=1+2+3+…+100用do-while語句可描述成:

s=0;i=1;do{s+=i;i++;}while(i<=100);2022/12/18《程序設(shè)計(jì)》-2005秋44實(shí)例求s2022/12/23《程序設(shè)計(jì)》-2005秋125for循環(huán)結(jié)構(gòu)由為循環(huán)有關(guān)變量賦初值的表達(dá)式、循環(huán)條件、循環(huán)后對(duì)變量的修正表達(dá)式和循環(huán)執(zhí)行的循環(huán)體組成一般形式:for(賦初值表達(dá)式;循環(huán)條件表達(dá)式;修正表達(dá)式)

循環(huán)體2022/12/18《程序設(shè)計(jì)》-2005秋45for循環(huán)2022/12/23《程序設(shè)計(jì)》-2005秋126for循環(huán)結(jié)構(gòu)執(zhí)行過程循環(huán)前,先執(zhí)行賦初值表達(dá)式,為循環(huán)中的有關(guān)變量賦初值每輪循環(huán)開始,先求循環(huán)條件的值,若條件不成立,則結(jié)束循環(huán)當(dāng)條件成立時(shí),執(zhí)行循環(huán)體;然后求變量修正表達(dá)式,更新有關(guān)變量的值;接著再次求循環(huán)條件如此反復(fù),直到條件為假,結(jié)束循環(huán)2022/12/18《程序設(shè)計(jì)》-2005秋46for循環(huán)2022/12/23《程序設(shè)計(jì)》-2005秋127實(shí)例求s=1+2+3+…+100用for語句可以寫成:for(s=0,i=1;i<=100;i++)s+=i;2022/12/18《程序設(shè)計(jì)》-2005秋47實(shí)例求s2022/12/23《程序設(shè)計(jì)》-2005秋128提要程序設(shè)計(jì)基本概念結(jié)構(gòu)化程序設(shè)計(jì)C語言基礎(chǔ)知識(shí)高級(jí)語言程序開發(fā)環(huán)境基本知識(shí)小結(jié)2022/12/18《程序設(shè)計(jì)》-2005秋48提要程序設(shè)計(jì)2022/12/23《程序設(shè)計(jì)》-2005秋129DennisM.Ritchie(丹尼斯里奇)2022/12/18《程序設(shè)計(jì)》-2005秋49Dennis2022/12/23《程序設(shè)計(jì)》-2005秋130DennisM.Ritchie(續(xù))HarvardUniversity獲學(xué)士和博士學(xué)位1967年加入Bell實(shí)驗(yàn)室工作至今1972年發(fā)明C語言1978年,BrianW.Kernighan和DennisM.Ritchie合著《TheCProgrammingLanguage》Turing獎(jiǎng)(1983)和IEEE先驅(qū)獎(jiǎng)(1992)獲得者、美國工程院院士2022/12/18《程序設(shè)計(jì)》-2005秋50Dennis2022/12/23《程序設(shè)計(jì)》-2005秋131C語言發(fā)展史1960年出現(xiàn)的ALGOL60是一種面向問題的高級(jí)語言,它離硬件比較遠(yuǎn),不宜用來編寫系統(tǒng)程序1963年英國的劍橋大學(xué)推出了CPL(combinedprogramminglanguage)語言。CPL語言在ALGOL60的基礎(chǔ)上接近硬件一些,但規(guī)模比較大,難以實(shí)現(xiàn)1967年英國劍橋大學(xué)的MatinRichards對(duì)CPL語言做了簡化,推出了BCPL(basiccombinedprogramminglanguage)語言2022/12/18《程序設(shè)計(jì)》-2005秋51C語言發(fā)展史2022/12/23《程序設(shè)計(jì)》-2005秋132C語言發(fā)展史(續(xù))1970年美國貝爾實(shí)驗(yàn)室的KenThompson以BCPL語言為基礎(chǔ),設(shè)計(jì)出了簡單且很接近硬件的B語言(取BCPL的第一個(gè)字母),并用B語言寫了第一個(gè)UNIX操作系統(tǒng)。但B語言過于簡單,功能有限1972年至1973年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出了C語言(取BCPL的第二個(gè)字母)。C語言既保持了BCPL和B語言的優(yōu)點(diǎn)(精練,接近硬件),又克服了它們的缺點(diǎn)(過于簡單,數(shù)據(jù)無類型等)。1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫,即UNIX第5版2022/12/18《程序設(shè)計(jì)》-2005秋52C語言發(fā)展史2022/12/23《程序設(shè)計(jì)》-2005秋133C語言發(fā)展史(續(xù))1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語言問世以來各種版本對(duì)C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn),稱為ANSIC1987年,ANSI又公布了新標(biāo)準(zhǔn)—87ANSIC1990年,國際標(biāo)準(zhǔn)化組織ISO(InternationalStandardOrganization)接受87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)2022/12/18《程序設(shè)計(jì)》-2005秋53C語言發(fā)展史2022/12/23《程序設(shè)計(jì)》-2005秋134一個(gè)C程序?qū)嵗粋€(gè)只輸出一行信息的C程序#include<stdio.h>voidmain()/*主函數(shù)*/{

printf("Thisbookis<ProgrammingwithCandc++languages>.\n");}2022/12/18《程序設(shè)計(jì)》-2005秋54一個(gè)C程序?qū)?022/12/23《程序設(shè)計(jì)》-2005秋135C程序特點(diǎn)一個(gè)C程序有一個(gè)名為main的主函數(shù)主函數(shù)前的關(guān)鍵字void表示該函數(shù)不返回結(jié)果在函數(shù)名之后要有一對(duì)圓括號(hào),里面定義參數(shù)函數(shù)體用花括號(hào)“{}”括住?;ɡㄌ?hào)可以用來括起任何一組C代碼,從而構(gòu)成復(fù)合語句或分程序簡單C語句之后有一個(gè)分號(hào)“;”程序中的“/*…*/”表示程序的注釋部分。注釋便于人閱讀程序,對(duì)程序編譯和運(yùn)行都沒有作用#include<stdio.h>是編譯預(yù)處理命令行,指明有關(guān)輸入和輸出標(biāo)準(zhǔn)函數(shù)也將是程序的一部分2022/12/18《程序設(shè)計(jì)》-2005秋55C程序特點(diǎn)一2022/12/23《程序設(shè)計(jì)》-2005秋136【例】讀入兩個(gè)整數(shù),輸出它們的和/*1*/#include<stdio.h>/*2*/voidmain()/*3*/{/*變量定義部分*//*4*/

intx,y,sum;/*定義x,y,sum*//*5*/

/*以下為語句序列*//*6*/

printf("Inputxandy\n");/*提示輸入數(shù)據(jù)*//*7*/

scanf("%d%d",&x,&y);/*輸入x和y的值*//*8*/

sum=x+y;/*完成x+y的計(jì)算,求sum=x+y*//*9*/printf("x+y=%d\n",sum);/*輸出結(jié)果*//*10*/}2022/12/18《程序設(shè)計(jì)》-2005秋56【例】讀入兩2022/12/23《程序設(shè)計(jì)》-2005秋137【例】利用公式:C=(5/9)(F-32)輸出F氏溫度與C氏溫度對(duì)照表,設(shè)已知F氏溫度取0、20、…、200。#include<stdio.h>voidmain(){floatf,c;/*變量定義*/

intlower,upper,step;lower=0;upper=200;step=20

溫馨提示

  • 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)論