1-程序设计语言概述_第1页
1-程序设计语言概述_第2页
1-程序设计语言概述_第3页
1-程序设计语言概述_第4页
1-程序设计语言概述_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、 江西师范大学江西师范大学计算机计算机信息工程信息工程学院学院计算机科学系计算机科学系 要知其然,更要知其所以然。 目 录 u第1章 程序设计语言概述 u第2章 程序设计语言的基本成分 u第3章 程序设计方法概述 u第4章 面向对象语言基础 u第5章 类的管理及常用工具类 u第6章 异常处理和断言 u第7章 线程 u第8章 GUI编程基础和applet u第9章 I/O流 u第10章 网络通信 u第11章 泛型与集合框架 2/37 要知其然,更要知其所以然。 u1.1 程序的含义和程序设计策略 n包括程序的含义、程序设计的通用策略包括程序的含义、程序设计的通用策略 u1.2 程序设计语言重要属

2、性 n包括语言的范型、类型系统、编译和解释包括语言的范型、类型系统、编译和解释 u1.3 Java语言概述 n含产生、含产生、发展、特点发展、特点、IDE环境环境、运行、运行原理等原理等 第1章 程序设计语言概述 1. 理解程序、程序设计、程序设计语言三概念; 2. Java设计初衷、崛起原因、特点、环境配置。 本章 重点 3/37 要知其然,更要知其所以然。 u1.1 程序的含义 nprogram:计划;:计划;programming:做计划做计划 n计算机程序计算机程序有自己的特点有自己的特点 n计算机程序的定义:计算机程序的定义: 计算任务的处理对象和处理规则的描述。 1.1 程序的含义

3、和程序设计策略 科学术语本质含义往往源自现实世界。日常程序设计:起床-洗 漱-吃饭-上学、若下雨就带伞、围着操场跑10圈。 注意逻辑次序,如应当先起床后洗漱。 1、首先要表达计算:一切数据处理皆计算。 2、符合计算机特点:无二义、特定空间分配(堆/栈)、 数据处理数据 以数据为核心的描述模型十分重要,如: 数据类型、数据结构、类、 4/37 要知其然,更要知其所以然。 u1.1.2 程序设计的通用策略 n经千百年锤炼出的策略,如:经千百年锤炼出的策略,如: 理清思路、掌控主次; 先抓主要矛盾,再抓次要矛盾; 先定纲要,再写内容。 n计算机程序计算机程序开发经典开发经典策略:自顶向下逐步求精策略

4、:自顶向下逐步求精 由瑞士学者Nicklaus Wirth于1971年提出; 要点:编制程序应先列纲要,逐步细化。 1.1 程序的含义和程序设计策略 Nicklaus Wirth,1984年获图灵奖年获图灵奖,1971.4在在文文 Program Development by Stepwise Refinement, CACM中首次提出中首次提出“逐步求精逐步求精”和和“结构化程序设结构化程序设 计计”两个两个概念概念,著有:,著有: Algorithms + Data Structures = Programs 5/37 要知其然,更要知其所以然。 u自顶向下逐步求精示例1: 组织一场运动会

5、 1.1 程序的含义和程序设计策略 1.开幕式 2.各项比赛 3.闭幕式 运动会 实施计划 1.开幕式 1.1 运动员入场 1.2 相关人员讲话 1.3 相关表演 2.各项比赛 3.闭幕式 运动会实施计划 明确、无 歧义、能 真正实施 的计划 运动会 实施计划 注意每次分解出子目标/子步骤或者不宜过多。why? 第第1步程序步程序第第2步步程序程序第第n步步程序程序 程序名 程序体 有多种方式分解,注意甄别优劣: 1.)按日程分解,即第一天/第二天比赛项目、; 2.)按类别分解,田径(短跑、长跑、)、体操、; 自顶向下逐步求精的精髓:先列纲要,再填细节。 好处:每一级程序都很简单。(源于复杂性

6、被分解、 被局部化,思考问题更专一)。 6/37 要知其然,更要知其所以然。 u自顶向下逐步求精 示例2:有序数组插入元素 1.1 程序的含义和程序设计策略 优化:是否可以将2、3两步合并? “能否简化/改进”等问题,应当成为一种常态思维。 1)输入数据;输入数据; 2)找位置;找位置; 3)移出空位;移出空位; 4)实施插入。实施插入。 f( inta, int len ) 1)输入数据;输入数据; 2)找位置;找位置; 3)移出空位移出空位; 移动移动起起/止止/规律规律 4)实施插入。实施插入。 f( inta, int len) 用用Java、 C等等语言语言 书写的书写的 源代码源代

