Java程序设计 教学课件 ppt 作者 刘卫国 第3章 算法与程序控制结构

上传人:E**** 文档编号:89395665 上传时间:2019-05-24 格式:PPT 页数:75 大小:2.29MB
返回 下载 相关 举报
Java程序设计 教学课件 ppt 作者 刘卫国 第3章  算法与程序控制结构_第1页
第1页 / 共75页
Java程序设计 教学课件 ppt 作者 刘卫国 第3章  算法与程序控制结构_第2页
第2页 / 共75页
Java程序设计 教学课件 ppt 作者 刘卫国 第3章  算法与程序控制结构_第3页
第3页 / 共75页
Java程序设计 教学课件 ppt 作者 刘卫国 第3章  算法与程序控制结构_第4页
第4页 / 共75页
Java程序设计 教学课件 ppt 作者 刘卫国 第3章  算法与程序控制结构_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《Java程序设计 教学课件 ppt 作者 刘卫国 第3章 算法与程序控制结构》由会员分享,可在线阅读,更多相关《Java程序设计 教学课件 ppt 作者 刘卫国 第3章 算法与程序控制结构(75页珍藏版)》请在金锄头文库上搜索。

1、第3章 算法与程序控制结构 3.1 算 法 3.2 顺序结构程序 3.3 选择结构程序 3.4 循环结构程序 3.5 跳 转 语 句,3.1 算 法 要让计算机解决某一个问题,必须编写相应的程序。编写程序需要确定解决问题的方法和思路,并要正确地写出求解步骤,这就称为解决这个问题的算法(Algorithm)。如果从计算机完成任务的角度,一个计算机程序就是利用程序设计语言对算法的一种实现,因此算法是程序设计的基础。,3.1.1 算法的概念及描述 算法是对特定问题解题步骤的准确而完整的描述。对于一个问题,如果可以通过一个程序,在有限的存储空间和运行时间内得到正确的结果,那么则称这个算法是可行的。计算

2、机解题的过程实际上可以说是在实施某种算法,但是算法并不等同于计算机程序。著名的瑞士计算机科学家沃思(N.Wirth)提出:算法+数据结构=程序,这里的算法指的就是对数据运算的描述,数据结构指的是数据的逻辑结构和存储结构。算法依赖于特定的数据结构,这也说明,好的算法也取决于描述实际问题的数据结构。当然,程序的编写还要考虑很多其他的问题,如操作系统、运行环境等。,1算法的基本特征 (1)输入。计算机程序是用来处理数据的,输入是一个算法的前提,它们是算法开始前对算法给出的初始值。这些数据来自于某个特定对象的集合。 (2) 输出。算法至少要有一个输出,这个输出是同输入有着某种关系的量,当然也可以有多个

3、输出。 (3)有穷性。一个算法必须在对任何合法的输入数据进行有穷步操作后得到合理准确的结果并结束,同时每一步也是可以在有限时间内能完成的。 (4)确定性。算法中的个步骤都有明确的含义,不能模棱两可。在任何条件下,输入同样的数据只能产生相同的结果。 (5)可行性。算法中描述的操作都是可以在有限的时间内执行的。,2算法的基本要素 算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。 3算法的复杂度 (1)时间复杂度。算法的时间复杂度指的是执行算法所需要的计算工作量。一般将算法求解问题的输入量称为问题的规模,通常用一个整数n来表示,时间复杂度则是问题求解规模n的函数,当问题规

4、模趋向无穷大时,把时间复杂度f(n)的数量级(阶)称为算法的时间复杂度。 (2)空间复杂度。算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的空间以及算法所需要的额外空间。,4算法的描述 算法的表示可以有多种方法。常用的有自然语言、传统流程图、结构化流程图、伪代码、PAD图等。自然语言是经常使用的,可以是汉语、英语或其他语言。用自然语言通俗易懂,但是文字冗长,容易出现二义性。流程图是用一些框图来表示各种操作。用图形表示算法,一些常用的流程图符号,如图3-1所示。,3.1.2 程序的三种基本结构 Java程序控制流程分为三种,分

5、别为顺序结构、选择结构和循环结构。顺序结构是最简单的结构,按照顺序依次执行语句,流程图如图3-2所示。选择结构也称为分支结构,它根据某一判断条件来决定程序的执行流向,流程图如图3-3所示。循环结构又称重复结构,即当条件满足时,重复执行某些语句,流程图如图3-4所示,3.2 顺序结构程序 顺序结构是最简单的程序结构,组成程序的Java语句按照书写顺序自上而下执行。,3.2.1 Java语句 Java语句以分号(;)作为结束标志,单独的一个分号也可以看做一条语句,也称空语句,表示什么也不做。 Java语句根据其作用,分为说明性语句和操作性语句两种类型。 1说明性语句 Java的说明性语句包含包和类

6、引入语句、声明变量语句、声明类语句、声明对象语句等。例如: import java.applet.Applet; / 包引入语句 int k,j; / 声明变量,2操作性语句 Java的操作性语句有表达式语句、复合语句、流程控制语句等,其中流程控制语句包含选择语句、循环语句、跳转语句等。 (1)表达式语句。在表达式的后面添加一个分号就构成了一个表达式语句,表达式语句能够根据相应的操作来完成一定的数据处理功能,如赋值、累加、累乘、方法调用等。表达式语句一般是顺序执行的。 (2)复合语句。复合语句也称为块(block)语句,是包含在一对大括号“”中的语句序列。它是以“”开始,以“”结束,和其他的语

