緒論:寫作既是個人情感的抒發,也是對學術真理的探索,歡迎閱讀由發表云整理的1篇Java在程序設計語言課程中應用范文,希望它們能為您的寫作提供參考和啟發。
摘要:文章給出了java語言在程序設計語言課程中的一些具體應用,如計算器系統、學生信息系統、學生成績排名查詢系統、學生成績排序系統、迷宮尋路游戲系統等系統的設計方法,這些系統以工程中常用的算法為核心,通過Java語言實現功能,在文章中給出了部分設計的Java源代碼。文章的程序設計依托工程實際,日常應用較廣,提供的例子由淺入深,可以為日后更加復雜的工程設計打下堅實的基礎。
關鍵詞:Java;程序設計語言課程;計算機編程
程序設計語言課程是屬于技術應用類課程。本課程的課程目標是使學生掌握編寫程序的基礎能力,并能夠獨立完成程序重要環節的設計及獨立調試代碼的方法。程序設計語言課程是重要的專業課,電子信息類、軟件工程類專業的學生都需要進行相關知識的學習。在程序設計語言的實驗過程中,學生能夠初步掌握使用集成開發環境進行程序的設計改造、產品的開發及維護,為以后從事計算機類相關工作奠定基礎,實現幫助學生擁有解決復雜問題的能力。通過程序設計課的訓練,學生能夠了解Java語言的基本特點及發展背景,對Java語言的功能和語法有一定掌握。掌握基本語句;掌握基本語法;掌握類的定義;掌握調用方法;掌握方法的重載。使學生具備Java語言應用的基本能力,使學生能在實際工程問題中綜合利用Java基礎知識和技能來分析和解決。具體目標如下:本文將給出幾個貼合實際的程序設計,通過獨立完成這些實驗案例的設計,使學生對Java語言的開發環境有一定理解并能掌握基礎的程序設計。能很好地掌握Java的基本語法、定義類和定義方法、循環語句的基礎應用、數組的在實際中的應用及數組中的一些常見算法,如:冒泡排序法、快速排序法、二分法等,同時能掌握一些基礎程序設計的思想,學生的這些經驗積累對以后不論是更深層次的研究還是工作都會收益頗豐。
1計算器系統設計
計算器系統設計實驗具體要求用Java語言實現兩個整數的加減乘除,并得出結果。計算器系統設計實驗我們需要明確設計的思路,即需要定義兩個類,第一個類中定義int型的數字和方法,第二個類是測試類,可以調用數字和方法進行計算并打印計算結果。定義一個類,在該類中首先定義兩個整數類型的變量num1、num2和四個方法add、sub、mul、div,對這四個方法分別定義其運算規則,賦予加減乘除四個方法。然后再定義一個測試類,在測試類中可以調用這兩個數字和這四個方法。使該程序能夠進行兩個整數的加減乘除,可以使程序正常運行并將運算結果打印輸出。該實驗要求在集成開發環境中編寫代碼,并在集成開發環境中運行。檢驗結果是否正確。程序及其運行結果見圖1、2。
2學生信息系統設計
學生信息系統的設計實驗具體要求用Java語言實現對學生信息的查詢。學生信息系統的設計需要使用重載在構造方法中的特性,一個類中的構造方法可以定義多個,但是需要注意的有兩點,一是構造方法中的參數類型和參數個數不能相同。二是不能出現參數的個數和類型相同,返回值類型不同的情況。展示學生信息時,根據所需信息的不同調用不同的構造方法。即可展示出所需要的學生信息。該實驗要求在集成開發環境中編寫代碼,并在集成開發環境中運行。檢驗結果是否正確。程序及其運行結果見圖3、4。
3學生成績排名查詢系統設計
學生成績排名查詢系統設計實驗具體要求用Java語言實現在有序數組中快速查找目標的要求。普通的按順序依次查找效率低、耗時長,不符合程序系統中的實際應用。因此在有序數組的查詢類問題中多使用二分查找的算法提高查找效率,減少運算時間。二分查找法,可以實現快速在有序數組中查詢所需結果的效果。二分查找算法的重點是判斷目標所在的區間并不斷的將該區間的大小減半,從而用更短的時間,更少的操作找到所需要的目標。首先我們需要定義清楚區間的概念,在二分查找過程中,我們要始終保持區間的一邊不變,另一邊根據目標數的實際位置進行定義,在二分查找的過程中始終堅持根據查找區間的定義來做邊界處理,這樣才能使二分查找的正確性得到保障。在給出的例子中,若存在查找目標則輸出目標數,若不存在目標則輸出-1。學生成績排名查詢系統設計實驗要求在集成開發環境中編寫出代碼,并在集成開發環境中運行。檢驗是非達到要求效果。學生成績表見表1。
4學生成績排序系統設計
學生成績排序系統設計實驗具體要求用Java語言實現在數組中快速排序的效果。傳統的依次比較費時費力,效率不高。以下介紹兩種工程中常用的算法可以快速實現此功能。學生成績排序系統設計實驗要求在集成開發環境中編寫出代碼,并在集成開發環境中運行,檢驗試驗效果。(1)冒泡排序法冒泡排序法可以實現快速在數組中進行數據排序的效果。冒泡排序法的編寫重點是根據排序要求依次比較相鄰兩個數的大小并進行順序的變換,若升序則是將相鄰兩數中大的數交換至左邊,若為降序則將相鄰兩數中小的數交換至右邊。按以上操作,最終可以實現數組中最后一個數是本組數中最大或最小的要求。因為末尾數總是數組中的最大或最小數,不用參加下一趟排序,這樣每進行一趟排序就會少比較一次,效率更高,用時更短。冒泡排序法需要用到雙循環控制,在外層循環中,我們可以控制本次程序運行進行多少趟排序,在內層循環中,我們可以控制每一趟排序的循環次數。在給出的例子中我們用指針i控制外層循環,指針j控制內層循環。在每一趟排序運行結束后執行i++,就可以進入下一步。在每一趟排序運行中,當j和j+1完成比較并判定是否交換位置后,執行j++,進行該趟排序的下一組數據的比較。在第一趟排序中,i指向0,即i=0,j指向0,即j=0。內層循環中,通過指針j和j+1比較相鄰兩數的大小,并根據要求保持或交換其數值,該趟排序后使數組尾數為該數組中最大或最小數。在第二趟排序中,i=1,j=0。內層循環中,運用intj=0;j<arr.length-i-1;j++語句,使每一次內層循環都不會將上一趟排序后的數組尾數加入到本次內層循環中。繼續通過指針j和j+1進行相鄰兩數的比較,執行第一趟排序的要求。后續重復以上操作即可。學生成績表見表2,程序運行結果見圖6。(2)快速排序法快速排序法可以概括為挖坑填數和分而治之兩個基本步驟。首先我們需要在所需排序的成績中找出一個“標桿”,在第一次排序中使得"標桿"左邊的數據都比它小,“標桿”右邊的數據都比它大。然后再在左右兩部分數據中重復以上操作,最后就能實現學生成績排序的效果。如表中所示此時指針x指向A,x此時為0,指針y指向I,y此時為8。即指針x和y分別指向數組的頭和尾。若“標桿”取A的成績,即index=array[i]=array[0]=23。此時,y指針開始向左尋找比“基準數”小的數,當y=7時,符合要求,即將array[7]的值填入array[0],然后將指針x向右移動一個位置。此時array[7]中無數值,所以我們需要從x向右找比“標桿”大的數填入array[7],即將array[2]中的數填入array[7],此時指針y向左移動一個位置。后續重復以上操作即可。學生成績表見表2,程序代碼如下:publicclassQuickSort{publicstaticvoidmain(String[]args){intmark[]={23,15,37,89,2,21,43,9,56};System.out.println("排序前成績順序");for(intn:mark){System.out.print(n+"");}intlow=0;inthigh=mark.length-1;quickSort(mark,low,high);System.out.println("\n排序后成績順序:");for(intn:mark){System.out.print(n+"");}}privatestaticvoidquickSort(int[]mark,intlow,inthigh){if(low>=high){return;}intx=low,y=high,index=mark[x];//取數組最左邊的數作為“標桿”while(x<y){while(x<y&&mark[y]>=index){y--;}if(x<y){mark[x++]=mark[y];}while(x<y&&mark[x]<index){x++;}if(x<y){mark[y--]=mark[x];}}mark[x]=index;//將“標桿”填入最后的空位quickSort(mark,low,x-1);quickSort(mark,x+1,high);}
5迷宮尋路游戲系統設計
迷宮尋路游戲系統設計實驗具體要求用Java語言實現小球在迷宮中尋找出口的效果。在該實驗中我們需要使用遞歸的思想來實現尋找出口的目標。遞歸的思路就是讓方法不斷的自己調用自己,只不過每個人調用時候傳入的變量都有所不同,這樣就可以處理重復問題的同時還可以保證代碼的簡潔。如圖7所示,在迷宮尋路游戲中我們需要根據迷宮的邊界將其切割為若干部分,并將其應用到二維數組的方法進行編號,并進行賦值。定義當map[x][y]為0表示該點沒有走過;map[x][y]為1表示該點是墻;map[x][y]為2表示該點為通路,小球可以走;map[x][y]為3表示該點是已經走過,但是走不通的點。首先我們先將迷宮的墻和阻擋設置為1,當小球走到標示為0的位置時,需要制定一個路徑規劃,當小球的位置標示為0時,我們設置的是小球按下右上左的順序找路,找到通路則繼續按這個邏輯進行,不成功則返回重新尋找。然后我們再設置小球按上右下左的順序找路,看看路徑是否有變化。迷宮尋路游戲系統設計實驗要求在集成開發環境中編寫出代碼,并在集成開發環境中運行,檢驗試驗效果。迷宮結構見圖7。程序代碼如下:publicclassMaze{publicstaticvoidmain(String[]args){in[][]M=newint[8][8];for(inty=0;y<8;y++){M[0][y]=1;M[7][y]=1;}for(intx=0;x<8;x++){M[x][0]=1;M[x][7]=1;}M[3][1]=1;M[3][2]=1;M[3][3]=1;System.out.println("迷宮情況");for(intx=0;x<8;x++){for(inty=0;y<8;y++){System.out.print(M[x][y]+"");}System.out.println();}findPath(M,1,1);findPath2(M,1,1);System.out.println("小球路線");for(intx=0;x<8;x++){for(inty=0;y<8;y++){Sys-tem.out.print(M[x][y]+"");}System.out.println();}}publicstaticbooleanfindPath(int[][]M,intx,inty){if(M[6][6]==2){returntrue;}else{if(M[x][y]==0){M[x][y]=2;if(findPath(M,x+1,y)){returntrue;}elseif(findPath(M,x,y+1)){returntrue;}elseif(findPath(M,x-1,y)){returntrue;}elseif(findPath(M,x,y-1)){returntrue;}else{M[x][y]=3;returnfalse;}}else{returnfalse;}}}publicstaticbooleanfin-dPath2(int[][]M,intx,inty){if(M[6][6]==2){returntrue;}else{if(M[x][y]==0){M[x][y]=2;if(findPath2(M,x-1,y)){returntrue;}elseif(fin-dPath2(M,x,y+1)){returntrue;}elseif(findPath2(M,x+1,y)){re-turntrue;}elseif(findPath2(M,x,y-1)){returntrue;}else{M[x][y]=3;returnfalse;}}else{returnfalse;}}}}
6結語
Java的程序設計語言課程實驗是一門包含設計性的實驗與實踐課程,它歸屬于工程類專業課程。該課程通過指導學生獨立完成程序系統綜合設計使學生能夠對Java語言的基礎語法、面向對象的特性、循環語句的特點、程序應用算法的設計有更深刻的理解。由淺入深的實驗案例設計可以達到使學生實際掌握關于算法的實際運用、數組的使用、雙指針的使用等關鍵知識點和掌握遞歸思想的目標。這門課程的學習培養了學生的創新精神和動手能力,使學生能成為真正理解和掌握程序設計和軟件開發技術的人才。由于Java語言是直接面向對象的編程語言,它拋棄了傳統C++編程語言中不易掌握的多繼承、指針等基本概念,而成為了靜態面向對象編程語言的代表,從而實現了面向對象理論。據此,本文重點研究了Java語言在程序設計實驗課程中的應用,為了初學者的方便,詳細的給出了計算器系統、學生信息系統、學生成績排名查詢系統、學生成績排序系統、迷宮尋路游戲系統等系統設計,在每一個系統設計中給出了Java語言的源程序,并在程序中對難以理解的部分進行了注解,這些實驗案例都來自工程設計中的一部分,滿足工程生產中的實際要求,對學生的培養不拘泥于課本,為學生今后的發展提供幫助。
參考文獻:
[1]李梓.Java程序設計實驗教程[M].黑龍江:黑龍江大學出版社,2016.
[2]李馳.快速排序算法優化策略[J].電腦科學與技術,2021,17(1):226-228
[3]吳軍.計算之魂[M].北京:人民郵電出版社,2021.
[4]孫秀洋.代碼隨想錄——跟著Carl學算法[M].北京:電子工業出版社,2021.
[5]付東來.labuladong的算法小抄[M].北京:電子工業出版社,2020.
作者:李璋 趙鴻皓 黃震 陳逸凡 楊洲 單位:湖北大學計算機與電子信息工程學院