7、码 f( inta, int len ) 7/37 要知其然,更要知其所以然。 u1.1.3 运行程序的两种基本方式 n编译编译方式:方式:编:编辑(优化),译:翻译编:编辑(优化),译:翻译 做法:编译器将全部源码一次性翻译成二进制码 语言:C/C+、Pascal/Delphi、 优点:能提高代码质量、程序执行速度快 缺点:程序运行期间,程序员无法干预 1.1 程序的含义和程序设计策略 编译器 源 代 码 二 进 制 硬件 8/37 要知其然,更要知其所以然。 u1.1.3 运行程序的两种基本方式 n解释解释方式:解释器类似翻译人员方式:解释器类似翻译人员 做法:用解释器将源代码逐句翻译源码

8、,逐句执行; 语言:Basic/VB、Java、C#、JSP、XML、 优点:能监控程序执行,可通过在解释器/虚拟机中新增 机制或模拟硬件,提供更多高级语言机制; 缺点:代码很难优化(为什么?)、程序执行速度慢 1.1 程序的含义和程序设计策略 虚拟机 (解释器) 源 代 码 二 进 制 硬件 目前,解释性语言日渐兴起。源于两点:1.)速度足 以应对普通应用; 2.)易于扩充高级语言机制。 9/37 要知其然,更要知其所以然。 u1. 语言的设计范型 n注:实质为程序设计范型。语言中设定哪些基注:实质为程序设计范型。语言中设定哪些基 本成分,主要源于支持何种程序设计范型。本成分,主要源于支持何

9、种程序设计范型。 u2. 类型系统 n数据类型是刻画数据及针对数据的基本操作的数据类型是刻画数据及针对数据的基本操作的 模型。好的模型,有助于简洁清晰地表达计算。模型。好的模型,有助于简洁清晰地表达计算。 因此类型系统是程序设计语言的核心成分。因此类型系统是程序设计语言的核心成分。 1.2 程序设计语言的重要属性 10/37 要知其然,更要知其所以然。 u1.2.1 语言的设计范型 n计算是计算机最核心任务。计算是计算机最核心任务。语言的设计范型就语言的设计范型就 是是如何看待计算如何看待计算,这是描述计算的前提和基础。,这是描述计算的前提和基础。 1.2 程序设计语言的重要属性 1978年年

10、Robert W. Floyd在其图灵奖演说中提出在其图灵奖演说中提出 了程序设计范型了程序设计范型(Programming Paradigms)概概 念,即设计和实现程序的模型。不同的范型衍念,即设计和实现程序的模型。不同的范型衍 生出不同的程序设计技术和方法学,不同程序生出不同的程序设计技术和方法学,不同程序 设计范型,其差别首先源于基础计算模型不同。设计范型,其差别首先源于基础计算模型不同。 11/37 要知其然,更要知其所以然。 u1.2.1 语言的设计范型 n四四种主流的程序设计范型(种主流的程序设计范型(区分区分关键在于看待关键在于看待 计算的角度计算的角度不同不同)。)。 命令式

11、范型:计算就是用指令去修改数据; 过程式范型、结构式范型均隶属于命令式范型。过程式范型、结构式范型均隶属于命令式范型。 面向对象式范型:计算就是对象间的互操作; 函数式范型:计算就是对数学函数的求解; 逻辑式范型:计算是为做出逻辑判定而进行的推理。 1.2 程序设计语言的重要属性 范型框定了程序基本成分的范畴。如命令式语言(汇编), 基本成分就是指令、数据,以方便表达命令式计算;过 程式语言需要过程/函数;而面向对象语言需要对象、 消息来刻画对象间的交互,即描述基于对象的计算。 12/37 要知其然,更要知其所以然。 u1.2.2 类型系统 n类型系统类型系统是语言中描述数据的基本机制,涉及:

