算法分析與設(shè)計(jì)第一二三章2(描述算法)_第1頁
算法分析與設(shè)計(jì)第一二三章2(描述算法)_第2頁
算法分析與設(shè)計(jì)第一二三章2(描述算法)_第3頁
算法分析與設(shè)計(jì)第一二三章2(描述算法)_第4頁
算法分析與設(shè)計(jì)第一二三章2(描述算法)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 第一章第一章 數(shù)學(xué)預(yù)備知識(shí)數(shù)學(xué)預(yù)備知識(shí) 第二章第二章 導(dǎo)引與基本數(shù)據(jù)結(jié)構(gòu)導(dǎo)引與基本數(shù)據(jù)結(jié)構(gòu)第三章第三章 遞歸算法遞歸算法武漢科技大學(xué)理學(xué)院信息與計(jì)算科學(xué)系楊 波cookie_2008年9月2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 SPARKS語言語言n教材為描述算法選用的一種計(jì)算機(jī)語言n類PASCAL語言n結(jié)構(gòu)化設(shè)計(jì)n凡掌握一門程序設(shè)計(jì)語言的人都能很快看懂2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 基本語法成分基本語法成分1)數(shù)據(jù)類型 整型 integer 實(shí)型 float 布爾型 boolean 字符型 cha

2、r2)變量聲明 類型說明符 變量 integer i,j boolean b char c3)數(shù)組 任意整數(shù)下標(biāo) integer A(1:5,7:20) integer B(5,7:20) 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 4)賦值運(yùn)算 (變量)(表達(dá)式) x 2 + x5)邏輯運(yùn)算:and or not6)關(guān)系運(yùn)算: 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 7)控制結(jié)構(gòu): 順序:(略) 分支: if cond then S1 else S2 endif case :cond 1: S1 :cond 2: S2 :cond n: Sn :else: Sn+

3、1 endcase循環(huán):while cond do Srepeatloop Suntil cond repeatfor vblestart to finish by increment do Srepeat 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 8) 函數(shù)的定義與調(diào)用 過程定義 procedure NAME(參數(shù)表) (說明部分) S end NAME 過程的調(diào)用: CALL 過程名 函數(shù)定義 類型名 procedure NAME(參數(shù)表) (說明部分) S return (表達(dá)式) end NAME 函數(shù)的引用:x function(參數(shù));2008-09-01版權(quán)所有:楊

4、波,武漢科技大學(xué)理學(xué)院 9) 變量的分類 a)根據(jù)數(shù)據(jù)類型分類 整型、實(shí)型、字符型等 b)根據(jù)作用域分類: 全程變量、局部變量、形式參數(shù) c)根據(jù)是否帶入、帶出數(shù)據(jù)值/結(jié)果分類: in型變量 out型變量 inout型變量 邊界效應(yīng):改變了參變量或全程變量的值 函數(shù):通過函數(shù)值返回輸出結(jié)果,沒有邊界效應(yīng) 純過程:沒有函數(shù)值返回,只通過邊界效應(yīng)帶出輸出結(jié)果2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 10) 特殊語句 a)exit 退出當(dāng)前一層的循環(huán) b)return 退出過程 return(表達(dá)式) : 函數(shù)返回結(jié)果 c)goto 無條件轉(zhuǎn)向語句 goto label 11) 遞歸

