版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章Java面向過程編程3.1Java的順序結(jié)構(gòu)3.2Java的分支結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)3.4結(jié)構(gòu)嵌套3.5函數(shù)本章小結(jié)
3.1Java的順序結(jié)構(gòu)
面向過程編程中,我們采用結(jié)構(gòu)化的方式進(jìn)行編程,每個結(jié)構(gòu)具有一個入口和一個出口,按照解決問題的步驟一個一個結(jié)構(gòu)順序地執(zhí)行,直到程序結(jié)束。這些結(jié)構(gòu)內(nèi)部包括各種基本語句,比如定義變量、變量賦值、分支、循環(huán)、輸入/輸出等,或者包括這些語句的嵌套。
相對于分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),順序結(jié)構(gòu)主要是指定義變量、變量賦值、表達(dá)式運算、輸入/輸出等語句。這里用一個C語言的程序示例來說明。該程序的功能是求兩個正整數(shù)的最大公約數(shù)。過程描述:從鍵盤輸入2個整數(shù),判斷是否為正數(shù),如果否,則結(jié)束函數(shù),返回0;如果都為正數(shù),則使用循環(huán)結(jié)構(gòu)來求兩個數(shù)的最大公約數(shù),最后輸出結(jié)果。
★與C語言的比較:
(1)?C語言的變量定義都要在程序開始處,而Java可以在程序需要的地方定義變量。
(2)?C語言的輸入/輸出使用scanf()和printf(),而Java的輸入使用Scanner類對象及相應(yīng)的成員函數(shù)進(jìn)行,輸出使用System.out.println()。
(3)?C語言的main函數(shù)使用return語句來結(jié)束函數(shù)運行,而Java使用“System.exit(0);”語句來終止程序。
程序結(jié)果:
3.2Java的分支結(jié)構(gòu)分支結(jié)構(gòu)主要有單分支、雙分支和多分支三種結(jié)構(gòu),程序運行到該結(jié)構(gòu)時根據(jù)分支條件來判斷走哪條“路”:(1)單分支:分支條件成立,執(zhí)行分支語句,否則不執(zhí)行。(2)雙分支:分支條件成立,執(zhí)行第一條分支語句,否則執(zhí)行第二條分支語句。(3)多分支:從第一個分支條件開始自上向下判斷分支條件,哪個分支條件成立就執(zhí)行哪條分支語句,然后退出整個多分支結(jié)構(gòu)。
3.2.1if語句
if語句的三種結(jié)構(gòu)形式如下:
(1)單分支結(jié)構(gòu):
(2)雙分支結(jié)構(gòu):
(3)多分支結(jié)構(gòu):
下面以雙分支的if-else結(jié)構(gòu)為例進(jìn)行說明,圖3-1是雙分支結(jié)構(gòu)的流程圖,程序從a進(jìn)入到該結(jié)構(gòu)碰到分支條件,當(dāng)條件為真時執(zhí)行S2語句(或語句塊),條件為假時執(zhí)行S1語句(或語句塊),不管執(zhí)行哪條語句,都要從b出口退出該分支結(jié)構(gòu)。簡單來說就是條件為真走S2這條“路”,條件為假走S1這條“路”,S1和S2這兩條路,只能選擇一條。圖3-1選擇結(jié)構(gòu)
分支條件說明:
(1)條件可以由關(guān)系表達(dá)式、邏輯表達(dá)式或布爾邏輯變量等構(gòu)成。
(2)關(guān)系表達(dá)式是由==、!=、<、>、>=、<=等這些關(guān)系運算符連接起來的運算式。
(3)邏輯表達(dá)式是由邏輯非(!)、邏輯與(&&)、邏輯或(||)三個邏輯運算符連接起來的運算式。
各運算符的優(yōu)先級別為:
!>算術(shù)運算符>關(guān)系運算符>&&>||>賦值運算符
(4)?&&?和?||?運算符的結(jié)合性是從左到右。
(表達(dá)式1)&&(表達(dá)式2)若表達(dá)式1為假,則表達(dá)式2不會被運行
(表達(dá)式1)||(表達(dá)式2)若表達(dá)式1為真,則表達(dá)式2不會被運行
(5)?0<x<10在數(shù)學(xué)中表示x大于0且小于10,但是在程序中表達(dá)這個條件時應(yīng)該寫為
x>0&&x<10
程序結(jié)果:
(3)不管使用哪種分支結(jié)構(gòu),程序的邏輯要正確,不要有漏洞。if只能管制一條語句,可以使用花括號將多條語句構(gòu)成一個{語句塊}歸屬if管制,if和else后面固定使用{}包圍分支語句(不管是一條還是多條)是一個良好的編程習(xí)慣。
3.2.2switch語句
Java與C語言一樣可以使用switch的多分支結(jié)構(gòu),switch語句的一般形式如下:
switch語法說明:
(1)?switch語句中的表達(dá)式類型只能是byte、short、int、char和枚舉等類型,在JDK1.7后可以有string表達(dá)式類型。
(2)?case后面的值1、值2、…、值n必須是整型、字符型常量以及字符串,各個case后面的常量值不能相同。
(3)?switch語句的主要流程是把表達(dá)式的值依次與各個case子句中的值比較,如果值相等,表示匹配成功,找到對應(yīng)的分支,執(zhí)行該case后面的子句。
(4)可以把switch后面的表達(dá)式看成選路的依據(jù),case后面的值是分支路徑的路標(biāo),如果表達(dá)式的值與路標(biāo)相同,表示找到了分支路徑,開始執(zhí)行該路徑下的語句。
(5)一般在每條分支最后都有break語句,作用是執(zhí)行完一個case分支后,使程序跳出switch語句,不再執(zhí)行其它語句;如果某個子句后不使用break語句,則繼續(xù)向下執(zhí)行后面的語句,直至碰到下一個break或運行到switch的右花括號結(jié)束。
(6)關(guān)于default語句,當(dāng)switch表達(dá)式的值與所有case語句中的值都不匹配時,就會找到default,開始執(zhí)行default分支的語句。
程序結(jié)果:
3.3循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)示意圖如圖3-2所示,當(dāng)滿足循環(huán)條件時就執(zhí)行循環(huán)語句,執(zhí)行完循環(huán)語句后,再進(jìn)行條件判斷,如果條件還為真,則繼續(xù)執(zhí)行循環(huán)語句,直到條件為假時退出循環(huán)體。
圖3-2循環(huán)結(jié)構(gòu)
3.3.1while循環(huán)結(jié)構(gòu)
while循環(huán)結(jié)構(gòu),又稱為當(dāng)型循環(huán):當(dāng)條件成立時,進(jìn)入循環(huán)體;當(dāng)條件不成立時,退出循環(huán)體。當(dāng)型結(jié)構(gòu)如圖3-2所示,一般結(jié)構(gòu)形式如下:
程序結(jié)果:
3.3.2for循環(huán)結(jié)構(gòu)
如果清楚知道循環(huán)次數(shù),或者循環(huán)的步進(jìn)變化很明確,這時使用for循環(huán)更為方便。從for循環(huán)的頭部就能很直觀地讀出循環(huán)的次數(shù),其結(jié)構(gòu)形式如下:
for循環(huán)的結(jié)構(gòu)如圖3-3所示。圖3-3for循環(huán)結(jié)構(gòu)
程序結(jié)果:
3.3.3循環(huán)控制語句
break語句:“break;”如果在循環(huán)體中被執(zhí)行,則退出整個循環(huán)結(jié)構(gòu);在多層嵌套循環(huán)中被執(zhí)行,則只能跳出本層循環(huán)結(jié)構(gòu)。
continue語句:“continue;”如果在循環(huán)體中被執(zhí)行,表示本次循環(huán)結(jié)束,進(jìn)入下一次循環(huán)。
break語句和continue語句在循環(huán)體中出現(xiàn)時一般都需要放入一個if分支結(jié)構(gòu)中,即在某個條件成立時,break語句用于退出所在循環(huán),continue語句則結(jié)束本次循環(huán)而繼續(xù)下一次循環(huán)。
3.4結(jié)構(gòu)嵌套結(jié)構(gòu)嵌套主要指的是順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)語句相互嵌套,比如在循環(huán)結(jié)構(gòu)中有循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)中有分支結(jié)構(gòu),分支結(jié)構(gòu)中有循環(huán)結(jié)構(gòu)等,如何正確地完成這些結(jié)構(gòu)的嵌套呢?這需要根據(jù)解決問題的算法來進(jìn)行,在編程之前需要對問題進(jìn)行解讀,對算法進(jìn)行分解,分解的步驟邏輯要正確,思路要清晰,從而才能規(guī)劃好程序的結(jié)構(gòu),有條不紊地進(jìn)行編程。分解好算法步驟之后要用正確的語法來實現(xiàn)這些步驟,并通過運行、調(diào)試解決程序中出現(xiàn)的問題,直到得到正確的程序。
程序示例3-8從鍵盤輸入一個正整數(shù)n(n>2),求小于n的所有素數(shù)之和。
如圖3-4所示,對這個問題進(jìn)行算法分解,將程序分為兩個主要結(jié)構(gòu):1是如何判斷一個數(shù)是否為素數(shù),2是一個循環(huán)結(jié)構(gòu),對2~n-1所有的數(shù)依次進(jìn)行判斷。首先要能完成1結(jié)構(gòu),然后將1結(jié)構(gòu)嵌入到2循環(huán)結(jié)構(gòu)中。下面我們將依次完成這個程序。圖3-4結(jié)構(gòu)嵌套
(2)求小于n的所有素數(shù)之和(結(jié)構(gòu)2)
將上述程序段1嵌入到2~n-1循環(huán)中,重新分配變量?,F(xiàn)在是對2~n-1中的每個數(shù)i進(jìn)行判斷,如果是素數(shù)則加入到sum中,否則循環(huán)繼續(xù)。
程序結(jié)果:
3.5函數(shù)
3.5.1函數(shù)的定義與調(diào)用在面向過程編程中,函數(shù)是非常重要的。如何定義和調(diào)用函數(shù),對于C語言和Java都是必須掌握的重要知識點。函數(shù)定義時要注意的三個要素(圖3-5):(1)函數(shù)參數(shù):調(diào)用該函數(shù)時要傳入什么數(shù)據(jù)。(2)函數(shù)返回值類型:函數(shù)調(diào)用結(jié)束,返回一個什么類型的數(shù)據(jù)。(3)函數(shù)體:代表了該函數(shù)要完成的任務(wù)或提供的功能。
圖3-5函數(shù)三要素
可以將上一節(jié)判斷一個數(shù)是否為素數(shù)的結(jié)構(gòu)1程序,寫成一個函數(shù)isPrime,聲明為
publicstaticbooleanisPrime(intn)
說明:
(1)?main函數(shù)如果要直接調(diào)用該函數(shù),該函數(shù)也需要static修飾。
(2)該函數(shù)傳入一個正整數(shù)n,用于判斷該n是否為素數(shù)。
(3)該函數(shù)返回值為布爾類型,返回true則表示n是素數(shù),返回false則表示n不是素數(shù)。
(4)函數(shù)體功能如函數(shù)名isPrime所示,用以判斷某個數(shù)是否為素數(shù)。
程序結(jié)果:
3.5.2Java函數(shù)與幫助文檔
1.?Java編程接口
應(yīng)用程序編程接口(ApplicationProgrammingInterface,API)是一組預(yù)定義函數(shù)總和,目的是提供應(yīng)用程序,以方便開發(fā)人員訪問這些函數(shù)的聲明和功能,而無需訪問源碼或理解內(nèi)部工作機制的細(xì)節(jié)。Java具有一個很龐大的API,Java程序員能夠使用這些函數(shù)來構(gòu)建自己的程序,減輕工作量。
打開JDK1.6API幫助文檔,如圖3-6所示。
圖3-6JDK幫助文檔
2.包和類的概念
Java的基本程序組織單位是類,類中可以有多個函數(shù)(成員方法)。由于Java編程面向各個領(lǐng)域,預(yù)定義的類非常多,JDK1.6版本大概有3700多個類。為了方便管理這么多類,這些類被分類放在不同的包中,包就是文件夾。比如java.io包,就是java/io文件夾,其中有與Java輸入/輸出相關(guān)的類80多個,如File文件類、FileReader文件輸入類、FileWriter文件輸出類、BufferedReader帶緩沖的輸入類、BufferedWriter帶緩沖的輸出類等等,這些類中有很多成員函數(shù),提供了相應(yīng)的函數(shù)功能供程序員使用。
點擊圖3-6的“顯示”按鈕,可以展開“索引”和“搜索”選項卡,其中用的比較多的是“索引”,在“索引”中輸入想要查詢的類名,找到類才能找到想要找的函數(shù),如圖3-7所示。
圖3-7JDK幫助文檔索引
3.幫助文檔的使用
以字符串類String為例(該類在后面要詳細(xì)說明),輸入String后點擊進(jìn)入,可以看到對String類的描述,如圖3-8所示。圖3-8查詢String類
雙擊左邊的String,右邊出現(xiàn)String類的具體描述,向下拉動右邊的滾動條,可以看到對字符串處理的函數(shù)說明在“方法摘要”里,如圖3-9所示。
圖3-9查詢String類的函數(shù)
點擊第一個函數(shù)鏈接,可以進(jìn)一步看到該函數(shù)的詳細(xì)說明,如圖3-10所示。圖3-10charAt函數(shù)說明
API中的兩種函數(shù)為對象成員函數(shù)和類成員函數(shù)。
(1)對象成員函數(shù)。上述第一個函數(shù)charAt就是對象成員函數(shù),即首先由String類產(chǎn)生字符串對象,再由對象來調(diào)用的函數(shù)。
charAt函數(shù)使用時需要傳入一個整數(shù),表示字符串的下標(biāo)索引,某個字符串對象調(diào)用該函數(shù),能夠?qū)⒃撟址畬ο笾付ㄏ聵?biāo)索引處的字符返回,如charc="abcdef".charAt(3)返回字符'd'。(注:字符串下標(biāo)從0開始計數(shù),字符串常量也是一個字符串對象。)
"abcdef"是一個字符串對象,該對象采用成員運算符(.)調(diào)用charAt函數(shù),找到第四個字符返回,所以該函數(shù)的調(diào)用返回字符?'d'?賦值給c變量。
我們可以看到圖3-9中charAt后面的函數(shù)全是對象成員函數(shù),直到最后一個copyValueOf函數(shù)。
(2)類成員函數(shù)。圖3-9的最后一個函數(shù)copyValueOf和上面函數(shù)的不同之處在于它有一個static靜態(tài)修飾符,如圖3-11所示,這種帶static修飾符的函數(shù)稱為類成員函數(shù)。調(diào)用該函數(shù)可以不用產(chǎn)生對象,直接由類名調(diào)用:
Strings=String.copyValueOf(ch);
上述語句表示,調(diào)用字符串類的copyValueOf函數(shù),將字符數(shù)組ch中的所有字符構(gòu)造成為一個字符串對象返回給s對象。圖3-11copyValueOf函數(shù)說明
從上述兩個函數(shù)的查詢可以看出,要使用Java預(yù)定義的函數(shù),首先要找到類,類中的函數(shù)分為對象成員函數(shù)和類成員函數(shù),對象成員函數(shù)的使用必須要先產(chǎn)生對象,由對象來調(diào)用函數(shù),而類成員函數(shù)可以使用類名,也可以使用對象名來調(diào)用。
查詢幫助文檔,使用Java的預(yù)定義函數(shù)來幫助構(gòu)建程序,使得Java編程者更多關(guān)注如何解決問題和如何構(gòu)建程序,而屏蔽了一些具體函數(shù)的編寫,這樣大大減輕了Java程序員的工作量,也是Java和C語言編程方式的一個不同之處。
本章小結(jié)
1.Java面向過程編程源于C語言,同樣是結(jié)構(gòu)化的編程,具有順序、分支和循環(huán)三種結(jié)構(gòu)。2.順序結(jié)構(gòu)是面向過程
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼板折邊機課程設(shè)計
- 2024新娘跟妝合同樣本
- 渡槽課程設(shè)計表
- 員工滿意度與留存率
- 醫(yī)院急救室物資保障實施方案
- 醫(yī)療器械采購方案設(shè)計
- 校園智能監(jiān)控系統(tǒng)建設(shè)方案
- 航空航天行業(yè)網(wǎng)絡(luò)安全攻防演練方案
- 2024年品牌授權(quán)合同書
- 2024企業(yè)授權(quán)經(jīng)營委托協(xié)議
- 廣東省廣州市2024-2025學(xué)年九年級上學(xué)期期中英語試題(無答案)
- 2024-2025學(xué)年人教版物理八年級上冊 期中考試物理試卷
- 期中測試卷(1-3單元)(試題)-2024-2025學(xué)年六年級上冊數(shù)學(xué)蘇教版
- 物資、百貨、五金采購 投標(biāo)方案(技術(shù)方案)
- KF思維技術(shù)-在合作中解決問題與決策完整課件
- 小學(xué)數(shù)學(xué)西南師大五年級上冊四小數(shù)混合運算小數(shù)混合運算 PPT
- 亞馬遜品牌授權(quán)書(英文模板)
- 建筑制圖與識圖教案
- 村廉政風(fēng)險點及防控措施一覽表檔
- 門座式起重機檢驗規(guī)程
- 工程咨詢收費標(biāo)準(zhǔn)(國家計委1283 號文)
評論
0/150
提交評論