12、是语言中描述数据的基本机制,涉及: 数据如何分类(大类)和新类型如何构造; 类型的易用性和安全性(强类型和弱类型、静态语言和 动态语言) 1.2 程序设计语言的重要属性 简洁、清晰地描述数据,安全地实施计算,是 程序设计语言最重要、最基础的任务。 13/37 要知其然,更要知其所以然。 u1.2.2 类型系统 n分类和构造分类和构造 分类策略:基本类型+新类型构造机制 Java大类:基本型、引用型(类、接口、数组) n注意:注意: 1.基本类型对应最基本数据,且类型不能太多; 2.为更高效,基本类型常用汇编、C等设计; 3.类型构造机制应易用且安全。 简单比较C和Java的类型系统 1.2 程

13、序设计语言的重要属性 14/37 要知其然,更要知其所以然。 u1.2.2 类型系统 n强类型语言和弱类型强类型语言和弱类型语言语言 “强”是指类型检查严格;如 if ( i=5 ) 类型检查与自动类型转换密切相关。强类型语言要求: 转换后数据无损 + 转换前后类型的语义要相容。 强类型语言,常见的有Pascal、Java、C#等; 弱类型语言,常见的有C、VB、Python等。 1.2 程序设计语言的重要属性 强类型语言能在程序运行前检测出许多错误,可提高软件 可靠性;弱类型语言使用灵活、方便,但也更易出错。 15/37 要知其然,更要知其所以然。 u1.2.2 类型系统 n静态语言和动态静

14、态语言和动态语言语言 静态:与编译器相关;动态:与运行时相关。 静态语言要求类型静态绑定,动态语言要求类型动态绑 定,即运行时的不同时刻变量可以拥有不同的类型。 静态语言: C、Pascal、C+、Java、C# 动态语言: VB、Python 1.2 程序设计语言的重要属性 Static typing when possible, dynamic typing when needed。 16/37 要知其然,更要知其所以然。 1.Java语言的诞生和发展 2.Java语言的特点 3.Java编程环境 4.Java程序的运行原理 1.3 Java语言概述 17/37 要知其然,更要知其所以然。

15、 u1.3.1 Java语言的诞生和发展 n1990年年12月,月,Sun让让Gosling负责基于负责基于C+开发开发 智能家电智能家电(如微波炉、如微波炉、PDA、电视机顶盒、电视机顶盒)项目项目。 n后发现问题:后发现问题: 嵌入式设备资源有限 VS C+程序太过复杂、庞大; 芯片将嵌入不同硬件 VS C+程序难跨平台。 (不同硬件平台的处理芯片大多不同) n解决策略:依托解决策略:依托C+,参照,参照SmallTalk、Ada, 设计出小巧、够用、能跨平台的新语言。设计出小巧、够用、能跨平台的新语言。 n1992年年Oak诞生,因重名于诞生,因重名于1995年更名为年更名为Java。

16、1.3 Java语言概述 James Gosling 18/37 要知其然,更要知其所以然。 u1.3.1 Java语言的诞生和发展 nOak新出,市场不成熟新出,市场不成熟,大单被拒,被,大单被拒,被搁置;搁置; n1993年,年,Internet迅猛发展为迅猛发展为Java带来机遇:带来机遇: 网络环境是多种软硬件平台共存的异构环境,因此需要 能够支持跨平台的编程语言; 当时网速很小,不支持体积庞大的网络程序。 上述要求与嵌入式平台的要求何其相像! n调整调整Oak并新增并新增Applet以及可运行以及可运行Applet程序程序 的浏览器的浏览器HotJava。动态网页的魅力引起了轰动。动

17、态网页的魅力引起了轰动。 n1995年,年,IBM、Apple、HP、Oracle、 Nescape、微软等宣布支持、微软等宣布支持Java。 1.3 Java语言概述 支持Java,就是提供针对自己平台的编译器、虚拟机、 运行时环境,提供Java与本平台的接口、类库。 19/37 要知其然,更要知其所以然。 u1.3.1 Java语言的诞生和发展 nJava的发展的发展 1998年之前:十分简陋,程序运行速度也极低。甚至程 序员之间交流经验,如何让Java跑的更快。 1998年12月发布JDK 1.2,重构内核,并废弃许多成分。 以至Sun将其称做第二代Java,即Java 2。 2004年