5、a)直接遞歸:過程中包含對(duì)自身的調(diào)用 b)間接遞歸:間接調(diào)用自身12) 輸入輸出 read、print13)注釋 /注釋/2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 JAVA語言語言n教學(xué)算法大多使用JAVA語言n面向?qū)ο蟮恼Z言n使算法結(jié)構(gòu)緊湊、可讀性強(qiáng)2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java程序結(jié)構(gòu)(程序結(jié)構(gòu)(1)n應(yīng)用程序和appletqJava應(yīng)用程序一定有一個(gè)主方法main,而applet的主方法名為init。qJava應(yīng)用程序可在命令行中用命令語句:Java programNameqJava的applet必須嵌入HTML文件,由Web瀏覽器或app

6、let閱覽器來執(zhí)行qJava程序必須先編譯后執(zhí)行。系統(tǒng)在編譯時(shí)將Java源程序轉(zhuǎn)化為Java字節(jié)碼(bytecode)。Java源程序文件的后綴為.java,編譯后字節(jié)碼文件的后綴為.class。 qJava字節(jié)碼可以看作是在一臺(tái)虛擬計(jì)算機(jī)即Java虛擬機(jī)(JVM)上運(yùn)行的語言。本地計(jì)算機(jī)通過Java虛擬機(jī)解釋運(yùn)行Java程序。 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java程序結(jié)構(gòu)(程序結(jié)構(gòu)(1)Java源代碼Java字節(jié)碼編譯JVMJVMJVM操作系統(tǒng)操作系統(tǒng)操作系統(tǒng)硬件硬件硬件2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java程序結(jié)構(gòu)(程序結(jié)構(gòu)(2)n包q

7、Java程序和類可以包(packages)的形式組織管理。qJava自帶的包有java.awt,java.io,java.lang,java.util等。 qJava用戶可根據(jù)需要將自己的程序組織成各種應(yīng)用包。 nImport語句 qJava程序中可以用import語句加載所需的包。 qimport java.io.*;語句加載java.io包。語句import java.io.PrintStream;則加載java.io包中的PrintStream類。2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java數(shù)據(jù)類型數(shù)據(jù)類型Java的基本數(shù)據(jù)類型類型缺省值 分配空間(位)取值范圍boo

8、leanfalse1true, falsebyte08-128+127charu000016u0000uFFFFdouble0.0644.910-324 1.810308float0.0321.410-45 3.41038int032-2147483648 2147483647long064-9.21017 +9.21017short016-32768327672008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java數(shù)據(jù)類型數(shù)據(jù)類型n經(jīng)過包裝的非基本數(shù)據(jù)類型qByteqIntegerqBooleanqStringq2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java數(shù)據(jù)類型

9、數(shù)據(jù)類型n基本數(shù)據(jù)類型和包裝類型的區(qū)別:q在聲明一個(gè)具有基本數(shù)據(jù)類型的變量時(shí),自動(dòng)建立該數(shù)據(jù)類型的對(duì)象(或稱為實(shí)例) 。q對(duì)經(jīng)過包裝的非基本數(shù)據(jù)類型,并不建立該數(shù)據(jù)類型的對(duì)象,而是建立一個(gè)該類型的引用對(duì)象(內(nèi)存地址)。該數(shù)據(jù)類型的對(duì)象可用new語句建立。 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java數(shù)據(jù)類型數(shù)據(jù)類型int a;0aString s;s=new String(“str);nulls地址istsr地址i2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 n方法:在Java語言中,執(zhí)行特定任務(wù)的函數(shù)或過程統(tǒng)稱為方法(methods)方法功能方法功能abs(x)

10、x的絕對(duì)值max(x,y)x和y中較大者ceil(x)不小于x的最小整數(shù) min(x,y) x和y中較小者 cos(x) x的余數(shù) pow(x,y) xyexp(x) exsin(x) x的正弦 floor(x) 不大于x的最大整數(shù) sqrt(x) x的平方根 log(x) x的自然對(duì)數(shù) tan(x) x的正切 方法方法Java的Math類給出的常見數(shù)學(xué)計(jì)算的方法2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 對(duì)計(jì)算表達(dá)式 2baba值的自定義方法ab描述如下: public static int ab(int a,int b) return (a+b+Math.abs(a-b)/2;

11、 public static double ab(double a,double b) return (a+b+Math.abs(a-b)/2; 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 異常異常nJava的異常(exception)提供了一種處理錯(cuò)誤的簡(jiǎn)潔的方法。當(dāng)程序發(fā)現(xiàn)一個(gè)錯(cuò)誤,就引發(fā)一個(gè)異常,以便在程序最合適的地方捕獲異常并進(jìn)行處理。 public static int ab(int a,int b) if(a=0|b0”); else return (a+b+Math.abs(a-b)/2;2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 public stati

12、c void main(String args) tryf(); /try定義異常處理 catch(exception1) /catch捕獲異常 異常處理1; /出現(xiàn)異常要執(zhí)行的代碼塊 catch(exception2) 異常處理2; finally finally塊; /無異常產(chǎn)生時(shí)都必須執(zhí)行 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 異常處理完整的例子異常處理完整的例子public static void main(String args) trySystem.out.println(ab=+ab(-5,-7); catch(IllegalArgumentException

13、e) System.out.println(a=+(-5)+ b=+(-7); System.out.println(e); catch(Throwable e) System.out.println(e); finally System.out.println(Thanks); public static int ab(int a,int b) if(a=0|b0); else return (a+b+Math.abs(a-b)/2;2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 Java的類的類nJava的類一般由4個(gè)組成部分: q類名q數(shù)據(jù)成員q方法q訪問修飾 nPublic(公

14、有):在public域中聲明的數(shù)據(jù)成員和方法可以在程序的任何部分訪問。 nprivate(私有):在private域中聲明的數(shù)據(jù)成員和方法構(gòu)成類的私有部分,只能由該類的對(duì)象和方法對(duì)它們進(jìn)行訪問 。nprotected(保護(hù)):在protected域中聲明的數(shù)據(jù)成員和方法允許該類的對(duì)象、方法和子類訪問。 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 public class Rectangle public static final int MAX=2000; private int x,y,h,w;/(x,y)是矩形左下角點(diǎn)的坐標(biāo),h是高,w是寬 public Rectangle(i

15、nt xx,int yy,int hh,int ww)/構(gòu)造函數(shù) if(hhMAX|wwMAX) throw new IllegalArgumentException(“Illegal values of h or w”); else x=xx; y=yy; h=hh; w=ww; public Rectangle()/構(gòu)造方法 this(0,0,0,0); public int getHeigth()return h;/返回矩形的高 public int getWidth()return w;/返回矩形的寬 public static void main(String args) Recta

16、ngle r=new Rectangle(); Rectangle s=new Rectangle(1,1,20,20); System.out.println(”r.h=”+r.getHeight()+” r.w= “+r.getWidth(); System.out.println(“s.h=”+s.GetHeight()+” s.w= “+s.getWidth(); n構(gòu)造函數(shù)qJava類的構(gòu)造方法(Constructor)用于初始化對(duì)象的數(shù)據(jù)成員。構(gòu)造方法名與它所在的類名相同。構(gòu)造方法必須聲明為類的公有方法。構(gòu)造方法不可有返回值也不得指明返回類型。 n靜態(tài)類成員qstatic:類成員前

17、的關(guān)鍵字static表明該類成員是靜態(tài)成員。Java只維護(hù)靜態(tài)類成員的一個(gè)拷貝,而非靜態(tài)類成員的每個(gè)對(duì)象都有一個(gè)拷貝。qfinal:表示值不可修改。 n類對(duì)象q類對(duì)象的聲明與創(chuàng)建方式類似于變量的聲明與創(chuàng)建方式。對(duì)一個(gè)對(duì)象成員進(jìn)行訪問或調(diào)用可用運(yùn)算符來實(shí)現(xiàn)。 n靜態(tài)方法q靜態(tài)方法的調(diào)用方式是:方法名(實(shí)際參數(shù))。q非靜態(tài)方法的調(diào)用方式是:. 2008-09-01版權(quán)所有:楊波,武漢科技大學(xué)理學(xué)院 垃圾收集垃圾收集 nJava的new運(yùn)算用于分配所需內(nèi)存空間。例如,int a=new int5000;分配5000字節(jié)空間給整型數(shù)組a。頻繁用new分配空間可能會(huì)耗盡內(nèi)存。Java的垃圾收集器會(huì)適時(shí)掃描內(nèi)存

溫馨提示

  • 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)論