第一章計(jì)算機(jī)編程及C語言概述_第1頁
第一章計(jì)算機(jī)編程及C語言概述_第2頁
第一章計(jì)算機(jī)編程及C語言概述_第3頁
第一章計(jì)算機(jī)編程及C語言概述_第4頁
第一章計(jì)算機(jī)編程及C語言概述_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章計(jì)算機(jī)編程及C語言概述l 熟悉與計(jì)算機(jī)編程有關(guān)的基礎(chǔ)知識(shí)l 了解軟件開發(fā)的基本方法,能給出解決問題的簡(jiǎn)要算法l 了解C語言出現(xiàn)的歷史及特點(diǎn)l 熟悉Visual C+6.0環(huán)境下C程序的上機(jī)步驟 l 了解C程序的基本要素,能讀懂簡(jiǎn)單的C程序 1.1 計(jì)算機(jī)與編程 計(jì)算機(jī)系統(tǒng)由硬件和軟件組成軟件是程序的集合,由一系列能解決問題的指令構(gòu)成硬件是實(shí)現(xiàn)所需計(jì)算的設(shè)備,包含五大組成部件(CPU、內(nèi)存、輔助存儲(chǔ)器、輸入/出設(shè)備)程序在執(zhí)行前必須先從輔助存儲(chǔ)器中傳輸?shù)絻?nèi)存中,才能被CPU訪問執(zhí)行1.1.1 內(nèi)存及數(shù)據(jù)存取內(nèi)存是存儲(chǔ)單元的有序序列,每個(gè)內(nèi)存單元都有一個(gè)唯一的地址存儲(chǔ)在內(nèi)存單元中的數(shù)據(jù)稱為內(nèi)

2、存單元的內(nèi)容內(nèi)存單元的內(nèi)容永不為空,但其初始值可能對(duì)程序毫無意義計(jì)算機(jī)存儲(chǔ)程序和數(shù)據(jù)的能力稱為存儲(chǔ)程序概念:程序的指令在執(zhí)行前必須調(diào)入主存09991234-27.23540.05-26H75.62圖1-1 內(nèi)存示例圖1-2 字節(jié)與位的關(guān)系 0 0 1 0 1 1 0 0位字節(jié)內(nèi)存單元的大小一般為一個(gè)字節(jié)(byte),一個(gè)字節(jié)由八個(gè)位(bit)組成,如圖1-2計(jì)算機(jī)對(duì)內(nèi)存主要有兩種操作:讀和寫讀操作從指定單元讀出存儲(chǔ)的數(shù)據(jù),對(duì)目標(biāo)單元中的信息沒有影響寫操作將特定信息存儲(chǔ)到指定單元,該單元中存放的內(nèi)容將被覆蓋內(nèi)存是易失性存儲(chǔ)介質(zhì)硬盤是最常用的輔助存儲(chǔ)器,存儲(chǔ)在磁盤上的數(shù)據(jù)以文件為單位來組織1.1.

3、2 計(jì)算機(jī)語言機(jī)器語言:由0、1串指令構(gòu)成,具有非標(biāo)準(zhǔn)性匯編語言:以機(jī)器語言為基礎(chǔ)引入助記符(操作代碼、變量名),具有非標(biāo)準(zhǔn)性高級(jí)語言:結(jié)合了數(shù)學(xué)表達(dá)式和英語符號(hào),接近自然語言;用于編寫與CPU類型無關(guān)的程序;計(jì)算機(jī)不能識(shí)別編輯源文件編譯obj文件 連接器exe文件執(zhí)行失敗,返回錯(cuò)誤信息結(jié)果過程出錯(cuò)圖1-3 高級(jí)語言的程序設(shè)計(jì)步驟與高級(jí)語言相關(guān)的幾個(gè)概念源程序文件:使用高級(jí)語言編寫的程序代碼文件,格式為文本文件,文件后綴為*.c。編譯器:將高級(jí)語言編寫的源程序翻譯成機(jī)器語言的軟件或程序。目標(biāo)文件:經(jīng)過編譯器處理后輸出的由機(jī)器語言指令構(gòu)成的文件,文件后綴為*.obj。連接器:目標(biāo)文件并不完整,不

