




已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
計算概論A課程 程序設計部分 感性認識C+程序,崔 斌,什么是程序?,計算機也是機器! 必須“設置”好才能運行; ENIAC采用“手工插線”的方式“編程”; “編程序” = 給計算機設置好運行的步驟; 程序 人們用來告訴計算機應該做什么的東西; 怎么告訴它呢?(程序到底是什么樣子?) 告訴計算機一些什么東西,它才能運行? 以什么形式告訴它,它才能夠明白?,問題一,告訴計算機一些什么東西,它才能運行? 下面請把你自己的大腦當作一臺計算機:,給你一個數(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ù)字取出來,當作一個臨時的“特別數(shù)字”記住,并假設這個數(shù)字最大; 拿這個臨時的“特別數(shù)字” 與其他數(shù)字相比較; 如果有其他數(shù)字比臨時的“特別數(shù)字”更大,就把“特別的數(shù)字”換成這個更大的數(shù)字; 重復上述過程直到把所有的數(shù)字都比較完畢; 那么大腦中這個“特別數(shù)字”就記錄了最大的數(shù)字;,把自己的大腦當作計算機,你做了些什么? 在大腦中使用了一片存儲空間存放輸入的數(shù)字; 使用了另一個(片)存儲空間存放“特別數(shù)字”; “反復”選定(按照某種規(guī)律)“存儲空間中的數(shù)字”(與“特別數(shù)字”比較); (每次比較時)判斷“選定的數(shù)字”是否大于“特別數(shù)字”; (如果大于)重新“刷新”“特別數(shù)字”; (如果“特別數(shù)字”與其他數(shù)字都進行了比較)說出“特別數(shù)字”;,把別人的大腦當作計算機,告訴別人些什么? 在你的大腦里開辟一片存儲空間存放輸入的數(shù)字; 開辟另一個存儲空間存放“特別數(shù)字”; 從存儲空間中的第一個數(shù)字開始,直到最后一個數(shù),重復以下操作: 比較“存儲空間中的數(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; ,問題來了!,是不是“無論我們在程序里寫什么,計算機都能明白?” 計算機語言提供了一些具有特定含義的“關鍵字”、“運算符”等;計算機“只能明白”這些元素的特定含義。(哪些關鍵字?含義是什么?) 是不是“無論什么樣的數(shù)字、符號都能夠在計算機中進行存儲”? 計算機能夠處理的數(shù)據(jù)的種類是有限制的。(哪些類型?類型的限制是什么?) 用有限的幾個關鍵字,能表達“各種各樣、紛繁復雜”的處理邏輯嗎? 程序的控制結構有幾種基本的邏輯結構。(哪幾種?為什么只有這幾種?怎么使用?),計算機認識哪些詞?,計算機能夠明白的“單詞” 這些關鍵詞在程序中有特定含義,計算機能夠處理哪種類型的數(shù)據(jù)?,如何表達紛繁復雜的計算邏輯?,分支語句,循環(huá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ù)結束返回 ,注釋,預編譯:文件包含命令,聲明名字空間,函數(shù)體,變量定義,循環(huán)控制語句,賦值語句,運算表達式,輸入輸出語句,函數(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; ,關于C+程序的幾點說明,關于C+程序本身 每個C+程序都由很多個“函數(shù)”組成 每個程序都以main( )函數(shù)開始(程序入口) 每個函數(shù)的形式都有“輸入”和“輸出” 如 int main( ); 如 double pow(double x, double y) 語句分號結尾,一行可以寫多個語句,一個語句可以寫多行;格式變化不會影響程序運行; 程序中的注釋可以放在/*.*/之間,或 / 之后;,#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; ,關于C+程序的幾點說明,關于C+程序的運行環(huán)境 C+程序均保存在 xxx.cpp 的文件之中; 不同的文件之間可以互相“引用”; 通過“include”實現(xiàn) xxx.cpp 文件不能直接執(zhí)行,必須用一個軟件進行“編譯”,然后運行 Visual C+ 6.0 Visual Studio .NET Eclipse + CDT,C+程序的加工和執(zhí)行,源程序,不能直接執(zhí)行,必須先把它轉(zhuǎn)換為可執(zhí)行程序。 加工通常分兩步: 編譯 編譯程序處理源程序,生成機器語言目標文件。目標文件不能執(zhí)行,缺少必要的C+程序運行系統(tǒng)和庫功能。 連接 把目標模塊與運行系統(tǒng)、庫模塊組合起來,構成完整的可執(zhí)行程序。,關于C+程序的書寫,注意事項: 每行程序的書寫必須按照邏輯進行縮進; 編寫如下程序行時,應該提供注釋: 變量的定義;/說明變量代表的意義或作用; 函數(shù)的定義;/說明該函數(shù)的主要作用; 復雜邏輯出現(xiàn)時;/解釋一段語句的作用; 變量的命名應該盡可能體現(xiàn)變量的含義;,關于高級程序設計語言C+,程序釋義,程序 計算任務的處理對象和處理規(guī)則的描述。 計算任務:任何以計算機為處理工具的任務都是計算任務。 處理對象是數(shù)據(jù)(如數(shù)字、文字、圖形、圖像、聲音等,它們只是表示,而無含義)或信息(數(shù)據(jù)及有關的含義)。 處理規(guī)則一般指處理動作和步驟。 計算機科學技術百科全書,程序設計語言的產(chǎn)生,通過何種語言與機器進行溝通 機器語言 匯編語言 高級語言,程序設計語言的分類,低級語言 之一 機器語言 機器語言是機器指令形成的語言; 形式為二進制編碼,機器可直接執(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ā)效率極低,程序設計語言的分類,低級語言 之二 匯編語言 匯編語言采用助記符號形式,有利于人閱讀和使用。匯編指令與機器指令對應。 load 0 a 數(shù)據(jù)裝入寄存器0 load 1 b 數(shù)據(jù)裝入寄存器1 mult 0 1 寄存器0與1的數(shù)據(jù)乘(結果存在寄存器0) load 1 c 數(shù)據(jù)裝入寄存器1 add 0 1 寄存器0與1的數(shù)據(jù)加 save 0 d 保存寄存器0里的數(shù)據(jù) 比機器語言好多了,但還不夠好用!,程序設計語言的分類,匯編語言的特點: 每條指令的意義容易理解。 程序粒度太小,細節(jié)太多。 程序無結構,缺乏組織手段。 寫大程序仍然很困難。 最早時通過手工翻譯為機器指令。 后來人們開發(fā)出“匯編系統(tǒng)”,讓計算機去完成程序翻譯工作 計算機無法直接執(zhí)行匯編語言程序,執(zhí)行前需要翻譯為機器指令程序。,程序設計語言的分類,高級語言 用變量等概念取代低級的存儲概念,人擺脫了繁瑣的存儲安排工作; 用類似數(shù)學的表達式形式描述基本計算; 具有類似文字的表現(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;,我們學的是什么高級語言?,C+ 語言 (面向?qū)ο蟛糠郑?C 語言部分,高級語言的發(fā)展歷程,1954 -1956年 IBM 的 John Backus 和他的 研究小組研發(fā)了 FORTRAN ( FORmula TRANslation),C程序設計語言,簡單歷史 Algol 60:1960年1月,圖靈獎獲得者Alan J.Perlis在巴黎舉行的由全世界一流軟件專家參加的討論會上,發(fā)表了“算法語言Algol 60報告”,確定了程序設計語言Algol 60。(A 語言) 1963年,劍橋大學在ALGOL 60的基礎上推出了CPL(Combined Programming Language)語言,但規(guī)模比較大,難以實現(xiàn)。1967年,劍橋大學的Matin Richards對CPL語言作了簡化,推出了BCPL(Basic Combined Programming Language)語言。1970年貝爾實驗室的Ken Thompson進一步簡化,設計出了B語言,并用B語言寫第一個UNIX操作系統(tǒng),在PDP-7上實現(xiàn)。 C語言是在1972-1973年間由UNIX的研制者Dennis Ritchie和Ken Thompson在B語言的基礎上發(fā)展和完善起來的。,C 語言的版本,K&R C 在1978年,Kernighan和Ritchie的The C Programming Language第一版出版。在以后的幾年里,The C Programming Language一直被廣泛作為C語言事實上的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北省初中畢業(yè)生學業(yè)水平考試歷史綜合試卷(四)(學生版)
- 太原科技大學《播音與主持藝術》2023-2024學年第二學期期末試卷
- 浙江經(jīng)濟職業(yè)技術學院《經(jīng)典影視作品鑒賞》2023-2024學年第一學期期末試卷
- 江蘇省南通市如東縣2025屆五年級數(shù)學第二學期期末質(zhì)量檢測模擬試題含答案
- 中國民航大學《美術學科名師教育藝術專題》2023-2024學年第二學期期末試卷
- 遼寧省盤錦興隆臺區(qū)七校聯(lián)考2025屆初三生物試題下學期周練試題含解析
- 湖北工程職業(yè)學院《高等數(shù)學c》2023-2024學年第一學期期末試卷
- 葫蘆島市老官卜中學2024-2025學年初三第一次聯(lián)考試卷(生物試題文)試題含解析
- 神木縣2024-2025學年數(shù)學四年級第二學期期末達標檢測試題含解析
- 江蘇省鎮(zhèn)江市新區(qū)2024-2025學年初三下第一次(4月)月考語文試題含解析
- 電纜敷設培訓課件
- 植被恢復安全施工方案
- 個稅贍養(yǎng)老人專項扣除協(xié)定書
- 集裝箱采購投標方案(技術方案)
- 下白雨合唱簡譜
- 專家工作站日常管理制度
- 脂肪肝患者的自我管理宣教
- 籃球賽計分表模板
- GA/T 2034-2023法庭科學疑似毒品中咖啡因檢驗氣相色譜和氣相色譜-質(zhì)譜法
- 古典詩歌表達技巧之“列錦”(公開課)課件
- 網(wǎng)絡安全防護講座課件
評論
0/150
提交評論