18、9月发布JDK 1.5,引入许多现代语言的高级特色, 如泛型等,期望其引领语言发展潮流。 至2013年12月,最新版本为7.0U45。 1.3 Java语言概述 20/37 要知其然,更要知其所以然。 u1.3.1 Java语言的诞生和发展 nJava的发展的发展 1.3 Java语言概述 编程 语言 TOP 10近 10年 的变 化情 况 Java是在程序设计排行榜无可争议的第一,在 移动嵌入式、网络、跨平台等方面无可取代。 21/37 要知其然,更要知其所以然。 uJava相关史料及学习资源 n百度百度百科百科Java: http:/ UvQNr6S6XcUo2ycNVS1UytToz66

19、bYb8yjaAC O1dRm5ST8_kNKD_5mrl n维基百科维基百科java: /zh-tw/Java 推荐阅读 22/37 要知其然,更要知其所以然。 u完全面向对象和简单性 n相较相较C+支持过程式程序设计、机制较复杂支持过程式程序设计、机制较复杂而言而言 完全面向对象,即一切皆对象(有所夸大),一切功能 皆通过对象间的交互来完成。不支持过程式语言的一些 机制,如struct、union等;也不推荐用编写过程式程序。 nJava设计者十分看重语言设计者十分看重语言/程序的简单规范。程序的简单规范。 简单才不易出错。设计者饱受C/C+复杂

20、烦扰,嵌入式 程序将烧制到硬件,出错将导致损失惨重。 规范是指按既定章法做事,使得程序易于维护、简单、 可靠。如统一的异常处理机制、GUI事件处理机制、多线 程机制等。 1.3.2 Java语言的特点 23/37 要知其然,更要知其所以然。 u平台无关性 n即编译后的程序不经修改就可运行于其它平台。即编译后的程序不经修改就可运行于其它平台。 n是是Java最具特色也是必须实现的特性。最具特色也是必须实现的特性。 最具特色:主流语言常针对特定平台(如windows、 Unix/Linux),或为不同平台开发不同版本,除Java外, 尚未其它主流语言的程序能够直接运行于不同平台。 Java必须实现

21、跨平台:嵌入式、网络均需要此特色。 如何实现? 1.3.2 Java语言的特点 24/37 要知其然,更要知其所以然。 u平台无关性 1.3.2 Java语言的特点 n 种种语言任意两种通话需要多少翻译器?语言任意两种通话需要多少翻译器? 中 英 法 德 表示语言双向翻译器 中英法德 世界语 不同语种间通话时,配置翻译器的两种模式 模式2模式1 不同软硬件平台 虚拟机 字节码 25/37 要知其然,更要知其所以然。 u平台无关性 n实现跨实现跨平台的关键平台的关键要素:要素:虚拟机虚拟机和和字节码字节码。 虚拟机(JVM):仿真的计算机,可运行字节码(而非 二进制)。不同虚拟机对字节码有统一的

22、解释。 字节码:由Java编译器产生的一种中间代码,是对Java 程序在内存分配及执行上的统一解释。 注:java编译器、虚拟机都是与平台密切相关的。 1.3.2 Java语言的特点 JDK JRE 运行时类库 JVM API类库 Java编译器 其它 26/37 要知其然,更要知其所以然。 u平台无关性 1.3.2 Java语言的特点 27/37 源程序 (.java) 字节码 文件 (.class) 类、 类库 二进制 Pentium 二进制 SPARC 虚 拟 机 Win32 Pentium 虚 拟 机 Unix SPARC 虚 拟 机 MacOS PowerPC 二进制 PowerPC

23、 编 译 器 Win32 Pentium 编 译 器 Unix SPARC 编 译 器 MacOS PowerPC 借助虚拟机和字节码实现跨平台 要知其然,更要知其所以然。 u安全性和可靠性 n安全性:程序安全性:程序自身抵御外界攻击的能力自身抵御外界攻击的能力。 n可靠性:系统可靠性:系统在某时间段内运行不出错的几率。在某时间段内运行不出错的几率。 网络程序对安全性和可靠性有着更为迫切的要求; Java从语言的语法、到运行环境,为提升程序的安全性 和可靠性做了大量努力。 例如:沙箱机制、类装载前检查、剔除指针运算(偏移、 ) uJava帮助文件的使用 n最最权威、最全面权威、最全面 1.3.3 Java编程环境 31/37 要知其然,更要知其所以然。 u若干Java IDE nJbuilder:商业典范,功能强大:商业典范,功能强大 nEclipse:共享软件,市场主流:共享软件,市场主流 nNetBeans:官方提供并推荐:官方提供并推荐

温馨提示

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

评论

0/150

提交评论