7、句不同的是,“”后面不能有分号,但是在内部的的每条分语句必须以“;”结尾。例如: i+; j+; ,3.2.2 基本输入/输出 在编写程序的时候,输入与输出是不可缺少的,但是Java并没有提供专门的输入/输出语句,它的输入和输出是依靠系统提供的输入/输出类的方法来实现的。Java的标准输入/输出是指在字符方式(如“命令提示符”窗口)下程序与系统进行交互的方式,键盘和显示器屏幕分别是标准的输入设备和输出设备。 1基本输入方法 System.in是InputStream类的静态实例,通过它调用read方法可以读取键盘输入的字符。其调用格式如下: System.in.read(); 该方法的功能是从

8、键盘上接收一个字符,返回值为int类型,值为接收字符的ASCII码值,若转换成字符型则为它本身。,【例3-1】从键盘输入字符并回显在屏幕上。 import java.io.*; class ShowChar public static void main(String args) throws IOException char c; c=(char)System.in.read(); /用char强制转换 System.out.println(c); 该程序通过调用System.in.read()读取键盘输入的字符赋值给变量c,并调用System.out.println(c)输出到显示器屏幕。

9、System.in.read()方法必须与异常处理语句配合使用,详见第6章。,然而用System.in.read()处理输入存在一个问题,它只能处理字符,如果程序要求输入其他类型的数据,应该如何解决呢?JDK提供了一个Scanner类,通过它可以读取用户以命令行方式输入的各种数据类型。首先定义一个Scanner对象的实例。 Scanner reader=new Scanner(System.in) 然后reader对象调用指定的方法,读取用户在命令行输入的数据,注意必须显式地引入Java.util.Scanner包。Scanner常用的读取数据的方法如表3-1所示。,2基本输出方法 Syste

10、m.out是PrintStream打印流的静态实例对象,可以调用它的print、println或printf方法来输出各种类型的数据。数据输出方法的基本格式如下: System.out.print(表达式); System.out.println(表达式); System.out.printf(格式控制,输出列表); 其中print()和println()是最常用的方法,区别是前者输出表达式的值之后不换行,后者换行。printf()是显示格式化数据。具体说明如下: (1)格式控制是用双引号括起来的字符串,也称转义字符串,它表达两种信息,一是格式说明,二是原样输出的内容。格式说明由%和格式说明符

11、组成,例如,格式说明符f表示格式化输出浮点数,d表示输出十进制整数,s表示输出字符串。关于格式控制的详细说明请参考JDK的帮助文档。 (2)输出列表是需要输出的数据,也可以是表达式,【例3-2】printf输出格式示例。 public class ShowPrintf public static void main(String args) double x=345.678; String s=“Java程序设计“; int i=1234; System.out.printf(“x=%f“,x); System.out.println(); System.out.printf(“x=%9.2f

12、n“,x); System.out.printf(“i=%dn“,i); System.out.printf(“i=%o八进制n“,i); System.out.printf(“i=%x十六进制n“,i); System.out.printf(“字符串s=%sn“,s); ,输出结果为: x=345.678000 x= 345.68 i=1234 i=2322八进制 i=4d2十六进制 字符串s=Java程序设计,3.2.3 顺序结构程序举例 对于顺序结构而言,程序是按语句出现的先后顺序依次执行的。下面看几个例子,虽然不难,但对形成清晰的编程思路是有帮助的。 【例3-3】输入两个整数给变量并交

13、换变量的值。 程序分3步实现: (1)输入两个变量的值。 (2)交换a和b的值。 (3)输出两个变量的值。 显然,关键在第2步。通常要交换两整型变量的值,可以定义一个中间变量t。,【例3-4】从键盘输入一个3位整数n,输出其逆序数m。例如,输入n=127,则m=721。 程序分为3步: (1)输入一个3位整数n。 (2)求逆序数m。 (3)输出逆序数m。 关键在第2步。先假设3位整数的各位数字已取出,分别存入不同的变量中,设个位数存入a,十位数存入b,百位数存入c,则m=a100+b10+c。因此关键是如何取出这个3位整数的各位数字。取出各位数字的方法,可用取余运算符%和整除运算符实现。例如,

14、n%10取出n的个位数;n=n/10去掉n的个位数,再用n%10取出原来n的十位数,依此类推,3.3 选择结构程序 在很多情况下需要根据各种条件选择要执行的语句,这就是选择结构。Java语言中,使用条件语句(if语句和switch语句)来实现选择,它们根据条件判断的结果,选择所要执行的程序分支。,3.3.1 单分支条件语句 单分支条件语句的语法格式为: if (条件表达式) 语句; 或 if (条件表达式) 语句块 执行过程:先解析条件表达式,当条件表达式的值为真时,则执行紧跟后面的语句或者语句块,如果条件表达式的值为假,则跳过紧跟的语句或者语句块,程序用max存储a,b两个数中较大的那个数。

15、首先令max=a,然后比较a,b的值,如果b大于a,则令max=b,否则什么都不做,显然分支语句执行完以后,max保存的值即为所求,最后输出max的值。从运行结果看,当a=22,b=34时,判定条件ba成立,分支语句max=b执行,最终输出为34;而当a=22,b=10时,判定条件ba不成立,分支语句被跳过了,此时max的值为a的值22。,3.3.2 双分支条件语句 双分支条件语句的语法格式为: if (条件表达式) 语句1或语句块1 else 语句2或语句块2 执行过程:先解析条件表达式,当条件表达式为真时,执行语句1或者语句块1;当条件表达式为假时执行语句2或者语句块2。语句1或语句2总要执行一个,但不会都执行。 例如,判断一个整数的奇偶性的语句如下: if (i%2=0) System.out.println(i+“是偶数!“); 语句1 else System.out.println(i+“是奇数!“); 语句2,【例3-6】判断输入的年份是否是闰年。 判断输入的年份是否为闰年的条件是:能被4整除,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号