第2章java程序设计教案_第1页
第2章java程序设计教案_第2页
第2章java程序设计教案_第3页
第2章java程序设计教案_第4页
第2章java程序设计教案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课堂教学教案教师姓名: * 课程名称:Java程序设计 授课时数:2 第2次课授课课题第2章 Java概述教学目标了解Java语言特点,理解Application和Applet两种Java应用程序的运行原理和方法。掌握在JDK环境中编译和运行程序的操作,熟悉在MyEclipse集成开发环境中,编辑、编译、运行和调试程序的操作。教学重点掌握JAVA语言的基本语法特点,熟悉JAVA开发环境教学难点Java语言的特点教学方法项目驱动,案例教学,一体化课堂;板书+多媒体。教学过程参考附录2课堂小结重点掌握JAVA语言的基本开发环境,能够熟练使用Eclipse课外拓展类名第一个字母大写 PhoneCar

2、d 方法名第一个字母小写 getBalance() 变量名第一个字母小写 cardNumber 各标识名内含单词首字母大写课后作业注意要求学生定时完成主干课程的网上章节测试1标示符和关键字在定义和使用方面有何区别?【答】定义方面:标示符是用户定义的、以字母开头的字母数字序列,关键字是由Java语言定义的、具有特定含义的英文单词。 使用方面:标示符用于命名变量、常量、类、对象等元素,每一个关键字都有特定的含义,不能被赋予别的含义。2Java语言的基本数据类型有哪些?引用数据类型有哪些?【答】基本数据类型有:整数类型byte、short、int、long,浮点数类型float、double,字符类

3、型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface)3试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变量有哪些差别?【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。5程序中为什么需要常量和变量?声明常量或变量时,为什么必须给出其所属的数据类型?【答】在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语言都提供常量和变量来存储数据。为了确定常量或变量的数据性质、取值范围、以及它们占用的内存单元的字节数和它们参加的合法运算和操作。6什么是变量的作用域,声明变量时,如何确定变量的作用

4、域?【答】 变量的作用域是指其作用范围。变量声明的位置决定了它的作用域7设i是一个整数类型变量,写出下列问题对应的表达式?判断i为奇数或偶数;【答】i%2=0 /取值为true时是偶数,否则是奇数判断i的值是否在09之间;【答】(i0)&(i9) 8设ch是一个字符变量,写出下列问题对应的表达式判断ch是一个十进制的数字字符判断ch是一个十六进制的数字字符判断ch是一个大写字母判断ch是一个英文字母,不论大写和小写如何将一个十进制的数字字符ch转换成对应的整数类型值如何将一个十六进制的数字字符ch转换成对应的整数类型值9说明for、while、和do-while三种循环语句的特点和区别?Whi

5、le语句的特点:“先判断后执行”,当条件满足时执行循环体Do-while语句的特点:“先执行后判断”,先执行循环体再判断条件是否满足For语句的特点:“先判断后执行”,但for语句将循环控制变量初始值、循环条件和变量的变化规律都以表达式形式写在循环体之前。附录22.1Java开发环境l Java虚拟机执行Java程序v动态性 异常处理 多线程l JDKvJDK的安装与设置1. 安装JDK2. 设置环境变量 :设置Path和Classpath两个环境变量l Java源程序结构 Package & import public class 或interface class & interfacel

