




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章計算機編程及C語言概述l 熟悉與計算機編程有關(guān)的基礎(chǔ)知識l 了解軟件開發(fā)的基本方法,能給出解決問題的簡要算法l 了解C語言出現(xiàn)的歷史及特點l 熟悉Visual C+6.0環(huán)境下C程序的上機步驟 l 了解C程序的基本要素,能讀懂簡單的C程序 1.1 計算機與編程 計算機系統(tǒng)由硬件和軟件組成軟件是程序的集合,由一系列能解決問題的指令構(gòu)成硬件是實現(xiàn)所需計算的設(shè)備,包含五大組成部件(CPU、內(nèi)存、輔助存儲器、輸入/出設(shè)備)程序在執(zhí)行前必須先從輔助存儲器中傳輸?shù)絻?nèi)存中,才能被CPU訪問執(zhí)行1.1.1 內(nèi)存及數(shù)據(jù)存取內(nèi)存是存儲單元的有序序列,每個內(nèi)存單元都有一個唯一的地址存儲在內(nèi)存單元中的數(shù)據(jù)稱為內(nèi)
2、存單元的內(nèi)容內(nèi)存單元的內(nèi)容永不為空,但其初始值可能對程序毫無意義計算機存儲程序和數(shù)據(jù)的能力稱為存儲程序概念:程序的指令在執(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)存單元的大小一般為一個字節(jié)(byte),一個字節(jié)由八個位(bit)組成,如圖1-2計算機對內(nèi)存主要有兩種操作:讀和寫讀操作從指定單元讀出存儲的數(shù)據(jù),對目標(biāo)單元中的信息沒有影響寫操作將特定信息存儲到指定單元,該單元中存放的內(nèi)容將被覆蓋內(nèi)存是易失性存儲介質(zhì)硬盤是最常用的輔助存儲器,存儲在磁盤上的數(shù)據(jù)以文件為單位來組織1.1.
3、2 計算機語言機器語言:由0、1串指令構(gòu)成,具有非標(biāo)準(zhǔn)性匯編語言:以機器語言為基礎(chǔ)引入助記符(操作代碼、變量名),具有非標(biāo)準(zhǔn)性高級語言:結(jié)合了數(shù)學(xué)表達(dá)式和英語符號,接近自然語言;用于編寫與CPU類型無關(guān)的程序;計算機不能識別編輯源文件編譯obj文件 連接器exe文件執(zhí)行失敗,返回錯誤信息結(jié)果過程出錯圖1-3 高級語言的程序設(shè)計步驟與高級語言相關(guān)的幾個概念源程序文件:使用高級語言編寫的程序代碼文件,格式為文本文件,文件后綴為*.c。編譯器:將高級語言編寫的源程序翻譯成機器語言的軟件或程序。目標(biāo)文件:經(jīng)過編譯器處理后輸出的由機器語言指令構(gòu)成的文件,文件后綴為*.obj。連接器:目標(biāo)文件并不完整,不
4、能直接執(zhí)行。連接器將這些函數(shù)與目標(biāo)文件合并起來,創(chuàng)建一個二進制的可執(zhí)行文件,文件后綴為*.exe。程序的執(zhí)行:可執(zhí)行程序一般以文件形式存放在磁盤上,必須將其裝入內(nèi)存才能運行。這個過程由裝載器完成,裝載器還引導(dǎo)CPU從第一條指令開始執(zhí)行。1.2 軟件開發(fā)的基本方法軟件開發(fā)步驟說明程序需求分析問題設(shè)計問題解決的算法實現(xiàn)算法測試、檢查已完成的程序程序的維護與更新1.2.1 軟件開發(fā)步驟問題說明程序需求,弄清楚程序的目的并了解程序需求,目的是為了去除不重要的方面,找到根本問題所在分析確定問題的輸入(要處理的數(shù)據(jù))、問題的輸出(希望的結(jié)果)及解決方案附加的需求或約束條件;此外還應(yīng)確定結(jié)果應(yīng)以怎樣的格式顯
5、示,列出問題的變量及相互關(guān)系(一般可借助數(shù)學(xué)公式來表達(dá))例1-1:給定購買的蘋果質(zhì)量及每斤蘋果的價格,請計算并顯示蘋果的總價值。問題給定蘋果質(zhì)量及價格,計算蘋果的總價值分析問題輸入: 購買的蘋果質(zhì)量(以斤計)每斤蘋果的價錢(以元計)問題輸出: 蘋果的總價值(以元計)問題的公式:總價 = 單價 * 數(shù)量 設(shè)計設(shè)計算法解決問題,要求開發(fā)“算法”(一系列步驟);檢查該算法是否按預(yù)期目標(biāo)那樣解決問題自頂向下的設(shè)計也叫做分治法,將問題分解成多個子問題,分別解決:首先列出需要解決的最主要步驟(子問題),解決每個子問題最終解決初始問題大多數(shù)計算機算法都至少包含以下子問題:獲取數(shù)據(jù);執(zhí)行計算(算法細(xì)化,分解成
6、更詳細(xì)的步驟);顯示結(jié)果;桌面檢查。桌面檢查指逐步模擬算法的計算機執(zhí)行:模仿計算機認(rèn)真執(zhí)行算法的每一步,檢查算法是否按預(yù)期工作。在問題解決過程的早期找出錯誤并修改,可節(jié)省大量人力、時間實現(xiàn)編寫程序:用編程語言將算法的每個步驟轉(zhuǎn)換成一個或多個語句。測試檢查、測試需程序目標(biāo)是否按預(yù)期達(dá)到需要使用不同數(shù)據(jù)集合來多次運行程序,確保程序算法在提供的所有情況下都能正常工作維護一個程序的維護一般為5年或更長編程過程中使用科學(xué)規(guī)范的方法是很關(guān)鍵的,必須遵循那些已被大家廣泛接受的編程風(fēng)格和原則,避免所謂的編程技巧或捷徑。1.2.2 案例分析問題:給定蘋果的總重量及單價求總價分析:問題輸入:weightprice
7、 問題輸出:total_price計算:total_price = price * weight設(shè)計(初始算法)1、讀取每斤蘋果的單價及蘋果的質(zhì)量2、根據(jù)公式計算總價3、顯示輸出計算結(jié)果實現(xiàn)/*程序1-1.c,給定蘋果的總重量及單價,求總價*/#include void main( )int weight, price, total_price;/*定義變量*/printf (輸入蘋果質(zhì)量 ); /*輸入蘋果的質(zhì)量*/scanf (%d, &weight);price = 3;/*指定蘋果的單價*/total_price = price * weight; /*根據(jù)公式計算總價*/pr
8、intf (蘋果總價為 %d.n, total_price); /*顯示結(jié)果*/運行情況如下:輸入蘋果質(zhì)量 100蘋果總價為 300. 1.3 C語言出現(xiàn)的歷史及特點C語言的簡要歷史1963年,英國劍橋大學(xué)基于ALGOL 60推出了CPL語言;1967年,劍橋大學(xué)的Martin Richards對CPL做了簡化,推出了BCPL語言1969年AT&T貝爾實驗室用匯編語言初步完成了UNIX操作系統(tǒng);1970年K.Thompson對BCPL進一步簡化,推出了B語言,并用B語言完成了UNIX1972至1973年間,D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計了C語言,雖經(jīng)多次改進,但主要在貝爾實
9、驗室內(nèi)部使用,直到1975年UNIX第6版發(fā)布后,其突出優(yōu)點才引起人們的普遍關(guān)注1978年以后,C語言先后移植到大、中、小、微型計算機上,成為應(yīng)用最廣泛的幾種計算機語言之一1978年,貝爾實驗室正式發(fā)表了C語言1983年美國國家標(biāo)準(zhǔn)化協(xié)會ANSI整理了各種版本對C語言的發(fā)展和擴充,制定了新的標(biāo)準(zhǔn)ANSI CC語言的特點結(jié)構(gòu)化、模塊化的程序設(shè)計語言:以函數(shù)為單位組成,程序結(jié)構(gòu)完全由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)構(gòu)成,具有9種結(jié)構(gòu)控制語句具有高級語言和匯編語言的許多功能,可以編寫系統(tǒng)軟件,也可實現(xiàn)應(yīng)用軟件數(shù)據(jù)類型豐富,除各種數(shù)據(jù)結(jié)構(gòu)外,還具有特別的指針類型,能描述/實現(xiàn)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)許多I/O功能都
10、由函數(shù)提供;程序可移植性好,語言簡潔緊湊,使用靈活方便便于掌握運算符豐富,包含34種運算符,表達(dá)式類型多樣書寫靈活,一行可以寫多個語句,語法限制不太嚴(yán)格高效:生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高1.4 C語言的元素/* 計算蘋果的總價值計算蘋果的總價值. */# include void main( ) int weight, price; /* 蘋果的質(zhì)量和單價蘋果的質(zhì)量和單價 */ int total_price; /* 總價值總價值 */ /* 輸入蘋果的質(zhì)量,指定蘋果的單價輸入蘋果的質(zhì)量,指定蘋果的單價 */ printf(Enter the weight ); scanf(%d, &
11、amp;weight); price = 3; /* 根據(jù)公式計算總價根據(jù)公式計算總價 */ total_price = price * weight; /* 輸出計算結(jié)果輸出計算結(jié)果 */ printf(The total_price is %d.n, total_price); 圖1-4 計算蘋果總價值程序中的語言元素預(yù)處理命令注釋變量庫函數(shù)保留字分隔符圖中的C程序包含兩個部分:預(yù)處理命令和main函數(shù)源程序可使用預(yù)處理命令來改進程序設(shè)計環(huán)境、提高編程效率。預(yù)處理命令以“#”打頭。圖中用到的#include是文件包含預(yù)處理命令,使系統(tǒng)編譯源程序前將指定標(biāo)準(zhǔn)頭文件的定義插入到程序中main函
12、數(shù)是程序執(zhí)行的起點,每個C程序都有一個main函數(shù)注釋是指以“/*”開頭并以“*/”結(jié)束的部分,用來補充說明信息,提高程序的可閱讀性,不是程序的一部分保留字是C語言中具有特定含義的字,用于標(biāo)識標(biāo)準(zhǔn)庫函數(shù)、變量類型等。圖中其他字可以分成兩類:標(biāo)準(zhǔn)標(biāo)識符,與保留字一樣具有特殊含義,例如printf和scanf是標(biāo)準(zhǔn)I/O庫中定義的輸入函數(shù)和輸出函數(shù)的函數(shù)名??勺远x標(biāo)識符來命名用以保存數(shù)據(jù)和程序結(jié)果的變量及自定義函數(shù)。 例1-2:求兩個數(shù)中的較大者/*程序1-2.c,求兩個數(shù)中的較大者*/1 #include 2 void main( )/*主函數(shù)入口,程序執(zhí)行起點*/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 運行情況如下:Please enter a and b 8 5max = 8程序1-2.c包含兩個函數(shù):主函數(shù)main和自定義函數(shù)max。函數(shù)max的作用是比較x和y的大小并將較大值賦給變量z,返回值通過函數(shù)名帶回到主調(diào)函數(shù)main的調(diào)用點處為使自定義函數(shù)能被編譯系統(tǒng)正確識別和調(diào)用,需要在主調(diào)函數(shù)中對max進行函數(shù)聲明(第3行)。程序的第7行調(diào)用max函數(shù),并將實際參數(shù)a和b傳遞給max的形式參數(shù)x和y,此時程序?qū)⑥D(zhuǎn)去執(zhí)行12行開始的ma
15、x函數(shù)體,得到一個返回值(15行)函數(shù)max結(jié)束,程序的執(zhí)行返回到調(diào)用點處(第7行“=”右側(cè)),賦值運算符“=”將函數(shù)值賦給變量c。1.5 C程序的上機步驟啟動 Visual C+6.0步驟“開始”/ “程序”/“Microsoft Visual Studio 6.0”/“Microsoft 可正常啟動Visual C+6.0新建/打開C程序文件選擇“Files”/ “新建”菜單項,單擊如圖1-5所示的“文件”標(biāo)簽,左側(cè)列表框選中“C+ Source File”,右側(cè)文本框輸入源程序的文件名和存儲路徑,按“確定”按鈕,便可進入新的編輯窗口編輯源程序文件若源文件已經(jīng)存在,通過 “Files” /“Open”菜單項,在查找范圍中找到正確的文件夾,便可調(diào)入指定的程序文件保存程序選擇“Files”/ “Save”菜單項,系統(tǒng)將以默認(rèn)的C+程序擴展名*.cpp保存文件,也可指定文件擴展名為*.c圖1-5 VC6.0新建文件界面 編譯程序菜單“編譯”/ “編譯”或快捷鍵Ctrl+ F7,對編輯好的源程序文
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法律科技(LawTech)專員考試試卷及答案
- 2025年金溪縣遴選教師考試筆試試題【答案】
- 2025年海水淡化及水處理設(shè)備項目建議書
- 2025年山西省住房和城鄉(xiāng)建設(shè)廳下屬事業(yè)單位招聘考試筆試試題【答案】
- 2025年寧波市奉化區(qū)交通控股集團有限公司招聘考試筆試試題【答案】
- 2025年吉林省長白山公安局招聘警務(wù)輔助人員考試試題【答案】
- 2025年南寧市第十三中學(xué)招聘初中頂崗教師考試筆試試題【答案】
- 2025年樂山市沙灣區(qū)婦幼保健院招聘專技人員考試試題【答案】
- 2025年乙酸甲酯項目合作計劃書
- 大學(xué)生家具廠實習(xí)報告范文
- 小學(xué)一至六年級《體育與健康》健康課教案
- 2025中國臨床腫瘤學(xué)會CSCO非小細(xì)胞肺癌診療指南要點解讀課件
- 2025年全國工業(yè)鍋爐G1證理論考試筆試試題(400題)含答案
- 泛微實施面試題及答案
- 試驗檢測管理制度
- 管道施工應(yīng)急預(yù)案
- 貿(mào)易安全培訓(xùn)
- 2025年1月國家開放大學(xué)法學(xué)本科《中國法律史》期末紙質(zhì)考試試題及答案
- 初中地理跨學(xué)科主題學(xué)習(xí)設(shè)計與實施
- 2021衛(wèi)生監(jiān)督法律法規(guī)知識競賽題庫及答案
- 懲罰游戲?qū)W校班會公司早會小游戲晨會年會團建課堂娛樂互動340
評論
0/150
提交評論