4、能直接執(zhí)行。連接器將這些函數(shù)與目標(biāo)文件合并起來,創(chuàng)建一個(gè)二進(jìn)制的可執(zhí)行文件,文件后綴為*.exe。程序的執(zhí)行:可執(zhí)行程序一般以文件形式存放在磁盤上,必須將其裝入內(nèi)存才能運(yùn)行。這個(gè)過程由裝載器完成,裝載器還引導(dǎo)CPU從第一條指令開始執(zhí)行。1.2 軟件開發(fā)的基本方法軟件開發(fā)步驟說明程序需求分析問題設(shè)計(jì)問題解決的算法實(shí)現(xiàn)算法測(cè)試、檢查已完成的程序程序的維護(hù)與更新1.2.1 軟件開發(fā)步驟問題說明程序需求,弄清楚程序的目的并了解程序需求,目的是為了去除不重要的方面,找到根本問題所在分析確定問題的輸入(要處理的數(shù)據(jù))、問題的輸出(希望的結(jié)果)及解決方案附加的需求或約束條件;此外還應(yīng)確定結(jié)果應(yīng)以怎樣的格式顯

5、示,列出問題的變量及相互關(guān)系(一般可借助數(shù)學(xué)公式來表達(dá))例1-1:給定購買的蘋果質(zhì)量及每斤蘋果的價(jià)格,請(qǐng)計(jì)算并顯示蘋果的總價(jià)值。問題給定蘋果質(zhì)量及價(jià)格,計(jì)算蘋果的總價(jià)值分析問題輸入: 購買的蘋果質(zhì)量(以斤計(jì))每斤蘋果的價(jià)錢(以元計(jì))問題輸出: 蘋果的總價(jià)值(以元計(jì))問題的公式:總價(jià) = 單價(jià) * 數(shù)量 設(shè)計(jì)設(shè)計(jì)算法解決問題,要求開發(fā)“算法”(一系列步驟);檢查該算法是否按預(yù)期目標(biāo)那樣解決問題自頂向下的設(shè)計(jì)也叫做分治法,將問題分解成多個(gè)子問題,分別解決:首先列出需要解決的最主要步驟(子問題),解決每個(gè)子問題最終解決初始問題大多數(shù)計(jì)算機(jī)算法都至少包含以下子問題:獲取數(shù)據(jù);執(zhí)行計(jì)算(算法細(xì)化,分解成

6、更詳細(xì)的步驟);顯示結(jié)果;桌面檢查。桌面檢查指逐步模擬算法的計(jì)算機(jī)執(zhí)行:模仿計(jì)算機(jī)認(rèn)真執(zhí)行算法的每一步,檢查算法是否按預(yù)期工作。在問題解決過程的早期找出錯(cuò)誤并修改,可節(jié)省大量人力、時(shí)間實(shí)現(xiàn)編寫程序:用編程語言將算法的每個(gè)步驟轉(zhuǎn)換成一個(gè)或多個(gè)語句。測(cè)試檢查、測(cè)試需程序目標(biāo)是否按預(yù)期達(dá)到需要使用不同數(shù)據(jù)集合來多次運(yùn)行程序,確保程序算法在提供的所有情況下都能正常工作維護(hù)一個(gè)程序的維護(hù)一般為5年或更長(zhǎng)編程過程中使用科學(xué)規(guī)范的方法是很關(guān)鍵的,必須遵循那些已被大家廣泛接受的編程風(fēng)格和原則,避免所謂的編程技巧或捷徑。1.2.2 案例分析問題:給定蘋果的總重量及單價(jià)求總價(jià)分析:?jiǎn)栴}輸入:weightprice

7、 問題輸出:total_price計(jì)算:total_price = price * weight設(shè)計(jì)(初始算法)1、讀取每斤蘋果的單價(jià)及蘋果的質(zhì)量2、根據(jù)公式計(jì)算總價(jià)3、顯示輸出計(jì)算結(jié)果實(shí)現(xiàn)/*程序1-1.c,給定蘋果的總重量及單價(jià),求總價(jià)*/#include void main( )int weight, price, total_price;/*定義變量*/printf (輸入蘋果質(zhì)量 ); /*輸入蘋果的質(zhì)量*/scanf (%d, &weight);price = 3;/*指定蘋果的單價(jià)*/total_price = price * weight; /*根據(jù)公式計(jì)算總價(jià)*/pr

