程序設(shè)計(jì)語(yǔ)言的發(fā)展_第1頁(yè)
程序設(shè)計(jì)語(yǔ)言的發(fā)展_第2頁(yè)
程序設(shè)計(jì)語(yǔ)言的發(fā)展_第3頁(yè)
程序設(shè)計(jì)語(yǔ)言的發(fā)展_第4頁(yè)
程序設(shè)計(jì)語(yǔ)言的發(fā)展_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、n程序設(shè)計(jì)語(yǔ)言的發(fā)展2程序設(shè)計(jì)語(yǔ)言維基百科n程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言(Program Language) :是一組用來定義:是一組用來定義計(jì)算機(jī)程序計(jì)算機(jī)程序的的語(yǔ)法規(guī)則。它是一種被語(yǔ)法規(guī)則。它是一種被標(biāo)準(zhǔn)化標(biāo)準(zhǔn)化的交流技巧,用來向發(fā)出指令的交流技巧,用來向發(fā)出指令。 n(Program):指一組指示每一步動(dòng)作的指令,通常用某種:指一組指示每一步動(dòng)作的指令,通常用某種程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言編編寫,運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。寫,運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。 n編程編程(Programming):是編寫解決特定問題的過程,是:是編寫解決特定問題的過程,是軟件軟件構(gòu)造活構(gòu)造活動(dòng)中的重要組成部分。程序

2、設(shè)計(jì)往往以某種動(dòng)中的重要組成部分。程序設(shè)計(jì)往往以某種程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言為工具,給出為工具,給出這種語(yǔ)言下的程序。這種語(yǔ)言下的程序。n程序設(shè)計(jì)過程:分析、設(shè)計(jì)、編碼、測(cè)試、排錯(cuò)等階段。程序設(shè)計(jì)過程:分析、設(shè)計(jì)、編碼、測(cè)試、排錯(cuò)等階段。3程序設(shè)計(jì)語(yǔ)言的發(fā)展n機(jī)器語(yǔ)言n匯編語(yǔ)言n高級(jí)語(yǔ)言nCPU不能直接處理高級(jí)語(yǔ)言編寫的程序,它必須被翻譯為機(jī)器語(yǔ)言。比較匯編語(yǔ)言和C語(yǔ)言ADD 100, 200, 840z=x+y;翻譯程序n高級(jí)語(yǔ)言不能被計(jì)算機(jī)直接執(zhí)行,必須先由一種翻譯程高級(jí)語(yǔ)言不能被計(jì)算機(jī)直接執(zhí)行,必須先由一種翻譯程序?qū)⑦@些程序翻譯成等價(jià)的能被計(jì)算機(jī)識(shí)別和執(zhí)行的機(jī)序?qū)⑦@些程序翻譯成等價(jià)的能被

3、計(jì)算機(jī)識(shí)別和執(zhí)行的機(jī)器語(yǔ)言。翻譯程序的種類:器語(yǔ)言。翻譯程序的種類:解釋程序:將高級(jí)解釋程序:將高級(jí)編程語(yǔ)言編程語(yǔ)言一行一行直接轉(zhuǎn)譯運(yùn)行。解釋器一行一行直接轉(zhuǎn)譯運(yùn)行。解釋器不會(huì)一次把整個(gè)程序轉(zhuǎn)譯出來,只像一位不會(huì)一次把整個(gè)程序轉(zhuǎn)譯出來,只像一位“中間人中間人”,每次,每次運(yùn)行程序時(shí)都要先轉(zhuǎn)成另一種語(yǔ)言再作運(yùn)行,因此解釋器的運(yùn)行程序時(shí)都要先轉(zhuǎn)成另一種語(yǔ)言再作運(yùn)行,因此解釋器的程序運(yùn)行速度比較緩慢。它每轉(zhuǎn)譯一行程序敘述就立刻運(yùn)行程序運(yùn)行速度比較緩慢。它每轉(zhuǎn)譯一行程序敘述就立刻運(yùn)行,然后再轉(zhuǎn)譯下一行,再運(yùn)行,如此不停地進(jìn)行下去。,然后再轉(zhuǎn)譯下一行,再運(yùn)行,如此不停地進(jìn)行下去。 編譯編譯(器器)程序:

