《程序设计语言概述.pptx》由会员分享,可在线阅读,更多相关《程序设计语言概述.pptx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2/29目录目录u第第1章章 程序设计语言概述程序设计语言概述u第第2章章 程序设计语言的基本成分程序设计语言的基本成分u第第3章章 程序设计方法概述程序设计方法概述u第第4章章 面向对象语言基础面向对象语言基础u第第5章章 类的管理及常用工具类类的管理及常用工具类u第第6章章 异常处理和断言异常处理和断言u第第7章章 线程线程u第第8章章 GUI编程基础和编程基础和appletu第第9章章 I/O流流u第第10章章 网络通信网络通信u第第11章章 泛型与集合框架泛型与集合框架3/29第第1章章 程序设计语言概述程序设计语言概述u1.1 程序的含义和程序设计策略程序的含义和程序设计策略n包括程
2、序的含义、程序设计的通用策略包括程序的含义、程序设计的通用策略u1.2 程序设计语言重要属性程序设计语言重要属性n包括语言的范型、类型系统、编译和解释包括语言的范型、类型系统、编译和解释u1.3 Java语言概述语言概述n包括诞生背景、发展、特点、开发环境、运行原理包括诞生背景、发展、特点、开发环境、运行原理本章重点本章重点1、理解程序、程序设计、程序设计语言三概念;理解程序、程序设计、程序设计语言三概念;2、Java设计初衷、崛起原因、特点、环境配置。设计初衷、崛起原因、特点、环境配置。4/291.1 程序的含义和程序设计策略程序的含义和程序设计策略u1.1.1 程序的含义程序的含义n“程序
3、程序”并非计算机领域的专有名词并非计算机领域的专有名词n我们每天都接触和设计各种程序我们每天都接触和设计各种程序n计算机程序有自己的特点计算机程序有自己的特点n计算机程序的定义:计算机程序的定义:计算任务的处理对象和处理规则的描述。计算任务的处理对象和处理规则的描述。术语的名字常与其含义密切相关。程序,术语的名字常与其含义密切相关。程序,program,本意为:计划、节目单,即按照某种顺序做事。本意为:计划、节目单,即按照某种顺序做事。每日例行程序:起床每日例行程序:起床-洗漱洗漱-吃饭吃饭-上学上学设计程序:制定训练计划、组织词句表达某种思想设计程序:制定训练计划、组织词句表达某种思想程序设
4、计:为满足特定需求,将一组动作设定次序程序设计:为满足特定需求,将一组动作设定次序核心特点有二:核心特点有二:1、表达计算:需要描述数据和处理数据的成分;、表达计算:需要描述数据和处理数据的成分;2、由计算机理解和执行:需程序描述符合计算机特点,、由计算机理解和执行:需程序描述符合计算机特点,如用内存存储数据、含义的唯一性、机械计算如用内存存储数据、含义的唯一性、机械计算。数据类型很重要!数据类型很重要!对数据对数据的处理的处理数据数据数据类型数据类型5/291.1 程序的含义和程序设计策略程序的含义和程序设计策略u1.1.2 程序设计的通用策略程序设计的通用策略n经千百年锤炼出的策略,如:经
5、千百年锤炼出的策略,如:理清思路、掌控主次;理清思路、掌控主次;先抓主要矛盾,再抓次要矛盾;先抓主要矛盾,再抓次要矛盾;先定纲要,再写内容。先定纲要,再写内容。n计算机程序开发的经典策略:自顶向下逐步求精计算机程序开发的经典策略:自顶向下逐步求精N.Wirth于于1971年提出;年提出;要点:编制程序应分若干步进行,逐步细化。要点:编制程序应分若干步进行,逐步细化。6/29n自顶向下逐步求精自顶向下逐步求精 示例示例1:组织一场运动会:组织一场运动会1.1 程序的含义和程序设计策略程序的含义和程序设计策略1.开幕式开幕式2.各项比赛各项比赛3.闭幕式闭幕式运动会实施计划运动会实施计划程序名程序
6、名程序体程序体1.开幕式开幕式1.1 运动员入场运动员入场1.2 相关人员讲话相关人员讲话1.3 相关表演相关表演2.各项比赛各项比赛 3.闭幕式闭幕式 运动会实施计划运动会实施计划第第1步程序步程序第第2步程序步程序明确、明确、无歧义、无歧义、能真正能真正实施的实施的计划计划运动会实运动会实施计划施计划第第n步程序步程序注意事项:注意事项:应注意每次分解出子目标应注意每次分解出子目标/子步骤或者不宜过多。为什么?子步骤或者不宜过多。为什么?注意事项:至少可以有两种分解方式:注意事项:至少可以有两种分解方式:1.)1.)按日程分解,即第一天按日程分解,即第一天/第二天比赛项目、第二天比赛项目、
7、;2.)2.)按类别分解,田径(短跑、长跑、按类别分解,田径(短跑、长跑、)、体操、)、体操、;哪种方式较好,为什么?哪种方式较好,为什么?自顶向下逐步求精的精髓,就是简化问题求解步骤,即复杂自顶向下逐步求精的精髓,就是简化问题求解步骤,即复杂问题可分为简单的几步,每一步骤又是简单的几步,如此,问题可分为简单的几步,每一步骤又是简单的几步,如此,直至某一步骤可通过一条指令直至某一步骤可通过一条指令/过程过程/成熟算法来完成。成熟算法来完成。7/291.1 程序的含义和程序设计策略程序的含义和程序设计策略n自顶向下逐步求精自顶向下逐步求精 示例示例2:给定有序数组给定有序数组a0.n-1。现输入
8、一个整数,将其插。现输入一个整数,将其插入该数组的合适位置,使其仍有序。入该数组的合适位置,使其仍有序。1)输入数据输入数据;2)找位置找位置;3)移出空位移出空位;4)实施插入实施插入。f(inta,int len)1)输入数据输入数据;2)找位置找位置;3)移出空位移出空位;移动起移动起/止止/规律规律4)实施插入实施插入。f(inta,int len)优化:是否可以将优化:是否可以将2 2、3 3两步合并?两步合并?能否改进等问题,应当成为一种常态思维。能否改进等问题,应当成为一种常态思维。用用Java、C等语言书写等语言书写的源代码的源代码f(inta,int len)8/291.1
9、程序的含义和程序设计策略程序的含义和程序设计策略u1.1.3 运行程序的两种基本方式运行程序的两种基本方式n两种:编译方式和解释方式两种:编译方式和解释方式n编译方式:编译方式:编:编辑(优化),译:翻译编:编辑(优化),译:翻译做法:用编译器将源代码全部一次性地翻译成二进制做法:用编译器将源代码全部一次性地翻译成二进制代码代码语言:语言:C/C+、Pascal/Delphi、优点:能提高代码质量、程序执行速度快优点:能提高代码质量、程序执行速度快缺点:程序运行期间,程序员无法干预缺点:程序运行期间,程序员无法干预编译器编译器硬件硬件源代码源代码二进制代码二进制代码9/291.1 程序的含义和
10、程序设计策略程序的含义和程序设计策略u1.1.3 运行程序的两种基本方式运行程序的两种基本方式n解释方式解释方式做法:用解释器将源代码逐句翻译源码,逐句执行;做法:用解释器将源代码逐句翻译源码,逐句执行;语言:语言:Basic/VB、Java、C#、JSP、XML、优点:能监控程序执行,可通过在解释器(也称虚拟优点:能监控程序执行,可通过在解释器(也称虚拟机)中新增机制或模拟硬件,提供更多更高级的语言机)中新增机制或模拟硬件,提供更多更高级的语言机制;机制;缺点:代码很难优化(为什么?)、程序执行速度慢缺点:代码很难优化(为什么?)、程序执行速度慢解释器解释器(虚拟机虚拟机)硬件硬件源代码源代
11、码二进制代码二进制代码目前,解释性语言日渐兴起。源于两点:目前,解释性语言日渐兴起。源于两点:1.)1.)速度足以应对速度足以应对普通应用普通应用;2.);2.)易于扩充高级语言机制易于扩充高级语言机制10/291.2 程序设计语言重要属性程序设计语言重要属性1.语言的设计范型语言的设计范型2.类型系统类型系统3.编译型语言和解释型语言编译型语言和解释型语言11/291.2 程序设计语言重要属性程序设计语言重要属性u1.2.1 语言的设计范型语言的设计范型n计算是计算机最核心任务。语言的设计范型就是如计算是计算机最核心任务。语言的设计范型就是如何看待计算,这是描述计算的前提和基础。例如:何看待
12、计算,这是描述计算的前提和基础。例如:n目前主流有四种范型:目前主流有四种范型:命令式范型:计算就是用指令去修改数据;命令式范型:计算就是用指令去修改数据;面向对象式范型:计算就是对象间的互操作;面向对象式范型:计算就是对象间的互操作;函数式范型:计算就是对数学函数的求解;函数式范型:计算就是对数学函数的求解;逻辑式范型:计算就是为做出逻辑判定而进行的推理。逻辑式范型:计算就是为做出逻辑判定而进行的推理。范型框定了程序最基本的范畴。例如,对命令式语言,基础范型框定了程序最基本的范畴。例如,对命令式语言,基础成分就是指令、数据,这样才能表达命令式的计算。成分就是指令、数据,这样才能表达命令式的计
13、算。12/291.2 程序设计语言重要属性程序设计语言重要属性u1.2.2 类型系统类型系统n类型系统是程序设计语言最为核心的成分之一。类型系统是程序设计语言最为核心的成分之一。涉及数据如何组织、分类,新类别怎样构造,类型涉及数据如何组织、分类,新类别怎样构造,类型如何使用,以及类型安全等方面。如何使用,以及类型安全等方面。n主要讨论主要讨论分类和构造分类和构造强类型和弱类型强类型和弱类型静态语言和动态语言静态语言和动态语言13/291.2 程序设计语言重要属性程序设计语言重要属性u1.2.2 类型系统类型系统n分类和构造分类和构造分类策略:基本类型分类策略:基本类型+新类型构造机制新类型构造
14、机制n注意:注意:1.基本类型对应最基本数据,且类型不能太多;基本类型对应最基本数据,且类型不能太多;2.基本类型常用汇编、基本类型常用汇编、C等设计;等设计;3.类型构造机制应易用且安全。类型构造机制应易用且安全。简单比较简单比较C和和Java的类型系统的类型系统描述数据是程序设计语言最重要基础的任务之一。描述数据是程序设计语言最重要基础的任务之一。14/291.2 程序设计语言重要属性程序设计语言重要属性u1.2.2 类型系统类型系统n强类型语言和弱类型语言强类型语言和弱类型语言“强强”是指类型检查严格;如是指类型检查严格;如 if(i=5)类型检查强弱与自动类型转换密切相关。强类型语言类
15、型检查强弱与自动类型转换密切相关。强类型语言要求:转换后数据无损要求:转换后数据无损+转换前后类型的语义要相转换前后类型的语义要相容。容。强类型语言,常见的有强类型语言,常见的有Pascal、Java、C#等;等;弱类型语言,常见的有弱类型语言,常见的有C、VB、Python等。等。强类型语言可以充分利用强大的类型检查功能,帮助程序员在强类型语言可以充分利用强大的类型检查功能,帮助程序员在运行前检测出程序中的许多错误,从而在一定程度上提高软件运行前检测出程序中的许多错误,从而在一定程度上提高软件的可靠性。弱类型语言使用灵活、方便,但也更易出错。的可靠性。弱类型语言使用灵活、方便,但也更易出错。
16、15/291.2 程序设计语言重要属性程序设计语言重要属性u1.2.2 类型系统类型系统n静态语言和动态语言静态语言和动态语言静态:与编译器相关;动态:与运行时相关。静态:与编译器相关;动态:与运行时相关。属性:不可变更的关联;绑定:可变更的关联。如属性:不可变更的关联;绑定:可变更的关联。如静态语言要求类型静态绑定,动态语言要求类型动态静态语言要求类型静态绑定,动态语言要求类型动态绑定,即运行时的不同时刻变量可以拥有不同的类型。绑定,即运行时的不同时刻变量可以拥有不同的类型。静态语言:静态语言:C、Pascal、C+、Java、C#动态语言:动态语言:VB、Python 动态类型语言有三大内
17、伤:动态类型语言有三大内伤:1.1.类型的动态绑定让编译器的错误检测功能丧失殆尽;类型的动态绑定让编译器的错误检测功能丧失殆尽;2.2.变量存储空间须能够弹性变化,执行开销大;变量存储空间须能够弹性变化,执行开销大;3.3.动态语言必须是解释型语言。动态语言必须是解释型语言。静态语言可充分利用编译阶段的语法检查,提高程序的可靠性,静态语言可充分利用编译阶段的语法检查,提高程序的可靠性,同时类型信息也为编译优化提供帮助。动态语言让一个变量在不同时类型信息也为编译优化提供帮助。动态语言让一个变量在不同时刻拥有不同的类型,这为编程带来很大的灵活性。同时刻拥有不同的类型,这为编程带来很大的灵活性。St
18、atic typing when possible,dynamic typing when needed。换言之,对大多数类型,尽可能采用静态类型。换言之,对大多数类型,尽可能采用静态类型绑定机制;当然,对极个别特殊类型,也可定制专门的动态类型绑定机制;当然,对极个别特殊类型,也可定制专门的动态类型绑定机制。绑定机制。16/291.2 程序设计语言重要属性程序设计语言重要属性u1.2.3 编译型语言和解释型语言编译型语言和解释型语言n编译型语言编译型语言以编译方式运行的语言以编译方式运行的语言n解释型语言解释型语言以解释方式运行的语言以解释方式运行的语言17/291.3 Java语言概述语言概
19、述1.Java语言的诞生和发展语言的诞生和发展2.Java语言的特点语言的特点3.Java编程环境编程环境4.Java程序的运行原理程序的运行原理18/291.3 Java语言概述语言概述u1.3.1 Java语言的诞生和发展语言的诞生和发展n产生背景产生背景1990年年12月,月,Sun成立了一个以成立了一个以James Gosling为为首的项目小组首的项目小组”the Green Project”(Secretly),基于,基于C+来开发消费电子类产品来开发消费电子类产品(嵌入式设备嵌入式设备)。后发现问题:后发现问题:嵌入式设备资源有限嵌入式设备资源有限 VS C+程序太过庞大;程序太
20、过庞大;芯片将嵌入不同硬件芯片将嵌入不同硬件 VS C+程序难跨平台。程序难跨平台。解决策略:依托解决策略:依托C+,参照,参照SmallTalk、Ada,设计,设计出小巧、够用、能跨平台的新语言。出小巧、够用、能跨平台的新语言。1992年年Oak诞生,因重名于诞生,因重名于1995年更名为年更名为Java。James Gosling19/291.3 Java语言概述语言概述n产生背景产生背景Oak新出,市场不成熟,生产商不用,新出,市场不成熟,生产商不用,Oak被搁置;被搁置;1993年,年,Internet迅猛发展为迅猛发展为Java带来机遇:带来机遇:网络环境是多种软硬件平台共存的异构环
21、境,因此需要网络环境是多种软硬件平台共存的异构环境,因此需要能够支持跨平台的编程语言;能够支持跨平台的编程语言;当时网速很小,不支持体积庞大的网络程序。当时网速很小,不支持体积庞大的网络程序。上述要求与嵌入式平台的要求何其相像?!上述要求与嵌入式平台的要求何其相像?!调整调整Oak并新增并新增Applet以及可运行以及可运行Applet程序的浏程序的浏览器览器HotJava。动态网页的魅力引起了轰动。动态网页的魅力引起了轰动。1995年,年,IBM、Apple、HP、Oracle、Nescape、微软等宣布支持微软等宣布支持Java。20/291.3 Java语言概述语言概述u1.3.1 Ja
22、va语言的诞生和发展语言的诞生和发展nJava的发展的发展1998年之前:十分简陋,程序运行速度也极低。甚至年之前:十分简陋,程序运行速度也极低。甚至程序员之间交流经验,如何让程序员之间交流经验,如何让Java跑的更快。跑的更快。1998年年12月,发布月,发布JDK 1.2,对内核作了重大改进,对内核作了重大改进,也废弃了许多原有成分。以至于也废弃了许多原有成分。以至于Sun将将1.2版之后的版之后的Java称之为称之为Java 2,即第二代,即第二代Java。2004年年9月,发布月,发布JDK 1.5,引入许多现代语言的高,引入许多现代语言的高级特色,如泛型等。级特色,如泛型等。Sun对
23、对1.5版的版的java引领程序设引领程序设计语言的发展潮流充满期望,并为其取了个雄壮的名计语言的发展潮流充满期望,并为其取了个雄壮的名字:字:Tiger。21/291.3 Java语言概述语言概述u1.3.2 Java语言的特点语言的特点n完全面向对象和简单性完全面向对象和简单性相对于相对于C+支持过程式程序设计、机制较复杂而言支持过程式程序设计、机制较复杂而言n平台无关性平台无关性实现跨平台需要两个关键要素:虚拟机和字节码。实现跨平台需要两个关键要素:虚拟机和字节码。注意:不同平台有相同的字节码,但要用不同的虚拟注意:不同平台有相同的字节码,但要用不同的虚拟机机22/291.3 Java语
24、言概述语言概述u1.3.2 Java语言的特点语言的特点n安全性和可靠性安全性和可靠性安全性,是指程序自身抵御外界攻击的能力。可靠性,安全性,是指程序自身抵御外界攻击的能力。可靠性,是指系统在某时间段内运行不出错的几率。是指系统在某时间段内运行不出错的几率。网络程序对安全性和可靠性有着更为迫切的要求;网络程序对安全性和可靠性有着更为迫切的要求;Java从语言的语法、到运行环境,为提升程序的安全从语言的语法、到运行环境,为提升程序的安全性和可靠性做了大量努力;性和可靠性做了大量努力;23/291.3 Java语言概述语言概述u1.3.2 Java语言的特点语言的特点n并发和分布式计算的支持并发和
25、分布式计算的支持Java有有RMI机制,以支持分布式计算。用线程机制机制,以支持分布式计算。用线程机制支持并发执行。支持并发执行。n高效的网络编程机制高效的网络编程机制Java雄起源自网络,强项也在网络编程。雄起源自网络,强项也在网络编程。如提供常用网络通信协议的接口;使用流思想、序如提供常用网络通信协议的接口;使用流思想、序列化思想等,来简化通信模型。甚至用列化思想等,来简化通信模型。甚至用Object类类作为始祖类,也有方便网络通信编程的目的。作为始祖类,也有方便网络通信编程的目的。24/291.3 Java语言概述语言概述u1.3.3 Java编程环境编程环境nJDK的组成的组成25/2
26、91.3 Java语言概述语言概述u1.3.3 Java编程环境编程环境nJDK的下载、安装与设置的下载、安装与设置安装后,产生的目录结构介绍;安装后,产生的目录结构介绍;通过通过src.zip,可了解系统类内部设计细节。对理解,可了解系统类内部设计细节。对理解某些复杂机制非常有帮助;某些复杂机制非常有帮助;Path、classPath的作用及设置的作用及设置(注意注意classPath路径设置时要添加路径设置时要添加;.)nJava帮助文件的使用帮助文件的使用内容最权威也最全面内容最权威也最全面26/291.3 Java语言概述语言概述u1.3.3 Java编程环境编程环境nJava的开发工具的开发工具JBuilderEclipseNetBeansJcreator27/291.3 Java语言概述语言概述u1.3.4 Java程序的运行原理程序的运行原理n示例演示示例演示nJava程序的编译运行程序的编译运行28/291.3 Java语言概述语言概述uJava虚拟机的抽象内部体系结构虚拟机的抽象内部体系结构29/29实验实验1.下载并安装下载并安装JDK及其帮助文件;及其帮助文件;2.为为JDK配置配置path和和classpath,并检验配置是否,并检验配置是否成功;成功;3.编写编写HelloWorld程序,编译并运行之。程序,编译并运行之。