8、intf (蘋果總價(jià)為 %d.n, total_price); /*顯示結(jié)果*/運(yùn)行情況如下:輸入蘋果質(zhì)量 100蘋果總價(jià)為 300. 1.3 C語言出現(xiàn)的歷史及特點(diǎn)C語言的簡(jiǎn)要?dú)v史1963年,英國劍橋大學(xué)基于ALGOL 60推出了CPL語言;1967年,劍橋大學(xué)的Martin Richards對(duì)CPL做了簡(jiǎn)化,推出了BCPL語言1969年AT&T貝爾實(shí)驗(yàn)室用匯編語言初步完成了UNIX操作系統(tǒng);1970年K.Thompson對(duì)BCPL進(jìn)一步簡(jiǎn)化,推出了B語言,并用B語言完成了UNIX1972至1973年間,D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)了C語言,雖經(jīng)多次改進(jìn),但主要在貝爾實(shí)

9、驗(yàn)室內(nèi)部使用,直到1975年UNIX第6版發(fā)布后,其突出優(yōu)點(diǎn)才引起人們的普遍關(guān)注1978年以后,C語言先后移植到大、中、小、微型計(jì)算機(jī)上,成為應(yīng)用最廣泛的幾種計(jì)算機(jī)語言之一1978年,貝爾實(shí)驗(yàn)室正式發(fā)表了C語言1983年美國國家標(biāo)準(zhǔn)化協(xié)會(huì)ANSI整理了各種版本對(duì)C語言的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSI CC語言的特點(diǎn)結(jié)構(gòu)化、模塊化的程序設(shè)計(jì)語言:以函數(shù)為單位組成,程序結(jié)構(gòu)完全由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)構(gòu)成,具有9種結(jié)構(gòu)控制語句具有高級(jí)語言和匯編語言的許多功能,可以編寫系統(tǒng)軟件,也可實(shí)現(xiàn)應(yīng)用軟件數(shù)據(jù)類型豐富,除各種數(shù)據(jù)結(jié)構(gòu)外,還具有特別的指針類型,能描述/實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)許多I/O功能都

10、由函數(shù)提供;程序可移植性好,語言簡(jiǎn)潔緊湊,使用靈活方便便于掌握運(yùn)算符豐富,包含34種運(yùn)算符,表達(dá)式類型多樣書寫靈活,一行可以寫多個(gè)語句,語法限制不太嚴(yán)格高效:生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高1.4 C語言的元素/* 計(jì)算蘋果的總價(jià)值計(jì)算蘋果的總價(jià)值. */# include void main( ) int weight, price; /* 蘋果的質(zhì)量和單價(jià)蘋果的質(zhì)量和單價(jià) */ int total_price; /* 總價(jià)值總價(jià)值 */ /* 輸入蘋果的質(zhì)量,指定蘋果的單價(jià)輸入蘋果的質(zhì)量,指定蘋果的單價(jià) */ printf(Enter the weight ); scanf(%d, &

11、amp;weight); price = 3; /* 根據(jù)公式計(jì)算總價(jià)根據(jù)公式計(jì)算總價(jià) */ total_price = price * weight; /* 輸出計(jì)算結(jié)果輸出計(jì)算結(jié)果 */ printf(The total_price is %d.n, total_price); 圖1-4 計(jì)算蘋果總價(jià)值程序中的語言元素預(yù)處理命令注釋變量庫函數(shù)保留字分隔符圖中的C程序包含兩個(gè)部分:預(yù)處理命令和main函數(shù)源程序可使用預(yù)處理命令來改進(jìn)程序設(shè)計(jì)環(huán)境、提高編程效率。預(yù)處理命令以“#”打頭。圖中用到的#include是文件包含預(yù)處理命令,使系統(tǒng)編譯源程序前將指定標(biāo)準(zhǔn)頭文件的定義插入到程序中main函

