版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,第一章C語(yǔ)言概述,蘭州理工大學(xué),2,第一章 C語(yǔ)言概述,1.1 C語(yǔ)言的起源 1.2 C語(yǔ)言是中級(jí)語(yǔ)言 1.3 C語(yǔ)言是結(jié)構(gòu)化語(yǔ)言 1.4 C語(yǔ)言是面向程序員的語(yǔ)言 1.5 編譯和解釋 1.6 C語(yǔ)言程序結(jié)構(gòu) 1.7 術(shù) 語(yǔ) 1.8 幾種集成編譯環(huán)境,3,1.1 C語(yǔ)言的起源,4,1.1 C語(yǔ)言的起源,C語(yǔ)言的發(fā)展過(guò)程,C Dennis Ritchie (1973),B Ken Thompson 美國(guó)貝爾實(shí)驗(yàn)室(1970),BCPL( Basic Combined Programming Language) Martin Richards 英國(guó)劍橋大學(xué)(1967年),BCPL和B語(yǔ)言不支持
2、數(shù)據(jù)類(lèi)型,C語(yǔ)言支持?jǐn)?shù)據(jù)類(lèi)型,5,1.1 C語(yǔ)言的起源,C語(yǔ)言的發(fā)展過(guò)程 ALGOL60- CPL- BCPC- B- C- 標(biāo)準(zhǔn)C- ANSI C- ISO C ALGOL60:一種面向問(wèn)題的高級(jí)語(yǔ)言。離硬件較遠(yuǎn),不適合編寫(xiě)系統(tǒng)程序。 1963年,劍橋大學(xué)將ALGOL60發(fā)展成CPL(Combined Programming Language):CPL規(guī)模大,實(shí)現(xiàn)困難。 1967年,劍橋大學(xué)的Matin Richards 對(duì)CPL語(yǔ)言進(jìn)行了簡(jiǎn)化,產(chǎn)生了BCPL語(yǔ)言。 1970年,美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson對(duì)BCPL進(jìn)一步簡(jiǎn)化成一種很簡(jiǎn)單接近硬件的語(yǔ)言-B語(yǔ)言。并用B語(yǔ)言寫(xiě)了第一
3、個(gè)UNIX操作系統(tǒng)。 B語(yǔ)言精練、接近硬件,但太簡(jiǎn)單,數(shù)據(jù)無(wú)類(lèi)型。,6,1.1 C語(yǔ)言的起源,C語(yǔ)言的發(fā)展過(guò)程 ALGOL60- CPL- BCPC- B- C- 標(biāo)準(zhǔn)C- ANSI C- ISO C 1973年,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出一種新的語(yǔ)言-C語(yǔ)言。C語(yǔ)言誕生后,很快用C語(yǔ)言改寫(xiě)Unix ,并移植到其它計(jì)算機(jī)系統(tǒng)。 1977年Dennis M.Ritchie 發(fā)表了不依賴(lài)具體機(jī)器系統(tǒng)的C語(yǔ)言編譯文本可移植的C語(yǔ)言編譯程序。 1978年貝爾實(shí)驗(yàn)室正式發(fā)表了語(yǔ)言。同時(shí)由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRA
4、MMING LANGUAGE”一書(shū)K /* printf(世界, 你好n); */ getch(); ,20,1.6 C語(yǔ)言程序結(jié)構(gòu),例2: /* exsampe 2 */ #include stdio.h main() int a=5, b=6; int c=a+b; printf(%d,c); getch(); ,21,1.6 C語(yǔ)言程序結(jié)構(gòu),C語(yǔ)言程序有以下特點(diǎn): C程序都由一個(gè)或多個(gè)函數(shù)組成(C是函數(shù)型語(yǔ)言,函數(shù)是C語(yǔ)言程序的基本單元); 有且僅有一個(gè)main()函數(shù),稱(chēng)為主函數(shù)。它在程序開(kāi)始運(yùn)行時(shí)首先被調(diào)入執(zhí)行。 C程序是由一個(gè)個(gè)語(yǔ)句組成,語(yǔ)句均由分號(hào)“;”結(jié)尾; 一行可以寫(xiě)多個(gè)語(yǔ)句
5、;一個(gè)語(yǔ)句可以寫(xiě)在多行上; C程序用大括號(hào)“ ”表示程序的范圍和層次關(guān)系。每個(gè)函數(shù)、復(fù)合語(yǔ)句都用一對(duì)大括號(hào)括起來(lái); C程序的關(guān)鍵字(和變量)習(xí)慣上使用小寫(xiě)英文字母。而宏定義的“宏名”通常用大寫(xiě)字母; C程序通常會(huì)有#號(hào)開(kāi)頭的一些編譯預(yù)處理代碼行,如:包含頭文件(*.h),宏定義等。 程序可以有注釋?zhuān)谩? * */”或“/”標(biāo)注。,22,1.6.1 庫(kù)和鏈接,C語(yǔ)言編譯器的實(shí)現(xiàn)者已編寫(xiě)了大部分常見(jiàn)的通用函數(shù),即標(biāo)準(zhǔn)函數(shù)庫(kù),以完成最常見(jiàn)的任務(wù)。 標(biāo)準(zhǔn)函數(shù)庫(kù)作為構(gòu)成程序的基本構(gòu)件。標(biāo)準(zhǔn)函數(shù)庫(kù)中的庫(kù)函數(shù)可以反復(fù)使用(調(diào)用)。 鏈接器(Linker)把編寫(xiě)的程序同標(biāo)準(zhǔn)函數(shù)庫(kù)中找到的目標(biāo)碼結(jié)合起來(lái),稱(chēng)為
6、鏈接(Link)。鏈接生成可執(zhí)行程序。 某些C編譯程序帶有自己的鏈接程序,有些則使用操作系統(tǒng)提供的標(biāo)準(zhǔn)鏈接程序。 程序員也可以編寫(xiě)自己的函數(shù),這些函數(shù)也可以放在一個(gè)庫(kù)(可能是標(biāo)準(zhǔn)函數(shù)庫(kù),也可能是自己的函數(shù)庫(kù))中,反復(fù)使用(編譯程序通常會(huì)提供一個(gè)庫(kù)管理應(yīng)用程序)。,23,1.6.1 庫(kù)和鏈接,函數(shù)庫(kù)中的函數(shù)是可重定位(Relocaltable)的,意味著其中機(jī)器碼指令的內(nèi)存地址并未絕對(duì)確定,只有偏移量是確定的。把程序與標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)相鏈接時(shí),內(nèi)存偏移量被用來(lái)產(chǎn)生實(shí)際地址。,24,1.6.2 分別編譯,多數(shù)短程序都可以完全放進(jìn)一個(gè)源文件; 隨著程序長(zhǎng)度的增加,編譯時(shí)間也大幅度增加(常使人無(wú)法忍
7、耐); 因此,C語(yǔ)言允許將一個(gè)程序分塊寫(xiě)在多個(gè)文件中,每一個(gè)文件可單獨(dú)編譯。 分別編譯的優(yōu)點(diǎn)是,當(dāng)程序代碼改變后,只需重新編譯改變了的文件,而不必重新編譯全部程序。這可以節(jié)省大量時(shí)間。,25,1.6.3 編譯C語(yǔ)言程序,編譯C語(yǔ)言程序包括以下三步: (1)程序設(shè)計(jì)(編輯源程序,或稱(chēng)源代碼); (2)程序編譯(生成目標(biāo)碼); (3)目標(biāo)碼與庫(kù)函數(shù)鏈接,生成可執(zhí)行代碼 。 編譯、鏈接與運(yùn)行過(guò)程中通常會(huì)有錯(cuò)誤,查錯(cuò)與改正錯(cuò)誤的過(guò)程通常稱(chēng)為調(diào)試。 大多編譯程序提供一個(gè)集成開(kāi)發(fā)環(huán)境 (Integrated Development Environment IDE),程序的編輯、編譯、鏈接、調(diào)試與運(yùn)行是一體
8、化的。 也有的編譯程序沒(méi)有集成開(kāi)發(fā)環(huán)境,程序員必須用獨(dú)立的編輯程序編程。 某些字處理軟件產(chǎn)生的文件含控制碼和非打印字符(包括漢字及全角符號(hào)),編譯程序會(huì)拒絕接受。,26,1.6.3 編譯C語(yǔ)言程序,右圖是編譯C語(yǔ)言程序的全過(guò)程。,27,1.6.4 C語(yǔ)言的內(nèi)存映象,一個(gè)已完成編譯的C語(yǔ)言程序取得并使用四塊在邏輯上不同、且用于不同目的的內(nèi)存區(qū)域。 第一塊區(qū)域含有程序代碼,相鄰的一塊內(nèi)存區(qū)域存放全局變量; 其它兩塊分別是: 棧(Stack): 用來(lái)處理程序運(yùn)行的許多事務(wù),保存函數(shù)調(diào)用時(shí)的返回地址、函數(shù)的變?cè)?、局部變量以及CPU的當(dāng)前狀態(tài)。 堆(Heap) :是一個(gè)自由內(nèi)存區(qū)域,程序可利用C語(yǔ)言的動(dòng)
9、態(tài)分配函數(shù),由此取得用于鏈表和樹(shù)等數(shù)據(jù)結(jié)構(gòu)所需要的內(nèi)存。,28,1.6.4 C語(yǔ)言的內(nèi)存映象,圖:,29,1.7 術(shù)語(yǔ),源代碼(Source Code):用戶可編輯、閱讀的程序文本,源代碼是C語(yǔ)言編譯程序的輸入。 目標(biāo)碼(Object Code):由源代碼經(jīng)編譯器編譯而產(chǎn)生的機(jī)器碼。目標(biāo)碼是鏈接程序的輸入。 鏈接程序(鏈接器)(Linker):可把分別編譯產(chǎn)生的目標(biāo)碼與標(biāo)準(zhǔn)庫(kù)函數(shù)鏈接為完整的可執(zhí)行程序(.exe)的軟件程序。 函數(shù)庫(kù)(Library):存放可被用戶程序引用的標(biāo)準(zhǔn)函數(shù)。包括所有I/O操作及其它有用的子程序。 編譯時(shí)(Compile Time):編譯時(shí)出現(xiàn)的事件。在編譯期間出現(xiàn)的錯(cuò)
10、誤通常是語(yǔ)法錯(cuò)誤。 運(yùn)行時(shí)(Run Time):運(yùn)行時(shí)出現(xiàn)的事件。,30,1.8 幾種集成編譯環(huán)境,31,1.8 幾種集成編譯環(huán)境,全國(guó)計(jì)算機(jī)等級(jí)考試-二級(jí)C語(yǔ)言程序設(shè)計(jì)(08版),32,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,例子:,33,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,利用Visual C+ 6.0集成環(huán)境開(kāi)發(fā)C程序的過(guò)程如下: 1.啟動(dòng)Visual C+ 6.0環(huán)境 2.編輯源程序文件 3.編譯和連接 4.執(zhí)行,34,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,1.啟動(dòng)Visual C+ 6.0環(huán)境,方法:?jiǎn)螕?“開(kāi)始”-“程序”-“Microsoft Vis
11、ual studio 6.0”-“Microsoft Visual C+ 6.0”命令,啟動(dòng)Visual C+,VC+6.0主窗口如下:,菜單欄,項(xiàng)目工作區(qū),標(biāo)題欄,輸出區(qū),工具欄,狀態(tài)欄,文件編輯區(qū),35,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,2. 編輯源程序文件 (1)建立新工程項(xiàng)目 單擊“文件”-“新建”,彈出“新建”對(duì)話框。 單擊“工程”選項(xiàng)卡;單擊“Win32 Console Application”選項(xiàng);“工程”文件框中輸入項(xiàng)目名,如“gc1”和“位置”框輸入或選擇新項(xiàng)目所在位置,單擊“確定”按鈕。 彈出“Win32 Console Application Step 1o
12、f 1”對(duì)話框。 單擊“An empty project”按鈕和“完成”按鈕。系統(tǒng)顯示“新建工程信息”對(duì)話框。單擊“確定”按鈕。,36,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,2. 編輯源程序文件,37,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,2. 編輯源程序文件 (2)建立新項(xiàng)目中的文件 單擊“文件”-“新建”,彈出“新建”對(duì)話框。 選擇“文件”選項(xiàng)卡。單擊“C+ Source File”選項(xiàng),在“文件”文件框中輸入文件名,單擊“確定”按鈕。系統(tǒng)自動(dòng)返回VC6主窗口。 顯示文件編輯區(qū)窗口,在文件編輯區(qū)窗口輸入源程序文件。,38,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,
13、2. 編輯源程序文件,39,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,3. 編譯和連接 方法一:選擇主窗口菜單欄中“編譯”菜單項(xiàng);系統(tǒng)彈出下拉菜單,選擇“構(gòu)件”菜單命令。 方法二:?jiǎn)螕糁鞔翱诰幾g工具欄上的 “Build”按鈕進(jìn)行編譯和連接。,40,1.8.1 Visual C+ 6.0運(yùn)行環(huán)境,4. 執(zhí)行 方法一:?jiǎn)螕簟熬幾g”菜單中“執(zhí)行”命令。 方法二:?jiǎn)螕糁鞔翱诰幾g工具欄上的 “Build Execute”按鈕來(lái)執(zhí)行編譯連接后的程序。,41,1.8.2 Turbo C 2.0運(yùn)行環(huán)境,Turbo C 2.0界面如下:,42,1.8.3 WIN-TC運(yùn)行環(huán)境,.,43,44,1.8.3 WIN-TC運(yùn)行環(huán)境,由于Turbo C 2.0(簡(jiǎn)稱(chēng)TC2.0)是基于DOS的,不支持鼠標(biāo)操作、字體大小不能調(diào)整、文本復(fù)制步驟繁瑣、不支持中文輸入輸出,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職服裝款式設(shè)計(jì)(設(shè)計(jì)基礎(chǔ))試題及答案
- 2026年化工分析(電化學(xué)分析技術(shù))試題及答案
- 2025年高職(財(cái)務(wù)管理綜合實(shí)訓(xùn))投資管理實(shí)操試題及答案
- 2025年中職第三學(xué)年(防火墻技術(shù))網(wǎng)絡(luò)安全防護(hù)測(cè)試題及答案
- 2025年中職工業(yè)互聯(lián)網(wǎng)技術(shù)(工業(yè)互聯(lián)網(wǎng)基礎(chǔ))試題及答案
- 2025年中職第二學(xué)年(家政服務(wù)與管理)家庭膳食搭配實(shí)務(wù)測(cè)試題及答案
- 2025年中職(會(huì)計(jì))成本核算綜合試題及答案
- 2025年大學(xué)第四學(xué)年(服裝設(shè)計(jì)與工程)服裝綜合設(shè)計(jì)試題及答案
- 2026年粉底銷(xiāo)售(客戶接待)試題及答案
- 2025年高職統(tǒng)計(jì)學(xué)(統(tǒng)計(jì)教育心理學(xué)案例分析)試題及答案
- 遺產(chǎn)分割協(xié)議書(shū)
- 京瓷哲學(xué)手冊(cè)樣本
- 形神拳動(dòng)作名稱(chēng)與圖解
- 博士生入學(xué)復(fù)試面試報(bào)告?zhèn)€人簡(jiǎn)歷介紹含內(nèi)容模板兩篇
- 食品工廠設(shè)計(jì) 課件 第二章 廠址選擇
- 2023年生產(chǎn)車(chē)間各類(lèi)文件匯總
- WORD版A4橫版密封條打印模板(可編輯)
- 2013標(biāo)致508使用說(shuō)明書(shū)
- 中考滿分(合集15篇)
- 《大數(shù)據(jù)營(yíng)銷(xiāo)》-課程教學(xué)大綱
- GB/T 18993.1-2020冷熱水用氯化聚氯乙烯(PVC-C)管道系統(tǒng)第1部分:總則
評(píng)論
0/150
提交評(píng)論