第一篇:Power专题十二JAVA程序设计语言
专题十二: JAVA程序设计语言
Java语言简介: 背景
1991年 ,SUN MicroSystem公司的 Jame Gosling、Bill Joe等人 ,在电 视、控制烤面包箱等家用消费类电子产品上进行交互式操作的开发,开始时是使用C++语言,但是,后来发现C++在某些方面并不能很好的满足设计者的需要,从而考虑自行设计一门新的语言,这种新的语言并不局限于扩充语言机制本身,而是更注重语言所运行的软硬件环境。主要是可以使用其建立一个系统,这个系统运行于一个巨大的、分布的异构网络环境中,完成各种电子设备之间的通信与协同工作。基于这种思想而开发了一个名为Oak 的(即一种橡树的名字)新语言。
Java语言简介
Oak先是被用于家电控制中,可通过手持设备控制家电。在当时并没有引起人们的注意 ,直到1994年下半 年 ,Internet的迅猛发展 ,环球信息网 WWW的快速增长 ,促进了 Java语言研制的 进展 使得它逐渐成为 Internet上受欢迎的开发与编程语言。用java编写的Applet应用小程序能够嵌入到网页中运行,而实现声音、动画等功能。同时,在一般的应用程序设计方面也不逊色,完全可以用面向对象的技术与方法进行开发,符合最新的软件开发规范的要求。由于oak已经被注册,所以,最终更名为java。
Java对软件开发技术的影响
工业界不少人预言 :“Java语言的出现 ,将会引起一场软件革命 ”,这是因为 传统的软件往往都是与具体的实现环境有关 ,换了一个环境就需要作一番改动 ,耗 时费力 ,而 Java语言能在执行码(二进制码)上兼容 ,这样以前所开发的软件就 能运行在不同的机器上 ,只要所用的机器能提供 Java语言解释器即可。
Java对软件开发技术的影响重要体现在以下四个方面:
1、软件的需求分析 :可将用户的需求进行动态的、可视化描述 ,以提供设计者更加直观的要求。用户的各色各样的需求都可以用 Java语言描述清楚。
2、软件的开发方法 :由于 Java语言的面向目标的特性 ,所以完全可以用 O-O 的技术与方法来开发。
3、Java语言的动画效果。利用 WWW提供的巨大 动画资源空间 ,可以共享全世界的动态画面的资源。
4、软件最终产品 :用 Java语言开发的软件可以具有可视化、可听化、可操 作化的效交互、动画与动作 “,要它停就停 ,要它继续就继续 ,而这是在电影与电视播放过程中难以做到的。
Java是一个广泛使用的网络编程语言 ,它是一种新的计算概念。首先 ,作为一种程序设计语言 ,它简单、面向对象、不依赖于机器的结构、具有可移植性、安全性、并且提供了并发的机制、具有很高的性能。其 次 ,它最大限度地利用了网络 ,Java的小应用程序(applet)可在网络上传输而 不受 CPU和环境的限制。另外 ,Java还提供了丰富的类库 ,使程序设计者可以很 方便地建立自己的系统。
Java的特点: 简单性
Java语言衍生自C++,是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的 任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程 序。Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外 ,Java也适合于在小型机上运行 ,它的基本解释器及类的支持只有 40KB左右 ,加上标准类库和线程的支持也只有 215KB左右。库和线程的支持也只有 215KB左右。
面向对象性:
Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的 接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息隐藏;而类则提供了一
类对象的原型 ,并且通过继承机制 ,子类可以使用父类 所提供的方法 ,实现了代码的复用。
体系结构中立:
Java解释器生成与体系结构无关的字节码指令 ,只要安装了 Java运行时系统 ,Java程序就可在任意的处理器上运行,使得 Java程序可以方便地被移植到网络上的不同机器。同时 ,Java的类库中也实现了与不同平台的接口 ,使这些类库可以移植。这样大大降低了开发、维护和管理的工作。安全性 :
用于网络、分布环境下的 Java必须要防止病毒的入侵。Java不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用 ”特洛伊 “木马等欺骗手段访问对象的私有成员 ,同时也避免了指针操作中容易 产生的错误
支持网络编程:
Java语言的特性使它可以最大限度地利用网络。Applet是 Java的小应 用程序 ,它是动态、安全、跨平台的网络应用程序。Java Applet嵌入 HTML语 言 ,通过主页发布到 Internet。网络用户访问服务器的 Applet时 ,这些Applet 从网络上进行传输 ,然后在支持 Java的浏览器中运行。由于 Java语言的安全机 制 ,用户一旦载入 Applet,就可以放心地来生成多媒体的用户界面或完成复杂的计算而不必担心病毒的入侵。分布性:
Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议 ,用户 可以通过 URL地址在网络上很方便地访问其它对象。丰富的类库:
语言包提供的支持包括字符串处理、多线程处理、例外处理、数学函数处理等。 实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。
输入输出包用统一的 “流 ”模型来实现所有格式的 I/O,包括文件系统、网络、输入
低级网络包用于实现 Socket编程。
抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件
网络包支持 Internet的 TCP/IP协议 ,提供了接口。面向对象程序设计——对象、类与实体
“对象”译自英文的“object”,现实世界实际上是由object组成的,我们看到的一切都是object。程序设计语言为解决现实世界的问题而存在,因此,我们自然会想到,让程序设计按照我们平常看世界的方式运作,这样才最自然,这就是面向对象的程序设计的出发点。面向对象程序设计,确切的说,对象是现实世界的某个具体的物理实体在计算机逻辑中的映射和体现。比如:每个人都是一个具体存在的实体,有高度、体重等很多属性,也有走路、工作等很多行为。这样的实体在程序设计中可以表达为计算机可以理解和操作的对象。
类:每个对象都是属于某种类别的。也就是说类是同种对象的集合与抽象。属于类的某个对象被称为是类的一个实例。
对象的状态与行为:对象的状态也称为静态属性。用计算机术语来说也就是变量。每个对象都有自己专有的变量。比如,具体的一个人,有身高、体重等。
对象的行为也称为动态属性,在计算机内部用方法来表示。比如,人有走路、工作的行为。
对象的关系:
包含:当对象A是对象B的属性的时候,称对象B包含对象A。比如电脑与主板
继承:当对象A是对象B的特例的时候,称对象A继承了对象B。比如,鲤鱼是鱼的一种特例。
关联:对象A的引用是对象B的属性,A和B之间是关联关系。Java和 C、C++之间的比较:
对于变量声明、参数传递、操作符、流控制等 ,Java使用了和 C、C++ 相同的传统 ,使得熟悉 C、C++的程序员能很方便地进行编程。同时 ,Java为 实现其简单、安全等特性 ,也摒弃了 C和 C++中许多不合理的内容。
全局变量: Java程序中 ,不能在所有类之外定义全局变量 ,只能通过在一个类中定 义公用、静态的变量来实现一个全局变量。例如 : Class GlobalVar{
public static global_var;}
在类 GlobalVar中定义变量 global_var为 public static,使得其它类 可以访问和修改该变量。Java对全局变量进行了更好的封装。而在C和 C++中 ,依赖于不加封装 的全局变量常常造成系统的崩溃。
Goto语句:Java不支持 C、C++中的 goto语句 ,而是通过例外处理语句 try, Catch, final等来代替 C、C++中用 goto来处理遇到错误时跳转的情况 ,使程序更可读 且更结构化。
指针:指针是 C、C++中最灵活 ,也是最容易产生错误的数据类型。由指针所进行的内存地址操作常会造成不可预知的错误,从而破坏安全性 ,造成系统的崩溃。而 Java对指针进行完全的控制 ,程序员不能直接进行任何指针操作。同时 ,数组作为类在Java 中实现 ,良好地解决了数组访问越界这一C、C++中不作检查的错误。
内存管理:在 C中 ,程序员通过库函数 malloc()和 free()来分配和释放内存 , C++ 中则通过运算符 new和 delete来分配和释放内存。再次释放已释放的内存块或未被分配的内存块 ,会造成系统的崩溃;同样 ,忘记释放不再使用的内存块也会逐渐耗尽系统资源。而在 Java中 ,所有的数据结构都是对象 ,通过运算符new 为它们分配内存堆。通过new得到对象的处理权 ,Java对此自动地进行管理并且进行垃圾收集 ,有效防止了由于程序员的误操作而导致的错误 ,并且更好地利用了系统资源。
数据类型的支持:在 C、C++中 ,对于不同的平台 ,编译器对于简单数据类型如 in t,float 等分别分配不同长度的字节数 ,例如:int在 IBM PC中为 16位 ,在 VAX-11中为 32位 ,这导致了代码的不可移植性 ,但在 Java中 ,对于这些数据类型总是分 配固定长度的位数 ,如对 int型 ,它总占 32位 ,这就保证了 Java的平台无关性。
类型转换:在 C、C++中 ,可以通过指针进行任意的类型转换,而 Java中 ,运行时系统对对象的处理要进行类型相容性检查 ,以防止不安全的 转换。
头文件:C、C++中用头文件来声明类的原型以及全局变量、库函数等 ,在大的系 统中 ,维护这些头文件是很困难的。而 Java不支持头文件 ,类成员的类型和访 问权限都封装在一个类中 ,运行时系统对访问进行控制 ,防止对私有成员的操作。同时 ,Java中用 import语句来与其它类进行通讯 ,以便使用它们的方法。
结构和联合:C、C++中的结构和联合中所有成员均为公有 ,这就带来了安全性问题。Java中不包含结构和联合 ,所有的内容都封装在类中。
预处理:C、C++中用宏定义来实现的代码给程序的可读性带来了困难。在 Java 中 ,不支持宏 ,它通过关键字 final来声明一个常量 ,以实现宏定义中广泛使 用的常量定义。
简 单 的 Java程 序:
Application 与 Applet程序 java程序可以分为两类:java application 和java applet。前者是完整的应用程序,需要独立的解释器来解释运行;后者则是嵌在网页中的非独立程序,由浏览器所自带的java解释器来解释运行。
简 单 的Application程序:
public class HelloWorldApp { //an application
public static void main(String args[ ]){
System.out.println(”Hello World!“);} }
简 单 的 Applet程序: import java.awr.*;import java.applet.*;
public class HelloWorldApplet extends Applet { //an applet
public void paint(Graphics g){
g.drawString(”Hello World!“,20,20);} }
由 于 Applet中 没 有 main()方 法 作 为 Java解 释 器 的入 口 ,我 们 必 须 编 写 HTML文 件 ,把 该 Applet嵌入 其 中 ,然 后 用 appletviewer来 运 行 ,或 在 支 持 Java的 浏 览 器 上 运 行。HTML文 件 如 下 :
第二篇:2008级程序设计语言(Java)教学大纲
《程序设计语言(Java)》教学大纲
课程名称: 程序设计语言(Java)英文名称:Programming Language(Java)课程编码: 212013 学 分: 4
学 时: 64(其中理论学时: 32,实践学时: 32)适用专业:非计算机专业理工类本科 先修课程: 《大学计算机基础》
一、课程的性质、目的与任务 课程性质:
该课程面向全校非计算机专业理工类本科生,是程序设计语言类必修的公共基础课之一。该课程的前导课程是《大学计算机基础》,侧重于Java语言的基本语法和面向对象编程方法的介绍。课程目的:
通过本课程的学习,学生不仅应掌握 Java语言的基本特点和编程方法,还应掌握面向对象程序设计的基本思想、基本概念和基本方法,并能运用所学的知识和技能对一般问题进行分析和程序设计,能解决本专业的一些实际问题。课程任务:
本课程采用引导式、启发式、实例讲解和实作演练等教学方法来组织教学,在注重Java语言基本概念和基本语法知识介绍的同时,注重培养学生面向对象的程序设计能力和思维方式,加强学生创新能力的培养,为进一步使用Java进行技术开发奠定坚实基础。
二、教学基本要求
通过本课程的学习,学生应达到下列基本要求:
1.掌握Java语言的基本语法、数据类型、运算符和表达式、流程控制语句、数组、向量和字符串、Swing界面设计、Applet小应用程序编制以及常见Java数据流的使用。
2.掌握对象和类的基本概念,学会使用Java进行面向对象程序设计开发的基本技能。
3.理解Java语言的特点、抽象类和内部类的概念、异常处理方法、控制组件外观的方法、Applet的安全机制和生命周期。
4.了解Java包的工作机制、对象持续化的基本概念、常见Java类的用法以及API文档的查阅方法。
三、教学条件
本课程教学在多媒体教室进行,实践教学要求在计算机机房进行,要为每个学生提供一台高性能计算机,并安装有JDK 6.0,UltraEdit,JCreator等开发工具。实践教学完成后,要上交相应部分的实验报告。
四、教学内容与学时安排
本课程共分三篇十章,内容涉及Java语言的基本概念和面向对象的编程方法。第一篇为Java编程基础篇,包括第1,2,3章,主要介绍Java的基本语法、数据类型及其流程控制语句;第二篇为Java编程提高篇,包括第4,5,6章,主要介绍数组、向量和字符串、Java面向对象的编程方法以及异常处理;第三篇为Java编程进阶篇,包括第7,8,9,10章,介绍Java图形界面设计、Applet以及数据流方面的知识。第1章 概述 1.1 什么是Java语言
1.2 一个基本的Java应用程序 1.3 程序的编译和运行 1.4 常见错误
1.5 使用Java核心API文档
第2章 标识符和数据类型 2.1 Java的基本语法单位 2.2 Java编码体例
2.3 Java的基本数据类型 2.4 复合数据类型
2.5 类和对象的初步介绍
第3章 表达式和流程控制语句 3.1 表达式 3.2 流控制
第4章 数组、向量和字符串 4.1 数组
4.2 Vector类 4.3 字符串类型
第5章 进一步讨论对象和类 5.1 抽象数据类型
5.2 对象的构造和初始化 5.3 this引用 5.4 子类 5.5 方法重写 5.6 Java包 5.7 类成员
5.8 关键字final 5.9 抽象类 5.10 接口 5.11 内部类 5.12 过时信息
第6章 Java语言中的异常 6.1 异常 6.2 异常示例 6.3 异常处理 6.4 异常分类 6.5 抛出
(2学时)
(4学时)
(4学时)
(4学时)
(4学时)
2学时)
(6.6 创建自己的异常
第7章 Java的图形用户界面设计(4学时)
7.1 AWT与Swing 7.2 容器 7.3 布局 7.4 事件处理
第8章 Swing组件(4学时)
8.1 按钮 8.2 标签 8.3 组合框 8.4 列表 8.5 文本组件 8.6 菜单组件
8.7 对话框、标准对话框与文件对话框 8.8 控制组件外观
第9章 Java Applet(2学时)
9.1 编写Applet 9.2 Applet的方法和Applet的生命周期 9.3 Applet的运行
9.4 在Applet中的多媒体处理 9.5 Applet的事件处理
9.6 Applet与普通应用程序的结合
第10章 Java数据流(2学时)
10.1 数据流的基本概念 10.2 基本字节数据流类 10.3 基本字符流 10.4 文件的处理
五、考核方式和成绩记载
本课程结束后由计算中心统一安排无纸化上机考试,成绩记载为: 总评成绩(理论)=平时成绩(40%)+无纸化上机考试成绩(60%)
其中:平时成绩=平时出勤和课堂提问(50%)+作业(50%)总评成绩(实践)=平时成绩(60%)+综合课题设计成绩(40%)
其中:平时成绩=上机出勤和表现(40%)+上机练习记录(30%)+单元实验报告(30%)
六、教学参考书 [1] 辛运帏等,《Java程序设计(第二版)》,清华大学出版社,2006年8月 [2] 辛运帏等,《Java程序设计题解与上机指导(第二版)》,清华大学出版社,2006年11月
七、说明
执笔人: 普运伟 审定人: 王建华 教学基层组织主任: 秦卫平
第三篇:Java面向对象程序设计语言课程设计指导书
山东建筑大学商学院电子商务专业
《Java面向对象程序设计语言》课程设计(实验)指导书
一、对学生的基本要求:
1、理论联系实际、严肃认真、实事求是的科学态度和勇于探索的创新精神。
2、运用所学基础理论与专业知识分析和解决实际问题,培养独立思考完成任务的能力。
3、运用Java面向对象程序设计方法、标准与规范开发小型应用软件系统。
二、设计的要求及内容及要求:
应用Java面向对象程序设计语言开发小型应用软件系统。可以从给定的选题中选择一个课题或自拟课题(自拟课题需经指导教师批准),完成系统分析、设计和开发。
具体要求如下:
(1)针对你所选择的系统进行需求分析,写出系统的功能要求,设计的应用程序应具有的功能要素。
(2)程序代码应符合教学中应该具有的规范要求,类名、方法名,属性名称应与设计中实际的应用含义相符,程序中具有相应的注释。(3)程序的界面要合理、美观。
(4)每人最终提交一个可行的应用软件程序和规范的课程设计说明书。说明书应严格按照说明书的要求,格式清晰、规整。并提交所设计程序的电子文档。
三、设计进度: 1、17周周一~周二:选题,系统的需求分析。分析并规划你所设计的系统应达到的功能,满足什么样的要求。2、17周周二~周四:系统设计。分析要达到你所要求的功能需要编写什么类,规划类的层次结构,设定好类明、方法名、属性名;规划你所设计的系统应具有什么样的界面布局。查阅资料帮助自己规划好你的系统。3、17周周五~18周周二:程序设计。根据自己所规划的程序进行具体代码设计,代码设计要符合程序设计的规范要求,注意程序的编写格式。4、18周周三:程序测试。对自己所规划的程序进行测试,看是否有异常及程序Bug出现,并进行调试修正程序代码。5、18周周三:编写课程设计说明书。按照本指导书要求格式编写程序设计报告(见附件)。6、18周周四上午交所设计程序的电子文档,和课程设计说明书的电子文档。7、18周周四~周五:成绩评定。等待指导老师提问答辩。
四、选题
根据自己的爱好从以下题目中选择一个题目进行设计。
1、设计题目:学籍管理系统
设计目的:设计一个学籍管理系统,保存所有学生信息。
第1页 设计要求:学籍管理系统一般包括学生的基本信息,如,学号、姓名、班级、籍贯、联系电话、学生成绩等;能够添加、查找、删除学生信息等功能;程序执行时候,需要从文件中导入数据,程序推出后再将数据保存到文件中。
2、设计题目:出版物管理
设计目的:对出版物书籍、CD或者磁带进行管理。
设计要求:使用图形界面的方式,对书籍、CD或者磁带的基本信息进行管理。
书籍界面包括:书籍的名称、书籍的价格、书籍的出版社、书籍的作者、书籍的ISBN、及书籍的出版日期等;可以通过选择菜单来进行书籍信息的添加、修改和删除等,所有的书籍信息会显示在一个列表组件中,当某本书籍的信息改变时,列表中会相应的进行改变。CD界面包括:CD的名称、CD的价格、CD的出版社、CD的演唱者、CD的发行者、CD的ISRC等;可以通过选择菜单进行CD信息的添加、修改和删除,所有CD信息会显示在一个列表组件中,当某张CD的信息改变时,列表中会相应的进行改变。
磁带界面包括:磁带的名称、磁带的价格、磁带的出版社、磁带的演唱者、磁带的ISRC等;可以通过选择菜单进行磁带信息的添加、修改和删除,所有磁带信息会显示在一个列表组件中,某张磁带的信息改变时,列表中信息会相应的进行改变。
3、设计题目:Java程序编辑器
设计目的:设计一个Java程序编辑器,能够进行简单的文字处理。
设计要求:类似一个Windows系统的记事本,能够实现打开、保存文件;查找、替换字符串;定时自动更新文件,并创建备份文件;将Java的关键字以不同颜色或不同字体显示。
4、设计题目:设置日期时间属性
设计目的:设计类似Windows系统中“设置日期时间属性”的窗口及功能,综合运用各种组件、日期类、日历类、线程等内容。
设计要求:设计类似Windows系统中“设置日期时间属性”的窗口及功能,设计相似界面,实现日期和时间的多种运算和显示,保证运算正确性。
5、设计题目:交通信号灯的线程设计
设计目的:使用多线程设计,同步机制设计一个交通信号灯。
设计要求:设计线程;设计路口信号灯示意图界面;进一步将两个方向的信号灯分成3种车道灯:左转、直行和右转;根据车流量进行时间的模糊控制。
6、设计题目:聊天程序
设计目的:图形界面与Socket通信及输入/输出流的综合运用。
设计要求:设计一个图形界面,以Socket通信机制实现类似QQ的网络聊天程序,该聊天程序最少可以达到两个人聊天,并可以保存聊天的内容。
7、银行贷款多种还款方式的计算
设计目的:图形界面与算法设计。
设计要求:设计一个图形界面,在界面上能够实现的实际贷款和还款的一般规则(参照教材P409)。
第2页
8、日历组件
设计目的:图形界面与算法设计。
设计要求:自定义一个日历组件:显示当月日历、当前日期、上/下日历等,界面样子参照教材P409。
9、地址薄管理器
设计目的:图形界面与输入/输出流和文件操作。
设计要求:设计一个存储朋友电子邮件地址及电话号码的地址薄应用程序,界面自行设计(也可参照教材P411)。
(1)设计一个人员类,成员变量包括类别、姓名、电话号码和邮件地址等,成员方法包括插入、移动、删除、更改类别等。所有人员信息保存在以对象为单位的记录文件中,以对象流实现数据读取和保存功能。
(2)设计图形用户界面,在此界面上可实现针对朋友电子邮件和电话号码的各种操作(可参照教材P411)。
(3)添加主菜单和快捷菜单,实现插入、删除、移动等功能,快捷菜单会根据当前组件自动执行不同对象的插入、删除、移动等操作。
10、搜索文件
设计目的:图形界面与输入/输出流和文件操作。
设计要求:参照Window的资源管理器,给特定搜索文件名的部分字符,在制定的范围内搜索文件,显示搜索结果的文件名列表、文件路径及文件属性。
其他选题,需征求指导教师同意,由指导教师根据拟定的题目难度给予相应的评分标准。
五、考核内容及分值分配
1、课程设计说明书。(30分)1)正文:(手写课程设计报告4页以上)(20分)(1)、概述
包括项目背景、编写目的、软件定义、开发环境、所用的知识等内容。
(2)、功能说明
问题陈述、需完成的功能。
(3)、程序类说明
定义的类、接口等的名称,并将其在程序中起到的作用进行简要说明,并根据面向对象程序设计的原则画出类的层次关系图。(4)、软件系统测试说明
对你所设计的软件进行使用测试,列举该软件出现的问题和不完善的地方。
(5)、用户使用说明
将所设计的软件能够达到的功能进行描述。2)结束语:(5分)
第3页 写出完成本课程设计的心得,有哪些收获。软件还需要哪些改进。3)参考文献:按照要求格式写出你所参考的文献资料。(5分)
2、开发的应用软件系统(60分)1)程序代码的格式(10分)
代码格式是否规范,是否有相应的注视,程序类名、方法名、属性名是否具有可读性。2)程序界面设计(10分)
界面设计布局是否合理美观,操作是否简单方便。3)程序功能(40分)
程序功能是否达到了你所选系统的要求。基本满足可得24~28分;完全满足可得28~32分;完全满足并能够进行相应的异常处理可得32~40分;如果在此基础上还能进行相应创新可根据创新的程度进行适当加分。
3、答辩及课程设计说明书资料归档规范性(10分)
注:每个学生都要独立完成一个题目,如发现雷同者,对所有雷同学生按照不及格处理。
附件:说明书(论文)格式(可以参照论文范例)2.说明书(或论文)结构及要求
(1)封面(由商学院统一发课程设计封面纸)(2)任务书(由指导教师填写)(3)目录
以上内容由指导教师统一下发。(4)正文:(4页课程设计报告纸以上)1)、概述
2)、功能说明 3)、程序类说明
4)、软件系统测试说明 5)、用户使用说明(5)结束语
(6)参考文献(资料)
参考文献必须是学生在课程设计中真正阅读过和运用过的,文献按照在正文中的出现顺序排列。各类文献的书写格式如下: a.图书类的参考文献
序号 作者名·书名·(版次)·出版单位,出版年:引用部分起止页码。b.翻译图书类的参考文献
序号 作者名·书名·译者·(版次)出版单位,出版年:引用部分起止页码。c.期刊类的参考文献
序号 作者名·文集名·期刊名·年,卷(期):引用部分起止页码。
第4页
(7)附件
可以根据说明需要将设计界面及相关其他材料附在此处,也可以没有。
第5页
第四篇:程序设计语言
程序设计语言
一般分为机器语言、汇编语言和高级语言。
1、机器语言
机器语言是用二进制数表示的、计算机唯一能理解和直接执行的程序语言。机器语言不直观,编写难度大,易于出错,调试、修改繁琐,但执行速度最快。机器语言是最低级的程序设计语言。
2、汇编语言
汇编语言是将机器语言“符号化”的程序设计语言。
汇编语言编写的程序,机器不能直接识别,要由汇编程序将其翻译成机器语言才能执行。
特点:比机器语言程序更易于编写、检查和修改,也保持了机器语言编程质量高、运行速度快、占用存储空间少等优点。但汇编语言的通用性和可移植性差。汇编语言也属于低级语言。
3、高级语言
常用的高级语言有BASIC、FORTRAN、PASCAL、C、C++、JAVA等。
特点:与汇编相比,①更接近自然语言,一般采用英语单词表达语句,便于理解、记忆和掌握。②易于编写、查找错误和修改③通用性强。
第五篇:如何学习程序设计语言
如何学习程序设计语言
经常有人会问,“怎样才能学会某某语言?”、“我该怎么学好某某语言?”,其实在学习某种程序设计语言之前,你需要弄明白一个问题,编程的目的是什么?我们为什么要编程?编程就是为了解决各种问题,通过一系列的指令来解决这些问题。那我们学习编程,到底需要学什么呢?因为编程的目的是为了解决问题,显而易见,我们学编程,就是要学会如何解决问题。高手和新手就是看你解决问题的能力。
我们应该如何学习?举个例子,有一天你想买个空调(我想学编程),于是就是市场上了解空调的情况,进行比较,最终确定某个品牌的空调(对目前的编程语言作些了解,根据自身的情况,最终确定一门语言来学习)。空调买来后,有专业的安装工人给你安装调试(学习前先配置好程序的调试运行环境,让你编写的程序能在电脑上跑起来,通过网上的教程或者购买的书本来了解这方面的知识)。安装工人走了之后,你想学会控制空调,这时你就遇到问题了“我怎么才能学会控制它呢?”(我该如何学习编程呢?)首先,你会找来空调的说明书(程序语言的语法手册,可以从网上查找或者买本书来看)和遥控器(电脑),边看说明书,边通过遥控器来控制空调(边看资料边在电脑上编写程序解决某个问题),随着操作的熟练你就不再看说明书了。当说明书上的说明和你实际的操作对应不起来时,你会向厂家咨询,问明原因(可以在某个技术社区或聊天工具上向熟手请教)。总之,一句话,学习时边看资料边实践(在电脑上编写、运行、调试你的程序)。
在写代码前,一定要先养成良好的习惯,先把握住程序的整体,然后再细分,一步一步去完善、去实现全部功能。无论做哪一步时,你都要明白,你的程序在为你解决什么问题?不然,你的解决问题的能力无法提高,学习的目的性也不强。不是有句话,“书到用时方恨少”,就是在你实际操作时,会遇到各种各样问题,你通自己的探索来解决各种问题时,是最有针对性的学习,因为你有这个需求“要如何解决这个问题”,所以当你满足自己的这个需求时,也是最有动力学习的时候了。学习编程,特别在程序出现问题,不按照自己的意愿去运行时,一定要有耐心,一行、一行的去阅读程序,想办法输出它的运行结果,看看是否符合自己的意愿,然后找出出现错误的这一行代码,最后针对这行代码进行分析、调试来解决这个BUG。
当你完成一个学习任务后,其实你已经进入编程的大门了,以后只要按照这个思路继续学习,你就会掌握越来越多的知识和经验,解决问题的能力也会越来越强。
如何学习程序设计
有许多网友都曾迷惑地问我:“怎么样才能学好程序设计?”,这不是一两句话能说
清楚的,于是我就写了这篇文章,给广大爱好者一个能解惑的方法,无论你是什么样的“鸟”相信都能在这篇文章里找到你想要的什么是程序设计
话就从一个著名的公式说起:程序设计=数据结构+算法
每当我写下这个公式的时候,心中总有一种新的感悟,可是就这个程序界尽人皆知的公
式却难倒了一大批想和Bill·Gates一争高下的朋友,下面我为大家解剖这个公式:
“程序设计”说白了就是大家所谓编程,先不管这个词中有什么深刻的内涵,先看看等式
右面的这两个名词。
按照官方的定义:数据结构即非数值计算的程序设计问题中的计算机的操作对象以及它
们之间的关系和操作;算法是对特定问题求解步骤的一种描述,是对指令的有序序列。官方的解释就是经典,可是我们看了却更糊涂了。别急,听我给大家解释。
程序设计就像盖房子,数据结构就像砖、瓦,而算法就是设计图纸。你若想盖房子首先
必须有原料(数据结构),但是这些原料不能自动地盖起了你想要的房子;你必须按照设计图纸(算法)上的说明一砖一瓦地去砌。这样你才能拥有你想要的房子。程序设计也一样,你使用的编译工具中有各种功能语句或基本结构,它们不会自动排列成你要的程序代码。你得按照程序规定的功能去编写,而程序的功能是实现就是算法的具体体现。所以通俗地说:你必须按照特定的规则,把特定的功能语句和基本结构按照特定的顺序排列起来,形成一个有
特定功能的程序,这就是:程序设计=数据结构+算法。数据结构是程序设计这座大厦的基础,没有基础,无论设计有多么高明,这座大厦不可能建造起来的。算法则是程序设计的思想,它的灵魂!没有灵魂的程序不能叫程序,只是一堆杂乱无章的符号而已。在程序设计中,数据结构就像物质,算法就是意识。这就像哲学上说的:意识是依赖与物质而存在的,物质是由于意识而发展。双方是相互依存、缺一不可的!
数据结构内容不多仅仅有几个系统自带的基本结构(像顺序结构、分支结构、循环结构、函数过程)数据类型(整型、实型、布尔、字符等)和用户定义的高级点的数据结构(数组、集合、文件、指针(队列、栈、树、图等)······)就这么多。可是算法却不同了,它是多中多样的!它可以让你让数据以你想要的方式排列(当然要符合语法和功能要求^_^)。再打
个比方,数据结构是人体的各种组织、器官,算法则是人的思想。你可以用你的思想去支配你身体的各个可以运动的器官随意运动。如果,你想去取一个苹果,你可以走过去,也可以跑过去,只要你想,你甚至可以爬过去。但是无论如何,你你的器官还你的器官(没有变),目的还是同一个目的(取苹果),而方式却是随心所欲!这就是算法的灵活性,不固定性。因此可以这样说:数据结构是死的,而算法是活的!现在明白许多了吧!GO ON
怎样学习程序设计
上面说了许多数据结构的在程序设计中重要性,所以努力学习好数据结构是学好程序设计的第一步,也是关键的一步。你初学起来一定会觉得难,枯燥(其实我当时也是这么想的 ^_^),什么标准文件、标准类型、标准函数、标准过程搞的你烦不胜烦。于是,就有许多初学者就厌倦了,停滞不前了,退缩了。你若是想编好程序的话就想:难道就这么一点点小困难就难倒我了吗?我还要挑战Bill·Gates呢?我一定能行,相信自己,一定会闯过这一关的!这样以来,你就具备了程序员最基本的素质——毅力。这一点是程序员必备的,否则在后面开发程序的漫长时间里,你会熬不住的。而且只有这样你才能静下心来学习。这一端时间没有什么捷径,只有多看书、多练习,把所有结构和类型的用法都找掌握牢固。不懂就要问。最好呢,有一位老师指引,这样比自己在这条路是摸黑前进强多了,而且往往还事半功倍。切记!只要跨出了第一步,以后就容易多了,万事开头难嘛!一定要坚持,当你过了这一端时间以后,你就发现程序设计根本没有你想象的那样难。当你把所有的东东都学会时,程序设计的大门已经向你敞开了一扇,而另一扇就是······
算法,这个是程序设计的重点,也是难点。许多菜鸟和老鸟的区别主要在对算法掌握的熟练程度上面。有许多朋友曾这样问我:“我数据结构上面的都学会了,也知道该怎么样用,可是我为什么还是在编程时,不知道该怎样用呢?其实,这就是缺少算法思想的一个具体表现。并不是学好了数据结构就会编程了。算法是灵活多变的,它不像数据结构那样有固定的形式。算法是不固定性就决定了它的特点,你不可能把所有的算法都学会,因为它是无穷尽的。但是你要是能把自己学的有限的算法融会贯通了,那你就了不起了。就好象你只学会了1、2、3这三个数,但是你可以组成12、23、32、123······。所以算法这条路既长有短,既难又易。
学习好算法的方法不少,在此详细的给大家举几个例子。
首先,你要养成一个良好的程序设计风格和习惯。这也分许多种。其中最重要的是养成自上向下逐步求精的程序设计思想和方法。怎样才是自上向下逐步求精的程序设计呢。举个例子。有这样一个问题:已知三角形的两边及夹角,求第三边及面积。
现在,当你看到这个问题是,你不要立即下手去编写,而是要思考一下怎样才能求解(算法),然后把她写下来以免忘记。于是就写了:
一级算法:
1 输入两边的长度a、b以及夹角A
2 计算第三边c和面积s
3 输出c以及s
当你写完之后,你若觉得第2步不太清晰,还不能写出代码,那就继续求精。二级求精:
1、将α的角度转换为弧度;
2、c=sqrt(a*a+b*b-2*a*b*cos(α));
3、s=1/2*(a*b*sin(α))
哈哈,这样问题不就得到解决了吗?接着就可以轻松的编代码了。再仔细看看上面的步骤:先写出一级算法,如果觉得由此还是得不到源代码,或者是其中有一步还有很多步骤要写,那么就继续求精,直到你认为可以很清晰的写出代码为止。但是求精可以因人而异,像上面的题目,若是一个编过很多程序的大虾来说,可能不用什么求精,代码就可以直接写出来了;但要是一个菜鸟(像我一样)就可能要写到二级求精。
这样说来,你可能认为这个求精是不是太慢,抑或根本就是在浪费时间。我大声告诉你:根本不是!这可是众多的编程先驱、编程达人们推荐的基本方法。你知道编程中,主要时间用在了哪里吗?不是编写代码,而是用在了求解算法和调试程序上了!而算法的求精就是缩短这些时间的最好的方法。它可以使你不用再很费力的苦思冥想到底该怎样构造算法,使这个过程更条理、更简明;它也很可能使你不用再为了一个小小BUG而调试半天,因为,它给出的算法已经趋于完美。其实,列一个小提纲(算法)就可以解决很多的问题,生活中不也是如此吗?!所以,第一,求精算法这个最重要的习惯一定要养成哦!
还有一个好的习惯就是要做到:程序源代码的清晰度与可读性一定要高。
这是为什么呢?在源代码中,每行代码前面的空格的有无与多少并不影响程序的运行,但是它影响人的阅读。你想,当你看到一片代码,格式杂乱无章,没有什么主次内外一定会头痛不已,绝对是看了第一遍就不想再看第二遍了。而且当你调试这样的代码时,也会被一
个小错误弄的找不到北了。如果格式很清晰的话,这样的代码就非常易读,结构很清晰,begin..end都看的清清楚楚。我想这样的代码阅读和调试起来一定很顺手的。
还有就是在有些重要的代码块后加入注释,也可以提高程序的可读性。不说别人,就说我就深有体会:以前代码不加注释,当时对其结构很清楚,可是过了几个星期之后,再看代码简直就像看另外一个人写的一样,要费不少工夫才能弄懂,代码越多越如此。自己还很难理解自己的代码,更不用说别人了。因此费点力气加上注释还是值得的。
还有的人喜欢用 goto语句跳来跳去,虽然增加了编写代码的灵活性,可是却严重破坏了程序的结构化,容易造成程序运行和大脑思维的逻辑混乱,很可能导致一些很不容易发现的错误。而且所有的goto都可以用其他的语句来代替。所以在这里建议大家少用goto。能不用就不用。以上是说了要提高代码的清晰度与可读性。
上面用了不少字来介绍程序设计中良好习惯的作用与好处,这算是程序设计的一个基础,希望对大家能有所帮助。下面介绍其他促进编程水平的方法。
其次,就是多加练习和多多与别人交流心得,研究和欣赏别人优秀的程序代码(上面说的清晰度与可读性的重要的一点就在这里体现了)。无论干任何事情,只有经常练习才能熟练的掌握与应用。它不仅能帮你提高对算法的认知程度,还可以使你更好的理解数据结构;而交流心得与欣赏别人的代码则是要你学习别人优秀的独特的见解与逻辑思维,许多„老鸟‟就是在研究优秀代码中慢慢成长起来的。但研究和欣赏并不是意味着让你„全盘西化‟;它是说既不要拘泥于自己一成不变的思考方式,也不要成为别人思想奔驰的高速路,而是让你取长补短,取其精华,去其糟粕,这才是我要说的。另外,在编译一个程序时,要多想几种不同的算法,反复比较,看看究竟哪个更适合这个程序。这样,不仅有助于提高你程序的运行效率,更重要的是有助于提高你对算法的认识和思维的广度。
看完上面这么多,你会发现程序设计的这半扇门似乎并不是想象的那么容易打开;但是如果你能耐住寂寞与枯燥的考验,按部就班、循序渐进的练习,思考,不知不觉中你的水平已经提高了很多。
除了上面说的求精算法和数据结构外,数学方法和逻辑思想对你的程序设计也会有一定的影响(这也属于算法)先说数学方法,它是指导你学习的一个重要的助手。比如你要实现一个看似很复杂的函数,而且你编写了一大堆代码,什么结构和类型都用上了,可是还是实现不了。这时候先别着急,也许在你做这个函数前就要静下心来,仔细思考,看看有什么数学上学习的特别公式能够实现这个问题吗?如果你真的灵感大发,把它挖了出来,恭喜你!
(答对了!)我想这个时候你一定会高兴的手舞足蹈,这种感受,我想大家在做数学题OR其他难题时一定深有体会。
这样说太空洞,不如举个例子:将8个„车‟放在8X8的国际象棋棋盘上,如果它们两两均不能互吃,那么称8个„车‟处于安全状态。问总共有多少种不同安全状态?对于这样的题一般的解法是用„回溯法‟,即先有顺序的固定一个棋子,然后将剩下的逐行试探,如果可以则摆放下一个,要是不行就把该棋子换一个位置,直到所有的方法都用(遍历)一遍。这样看来这个方法真的很麻烦,不因需要编写大量代码,而且还要用到„递归‟(编程的一个重要的算法)。使程序的效率大大降低。但是我们可以想想有没有更好的数学方法。肯定有!你看在第一行中,棋子可以在8个空格内随意摆放而不会受到攻击;而第二行,棋子则只有在7个空格内再挑选一个了;第三行就只有6个……依次类推第8行就只剩下一个空格了。所以这个方法一共有8X7X6X5X4X3X2X1即8!种解法,这不就是数学中的排列与组合的问题吗?若不进一步思考,盲目地逐个枚举方案,其笨拙是可想而知的了。所以在设计算法时,一定要仔细思考有没有更好的数学公式或思想与之相关联,这样往往会收到意想不到的好效果。
说完数学,再说哲学。
其实,哲学是所有学科是总和。她当然也包括程序设计这门新兴的学科了。(不要以为它们之间没有关系哦!)
我这里说的是哲学的一小部分,那就是逻辑学。一个人若没有严格的逻辑思维,他/她的程序一定有不少虫子(bug)。然而对于这些虫子,他/她可能不知道;也很有可能知道了,但是就不知道哪里出错了。这就是因为他/她没有把问题出现的情况(包括出错的情况)考虑全面而造成的。虽然理论上所有的程序都有一定的漏洞(尤其是代码越多的程序越是如此),但是我们可以尽我们的全力把问题考虑全面,使错误发生的几率降低到最小,以确保程序的稳定性。咱们来看一个很有趣的反面例子:偶在很久以前编过一个小程序(老师布置的作业),其功能是输入你的生日,然后再输入某天的日期,最后计算出你到这一天一共活了多少天。我很快就完成了,用数据测试几次还不错,于是让老师来检查我的作业。他让我输入,我于是就输入了1989 1 28,然后回车,再输入1999 1 28,我太激动了把1999输入成了1899,而且我竟然没有发觉。于是偶自信的敲了回车。结果出来了,当时大家都笑翻了,此后,我有一段时间再也不敢让老师“欣赏”我作的题目…… 以上就是偶因为逻辑不严密造成的笑话,大家可不要学我啊!所以说,提高逻辑思维能力也是提高编程效率的很有效的方法。
世界上所有的学科都有联系。当数学与逻辑学擦出„爱情‟的火花时,程序设计就有了雏形。
其实还有其他的学科也会影响程序设计,比如英语,地球人都知道,现在绝大多数程序源代码是用英文编写的,而且很多开发工具、编译工具还有一些用来参考的小程序几乎都是英文界面。学好英语对代码的分析、对数据结构的了解以及对开发程序或软件的效率都有帮助。因此在学习程序设计这门课程时,可不要丢了其他啊!
学习编程心态要放低,虽然你可能梦想要打倒微软帝国,可是你不要以为自己真的就有实力把Bill PK掉,一定要从最简单的开始做起,不要眼高手低,荒于练习。否则你可能给他打工他都不要哦!(必备)
一颗坚定的信念。搞程序设计有时是很累人的(要不然大家都成软件工程师了,BILL的饭碗不就砸了),在某一个关键点是你要付出超乎想象的汗水和不计其数的脑细胞。这就叫“衣带渐宽终不悔,为伊消的人憔悴!”要保持一种吃苦耐劳的打不垮精神,革命才能成功啊!同志们。(必备)
其实总而言之呢,无论是新手还是大虾,要的就是勤学苦练,只有这样,你才能走上通向程序设计金殿的成功之路。
到了这里你会发现,这就是程序设计,就这么简单、有趣,而有充满的艰辛与苦涩。设计一个艰难的程序,就像母亲分娩一样,一定会有巨大的痛楚。但当你为你早已调试了N^N次的代码加上最后一笔时,一个崭新的生命就诞生了!Eureka!它带着羞涩而好奇的神态向这个世界发出第一句“Hello,World!”的问候时。你那种感觉就像是上帝面对自己亲手造出来的生命,你以往所有的不快都会烟消云散。你会发现程序设计,这项伟大的工程,教予你的不仅仅是一种技术,更是对生命的热爱,对人生的执着,对完美梦想的追求!
有人说,学习是无聊的,但有亿万芸芸学子不懈地投入其中。
有人说,科学是艰难的,但仍有大批科学家为之奋斗终生。
也有人说,编程是枯燥的,可是我要站起来最全世界说:”我爱她,就像爱我的生命!“