12、數(shù)是程序執(zhí)行的起點(diǎn),每個(gè)C程序都有一個(gè)main函數(shù)注釋是指以“/*”開頭并以“*/”結(jié)束的部分,用來補(bǔ)充說明信息,提高程序的可閱讀性,不是程序的一部分保留字是C語言中具有特定含義的字,用于標(biāo)識(shí)標(biāo)準(zhǔn)庫函數(shù)、變量類型等。圖中其他字可以分成兩類:標(biāo)準(zhǔn)標(biāo)識(shí)符,與保留字一樣具有特殊含義,例如printf和scanf是標(biāo)準(zhǔn)I/O庫中定義的輸入函數(shù)和輸出函數(shù)的函數(shù)名??勺远x標(biāo)識(shí)符來命名用以保存數(shù)據(jù)和程序結(jié)果的變量及自定義函數(shù)。 例1-2:求兩個(gè)數(shù)中的較大者/*程序1-2.c,求兩個(gè)數(shù)中的較大者*/1 #include 2 void main( )/*主函數(shù)入口,程序執(zhí)行起點(diǎn)*/3 int max (int

13、 x, int y );/*自定義函數(shù)max的說明*/4 int a,b,c; /*變量聲明*/5 printf (Please enter a and b );/*輸出提示信息*/6 scanf (%d%d, &a, &b ); /*接收用戶輸入*/7 c = max ( a , b );/*調(diào)用函數(shù)max,返回值賦給c*/8 printf (max = %dn, c );/*輸出c的值*/9 10 /*自定義函數(shù)max的函數(shù)體*/11 int max ( int x , int y )/*函數(shù)頭,說明函數(shù)類型及參數(shù)*/12 int z;/*定義局部變量z */13 if (

14、 x y ) z = x; 14 else z = y;/*比較x、y,將較大值賦給z */15 return ( z );/*將z值作為函數(shù)返回值*/16 運(yùn)行情況如下:Please enter a and b 8 5max = 8程序1-2.c包含兩個(gè)函數(shù):主函數(shù)main和自定義函數(shù)max。函數(shù)max的作用是比較x和y的大小并將較大值賦給變量z,返回值通過函數(shù)名帶回到主調(diào)函數(shù)main的調(diào)用點(diǎn)處為使自定義函數(shù)能被編譯系統(tǒng)正確識(shí)別和調(diào)用,需要在主調(diào)函數(shù)中對(duì)max進(jìn)行函數(shù)聲明(第3行)。程序的第7行調(diào)用max函數(shù),并將實(shí)際參數(shù)a和b傳遞給max的形式參數(shù)x和y,此時(shí)程序?qū)⑥D(zhuǎn)去執(zhí)行12行開始的ma

15、x函數(shù)體,得到一個(gè)返回值(15行)函數(shù)max結(jié)束,程序的執(zhí)行返回到調(diào)用點(diǎn)處(第7行“=”右側(cè)),賦值運(yùn)算符“=”將函數(shù)值賦給變量c。1.5 C程序的上機(jī)步驟啟動(dòng) Visual C+6.0步驟“開始”/ “程序”/“Microsoft Visual Studio 6.0”/“Microsoft 可正常啟動(dòng)Visual C+6.0新建/打開C程序文件選擇“Files”/ “新建”菜單項(xiàng),單擊如圖1-5所示的“文件”標(biāo)簽,左側(cè)列表框選中“C+ Source File”,右側(cè)文本框輸入源程序的文件名和存儲(chǔ)路徑,按“確定”按鈕,便可進(jìn)入新的編輯窗口編輯源程序文件若源文件已經(jīng)存在,通過 “Files” /“Open”菜單項(xiàng),在查找范圍中找到正確的文件夾,便可調(diào)入指定的程序文件保存程序選擇“Files”/ “Save”菜單項(xiàng),系統(tǒng)將以默認(rèn)的C+程序擴(kuò)展名*.cpp保存文件,也可指定文件擴(kuò)展名為*.c圖1-5 VC6.0新建文件界面 編譯程序菜單“編譯”/ “編譯”或快捷鍵Ctrl+ F7,對(duì)編輯好的源程序文

溫馨提示

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