第一章 程序設(shè)計(jì)的基本概念_第1頁(yè)
第一章 程序設(shè)計(jì)的基本概念_第2頁(yè)
第一章 程序設(shè)計(jì)的基本概念_第3頁(yè)
第一章 程序設(shè)計(jì)的基本概念_第4頁(yè)
第一章 程序設(shè)計(jì)的基本概念_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言程序設(shè)計(jì)第1章程序設(shè)計(jì)的基本概念11.1程序和程序設(shè)計(jì)1.1.1C程序

計(jì)算機(jī)現(xiàn)已廣泛的應(yīng)用于社會(huì)的各個(gè)領(lǐng)域,成為大眾化的現(xiàn)代工具.其實(shí),計(jì)算機(jī)不過(guò)是一種具有內(nèi)部存儲(chǔ)能力,由程序自動(dòng)控制的電子設(shè)備.人們將需要計(jì)算機(jī)做的工作寫成一定形式的指令,并把它們存儲(chǔ)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)器中,當(dāng)人們給出了命令之后,它就按指令順序自動(dòng)進(jìn)行操作.人們把這種可以連續(xù)執(zhí)行的一條指令的的集合稱為”程序”.可以說(shuō),程序就是人與機(jī)器”對(duì)話”的語(yǔ)言,也就是我們常說(shuō)的”程序設(shè)計(jì)語(yǔ)言”.

目前,在社會(huì)上使用的程序設(shè)計(jì)語(yǔ)言有上百種,它們中的大多數(shù)被稱為計(jì)算機(jī)的“高級(jí)語(yǔ)言”,如VisualBasic、C++、Java以及C語(yǔ)言等.這些語(yǔ)言都是用接近人們習(xí)慣的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言作為表達(dá)式.

但是,對(duì)計(jì)算機(jī)來(lái)說(shuō),它并不能直接識(shí)別由高級(jí)語(yǔ)言編寫的程序,它只能接受和處理由來(lái)0和1的代碼構(gòu)成的二進(jìn)制指令或數(shù)據(jù).由于這種形式的指令是面向機(jī)器的,因次也被稱為”機(jī)器語(yǔ)言”.

我們把由高級(jí)語(yǔ)言編寫的程序稱為”源程序”,把由二進(jìn)制代碼表示的程序稱為”目標(biāo)程序”.為了把源程序轉(zhuǎn)化成機(jī)器能夠接受的目標(biāo)程序,軟件工作者編制了一系列軟件.通過(guò)這些軟件可以把用戶按規(guī)定語(yǔ)法寫出來(lái)的語(yǔ)句一一翻譯成二進(jìn)制的機(jī)器指令.這種具有翻譯功能的軟件稱為”編譯程序”,每種高級(jí)語(yǔ)言都有它對(duì)應(yīng)的編譯程序,C語(yǔ)言編譯程序就是這樣的一種軟件,其功能如圖1.1所示:C語(yǔ)言源程序C語(yǔ)言編譯程序二進(jìn)制機(jī)器指令我們所寫的每條C語(yǔ)句,經(jīng)過(guò)編譯最終都將轉(zhuǎn)換成二進(jìn)制的機(jī)器指令.由C語(yǔ)言構(gòu)成的指令序列稱為C源程序;按C語(yǔ)言的語(yǔ)法編寫C的過(guò)程,稱為C語(yǔ)言的代碼編寫.

C源程序經(jīng)過(guò)編譯程序編譯之后生成一個(gè)后綴為.OBJ的二進(jìn)制文件(稱為目標(biāo)文件),然后由稱為”連接程序”(Link)的軟件,把.OBJ文件與C語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為.EXE的可執(zhí)行文件.在操作系統(tǒng)下,只需點(diǎn)擊或輸入此文件的名字(而不必輸入后綴.EXE),該文件就可運(yùn)行.1.1.2程序設(shè)計(jì)簡(jiǎn)單的程序設(shè)計(jì)一般包含以下幾個(gè)部分:1.確定數(shù)據(jù)結(jié)構(gòu).2.確定算法.3.編碼.4.在計(jì)算機(jī)上調(diào)試程序.5.整理并寫出文檔資料.1.2算法

