資源描述:
《程序設(shè)計(jì)和軟件開(kāi)發(fā)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第4章程序設(shè)計(jì)和軟件開(kāi)發(fā)4.1高級(jí)語(yǔ)言產(chǎn)生4.1.1從機(jī)器語(yǔ)言到高級(jí)語(yǔ)言程序是計(jì)算機(jī)完成某個(gè)任務(wù)的一系列操作步驟。為了讓計(jì)算機(jī)解決一個(gè)實(shí)際問(wèn)題,必須事先用計(jì)算機(jī)語(yǔ)言編制好程序。編制程序可以使用機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。1.機(jī)器語(yǔ)言因?yàn)闄C(jī)器指令是二進(jìn)制代碼,用機(jī)器語(yǔ)言編寫(xiě)程序就是要編出由一條條二進(jìn)制代碼組成的程序。2.匯編語(yǔ)言為了克服機(jī)器語(yǔ)言的缺點(diǎn),人們發(fā)明了匯編語(yǔ)言。匯編語(yǔ)言是在機(jī)器語(yǔ)言的基礎(chǔ)上符號(hào)化而成的,即采用英文單詞或縮寫(xiě)表示的“助記符”來(lái)代表機(jī)器指令。由于計(jì)算機(jī)只能識(shí)別機(jī)器語(yǔ)言,因此需要將匯編語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序(目標(biāo)程序)才能執(zhí)行
2、。如圖4-1所示。圖4-1匯編語(yǔ)言源程序的執(zhí)行過(guò)程【例4.1】已知三角形的三條邊長(zhǎng)分別是3、4、5地址單元中,計(jì)算三角形的周長(zhǎng)。求這個(gè)三角形周長(zhǎng)機(jī)器語(yǔ)言程序和相應(yīng)的匯編語(yǔ)言程序如圖4-2所示。。圖4-2機(jī)器語(yǔ)言程序和匯編語(yǔ)言程序3.高級(jí)語(yǔ)言匯編語(yǔ)言程序仍然需要熟悉計(jì)算機(jī)指令,編寫(xiě)程序仍然非常繁瑣。為了克服匯編語(yǔ)言的缺陷,提高編寫(xiě)和維護(hù)程序的效率,一種接近于普通的數(shù)學(xué)語(yǔ)言和自然語(yǔ)言(主要指英語(yǔ))的程序設(shè)計(jì)語(yǔ)言應(yīng)允而生了,這就是高級(jí)語(yǔ)言。用高級(jí)語(yǔ)言編寫(xiě)的程序稱為“源程序”。目前比較流行的高級(jí)語(yǔ)言有C、C++、Java、C#、VisualBasicl等?!?/p>
3、例5.2】用C語(yǔ)言實(shí)現(xiàn)計(jì)算三角形的周長(zhǎng)。設(shè)三角形的3條邊的長(zhǎng)度為整數(shù)。86計(jì)算三角形的周長(zhǎng)的C語(yǔ)言程序如下:#includevoidmain(){unsignedintlength,a,b,c;//聲明存放三角形3條邊和周長(zhǎng)變量printf("a,b,c=");//顯示輸入提示信息“a,b,c=”scanf("%d,%d,%d",&a,&b,&c);//輸入三角形的3條邊長(zhǎng)到a,b,c變量中l(wèi)ength=a+b+c;//計(jì)算周長(zhǎng)printf("thegirthis:%d",length);//在屏幕上顯示周長(zhǎng)計(jì)算結(jié)果}由于計(jì)算機(jī)
4、只能執(zhí)行機(jī)器語(yǔ)言程序,因此用高級(jí)語(yǔ)言編寫(xiě)的“源程序”也必須翻譯成機(jī)器語(yǔ)言程序,計(jì)算機(jī)才能執(zhí)行。負(fù)責(zé)完成翻譯任務(wù)的稱為“編譯程序”。高級(jí)語(yǔ)言源程序的編譯連接執(zhí)行過(guò)程如圖4-3所示。圖4-3編譯執(zhí)行過(guò)程4.1.2高級(jí)語(yǔ)言開(kāi)發(fā)環(huán)境用戶通過(guò)文本編輯器(例如:Windows附件中的記事本)錄入高級(jí)語(yǔ)言程序形成“源程序”文件。例如,上面的“計(jì)算三角形的周長(zhǎng)的C語(yǔ)言程序”可以保存為ex4-2.c文件?!霸闯绦颉蔽募ㄟ^(guò)編譯器把高級(jí)語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序,然后進(jìn)行連接后形成可執(zhí)行的文件,運(yùn)行可執(zhí)行的文件即可實(shí)現(xiàn)程序的功能。通過(guò)高級(jí)語(yǔ)言集成開(kāi)發(fā)環(huán)境(IDE)軟件,
5、可以編寫(xiě)程序、編譯、連接和運(yùn)行均在其中完成。例如:Turboc2.0、VisualC++6.0都是C語(yǔ)言的集成開(kāi)發(fā)環(huán)境。下面以VisualC++6.0集成開(kāi)發(fā)環(huán)境(如圖4-4所示)介紹C語(yǔ)言開(kāi)發(fā)過(guò)程。運(yùn)行編寫(xiě)程序連接編譯86圖4-4C語(yǔ)言的開(kāi)發(fā)環(huán)境VisualC++6.01.編寫(xiě)程序單擊“新建文本文件”按鈕,輸入“編寫(xiě)程序”程序,保存為“ex52.c”文件。2.編譯、連接單擊“Compile”,編譯“ex52.c”源程序文件為機(jī)器語(yǔ)言文件;單擊“Build”,將編譯形成文件進(jìn)行“連接”形成可執(zhí)行的文件。3.運(yùn)行在編譯連接后,單擊“BuildExecu
6、te”,運(yùn)行可執(zhí)行文件。系統(tǒng)顯示:a,b,c=用戶輸入:3,4,5系統(tǒng)顯示:thegirthis:12運(yùn)行結(jié)果如圖4-5所示。圖4-5運(yùn)行的結(jié)果4.2高級(jí)語(yǔ)言程序設(shè)計(jì)基礎(chǔ)程序是對(duì)解決問(wèn)題的步驟的描述。編寫(xiě)程序的前提是已經(jīng)知道如何解決這個(gè)問(wèn)題,例如:求一元二次方程ax2+bx+c=0的實(shí)數(shù)根。如果沒(méi)有中學(xué)數(shù)學(xué)的知識(shí),當(dāng)然就不知道如何解決這個(gè)問(wèn)題,編寫(xiě)解決這個(gè)問(wèn)題的程序就無(wú)從談起。4.2.1算法算法就是解決問(wèn)題的方法。算法需要描述出來(lái),別人才能知道,自己編寫(xiě)程序也才比較容易。描述算法有多種方法,例如:文字寫(xiě)出來(lái),用流程圖表達(dá)等。1.算法文字描述例如:求一
7、元二次方程ax2+bx+c=0(設(shè)a≠0)的實(shí)數(shù)根。對(duì)應(yīng)算法描述如下:第1步:輸入系數(shù)a、b、c。第2步:計(jì)算d=b2-4ac。第3步:若d>0計(jì)算xl=,x2=;輸出兩個(gè)實(shí)數(shù)根為xl和x2,轉(zhuǎn)第6步;否則,轉(zhuǎn)第4步。86第4步:若d<0,則輸出“沒(méi)有實(shí)數(shù)根”,轉(zhuǎn)第6步;否則轉(zhuǎn)第5步。第5步:計(jì)算xl=x2=,輸出“兩個(gè)相同的實(shí)數(shù)根”為xl,轉(zhuǎn)第6步。第6步:結(jié)束。用文字描述簡(jiǎn)單算法應(yīng)該是可以的,但是描述復(fù)雜算法就不那么方便了,人們想出了多種辦法,其中流程圖就是比較常用的一種。1.算法流程圖描述“流程圖”又稱為“框圖”,它用標(biāo)準(zhǔn)的圖形元素來(lái)描述算法步
8、驟,結(jié)構(gòu)一目了然。組成流程圖的常用圖形元素如圖4-6所示。圖4-6組成流程圖的常用圖素例如:求“一元二次方程