計(jì)算概論AB01感性認(rèn)識(shí)C程序.ppt_第1頁(yè)
計(jì)算概論AB01感性認(rèn)識(shí)C程序.ppt_第2頁(yè)
計(jì)算概論AB01感性認(rèn)識(shí)C程序.ppt_第3頁(yè)
計(jì)算概論AB01感性認(rèn)識(shí)C程序.ppt_第4頁(yè)
計(jì)算概論AB01感性認(rèn)識(shí)C程序.ppt_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算概論A課程 程序設(shè)計(jì)部分 感性認(rèn)識(shí)C+程序,崔 斌,什么是程序?,計(jì)算機(jī)也是機(jī)器! 必須“設(shè)置”好才能運(yùn)行; ENIAC采用“手工插線”的方式“編程”; “編程序” = 給計(jì)算機(jī)設(shè)置好運(yùn)行的步驟; 程序 人們用來(lái)告訴計(jì)算機(jī)應(yīng)該做什么的東西; 怎么告訴它呢?(程序到底是什么樣子?) 告訴計(jì)算機(jī)一些什么東西,它才能運(yùn)行? 以什么形式告訴它,它才能夠明白?,問(wèn)題一,告訴計(jì)算機(jī)一些什么東西,它才能運(yùn)行? 下面請(qǐng)把你自己的大腦當(dāng)作一臺(tái)計(jì)算機(jī):,給你一個(gè)數(shù)列,求最大數(shù): 78, 56, 69, 31, 36, 67, 31, 47, 69, 34, 45, 74, 61, 82, 43, 41, 76, 79, 81, 66, 54, 50, 76, 51, 53, 28, 74, 39, 45, 61, 52, 41, 43, 75, 78, 84, 72, 51, 43, 64, 75, 81, 69, 55, 74,你怎么做的?,哪個(gè)數(shù)字最大? 把上面的數(shù)字輸入大腦里; 在大腦里開(kāi)辟了一個(gè)存儲(chǔ)空間存放輸入的數(shù)字; 把某一個(gè)數(shù)字取出來(lái),當(dāng)作一個(gè)臨時(shí)的“特別數(shù)字”記住,并假設(shè)這個(gè)數(shù)字最大; 拿這個(gè)臨時(shí)的“特別數(shù)字” 與其他數(shù)字相比較; 如果有其他數(shù)字比臨時(shí)的“特別數(shù)字”更大,就把“特別的數(shù)字”換成這個(gè)更大的數(shù)字; 重復(fù)上述過(guò)程直到把所有的數(shù)字都比較完畢; 那么大腦中這個(gè)“特別數(shù)字”就記錄了最大的數(shù)字;,把自己的大腦當(dāng)作計(jì)算機(jī),你做了些什么? 在大腦中使用了一片存儲(chǔ)空間存放輸入的數(shù)字; 使用了另一個(gè)(片)存儲(chǔ)空間存放“特別數(shù)字”; “反復(fù)”選定(按照某種規(guī)律)“存儲(chǔ)空間中的數(shù)字”(與“特別數(shù)字”比較); (每次比較時(shí))判斷“選定的數(shù)字”是否大于“特別數(shù)字”; (如果大于)重新“刷新”“特別數(shù)字”; (如果“特別數(shù)字”與其他數(shù)字都進(jìn)行了比較)說(shuō)出“特別數(shù)字”;,把別人的大腦當(dāng)作計(jì)算機(jī),告訴別人些什么? 在你的大腦里開(kāi)辟一片存儲(chǔ)空間存放輸入的數(shù)字; 開(kāi)辟另一個(gè)存儲(chǔ)空間存放“特別數(shù)字”; 從存儲(chǔ)空間中的第一個(gè)數(shù)字開(kāi)始,直到最后一個(gè)數(shù),重復(fù)以下操作: 比較“存儲(chǔ)空間中的數(shù)字”與“特別數(shù)字” ; 如果“存儲(chǔ)空間中的數(shù)字”大于“特別數(shù)字”; 那么,將 “特別數(shù)字”換成 “存儲(chǔ)空間中的數(shù)字” ; 說(shuō)出“特別數(shù)字”;,你能看懂多少?,#include using namespace std; int main( ) int number45 = 78, 56, 69, 31, 36, 67, 31, 47, 69, 34, 45, 74, 61, 82, 43, 41, 76, 79, 81, 66, 54, 50, 76, 51, 53, 28, 74, 39, 45, 61, 52, 41, 43, 75, 78, 84, 72, 51, 43, 64, 75, 81, 69, 55, 74; int max = 0; int i = 0; for(i = 0; i max) max = numberi; cout“The Maximal Number is:“max; return 0; ,問(wèn)題來(lái)了!,是不是“無(wú)論我們?cè)诔绦蚶飳?xiě)什么,計(jì)算機(jī)都能明白?” 計(jì)算機(jī)語(yǔ)言提供了一些具有特定含義的“關(guān)鍵字”、“運(yùn)算符”等;計(jì)算機(jī)“只能明白”這些元素的特定含義。(哪些關(guān)鍵字?含義是什么?) 是不是“無(wú)論什么樣的數(shù)字、符號(hào)都能夠在計(jì)算機(jī)中進(jìn)行存儲(chǔ)”? 計(jì)算機(jī)能夠處理的數(shù)據(jù)的種類(lèi)是有限制的。(哪些類(lèi)型?類(lèi)型的限制是什么?) 用有限的幾個(gè)關(guān)鍵字,能表達(dá)“各種各樣、紛繁復(fù)雜”的處理邏輯嗎? 程序的控制結(jié)構(gòu)有幾種基本的邏輯結(jié)構(gòu)。(哪幾種?為什么只有這幾種?怎么使用?),計(jì)算機(jī)認(rèn)識(shí)哪些詞?,計(jì)算機(jī)能夠明白的“單詞” 這些關(guān)鍵詞在程序中有特定含義,計(jì)算機(jī)能夠處理哪種類(lèi)型的數(shù)據(jù)?,如何表達(dá)紛繁復(fù)雜的計(jì)算邏輯?,分支語(yǔ)句,循環(huán)語(yǔ)句,順序語(yǔ)句,判斷語(yǔ)句,關(guān)于變量的定義和使用,變量的定義 變量類(lèi)型 變量名稱(chēng); int i; float result;,#include void main() int i; couti; cout“您輸入的整數(shù)是:“iendl; ,程序如何輸入/輸出?,如何從程序中輸出信息? cout x; cin是輸入流對(duì)象(支持輸出的東西) “”(提取操作符),簡(jiǎn)單程序的組成,/* /* example.cpp * /* #include using namespace std; int main( ) int number45 = 78, 56, 69, 31, 36, 67, 31, 47, 69, 34, 45, 74, 61, 82, 43, 41, 76, 79, 81, 66, 54, 50, 76, 51, 53, 28, 74, 39, 45, 61, 52, 41, 43, 75, 78, 84, 72, 51, 43, 64, 75, 81, 69, 55, 74; int max = 0; int i = 0; for(i = 0; i max) max = numberi; cout“The Maximal Number is:“max; return 0; /函數(shù)結(jié)束返回 ,注釋,預(yù)編譯:文件包含命令,聲明名字空間,函數(shù)體,變量定義,循環(huán)控制語(yǔ)句,賦值語(yǔ)句,運(yùn)算表達(dá)式,輸入輸出語(yǔ)句,函數(shù)名,很簡(jiǎn)單的程序(1),/* /*exam1.cpp * /* #include using namespace std; int main() cout “I am a student.“ endl; return 0; ,很簡(jiǎn)單的程序(2),#include using namespace std; int main() int a,b,result; cout a b; result = 3*a2*b+1; cout “result is” result endl; return 0; ,很簡(jiǎn)單的程序(3),#include using namespace std; int main() int x, y; cinxy; if(xy) cout“Max number is: “xendl; else cout“Max number is: “yendl; return 0; ,最簡(jiǎn)單的程序,#include using namespace std; int main() return 0; ,#include void main() ,#include void main() int score; char grade; coutscore; if(score100) cout=90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; cout“輸入的成績(jī)是“grade“級(jí)!“endl; ,關(guān)于C+程序的幾點(diǎn)說(shuō)明,關(guān)于C+程序本身 每個(gè)C+程序都由很多個(gè)“函數(shù)”組成 每個(gè)程序都以main( )函數(shù)開(kāi)始(程序入口) 每個(gè)函數(shù)的形式都有“輸入”和“輸出” 如 int main( ); 如 double pow(double x, double y) 語(yǔ)句分號(hào)結(jié)尾,一行可以寫(xiě)多個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以寫(xiě)多行;格式變化不會(huì)影響程序運(yùn)行; 程序中的注釋可以放在/*.*/之間,或 / 之后;,#include using namespace std; void swap(int x, int y); /這是函數(shù)的聲明; int main( ) int a=30,b=40; cout“a=“a“,b=“bendl; swap(a,b); /這是函數(shù)的調(diào)用; cout“a=“a“,b=“bendl; return 0; void swap(int x,int y) /這是一個(gè)函數(shù)的定義; int z=x; x=y; y=z; ,關(guān)于C+程序的幾點(diǎn)說(shuō)明,關(guān)于C+程序的運(yùn)行環(huán)境 C+程序均保存在 xxx.cpp 的文件之中; 不同的文件之間可以互相“引用”; 通過(guò)“include”實(shí)現(xiàn) xxx.cpp 文件不能直接執(zhí)行,必須用一個(gè)軟件進(jìn)行“編譯”,然后運(yùn)行 Visual C+ 6.0 Visual Studio .NET Eclipse + CDT,C+程序的加工和執(zhí)行,源程序,不能直接執(zhí)行,必須先把它轉(zhuǎn)換為可執(zhí)行程序。 加工通常分兩步: 編譯 編譯程序處理源程序,生成機(jī)器語(yǔ)言目標(biāo)文件。目標(biāo)文件不能執(zhí)行,缺少必要的C+程序運(yùn)行系統(tǒng)和庫(kù)功能。 連接 把目標(biāo)模塊與運(yùn)行系統(tǒng)、庫(kù)模塊組合起來(lái),構(gòu)成完整的可執(zhí)行程序。,關(guān)于C+程序的書(shū)寫(xiě),注意事項(xiàng): 每行程序的書(shū)寫(xiě)必須按照邏輯進(jìn)行縮進(jìn); 編寫(xiě)如下程序行時(shí),應(yīng)該提供注釋?zhuān)?變量的定義;/說(shuō)明變量代表的意義或作用; 函數(shù)的定義;/說(shuō)明該函數(shù)的主要作用; 復(fù)雜邏輯出現(xiàn)時(shí);/解釋一段語(yǔ)句的作用; 變量的命名應(yīng)該盡可能體現(xiàn)變量的含義;,關(guān)于高級(jí)程序設(shè)計(jì)語(yǔ)言C+,程序釋義,程序 計(jì)算任務(wù)的處理對(duì)象和處理規(guī)則的描述。 計(jì)算任務(wù):任何以計(jì)算機(jī)為處理工具的任務(wù)都是計(jì)算任務(wù)。 處理對(duì)象是數(shù)據(jù)(如數(shù)字、文字、圖形、圖像、聲音等,它們只是表示,而無(wú)含義)或信息(數(shù)據(jù)及有關(guān)的含義)。 處理規(guī)則一般指處理動(dòng)作和步驟。 計(jì)算機(jī)科學(xué)技術(shù)百科全書(shū),程序設(shè)計(jì)語(yǔ)言的產(chǎn)生,通過(guò)何種語(yǔ)言與機(jī)器進(jìn)行溝通 機(jī)器語(yǔ)言 匯編語(yǔ)言 高級(jí)語(yǔ)言,程序設(shè)計(jì)語(yǔ)言的分類(lèi),低級(jí)語(yǔ)言 之一 機(jī)器語(yǔ)言 機(jī)器語(yǔ)言是機(jī)器指令形成的語(yǔ)言; 形式為二進(jìn)制編碼,機(jī)器可直接執(zhí)行; 00000001000000001000 數(shù)據(jù)裝入寄存器0 00000001000100001010 數(shù)據(jù)裝入寄存器1 00000101000000000001 寄存器0與1的數(shù)據(jù)乘 00000001000100001100 數(shù)據(jù)裝入寄存器1 00000100000000000001 寄存器0與1的數(shù)據(jù)加 00000010000000001110 保存寄存器0里的數(shù)據(jù) 難寫(xiě)難讀,人使用不便,程序開(kāi)發(fā)效率極低,程序設(shè)計(jì)語(yǔ)言的分類(lèi),低級(jí)語(yǔ)言 之二 匯編語(yǔ)言 匯編語(yǔ)言采用助記符號(hào)形式,有利于人閱讀和使用。匯編指令與機(jī)器指令對(duì)應(yīng)。 load 0 a 數(shù)據(jù)裝入寄存器0 load 1 b 數(shù)據(jù)裝入寄存器1 mult 0 1 寄存器0與1的數(shù)據(jù)乘(結(jié)果存在寄存器0) load 1 c 數(shù)據(jù)裝入寄存器1 add 0 1 寄存器0與1的數(shù)據(jù)加 save 0 d 保存寄存器0里的數(shù)據(jù) 比機(jī)器語(yǔ)言好多了,但還不夠好用!,程序設(shè)計(jì)語(yǔ)言的分類(lèi),匯編語(yǔ)言的特點(diǎn): 每條指令的意義容易理解。 程序粒度太小,細(xì)節(jié)太多。 程序無(wú)結(jié)構(gòu),缺乏組織手段。 寫(xiě)大程序仍然很困難。 最早時(shí)通過(guò)手工翻譯為機(jī)器指令。 后來(lái)人們開(kāi)發(fā)出“匯編系統(tǒng)”,讓計(jì)算機(jī)去完成程序翻譯工作 計(jì)算機(jī)無(wú)法直接執(zhí)行匯編語(yǔ)言程序,執(zhí)行前需要翻譯為機(jī)器指令程序。,程序設(shè)計(jì)語(yǔ)言的分類(lèi),高級(jí)語(yǔ)言 用變量等概念取代低級(jí)的存儲(chǔ)概念,人擺脫了繁瑣的存儲(chǔ)安排工作; 用類(lèi)似數(shù)學(xué)的表達(dá)式形式描述基本計(jì)算; 具有類(lèi)似文字的表現(xiàn)形式; 提供高級(jí)操作流程控制手段和程序組織手段。,00000001000000001000 load 0 a 00000001000100001010 load 1 b 00000101000000000001 mult 0 1 00000001000100001100 load 1 c 00000100000000000001 add 0 1 00000010000000001110 save 0 d,C語(yǔ)言寫(xiě)同樣的程序: d = a * b + c;,我們學(xué)的是什么高級(jí)語(yǔ)言?,C+ 語(yǔ)言 (面向?qū)ο蟛糠郑?C 語(yǔ)言部分,高級(jí)語(yǔ)言的發(fā)展歷程,1954 -1956年 IBM 的 John Backus 和他的 研究小組研發(fā)了 FORTRAN ( FORmula TRANslation),C程序設(shè)計(jì)語(yǔ)言,簡(jiǎn)單歷史 Algol 60:1960年1月,圖靈獎(jiǎng)獲得者Alan J.Perlis在巴黎舉行的由全世界一流軟件專(zhuān)家參加的討論會(huì)上,發(fā)表了“算法語(yǔ)言Algol 60報(bào)告”,確定了程序設(shè)計(jì)語(yǔ)言Algol 60。(A 語(yǔ)言) 1963年,劍橋大學(xué)在ALGOL 60的基礎(chǔ)上推出了CPL(Combined Programming Language)語(yǔ)言,但規(guī)模比較大,難以實(shí)現(xiàn)。1967年,劍橋大學(xué)的Matin Richards對(duì)CPL語(yǔ)言作了簡(jiǎn)化,推出了BCPL(Basic Combined Programming Language)語(yǔ)言。1970年貝爾實(shí)驗(yàn)室的Ken Thompson進(jìn)一步簡(jiǎn)化,設(shè)計(jì)出了B語(yǔ)言,并用B語(yǔ)言寫(xiě)第一個(gè)UNIX操作系統(tǒng),在PDP-7上實(shí)現(xiàn)。 C語(yǔ)言是在1972-1973年間由UNIX的研制者Dennis Ritchie和Ken Thompson在B語(yǔ)言的基礎(chǔ)上發(fā)展和完善起來(lái)的。,C 語(yǔ)言的版本,K&R C 在1978年,Kernighan和Ritchie的The C Programming Language第一版出版。在以后的幾年里,The C Programming Language一直被廣泛作為C語(yǔ)言事實(shí)上的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論