學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的目的,是要用語(yǔ)言作為工具,設(shè)計(jì)出可供計(jì)算機(jī)運(yùn)行的程序.

在編程除了合理的數(shù)據(jù)結(jié)構(gòu)外,最關(guān)鍵的就是算法.

著名計(jì)算機(jī)科學(xué)家沃思提出一個(gè)公式數(shù)據(jù)結(jié)構(gòu)+算法=程序算法的概念和特性:算法是為解決某個(gè)特定的問(wèn)題而采取的確定且有限的步驟.

算法的特性:1.有窮性.2.確定性.3.可行性.4.有零個(gè)或多個(gè)輸入.5.有一個(gè)或多個(gè)輸出.算法可以用各種方法來(lái)描述,常用大的是偽代碼和流程圖.偽代碼是一種近似于高級(jí)語(yǔ)言但又不受語(yǔ)法約束的一種語(yǔ)言描述方式,在英國(guó)國(guó)家中使用.流程圖也是描述算法很好的工具,一般的流程圖由圖1.2中所示的幾中基本圖形組成.開始或終止框處理框輸入輸出框判斷框流程線連接點(diǎn)圖1.2一般的流程圖所用的幾種基本圖形隨著結(jié)構(gòu)化程序設(shè)計(jì)方法的出現(xiàn),1973年美國(guó)學(xué)者I.Nassi和B.Shniedermant提出了一種新的流程圖,這種流程圖完全去掉了流程線,算法的每一步都用一個(gè)矩形框來(lái)描述,把一個(gè)個(gè)矩形框按執(zhí)行的次序連接起來(lái)就是一個(gè)完整的算法描述.這種流程圖用兩位學(xué)者名字的第一個(gè)英文字母命名,稱為N-S流程圖.在下一節(jié)將會(huì)介紹.1.3結(jié)構(gòu)化程序設(shè)計(jì)和??旎Y(jié)構(gòu)1.3.1結(jié)構(gòu)化程序結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)組成.1.順序結(jié)構(gòu).

在本書的第三章將要介紹的如賦值語(yǔ)句、輸入、輸出語(yǔ)句都都可以構(gòu)成順序結(jié)構(gòu).執(zhí)行時(shí)將按語(yǔ)句在程序中的先后順序逐條執(zhí)行,沒(méi)有分支,沒(méi)有轉(zhuǎn)移.順序結(jié)構(gòu)可用圖1.3所示的流程圖表示,其中(a)是一般的流程圖,(b)是N-S流程圖.語(yǔ)句1語(yǔ)句2(a)一般流程圖語(yǔ)句1語(yǔ)句2(b)N-S流程圖圖1.3順序結(jié)構(gòu)流程圖2.選擇結(jié)構(gòu).

在本書的第四章中介紹if語(yǔ)句、switch

語(yǔ)句都可構(gòu)成選擇結(jié)構(gòu),當(dāng)執(zhí)行這些語(yǔ)句時(shí),將根據(jù)不同的條件去執(zhí)行不同分支中的語(yǔ)句.選擇結(jié)構(gòu)可用圖1.4所示的流程圖表示,其中(a)是一般的流程圖,(b)是N-S流程圖.判斷表達(dá)式滿足語(yǔ)句1語(yǔ)句2判斷表達(dá)式滿足不滿足語(yǔ)句1語(yǔ)句2不滿足a)一般流程圖(b)N-S流程圖圖1.4選擇結(jié)構(gòu)的流程圖3.循環(huán)結(jié)構(gòu)