4、將用某種編程語(yǔ)言寫成的程序:將用某種編程語(yǔ)言寫成的源代碼源代碼(原始語(yǔ)言),(原始語(yǔ)言),轉(zhuǎn)換成另一種編程語(yǔ)言(目標(biāo)語(yǔ)言)。轉(zhuǎn)換成另一種編程語(yǔ)言(目標(biāo)語(yǔ)言)。 4編譯器n一個(gè)現(xiàn)代編譯器的主要工作流程如下:n 源代碼 (source code) 預(yù)處理器 (preprocessor) 編譯器編譯器 (compiler) 匯匯編程序編程序 (assembler) 目標(biāo)代碼 (object code) 鏈接器 (Linker) 可執(zhí)行文件 (executables) nP166VC+ 6.0 創(chuàng)天中文版7集成開發(fā)環(huán)境nVC6.0n集編輯(集編輯(EDIT)、編譯()、編譯(COMPILE)、)、 連

5、接(連接(Link)、執(zhí)行()、執(zhí)行(EXECUTE)與一體,)與一體,并提供調(diào)試(并提供調(diào)試(debug)手段和幫助()手段和幫助(help)的開發(fā)軟件。的開發(fā)軟件。8程序編制的過程n編輯(EDIT)dt n編譯(COMPILE) kmpaln連接(連接(Link)lk n執(zhí)行(EXECUTE)ks,kjut n調(diào)試(調(diào)試(debug)9編輯(EDIT)n源文件源文件用高級(jí)語(yǔ)言編寫的程序文件用高級(jí)語(yǔ)言編寫的程序文件n編輯器編輯器生成源文件的軟件生成源文件的軟件nC語(yǔ)言程序文件,例:語(yǔ)言程序文件,例:hello.cpp文本文件,可用記事本編輯文本文件,可用記事本編輯后綴名:后綴名:c/cppn

6、語(yǔ)法語(yǔ)法一種編程語(yǔ)言的規(guī)則,如:一種編程語(yǔ)言的規(guī)則,如:C程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言10編譯(COMPILE) n編譯器編譯器將高級(jí)語(yǔ)言翻譯成機(jī)器語(yǔ)言的軟件將高級(jí)語(yǔ)言翻譯成機(jī)器語(yǔ)言的軟件n編譯的任務(wù)編譯的任務(wù)編譯器翻譯源文件事會(huì)檢查是否符合高級(jí)語(yǔ)言的語(yǔ)法規(guī)則編譯器翻譯源文件事會(huì)檢查是否符合高級(jí)語(yǔ)言的語(yǔ)法規(guī)則生成機(jī)器語(yǔ)言指令構(gòu)成的目標(biāo)文件生成機(jī)器語(yǔ)言指令構(gòu)成的目標(biāo)文件如源程序包含語(yǔ)法錯(cuò)誤,列出錯(cuò)誤,不產(chǎn)生目標(biāo)文件如源程序包含語(yǔ)法錯(cuò)誤,列出錯(cuò)誤,不產(chǎn)生目標(biāo)文件nc目標(biāo)文件,例:目標(biāo)文件,例:hello.obj二進(jìn)制文件二進(jìn)制文件后綴名:后綴名:obj11連接連接Linkn連接的任務(wù)連接的任務(wù)將預(yù)先開

7、發(fā)好的程序模塊(例如系統(tǒng)函數(shù)或其將預(yù)先開發(fā)好的程序模塊(例如系統(tǒng)函數(shù)或其他程序員開發(fā)的共同模塊)連接到當(dāng)前程序代他程序員開發(fā)的共同模塊)連接到當(dāng)前程序代碼中去碼中去生成可執(zhí)行文件:生成可執(zhí)行文件:exe,例:,例:hello.exen連接器連接器完成連接的軟件完成連接的軟件C語(yǔ)言程序的編輯、調(diào)試、運(yùn)行步驟開始開始結(jié)果結(jié)果語(yǔ)法語(yǔ)法錯(cuò)誤錯(cuò)誤源程序源程序.c / .cpp目標(biāo)程序目標(biāo)程序.obj可執(zhí)行程序可執(zhí)行程序.exe編輯編輯編譯編譯運(yùn)行運(yùn)行連接連接錯(cuò)誤錯(cuò)誤運(yùn)行運(yùn)行錯(cuò)誤錯(cuò)誤運(yùn)行運(yùn)行文字文字編輯器編輯器編譯器編譯器連接器連接器結(jié)果調(diào)試程序 P18-21n設(shè)置斷點(diǎn)n開始調(diào)試n單步運(yùn)行n自動(dòng)查看變量執(zhí)

8、行(EXECUTE) nC語(yǔ)言生成的可執(zhí)行文件(exe文件)是一個(gè)DOS程序控制臺(tái)程序;n可以通過開始菜單“運(yùn)行” “cmd”命令打開命令窗口,直接執(zhí)行文件名。14nVC+操作新建編譯執(zhí)行語(yǔ)法錯(cuò)誤關(guān)閉工作空間15創(chuàng)建一個(gè)C程序sample01_01.cpp/*print “Hello World!” */#include int main(void) printf(Hello World! n); return 0; 16解讀第一個(gè)C程序程序語(yǔ)法(1)C程序必須由一個(gè)程序必須由一個(gè)main函數(shù)構(gòu)成,系統(tǒng)自函數(shù)構(gòu)成,系統(tǒng)自動(dòng)執(zhí)行動(dòng)執(zhí)行main函數(shù)。函數(shù)。(2)程序的執(zhí)行從)程序的執(zhí)行從main函

9、數(shù)的左函數(shù)的左括號(hào)開始,括號(hào)開始,順序執(zhí)行每一條語(yǔ)句,直到順序執(zhí)行每一條語(yǔ)句,直到main函數(shù)的右函數(shù)的右括括號(hào)結(jié)束。號(hào)結(jié)束。函數(shù)體函數(shù)體 (3)printf是標(biāo)準(zhǔn)輸出函數(shù),輸出的字符串在是標(biāo)準(zhǔn)輸出函數(shù),輸出的字符串在一對(duì)半角雙引號(hào)之間,例如一對(duì)半角雙引號(hào)之間,例如Hello C Worldn。(4)C語(yǔ)句以分號(hào)結(jié)束。語(yǔ)句以分號(hào)結(jié)束。解讀第一個(gè)C程序程序語(yǔ)法(5)控制臺(tái)輸出時(shí),系統(tǒng)會(huì)緊跟著自動(dòng)輸出)控制臺(tái)輸出時(shí),系統(tǒng)會(huì)緊跟著自動(dòng)輸出“press any key to continue”,等待按任意鍵關(guān)閉控制臺(tái)窗口。,等待按任意鍵關(guān)閉控制臺(tái)窗口。(6)n是一個(gè)轉(zhuǎn)義字符換行。轉(zhuǎn)義字符是一些鍵盤不能

10、輸是一個(gè)轉(zhuǎn)義字符換行。轉(zhuǎn)義字符是一些鍵盤不能輸入的控制字符,具有特殊功能。入的控制字符,具有特殊功能。(7)#include是一個(gè)預(yù)編譯命令,表示要加入是一個(gè)預(yù)編譯命令,表示要加入stdio.h文件(標(biāo)準(zhǔn)輸入輸出函數(shù)頭文件),要在程序中使用文件(標(biāo)準(zhǔn)輸入輸出函數(shù)頭文件),要在程序中使用printf函數(shù)必須使用該命令。函數(shù)必須使用該命令。(8) Main函數(shù)執(zhí)行到函數(shù)執(zhí)行到 “”或或“return 0;”結(jié)束。結(jié)束。return 0;向系統(tǒng)返回整數(shù)向系統(tǒng)返回整數(shù)0,表示程序運(yùn)行正常。,表示程序運(yùn)行正常。17nInclude nklud 包含 nstandard stndd 標(biāo)準(zhǔn)nhead hd

11、頭部解讀第1個(gè)C程序的相關(guān)文件18后綴名后綴名解釋解釋cpp源程序文件dsw項(xiàng)目工作區(qū)dsp項(xiàng)目文件ncb無(wú)編譯瀏覽文件plg編譯信息文件opt關(guān)于開發(fā)環(huán)境的參數(shù)文件,如工具條位置等信息nDebug文件夾中存放著生成的obj文件,exe文件及其它一些中間文件。19討論n輸出兩行問候語(yǔ)句nHello C World!nHello C World!20可能出現(xiàn)的答案nprintf (“Hello C World”);nprintf (“Hello C World”);nprintf (“Hello C Worldn”);nprintf (“Hello C World”);nprintf (“Hel

12、lo C Worldn Hello C World”);程序錯(cuò)誤n語(yǔ)法錯(cuò)誤n連接錯(cuò)誤n邏輯錯(cuò)誤n運(yùn)行錯(cuò)誤語(yǔ)法錯(cuò)誤n指不符合高級(jí)語(yǔ)言定義的語(yǔ)法書寫規(guī)則。n編譯或解釋程序能自動(dòng)檢查出語(yǔ)法錯(cuò)誤,只需根據(jù)錯(cuò)誤提示進(jìn)行修改。2223改錯(cuò)示例:# include void main(void) printf( Welcome to You! n) return 0;# include int main(void) printf(Welcome to You! n); return 0;C語(yǔ)言的錯(cuò)誤信息的形式 : 文件名文件名 行號(hào)行號(hào) 錯(cuò)誤編號(hào)錯(cuò)誤編號(hào) 錯(cuò)誤信息錯(cuò)誤信息 D:C教材教材samplehell

13、o.cpp(4) : error C2001: newline in constant 24編譯錯(cuò)誤修改提示(1)n錯(cuò)誤信息往往只能起提示作用,不是特別精確反映錯(cuò)誤產(chǎn)生的原因,更不會(huì)告訴你如何修改。n根據(jù)提示能快速反應(yīng)錯(cuò)誤產(chǎn)生的原因需要經(jīng)驗(yàn)的積累。25編譯錯(cuò)誤修改提示(2)n一條語(yǔ)句錯(cuò)誤可能會(huì)產(chǎn)生若干條錯(cuò)誤信息,只要修改了這條錯(cuò)誤,其他錯(cuò)誤會(huì)隨之消失。n特別提示:一般情況下,第一條錯(cuò)誤信息最能反映錯(cuò)誤的位置和類型,所以調(diào)試程序時(shí)務(wù)必根據(jù)第一條錯(cuò)誤信息進(jìn)行修改,修改后,立即重新編譯程序,如果還有很多錯(cuò)誤,再一個(gè)一個(gè)地修改。n即每修改一處錯(cuò)誤要重新編譯一次程序。26連接錯(cuò)誤n連接錯(cuò)誤,是編譯成功后

14、,連接器連接外部程序的時(shí)候產(chǎn)生的錯(cuò)誤。n例 :main函數(shù)名寫錯(cuò)了27連接錯(cuò)誤修改提示n連接錯(cuò)誤不提示出錯(cuò)行數(shù),但小程序的定位也比較簡(jiǎn)單,一般是函數(shù)和外部變量的名稱函數(shù)和外部變量的名稱出錯(cuò),只需根據(jù)錯(cuò)誤提示的字符串去尋找可能出現(xiàn)的位置 。2829連接錯(cuò)誤信息顯示-Configuration: test - Win32 Debug-Compiling. :test.cppLinking.LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 無(wú)法解析的外部符號(hào)無(wú)法解析的外部符號(hào)_main Debug/test.exe : fatal error LNK1120: 1 unresolved externals執(zhí)行執(zhí)行 link.exe 時(shí)出錯(cuò)時(shí)出錯(cuò).test.exe - 1 error(s), 0 warning(s) 錯(cuò)誤錯(cuò)誤 警告警告30常見編程錯(cuò)誤:n字符串“ ”不完整n()不匹配n缺少;n函數(shù)名寫錯(cuò)n邏輯錯(cuò)誤n邏輯錯(cuò)誤則是程序設(shè)計(jì)上或邏輯上的錯(cuò)誤指程序已生成

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論