6、MyEclipse集成开发环境JAVA集成开发工具(将课本第十章介绍的Eclipse开发环境的使用提前介绍,详细内容参照PPT10l JAVA虚拟机执行JAVA程序的流程2.2 Java语言的特点l simple 简单 object-oriented 纯面向对象l distributed 分布式 interpreted 解释型l robust 健壮性 secure 安全性l architecture-neutral 结构中立l portable 可移植性 high-performance 高性能l multi-threaded 多线程 dynamic 动态2.3 Java程序的几种类型n Ap

7、plicationv “Java应用程序”是可以独立运行的Java程序。v 由Java解释器控制执行。n Appletv “Java小程序”不能独立运行,而是被嵌入到Web页中。v 由Java兼容浏览器控制执行。2.4 Java应用程序编译(字符界面)n 1. Applicationv 例1 显示字符串的Application应用程序n 2.Appletv 例12 显示字符串的Applet应用程序编程题:10分别用for,while,do-while三种循环语句计算一个正数的阶乘(1)for(i=1,i=10,i+) int Sum=1;Sum=Sum*i; (2)int i=1;while(

8、i=10)int Sum=1;Sum=Sum*i;i+;int i=Sum=1;doSum=Sum*i;i+;while(i=10);11输出以下数字的形式;(1) 0 000 0 111 0 122 0 123解答采用二重循环的程序如下。public class Phalanxpublic static void main(String args) int n=4; /阶数 for (int i=0;in;i+) for (int j=0;jn;j+) System.out.print( +(ij)?i:j); System.out.println(); (2)输出下列形式的数字三角阵(当n

9、=4时)。 1 1 2 1 1 2 3 2 11 2 3 4 3 2 1解答采用二重循环的程序如下。public class Tower public static void main(String args) int n=4; /行数 for (int i=1;i=n;i+) for (int j=1;j=n-i;j+) /前导空格 System.out.print( ); for (int j=1;j0;j-) System.out.print( +j); System.out.println(); 12下列程序希望用for语句求出1n累加和并显示,请问程序有错误吗?错在哪里?输出结果i和

10、s的值分别是多少?int i=1,n=10,s=0;for(i=1,i=n,i+); s+=i;System.out.pointln(“Sum=1+”+n+”=”+s);有错误,正确的如下int i=1,n=10,s=0;for(i=1,i=n,i+) s+=i;System.out.pointln(“Sum=1+”+n+”=”+s); 13编程验证哥德巴赫猜想。哥德巴赫猜想:(1)任何大于2的偶数都可以表示为2个素数之和,如16=3+13,16=5+11(2)任何大于5的奇数都可以表示为3个素数之和,如11=2+2+7,11=3+3+5解答程序如下。public class Goldbach

11、 static final int MAX=30; /数据范围 static int prime=null; /存放素数的一维数组 static int number; /素数个数,即数组的实际元素个数 public Goldbach(int n) /输出n的哥德巴赫算式 if (prime=null) init(); if (n%2=0) /偶数 int i=0; while (inumber & primei=n/2) if (isPrime(n-primei) System.out.print(n+=+primei+(n-primei)+ ); i+; else /奇数 int i=0;

12、 while (inumber & primei=n/3) int j=i; /如果j=0,则会出现重复的算式 while (jnumber & primej=n/3) if (isPrime(n-primei-primej) System.out.print(n+=+primei+primej+ +(n-primei-primej)+ ); j+; i+; System.out.println(); public static void init() /初始化数组,筛选法求素数 prime = new int30; prime0=2; /已知的最小素数 number=1; /素数个数 int

13、 i=1; /下一个素数应存放的数组下标位置 int k=3; /从最小奇数开始测试,所有偶数不需测试 do int j=0; while (jnumber) & (k % primej!=0) /用已知素数primej测试k j+; if (j=number) /k是素数 primei=k; /将k添加到数组prime中 i+; number+; k+=2; /测试下一个奇数是否是素数 while(kMAX); output(); public static void output() /输出素数 System.out.println(All primes in 2+MAX+ are: );

14、 for (int i=0;inumber;i+) System.out.print( +primei); if (i+1)%10=0) System.out.println(); /每行写10个数 System.out.println(nnumber=+number); public static boolean isPrime(int k) /判断k是否为素数,即在prime中查找k值 boolean yes=false; int i=0; while (!yes & i=number & primei=k) if (primei=k) yes=true; else i+; return

15、yes; public static void main(String args) for(int i=4;iGoldbach.MAX;i+=2) new Goldbach(i); for(int i=7;iGoldbach.MAX;i+=2) new Goldbach(i); 程序运行结果如下:All primes in 230 are: 2357111317192329number=10偶数4=2+2 6=3+3 8=3+5 10=3+7 10=5+5 12=5+7 14=3+11 14=7+7 16=3+13 16=5+11 18=5+13 18=7+11 20=3+17 20=7+13

16、 22=3+19 22=5+17 22=11+11 24=5+19 24=7+17 24=11+13 26=3+23 26=7+19 26=13+13 28=5+23 28=11+17 奇数7=2+2+3 9=2+2+5 9=3+3+3 11=2+2+7 11=3+3+5 13=3+3+7 15=2+2+11 15=3+5+7 15=5+5+5 17=2+2+13 17=3+3+11 17=5+5+7 19=3+3+13 19=3+5+11 21=2+2+17 21=3+5+13 21=3+7+11 21=5+5+11 21=7+7+7 23=2+2+19 23=3+3+17 23=3+7+1

17、3 23=5+5+13 23=5+7+11 25=3+3+19 25=3+5+17 25=5+7+13 25=7+7+11 27=2+2+23 27=3+5+19 27=3+7+17 27=5+5+17 27=7+7+13 29=3+3+23 29=3+7+19 29=5+5+19 29=5+7+17 不能有重复表达式,例如19=3+3+13 19=3+5+11 19=5+3+1121=2+2+17 21=3+5+13 21=3+7+11 21=5+3+13 21=5+5+11 21=7+3+11 21=7+7+714Java的数组比C+的数组有哪些优越之处?【答】Java语言不支持C+的指针

18、类型,对数组的操作只能按照数组方式,不能使用指针。Java的数组都是动态数组,并且是引用数据类型,提高了安全性和简单性。另外,Java语言具有资源回收机制,能够自动收回不再使用的资源,一般情况下程序不需要归还数组所占的内存空间。15作为引用数据类型,数组变量与基本数据类型的变量使用时有哪些区别?【答】数组变量与基本数据类型变量不同点在于,存储单元的分配方式不同,两个变量之间的赋值方式也不同。基本数据类型变量获得存储单元的方式是静态的,声明了变量后系统就为变量分配了存储单元,就可以对变量赋值。两个变量之间的赋值是值本身。 数组变量的引用赋值,数组变量保存的是数组的引用,即数组占用的一片连续存储空

19、间的首地址及长度特性。当声明一个数字变量而未申请空间时,变量是未初始化的,没有地址及特性值。只有申请了存储空间,才能以下标表示数组元素。16求一组数中的最大值和最小值。【答】程序如下:public class Zuizhi public static void main(String args)/ TODO 自动生成方法存根int array=new int100;for(int i=1;i=30;+i)/初始化数组arrayi=i;int max=array1;/保存最大值int min=array1;/保存最小值for(int j=2;j=30;+j) max=Math.max(max,

20、arrayj); min=Math.min(min, arrayj);System.out.println(该数组最大值为:+max);System.out.println(该数组最小值为:+min);运行结果如下:该数组最大值为:30该数组最小值为:117采用一维数组输出杨辉三角形。程序如下: public class Yanghui1 public static void main(String args) int n=10; /n表示行数 int table = new intn+1; table0=1; /每行第1个数都为1 for (int i=1;i=n;i+) /控制输出n行 f

21、or (int j=0;j0;j-) /生成下一行数据 tablej=tablej-1+tablej; /通式 18输出下列方阵: (1) 输出如下形式的数字方阵(当n=4时): 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16 程序如下: Public class Jmat Public static void main(String args)(2)输出如下形式的数字方阵(当n=4时): 1 2 5 10 4 3 6 11 9 8 7 12 16 15 14 13解答采用二维数组的程序如下。public class Jmat public static void

22、 main(String args) int n=4; /阶数 int mat = new intnn; int k=1; /k是自然数,递增变化 for (int i=0;in;i+) for (int j=0;j=0;j-) matij = k+; for (int i=0;imat.length;i+) /输出二维数组元素 for (int j=0;jmati.length;j+) /i、j是行、列下标 System.out.print( +matij); System.out.println(); 19找出一个二维数组的鞍点,即该位置的元素在该行上最大,在列上最小。也可能没有暗点。命题

23、一个二维数组如果有鞍点,那么它只有一个鞍点。证明反证法。设该二维数组已有一个鞍点,为Mi,j,则有Mi,* = Mi,j = M*,j (1)即i行上的所有元素均小于j列上的所有元素。假设有另一个鞍点Mx,y,由(1)式知Mi,y = Mx,j (3)Mx,y应在该列上最小,有Mx,y = Mi,y (4)根据(2)式,显然(3)和(4)式是不可能同时成立的。因而假设有另一个鞍点Mx,y是不成立的。由此证明。解答采用二维数组的程序如下。public class Dort public static void main(String args) int mat = 1,2,3,4,5,6,7,8

24、,9; for (int i=0;imat.length;i+) /输出二维数组元素 for (int j=0;jmati.length;j+) /i、j是行、列下标 System.out.print( +matij); System.out.println(); boolean find = false; /找到鞍点标记 int row=0; /第1行下标 int max=0; /记录当前行最大值的列下标 while (!find & rowmat.length) max=0; /初始设每行第1列值最大 for (int j=1;jmatrowmax) /matrowmax为该行最大值 max = j; boolean

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论