在第五章中介紹不同形式的循環(huán)結(jié)構(gòu).它們將根據(jù)各自的條件,使同一條語(yǔ)句重復(fù)執(zhí)行多次或一次也不執(zhí)行.循環(huán)結(jié)構(gòu)的流程圖如圖1.5和1.6所示,每個(gè)圖中(a)是一般的流程圖,(b)是N-S流程圖.圖1.5是當(dāng)型循環(huán)圖.當(dāng)型循環(huán)的特點(diǎn)是:當(dāng)指定的條件滿足時(shí),就執(zhí)行循環(huán)體,否則就不執(zhí)行.圖1.6是直到型循環(huán)流程圖.直到循環(huán)的特點(diǎn)是:執(zhí)行循環(huán)體直到指定的條件滿足時(shí)就不再執(zhí)行循環(huán)體.判斷表達(dá)式滿足循環(huán)體不滿足a)一般流程圖循環(huán)體當(dāng)判斷條件滿足(b)N-S流程圖圖1.5當(dāng)型循環(huán)流程圖判斷表達(dá)式滿足循環(huán)體不滿足循環(huán)體直到判斷表達(dá)式滿足(a)一般流程圖(b)N-S流程圖圖1.6直到型循環(huán)流程圖例1.1先后輸入若干個(gè)整數(shù),要求打印出其中最大的數(shù),當(dāng)輸入的數(shù)小于0時(shí)結(jié)束.用N-S流程圖表示算法.

解題的思路是:先輸入一個(gè)數(shù),在沒(méi)有其他數(shù)參加比較之前,它顯然是當(dāng)前最大的數(shù),把它放到變量max中.讓max始終存放當(dāng)前已比較過(guò)的數(shù)中最大值.然后輸入第二個(gè)數(shù),并與max比較,如果第二個(gè)數(shù)大于max,則用第二個(gè)數(shù)取代max中原來(lái)的值.如此先后輸入和比較,每次比較后都將值大者放在max中,直到輸入的數(shù)小于0時(shí)結(jié)束.最后max中值就是所有輸入數(shù)中的最大值.

用N-S流程圖(見(jiàn)圖1.7).讀入一個(gè)數(shù)給XMax=x當(dāng)x>0時(shí)X>max是否Max=x讀入一個(gè)數(shù)給出x輸出max1.3.2模塊化結(jié)構(gòu)

當(dāng)計(jì)算機(jī)在處理較復(fù)雜的任務(wù)時(shí),所編寫的程序經(jīng)常由上萬(wàn)條語(yǔ)句組成,需要由許多人來(lái)共同完成.這時(shí)常常把這個(gè)復(fù)雜的任務(wù)分解為若干個(gè)子任務(wù),每個(gè)子任務(wù)又分解很多個(gè)小任務(wù),每個(gè)小任務(wù)只完成一項(xiàng)簡(jiǎn)單的功能.在程序設(shè)計(jì)時(shí),用一個(gè)個(gè)小模塊來(lái)實(shí)現(xiàn)這些功能,每個(gè)程序設(shè)計(jì)人員分別完成一個(gè)或多個(gè)小模塊.我們稱這樣的程序設(shè)計(jì)方法為”模塊化”的方法,由一個(gè)個(gè)功能模塊構(gòu)成的程序結(jié)構(gòu)為模塊化結(jié)構(gòu).

由于把一個(gè)大程序分解成若干相對(duì)獨(dú)立的子程序,每個(gè)子程序的代碼一般不超過(guò)一頁(yè)紙,因此對(duì)程序設(shè)計(jì)人員來(lái)說(shuō),編寫代碼不在變得困難.這時(shí)只對(duì)程序之間的數(shù)據(jù)傳遞做出統(tǒng)一規(guī)范,同一軟件可由一組人員同時(shí)進(jìn)行編寫,分別進(jìn)行調(diào)試,這就大大提高了程序編制的效率.

軟件編制人員在進(jìn)行程序設(shè)計(jì)的時(shí)候,首先應(yīng)考率主程序的算法,寫出主程序后再動(dòng)手逐步完成子程序的調(diào)用.對(duì)于這些子程序也可用調(diào)試主程序的同樣的方法逐步完成其下一層子程序的調(diào)用.這就是自頂向下、逐步細(xì)化、模塊化的程序設(shè)計(jì)方法.習(xí)題:1.在VC6.0環(huán)境中用run命令運(yùn)行一個(gè)程序時(shí),程序的后綴是___.2.C語(yǔ)言源程序文件名的后綴是__;經(jīng)過(guò)編譯之后的后綴是__;經(jīng)過(guò)連接后,生成的后綴是__;3.結(jié)構(gòu)化程序由___,__,__三種基本結(jié)構(gòu)組成.4.上機(jī)掌握在VC6.0如何運(yùn)行c程序.程序1#include<stdio.h>void

main(){

printf("ThisisaCprogram.\n");

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論