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

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論