绪论:写作既是个人情感的抒发,也是对学术真理的探索,欢迎阅读由发表云整理的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.
作者:李璋 赵鸿皓 黄震 陈逸凡 杨洲 单位:湖北大学计算机与电子信息工程学院