Java程序员和C++程序员的区别

2025-03-02 版权声明 我要投稿

Java程序员和C++程序员的区别(精选14篇)

Java程序员和C++程序员的区别 篇1

首先说明,这几年接触的最多的程序员就是C++程序员和Java程序员,这只是我自己的一点体会而已,一个人的眼光难免是浅薄的。不过,欢迎拍砖,也欢迎对号入座。

从对基础知识掌握的程度来说,例如数据结构和算法,C++程序员要比Java程序员牢靠得多。究其原因,大概是因为C++程序员需要经常自己实现那些项目基础设施,但是Java程序员大多拿来即用。公平地说,C++不是一门适合程序员初学者的语言,但是Java是。C++程序看起来确实要比Java程序稍难懂一些,C++程序员往往思维更加严密。另一方面,我也发现内地的程序员要比沿海和发达城市的程序员基础扎实,而且低调内敛,不那么浮华,但是就是善于解决那些难啃的问题。

从视野的角度来说,Java程序员往往要更宽泛一些。由于语言本身上说,Java将很多C++逃不掉的陷阱和坑洞都填补了,仅从语言上说,无论是入门还是使用都显得更加简单,程序员就有更多精力来关注语言本身之上的事情。而且,Java领域的类库明显要丰富得多,所以在考虑某一个设计实现的时候,Java程序员很喜欢到处寻找可以拿来即用的类库,但是C++程序员习惯于自己去做其中大部分的事情。对于面向对象设计,模块和组件的设计,Java程序员往往要掌握得稍好一些。

在读书的时候,很多程序员都会给自己订立一个方向,有的喜欢写底层实现,有的喜欢研究人工智能,有的喜欢做企业应用,有的喜欢涉足互联网……就像对C++和Java等语言的选择一样。当然,工作有时候并不如心中所愿,这方面可能和自己最初的方向并不一致——有人选择继续,发现这个活儿也不错;有人就会选择放弃,继续执着地寻找自己喜欢的事情。我有三个当初和我一起学Java学J2EE的朋友,现在一个成了DBA,一个卖水果去了,还有一个在创业搞机顶盒。

当然,也有很多程序员天天都在纠结:学什么更赚钱?C++还是Java有前途?前端还是后端有前途?转管理还是转咨询?也有人这样问我,对于这样深不可测的问题,为了避免显得我没文化、见识浅,我总是一笑置之。

以下是我的观点:

对语言我始终没有一个固定的方向。在学校我见长的c和C++,数据结构及各类课程设计都是用C或C++完成的。但工作10年来,我一直在用Java,在我的博客中也大多是java的内容。但这其中,编程过一个C++和作为项目组长管理过一个C++(pure)CenterServer级的。

语言只是工具。用的好,写出符合要求的代码。客户实现才是我的终极目标。我更喜欢架构。最初是java或C++架构。新的问题是java(前端web层)+ C++(底层)这样的架构。能够实现是最终结果。过程却充满乐趣。

Java程序员和C++程序员的区别 篇2

C++程序设计语言因为其语言简洁、紧凑, 语法灵活, 语言表达能力强, 代码容易维护、可移植性强、执行效率高, 支持数据抽象、支持面向对象程序设计和泛型程序设计等优点而被广泛应用, 成为当今软件开发的主流语言之一, 也逐渐成为许多高校计算机专业程序设计基础编程语言的首选。。但由于C++语言本身是从C过渡来的一个面向对象的程序设计语言, 所以C++即支持c的面向过程的编程又支持面向对象的编程应用, 因此C++教学内容非常多, 知识点多, 语法多, 并且C++中有很多比较难的知识点, 比如指针、多继承等, 而教学课时一般都比较少, 理论加实践72学时左右安排在一学期上完。总体导致的结果就是, 本课程学完后, 学生感觉学习内容多而且零乱, 没有系统性, 一旦遇到实际面向对象编程应用问题时感觉无从下手, 无法编程。针对这些现象进行思考后, 结合自己的教学经验提出了一些教学建议。

2 教学中的建议

2.1 教学内容的裁剪

总体思路是突出重点, 适当降低难度;把面向对象关键性技术的知识点尽量前提, 增加学习熟悉、使用和掌握的机会。

在面向过程内容学习中重点为:基础数据类型、常量变量、控制结构、数组、指针、函数、结构;在面向对象学习中重点:类、对象、封装、继承、多态和输入输出流。

数组虽然是重点, 但教学中只以一维数组和字符数组为重点平时也应用最多, 而对于二维数组及多维数组只需弄清楚其含义就可以了, 到具体要应用时补充再自学。对于指针既是一个重点又是一个难点:虽然指针是C++一个最重要的特性, 它的灵活性、方便性和快捷性令其他语言望尘莫及, 但同时也带来了不安全性的隐患和学习的难度。但现在C++中又引入很多技术代替指针的很多功能。比如C++中的引用, 其功能可以代替指针实现间接访问, 但比指针安全也比指针的使用简单, 另外成员函数可以取代函数指针等等。因此在讲解指针内容时, 我们可以适当的降低难度, 简化内容。重点是要弄清指针的含义, 指针对一维数组的引用就可以了。

对于面向对象部分的内容我们可以适当弱化语法方面的问题, 而重点强调面向对象程序设计方法, 语法方面的问题主要在应用中进一步强化和巩固。

对于面向对象的关键性技术我们可以尽量让学生提早接触, 比如多态, 我们在讲解函数时, 就可把函数重载和函数模板提前到这部分讲解, 让学生无意中先接触和使用多态技术, 到后面真正讲解面向对象的这部分内容时, 学生实际上早已熟悉相关知识, 只是加强理解和应用而已。

2.2 教学思路

C++的内容, 从总体上而言由2部分构成:面向过程和面向对象;在这2个部分的教学及衔接中要各有侧重点, 良好过渡;

在面向过程教学中主要强调算法、流程图和程序跟踪调试的学习;在从面向过程向面向对象的过渡过程中, 把面向过程与面向对象之间的内在关系凸显出来 (见图1和图2) , 让学生意思到面向对象程序设计包含面向过程程序设计, 是面向过程程序设计的发展。可以这么理解, 面向对象程序设计主要勾勒出了程序的整体框架, 体现程序各部分及各层次之间的内在关系, 而面向过程的程序设计方法可用在面向对象的底层开发中, 即对象内部 (或者说类内部) 的算法实现中。不然学生会觉得2者之间很突兀, 不能衔接起来, 有一种抵触或觉得难以接受的思想。而在面向对象的教学中, 重点突出面向对象程序设计的方法。如何针对具体的问题进行对象的划分和对象设计的过程。

由图2中的框出部分能很容易看出, 对象内部的算法实现部分依然要用面向过程的方法设计。

2.3 教学手段

综合利用多种教学手段:多媒体+板书+网络;以多媒体为主, 板书为辅, 同时课外充分利用网络进行交流等多种教学手段;因为利用多媒体讲课可以图文并茂、形象生动、同时交互性好、信息量大等特点。对课程中难以理解的一些比较抽象的内容, 可以给予直观展示和动态模拟, 起到事半功倍的效果。比较在讲到指针变量概念时, 说指针变量是指向同类型变量的变量, 这个概念听起来很饶口, 并且不好懂。通过多媒体讲解时, 在给出一个指针变量赋值语句之后, 紧接着用一个图形动态表明这个指针变量的内容和所赋值的那个变量之间内存地址的关系, 然后用一个箭头动态表示出这种指向, 学生很快就可以清楚明白的理解指针变量的含义了。传统的板书教学虽然速度有些慢, 但是在讲解一些难点时, 却可以作为必要的辅助手段。比如讲解算法的设计过程, 由于放慢了讲解速度, 正好可以方便学生理解和回味。另外由于课堂上时间总是有限的, 当课余学生想和老师探讨问题时, 就可以充分发挥网络的便利。学生可以利用电子邮件或QQ等给老师提问或留言, 老师可以很方便及时的答疑解惑, 这样也进一步促进和提高了学生学习的兴趣和积极性, 加强了师生互动。

2.4 实验实训

现在一般学校都由于学时紧张, 安排的实验课课时很有限, 在这些规定的课时中只能针对所学的知识点进行相应复习、巩固和应用, 而不能将相应知识点连贯起来, 所以所有知识点都是孤立的, 感觉很零碎。因此当他们遇到一个综合性应用或稍微复杂一点的问题时, 就感觉无从下手。因此非常有必要在本课程学习完后, 利用假期时间增加一个为期2周的小型综合应用项目的课程设计, 比如图书管理系统或者成绩管理系统等。让学生把面向对象程序设计从分析、设计、实现到测试这个完整的流程走一遍, 将所有的知识点综合起来形成一个系统性的知识结构。虽然是小型应用项目, 但麻雀虽小五脏具全, 使得学生有了一个整体设计的概念后, 就不至于以后在工作中遇到一个实际应用的编程时毫无头绪。注意在实训过程中老师要给予必要的指导, 但主要依靠学生自己完成。

2.5 学习习惯

凡是程序设计语言课, 要想学好都无一例外的要求:多想、多写、多上机调试。因此从学生开始实习时多就要求他们养成这些好习惯。另外编程时, 为了增加程序的可读性, 为以后工作打下良好的基础, 在书写程序时要求有良好的编程习惯。比如代码的缩进、必要的空格空格和空行;标识符的命名最好做到见名知义、简洁、易区分;变量名小写, 宏和常量大写。对代码进行必要的注释等。这些看起来很简单的一些编程习惯, 对增强程序的可读性有非常大的作用, 但是平时学生为了图省事或方便都不愿意坚持这样做。因此在学习编程初期老师要坚持不懈的多强调这些问题。

3 结束语

针对目前学生学习C++程序设计教学中遇到的一些问题, 进行思考和总结后提出了自己的建议。把这些建议的内容在近2届学生中贯彻和执行后, 发现学生编程应用能力有较大的提高, 学习积极性和主动性也比以前强。

摘要:该文针对目前C++程序设计教学中学生感觉内容多、难而零乱, 实际编程应用能力差等问题进行思考, 并结合自己的教学经验在教学内容、教学思路、教学手段、实验实训等方面提出了建议。

关键词:C++程序设计,教学建议

参考文献

[1]温秀梅, 丁学钧, 李建华.C++语言程序设计教程与实验 (第三版) [M].北京:清华大学出版社, 2012.

[2]卫春芳“.C++程序设计”课程改革[J].计算机教育, 2009 (23) .

Java程序员和C++程序员的区别 篇3

关键词:程序设计语言Java语言程序开发

Java的语言功能很精炼,它强调了面向对象的特性,可以用来开发不同种类的软件,具有支持图形化的用户界面、支持网络通信,支持并发程序设计以及数据库连接等功能。

1.Java语言的主要特点

Java语言与传统的程序设计语言相比,主要有以下一些特点:

1.1Java语言是简单易学易用的

Java语言很简单,这里说的简单,是相对于C++而言的,因为它的语法和C++非常相似,但是它摒弃了C++中许多低级、困难、容易混淆、容易出错或不经常使用的功能,例如运算符重载、指针运算、程序的预处理、结构、多重继承等内容,这就有利于有程序设计基础的人员的学习和使用。Java语言所占的内存比较小,这给程序开发人员提供了一个良好的开发环境,另外Java还提供了自动的废料收集,使程序员不必为内存管理而担忧。

1.2Java语言是面向对象的

面向对象是程序员编写大型程序、有效控制程序的复杂手段。所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。Java语言的面向对象技术具备了封装性,继承性等特点,Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定,这就让它的面向对象技术更加完善了,程序可以完全基于对象编写程序。这使得Java的面向对象更“纯”。

1.3Java语言是解释型的

C语言和C++等语言,都是针对CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CPU有关。Java语言的源程序执行方法是先经过编译器编译,再利用解释器解释的方式来运行。但是Java语言不针对CPU芯片进行编译,而是把程序编译成一种字节码格式,然后Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在链接阶段被载入到运行环境中。字节码是很接近机器码的文件,可以在提供了Java虚拟机(JVM)的任何系统上被解释执行。这使得Java程序有了很高的独立性。

1.4Java是多线程的

在Java语言中,线程是一种特殊的对象,又被称作轻量进程,比传统进程更小的可并发执行的单位,他必须由Thread类或其子类来创建。C和C++采用单线程体系结构,而Java提供多线程支持。Java在两个方面支持多线程,一方面,Java环境本身就是多线程,另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序的开发。Java的线程还包括一组同步原语,这些原语负责对线程实行并发控制。利用Java的多线程编程接口,程序开发人员可以方便的写出支持多线程的应用程序,提高程序执行的效率。但是Java的多线程在一定程度上受运行平台的限制,如果操作系统本身不支持多线程,那么Java的多线程可能就表现不出来。

2.Java语言的执行过程

(1)编写源文件,使用一个文本编辑器,如Edit或记事本,来编写源文件。不可使用Word编辑器,因为它含有不可见字符。将编好的源文件保存起来,源文件的扩展名必须是.java。

(2)编译Java源文件,使用Java编译器(Javac.exe)编译源文件得到字节码文件。

(3)运行Java程序,Java程序分为两类——Java应用程序和java小应用程序,Java应用程序必须通过Java编译器(java.exe)来解释执行器字节码文件;java小应用程序必须通过支持Java标准的浏览器来解释执行。

3.Java程序开发中涉及到的主要技术

(1)Java Database Connectivity技术。它的存在能让不同的数据库的访问统一化,同时让数据库之间可以进行相互连接。在具体的编程过程中,通过相应的调试就能够让数据库后台管理得以实现。另外这种技术为开发者带来了一致的接口,为复杂程序的构建提供了有利的技术保证。

(2)Java Annotation技术。这种技术让Java中的一些元素相互关联起来,同时还能让这些元素整合起来。这就能够让开发者根据不同的元素的不同特点来对这些元素进行合适的分类,同时改变它们的行为。

(3)Java Remote Method Invocation技术。该技术是构建分布式程序的基础,Java中的对象能够进行相应地调用,这样就能够让服务器和客户机相互关联起来。在该技术的支持下,可以让数据信息实现高度整合化。另外在分布式调试的基础上,可以让程序的安全性和完整性得到保证。

4.Java语言编程的优势

与平台无关是Java语言最大的优势,指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。其他语言编写的程序面临的一个主要问题是操作系统的变化,处理器升级以及核心系统资源的变化,都可能导致程序出现错误或无法运行。Java虚拟机就成功的解决了这个问题,Java语言编写的程序可以在任何安装了Java虚拟机JVM的计算机上正确的运行,实现了“一次写成,处处运行”。

Java语言有着如此广泛的应用范围主要是其具备了良好的可移植性。对于一个程序员而言,写出的程序如果不需要修改就能同时在Windows、MacOS、UNIX等平台上运行,简直就是梦寐以求的事。近年来随着智能手机的兴起,越来越多的游戲应运而生,正是Java语言的良好移植性让手机游戏得到了很好的发展。

传统的编程语言难以胜任电子商务系统,Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。

很多开发者会选择Linux系统作为开发平台,这也就给Jave语言带来了很大的发挥空间。虽然C++也能进行模块化的编程,但是它移植性不佳,只能在Windows平台使用,这就使C++语言受到一定的制约。而Java语言能实现跨平台编译,这就让Java更受开发者的欢迎。

5.结语

这些年来智能手机的不断发展更是促进了Java软件的开发,让Java程序从PC机平台向手机平台进行转移。随着计算机及网络技术的水平的不断提高,相信java语音还将有更广阔的应用空间。

参考文献:

[1]刘正林.Java技术基础[M].武汉:华中科技大学出版社,2002.

JAVA学习中的心得和小程序 篇4

刚一开始学习java时,我就已经学习过C语言,不过C语言学的不是很好,所以开始看到java的时候我很反感,看着源代码,都不知道失什么意思。看书的时候一看到源代码就头疼,因为根本看不懂。那段时间根本就是一无所获,在图书馆借了一本书,关java的语法特性,与别的语言相比的优点,什么跨平台,源代码公开,什么write once run anywhere,能说得头头是道,可是一到具体的问题,想写一些具体的东西,问题就都来了,根本不知道该怎么下手。渐渐的时间过去了,一点进展都没有,而后又同学经常来宿舍跟我讲解,我很感谢他。慢慢的我也理解了一些知识。从他那里,我认识到,JAVA是一门计算机语言,是人类发明的语言,应该比人类语言更容易学习,只要你有一种必胜学习JAVA心态就可以成功。JAVA学习中,首先要做到课前、课后复习及预习,要时时保持一个清醒的头脑;多和同学沟通;互相学习;取长补短;在学习中做到帮助他人或他人帮助自己。学习java,的确要学习的东西很多,就像同学提到的。Java不像.net一家独大,Java的繁盛在于开源社区的庞大,这也带来了分支太多的问题,怎样选择一条好的学习路线,对于初学者来说,的确是一件很迷茫的事。其实不管

java东西再多,总有规律可循。对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。C的入门学习过程是比较痛苦的,你要学好需要一定的努力,但是他有一个好处,相对JAVA来说比较集中,不会出现JAVA里面这么多差异。java的学习过程开始比较容易入手,更容易学习。当然现在C#也可以。java还有一个优势就是在移动设备的开发,所有的java应用版本不同,但是语法一致。java的跨平台特性使得学习他让我们可以在不同的场合下使用。而恰恰就是它的种种跨平台性让我非常感兴趣。我们的社会发展现在越来越集中化,智能化,所有的东西手机,电脑都可以解决,而终端设备之间的通讯就是促进发展的桥梁,JACA具有非常优越的跨平台性,基本的移动终端都可以利用JACA平台进行开发,学习。

当然学习的过程中不可避免的遇到问题,这些问题有的只是一个符号错了,一个括号少了,但只要仔细查找就会发现不会是很难的问题,最最重要的是要学会询问别人,有这样一个笑话:一个程序员向上帝许愿希望他有生之年可以编写出一个完美的程序结果——程序员最后长生不老!虽然只是一个笑话但是也可以反映出世上没有绝对完美的程序,所以学会询问别人是最最有效的方法。

编写一个程序,实现1-100的累加。

public class LeiJia { public static void main(String args[]){

int sum=0;

for(int i=1;i<=100;i++){

sum=sum+i;}

System.out.println(“sum=”+sum);} }

这是一个小程序对我学习有很大的启发,这个程序是利用循环FOR语句实现了从1到100的数字的累加运算,对比C语言不难发现其实很多的语法应用都是差不多的但JACA却具有更多的表现形式和不同的书写规则,但就是多种的表现形式才能够使它具有这种跨平台的多兼容性。

C++程序员英文简历表格 篇5

C++程序员英文简历表格

Introduction
Name Sex 
Birthday Birth Place 
Degree Subject 
Graduated college Tel 
E-mail objective C++程序员
Self assessment
²         
Knowledge Frame
(1)Professional knowledge²         
(2)English²         
(3)Computer and IT²         
Experience
(1)²        Position:²        Position:
(2)2005,Dem—2006,Jan²        Position:
Certificate and Credit
²         
Hobbies
 

Java程序员和C++程序员的区别 篇6

Java程序员应该如何快速掌握Java开发的要点

程序员艰巨的任务跟编写代码没有多少关系。编码是逻辑思路的一种实践,这跟程序员日常工作中的其它任务比起来相对简单。如果你认为自己还是一个水平一般的程序员,在你真正的能进入到高手行列前,请确保你已经克服了下列晋级的障碍。

1.解释你在干什么 2.形象地说出软件解决方案 3.评估工期 4.维护他人的代码

5.软件边界的模糊蔓延和让人吐血的奇怪功能需求 6.在缺少优化和过度优化之间找到平衡点 7.测试你的代码 8.写软件文档 9.处理IT问题 10.处理人的问题

上面的这些难题都可以总结为“人的问题”。很少有外行人会去建议一个飞行员如何开飞机或建议一个电器工程师如何布线。但很多人却会兴致勃勃的勇敢的建议如何开发软件。我相信对于这些人没有什么好办法,而你需要做的是在合理的建议中完善自己!

四川是旅游的天堂,无法拒绝她火辣辣的美食,无法拒绝她惊艳的自然风光,更无法拒绝她的古蜀文化。每到中考季,很多初中生总是为自己的未来前途担心,尤其是一些学习成绩不好的初中生,他们不知道中考没考上怎么办。同时许多家长也担心,自己的孩子年龄还小,进入社会显然不合适。这个时候职业培训学校更加适合,放眼众多学院,四川国信安职业培训学校无疑是非常合适的。

一说起it培训,很多人都表示苦不堪言,总有人被虚假信息坑过。很多人表示自己对其一窍不通,实在不知道怎么办才好。别着急,让小编为你奉上这些必备小技巧,带你快速简单的上手。那么下面,就跟着小编去探索一下吧~

Java新人学习进步非常缓慢,这也是在打基础的过程中,也有一些人学习缓慢是因为很多的Java难题自己都没有办法解决,身边没有懂技术的人,所以只能一直在网上苦苦查找答案,就算你找到了解答,但是也不一定能够保证是对的。快速学习Java并不难,只要掌握以下这几点。

方法1:Java初学者可以加入一个比较好的Java学习交流群,或者论坛,群不需要加的太多,在群中提出问题,有时候其他人的只言片语也可以帮助你走出困境。多与技术好的人交流沟通,你的技术才能变得更好。

方法2:养成良好的记录笔记的习惯,因为在快速学习Java的过程中,记录显得尤为重要,比如在Java学习中,把你碰到的问题,或者突然间的奇思妙想记录下来,不时翻翻,你会很清楚你一路以来的学习历程是怎样的。它不仅是你Java学习的成长日记,更是鼓励支持你坚持学Java的好法宝,还可以成为你Java学习的动力源泉。

好的学习方法再加上良好的习惯,你会发现学习Java也不是一件多么困难的事情。当然,以上这些方法适用于那些有足够时间学习,或者是有较强自控力的人,如果你面临的就业,面临着经济问题,很难有一颗平常心去好好学习。

对于每一个刚开始学习Java的程序员新人来说,都希望有一种快速学习的方法。一味追求快速,漫无目的和长时间的学习很容易消耗你的信息,最后学的混乱,也没有实质性的收获,以至于学习到最后越来越焦虑。

总之,学好Java技术才你才能享受生活带来的乐趣,为了你的梦想,努力学习吧。

浅谈C++程序设计语言教学 篇7

在这里笔者结合自己的实际教学经验谈谈通过采用什么样的教学方法来激发学生的学习兴趣, 使学生在教学过程中能主动的学习。

1. 良好的开端

精心准备第一堂课、激发学生学习的积极性。C++程序设计语言是一门比较抽象的课程, 很多内容只可体会, 很难言传。在学习过程中感觉会比较枯燥、难懂, 没有一定的毅力很难坚持下去。这需要将学生很好地引入门, 要让学生认知该课程的重要性与实用性, 要提高他们的学习兴趣, 有信心去学好它。为此在第一堂课上教师可从不同专业角度为学生介绍学习本课程的意义。往届学生的C++课程设计、数学建模、程序竞赛等作品是教师第一节课的最好素材。

2. 学生为主体

提倡“以学生为主体的教学模式”, 教师使用多种教学媒体给出学习资源, 讲解重点、解释难点、解惑疑点。充分利用多种媒体资源, 发挥学生的主体作用, 引导学生自主学习, 培养学生的自学能力。

教师要随时了解学生是否掌握了教学目标中要求学会的知识和技能, 有多少人掌握和掌握的程度等。从而针对学生的学习现状, 确定应重点讲解和辅导的知识点, 再根据学生的实际情况来设计教学环节, 这样才能保持学生的学习兴趣, 防止他们因难懂、不懂而产生畏惧情绪, 中途退出。

3. 利用多媒体、网络教学平台, 增强教学效果

教师在备课过程中要精心制作课件, 可通过示例类比 (如:在讲解调用的不同执行方式时, 举例:经理将“自己要到外地出差”的消息告诉他身边的人 (妻子、下属、秘书) ?妻子:准备行李;下属:准备出差的资料;秘书:安排车票和住宿) 、动画演示等方法来简化学习难度, 营造轻松活泼的学习氛围。

在上次授课过程中出现的难点问题、遗留问题要尽量在下次课的课件上能体现出来, 避免不同授课老师, 不同授课时段, 不同授课班级课件一尘不变。同时在教学过程中, 教师要充分利用广播平台演示操作过程, 集中学生注意力, 再通过角色转换, 由学生演示自己或所在小组的作品并进行解说和点评, 充分调动学生参与的积极性。

授课教师应开发课程网上教学平台和网上讨论和答疑系统为学生提供有效的网络环境, 这不仅是一个有效的师生互动平台, 同时也为学生提供电子教案、多媒体课件、网络教学、视频等丰富的网上教学资源, 构建以学生为中心的自主学习环境。

4. 学生系统化程序设计思想的培养

C++是一门面向对象的编程语言, 而面向对象编程方法的出现, 实际上是程序设计方法发展的一个返璞归真的过程。从本质上讲, 软件开发就是对软件所要处理的问题域进行正确的认识, 并把这种认识正确地描述出来。

C++程序设计课程教学一般是以程序设计语言自身的体系为脉络展开, 存在注重语句、语法教学的特点。许多学生在学习C++程序设计语言课程时, 觉得听得懂, 但学过之后不能用其来解决实际问题。在这样的教学模式下, 学生虽然学到了一定的程序设计知识, 但编程能力较差, 部分学生遇到实际问题无从下手。系统化程序设计思想培养模式从大学生的认知特点出发, 使教师在教授学生程序设计课程、提高学生编程能力的同时, 培养学生的系统化程序设计思想, 这对学生整体素质的提高有很大的作用。

程序设计课程的学习不仅要教会学生如何进行计算机编程, 而且要教学生如何去思考问题。系统化的程序设计思想, 不仅可以解决学生在程序设计中遇到的问题, 还可使学生的逻辑思维更加严密, 这对一个学计算机的大学生来说是至关重要的。系统化的程序设计思想的培养过程就是让学生自己动手解决实际问题的过程, 这个过程使学生自主去探索问题、并对它进行研究和创新, 从而使学生觉得学有所用, 一直保持学习的兴趣。

5. 理论联系实际, 加强实践操作

C++程序设计语言课程的特点决定了上机实践是教学过程中一个十分重要的组成部分。在学习C++程序设计语言的过程中要不断练习、不断实践。因此, 如何加强上机实践, 提高实际操作的能力, 并以此进一步提高课堂教学的质量和学生学习的兴趣是值得广大教育工作者应该认真思考的问题。要使学生熟练使用C++程序设计语言解决问题, 在教学过程中可采用“问题引导、问题说明, 问题解决, 项目驱动”的教学流程, 把知识点融入到实际项目的开发过程中, 通过项目的不断扩展引入新的知识点。做到引 (教) 、探 (学) 、做 (实践) 相结合, 通过编写、编译、调试、运行、剖析和讨论一些实例程序去主动地探索、学习知识, 掌握技能。本课程的内容是通过多媒体讲授、学生课后搜索相关资料, 安排平时的作业训练等环节组成的, 各环节应紧密配合。为使教学符合学生认知规律, 并坚持理论知识和实践技能并重的原则, 可以从以下几个方面考虑。第一, 合理分配上机时数;第二, 上机内容要有趣味性和针对性, 教师应多花心思去精心准备上机操作的内容;第三, 提高学生自主创新、自主学习的积极性, 要学生多写程序, 不能只听不练;最后, 要检查学生的实训结果, 保证上机操作达到预期效果。

6. 换位思考

在教学过程中发现, 很多学生不提问, 不要认为学生没有问题, 而是他们有问题不知道如何提出。这时教师需换位思考, 站在学生的角度去思考学生可能会存在的问题, 然后由教师提出, 让学生自己来解答, 如果学生答不上来, 教师再为学生解答。教师备课时不仅仅只是准备自己要讲授的内容, 还要思考学生会遇到什么难点, 需要向学生提什么、解答什么问题, 这种模式可激发学生去积极思考、分析和解决问题。

7. 综合评价体系

期末考核评价包括:理论成绩、实验结果、案例设计成果、项目进度、完成质量、协作能力、沟通能力和考勤情况等。各项指标采用加权评分和突出能力评价两种方式。案例设计采用“自我实现, 自我管理”的理念进行开放式管理, 学期最后一个月学生可自由分组选择某个案例。每组同学在老师的指引下, 自发形成研发项目组, 通过分工协作, 共同完成整个项目设计。要求设计成果与案例库比较要具有新意, 从而拓展学生的创新意识, 激发学生的学习兴趣。

总之, 课堂教学是师生的双向活动.现代课堂教学倡导学生主动参与, 主动探索的主体意识。教师作为主导者, 要科学地组织双边活动, 尽管教无定法, 但要教学有法, 教学得法。作为教育工作者要不断地更新观念, 更新知识, 在保证学生学习积极性的前提下, 按照他们的认知规律组织教学, 并为适应新知识而进行教学改革, 以培养出更多的符合社会需求的计算机人才, 使教育更好地为社会服务。

参考文献

[1]钱能.C++程序设计教程[M].北京:清华大学出版社, 1999

[2]何文孝钟琪.《C++语言程序设计》实验教学的改革与探索[J].现代计算机, 2009 (7)

Java程序员和C++程序员的区别 篇8

【关键词】应用型本科 程序设计课程 教学改革

【基金项目】2014年度广东省高等教育教学改革资助项目(GDJG20142517)。

【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)05-0230-02

1.前言

毋庸置疑,学会编程、掌握编程对计算机专业的学生来讲非常重要。掌握一门程序设计语言,就等于掌握了跟计算机交流的工具。对于很多计算机专业的同学来讲,C++是他们的第一门程序设计课程。学好C++,不仅掌握了跟计算机交流的工具,也为后续专业课程的学习打下良好的基础,同时有助于建立自信心。

2.当前存在的问题

目前的C++程序设计课程的教学主要存在以下几个问题:

(1)教学内容过分关注程序设计语言的语法和语义细节,整个课程是以程序设计语言为纲来组织教学内容。由于程序设计语言具有大量繁杂语法知识点,使得老师往往采用灌输式教学模式,花费大量课时资源用于讲授琐碎的语法知识,而不是花在程序设计思想和方法的传授上。

(2)教学方法采用语言工具书的阐述方式,一般是先介绍一种语法结构的形式和意义,然后给出简单示例或示例程序,这些示例和示例程序的主要作用只是用于对语法结构使用方法的说明,学生并不能通过这些示例体会问题分析、程序思维和构造的方法。整个课程也很少引入综合性的教学案例,没有让学生体会到:针对要解决的问题,如何进行分析并逐渐将其精确化;如何针对问题的计算需求,设计解决问题的过程;如何将问题解决过程精确化,选择适当的程序结构实现它。

(3)学生上机实践的时间较少,不能透过大量编程实践掌握程序设计的相关理论、方法。学生上机写程序,往往限于自身的水平,对测试数据考虑不全面,从而导致程序写完之后随便找几个测试数据测一测,如果没有问题,就算程序是正确的。实际上,对于初学程序设计的学生来说,如何设计更加全面的测试数据确实是一个不小的挑战。所以往往出现这样的情况,学生的程序实际上是错的,但由于学生使用的测试数据比较片面,从而误以为程序是正确的。对于课程书面作业,学生交上来的程序不少时候连编译都通不过。

3.教学改革

针对应用型本科C++程序设计课程的教学需要,在教学中突出计算思维的培养,将其贯穿于整个课程的教学和实践。通过培养学生掌握常见的程序设计方法,进而提高程序设计水平,为后续专业课程的学习打下牢固的基础。同时引入案例教学,培养学生开发小软件的能力,增强学生的学习兴趣。

3.1重视程序设计方法

传统的C++程序设计课程过于强调语法,课堂所介绍的例子很多是为了验证C++的语法知识。这往往导致学生缺乏程序设计方法的培养,结果是拿到一个问题不知道该如何去考虑,无从下手。

我们在实际教学中,侧重于将教学重心放到培养学生程序设计方法上。特别注重穷举、递推、递归、回溯等常见程序设计方法的介绍、训练。进而培养学生的计算思维。实践证明,学生通过掌握这些常见的程序设计方法,分析问题、解决问题的能力得到了很大的提高。而不是像以往一样,一个问题来了以后,不知道如何去分析、解决问题。从而打下了良好的编程基础,建立了专业自信心。

3.2加强实践环节

针对传统教学中,学生往往实践环节比较欠缺的问题。我们在教学中引入了“程序设计在线评测系统”。该系统拥有一个经过精心设计的题库,同时它具有以下功能:

(1)实时判题。学生可以在任何地方、在任何时间做题,然后提交自己的源代码。系统会实时地对学生的代码进行评测,并给出相应的评测结果。主要有以下几种情况:编译错、答案错、格式错、运行时出错、超时和接受。如果学生提交的代码不被系统接受,学生可以对代码进行修改,然后再次提交。

(2)布置作业。老师可以根据实际教学的需要在系统里面布置作业,限定本班的同学才能参与。系统会对学生提交的代码进行实时的评判,并对学生的做题情况进行排名,不需要人工干预。同时老师可以设定作业的截止提交时间,超过截止时间系统将拒收作业。老师可以登陆系统一目了然地知道学生的做题情况。

(3)组织比赛。老师可以根据教学的需要适当的组织一些比赛,以此调动学生的学习积极性。系统会自动评测学生提交的代码,并对学生进行实时的排名,比赛一结束,比赛结果同时就出炉。

(4)用户管理。系统记录各用户的做题信息,并保存用户提交的源代码。

(5)排名机制。系统提供排名机制。学生既可以查询自己在所有用户中的排名,也可以查询自己在年级、班级的排名。

(6)论坛。学生可以在论坛上讨论相关的题目,互相学习。

由于“程序设计在线评测系统”提供了强有力的支持,能够实时判题,并且提供了排名,这大大提高了学生编程的热情。不少学生甚至通宵达旦地编程以解决题库中的问题。这种编程的热情在引入该系统之前是不可想象的。

3.3引入案例教学

“程序设计在线评测系统”有力地锻炼了学生了编程能力,提高了学生的学习热情。但毕竟没有做出看得见、摸得着的软件。为了弥补这个缺陷,我们在教学中引入了案例教学。通过案例教学,引导学生开发一些小软件,从而进一步提高学生的学习兴趣,培养学生综合运用所学知识开发软件的能力。

我们在教学中通过精心设计,引入了5个案例,分阶段实施案例教学。通过在不同章节引入相应的案例来教授学生灵活运用所学知识解决实际问题的能力,提高学生的编程技能、学习兴趣。各案例介绍如下:

(1)万年历:功能为显示某年某月的月历(阳历信息)。这个案例分为4个版本。分别用于控制语句、函数、数组和面向对象中类的教学过程。

(2)猜数字游戏:既有传统的机器随机生成一个4位数,然后玩家来猜。又可以玩家随机出一个数,机器来猜。用于函数、数组的教学。

(3)打字游戏:屏幕随机在一个位置掉下一个字符,让玩家输入该字符,直到正确或触底为止。用于数组的教学。

(4)井字游戏:在3*3格子上进行的连珠游戏。机器和玩家轮流在格子留下O和X标记,由最先在任意一条直线上成功连接三个标记的一方获胜。用于指针和引用的教学。

(5)二十一点:玩家的目标是使自己手中的牌的点数总和不超过21且尽量大。用于继承和多态的教学。

以上5个案例,既有实用性,又有趣味性。后面的4个案例虽然也是游戏,但均不涉及图形接口,并不会增加学生的负担。这5个案例贯穿整个课程的教学,分阶段地实施,能够将学生在整个课程的学习中随时调动起来。通过教会学生开发出一个个实用的、有趣的小软件,大大提高他们学习的兴趣。

4.结束语

针对应用型本科C++程序设计课程的教学需要,突出强调程序设计方法的培养,利用“程序设计在线评测系统”强化学生的编程实践,同时引入案例教学,进一步培养学生综合运用所学知识的能力。实践证明,通过以上的改革措施,学生的编程兴趣、编程能力得到了很大的提高。

参考文献:

[1]吴舜歆,梁宝兰.C++程序设计课程案例教学探索[J].高教学刊,2016(8):108-109,111.

[2]吴舜歆,梁宝兰.Online Judge在C++程序设计课程实践教学中的应用[J].高教学刊,2016(9):164,167.

[3]李文新.加强基础,提供平台,营造氛围,全方位培养创新能力——北京大学计算机学科教学体系改革[J].计算机教育,2008(1):20-22

作者简介:

Java程序员和C++程序员的区别 篇9

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。自1995年问世以来在我国的应用和开发也得到了迅速普及,总体来看,这些应用主要集中于企业应用开发。据有关单位调查显示,从开发领域的分布情况上看 Web开发占了一半以上,为57.9%,JavaME移动或嵌入式应用占15%,C/S应用占11.7%,系统编程占15.4%。近30%的开发者用Java从事C/S应用或系统级应用的开发。

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

java在互联网方面影响和前景

Java并不是为Internet、 你的浏览器怎样处理新的类型文件。当我们能在2400 baud线上传输视频图象时,HotJava将能显示这些视频。

Java在电子商务方面的应用和特性

电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以

其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。在桌面应用上,尽管Java在桌面GUI方面尚有不尽如人意之处,但仍然有很多开发者用来开发运行在多种操作系统平台上的 桌面应用。具体应用在如下几个领域: 1.行业和企业信息化

由于Sun、IBM、Oracle、BEA等国际厂商相继推出各种基于Java技术的应用服务器以及各种应用软件,带动了Java在金融电信、制造等领域日益广泛的应用。如清华大学计算机系利用Java、XML和Web技术研制开发了多个软件平台,东方科技的Tong Web、金碟的Apusic、中创的Inforweb 等J2EE应用服务器及和佳ERP和宝信ERP等ERP产品,已在许多企业得到应用。

2.电子政务及办公自动化

东方科技、金碟、中创等开发的J2EE应用服务器在电子政务及办公自动化中也得到应用: 如金碟的Apusic在民政部、广东省市工商局应用;东软电子政务架构EAP平台在社会保险、公检法、税务系统得到应用;中创的Inforweb等Infor系列中间件产品在国家海事局、山东省政府及中国建设银行、民生银行等

金融系统应用;无锡永中科技基于Java平台开发的国产化集成办公软件Office”也已在一些省市政府部门得到应用。

3.嵌入式设备及消费类电子产品

无线手持设备、通信终端、医疗设备、信息家电(如数字电视、机顶盒、电冰箱)、汽车电子设备等是今年以来比较热门的Java应用领域。在这方面的应用有中国联通CDMA 1X网络中基于Java技术的无线数据增值服务——UniJa。

4.辅助教学

在辅助教学方面,东南大学与中兴通讯公司开发了远程教学系统,用于本地网上教学、课后学习和异地远程教育,清华大学用Java进行了“计算机软件基础课”教学改革,分析研究Java教学软件BlueJ的汉化方案,电子科技大学应用Java RMI技术进行远程教育,西安电力高等专科学校采用Java技术,开发了交互式电站仿真系统,实现电站锅炉仿真、锅炉膛火焰仿真,为实现网上仿真进行有益探索。选择,在你的职业生涯中已经迈出了成功的第一步,在你的未来不会为失业而忧心,更不会在就业压力面前选择退缩。

很多人在选择职业的时候很难给自己的职业未来有一个明确的定位,在他们眼中,选择职业只是考虑到当前的形势,只是为了一时的利益。这种表现在很多大学生的经历中也显而易见,他们在选择专业的时候,考虑的只是这个专业的“热”与否,这个专业是否轻松等等,根本没有经过详细的调查和预测未来的发展前途,所以到毕业了还是不能拥有一份真正适合自己的工作。

目前,Java是国内较为前沿的编程语言,同时掌握Java技术的专业人士也是社会紧缺的技术人才。如果你还梦想着高薪就业,学习Java也是你成功路上

的不错选择。

北大青鸟是东北片区极具专业的IT专业技术培训机构,其雄厚的师资力量、丰富的教育资源和人性化的管理于一体的办学模式,以学员的就业为核心,以学员的创新思维为向导,确保学员能学到实用的IT技术!

北大青鸟有适合各个年龄段各个学历的对应课程,入学前会对学员进行专业的测试,从而了解学员的具体情况,以便推荐到最适合学员的专业和方向。

详情请咨询

成为java程序员的学习过程 篇10

成为java程序员的学习过程

学习任何一种知识都是一个从无到有,从略知到精通的过程。这个过程是一个循序渐进的过程,没有什么捷径,但是在这个过程中好的学习方法,可以使我们少走一些弯路。

很多java初学者面对java庞大的知识体系,不知如何下手。java私塾根据多年的教学经验总结出以下几点可以帮助同学学习java,同学们可以参考一下,制定自己的学习路径。

1:Java编程的知识和技能、JEE体系的知识

2:数据库的基本知识,包括Oracle和SqlServer和MySql

3:Web开发的知识和技能

4:EJB组件开发的知识和技能

5:流行的Struts、Spring、Hibernate、Webwork、Ibatis开发框架

6:实用的Ant、Xdoclet、Log4j、Junit、Vss、Cvs等开发工具

7:工作流技术和实用的Shark、JBPM等工作流框架

8:搜索引擎技术和实用的Lucene等搜索引擎框架

9:WebService技术和SOA架构

10:AJAX技术和Dwr框架

11:UML软件工程的知识

12:Java的设计模式,JEE的设计模式和JEE应用程序框架设计

13:好的编程思想和素质,IT学习的方法和技能

14:众多开发工具的使用,开发平台和环境的配置

15:完整的JEE项目开发经验和技能

Java程序员和C++程序员的区别 篇11

关键词:成果导向教学 运用 C++程序设计课例 开发

新学期伊始,黑龙江职业学院各专业全面铺开实施成果导向教学,在成果导向教学的整个过程中,课例的开发不仅能够满足实际的教学需求,也能够提高对学生综合职业能力的培养。

一、课程总体设计

1.课程描述

C++程序设计课程旨在引领学生掌握面向对象和面向过程编程的基本思想,执行标准C++的输入输出,熟练编写规范的结构化和面向对象程序。经由C++开发环境的搭建、C++项目的创建、代码的正确编写、程序的调试,以胜任C++程序的设计和开发。

2.教学目标

(1)能熟练安装C++软件,搭建C++开发环境。

(2)能创建标准的C++程序,灵活运用运算符进行运算并实现输入输出。

(3)能运用面向过程的基本思想编写结构化程序。

(4)能熟练使用函数、预处理和自定义数据类型实现模块化程序设计。

(5)能熟练使用类和对象、继承与派生实现面向对象程序设计。

(6)能构建项目并编译和调试C++程序。

3.核心能力

以培养学生的专业能力、分析问题、解决问题能力为主,其中专业技能占50%,解决问题能力占40%,此外沟通整合能力和职业素养各占5%。

二、课例开发

1.课例的选取

该课例的选取依照成果导向的教学理念,高度关注和努力培育积极、自主、能动的要素,模拟企业软件开发典型工作任务而获得工作成果,以达成成果为核心。课例的选取应贴近生活,便于学生接受,具有典型性和前沿性,能够达到事倍功半的效果。课例源于企业实践,在实际工作中具有代表性、实用性。通过校企合作,课程委员会与企业专家、工程师共同研讨,根据职业岗位要求选取一个典型的教学项目,进行集成开发,形成开发成果,并作为示例,有利于培养学生编程思想以及快速掌握程序设计方法。

2.教学单元设计

单元设计归纳为“一、三、五”。“一”是指设计一个完整项目贯穿于单元教学的始末,有利于学生对本单元所涉及知识点的全部融合,以便于学生与企业实际用人需求的无缝对接。“三”是指“三个阶段”,是在活动历程实施中要经历的准备阶段、发展阶段和整合阶段。“五”是指“五大要素”,包括参与主体、行为目标、活动时间、活动方式、活动内容五个要素。

以第二单元的“设计与实现简易计算器”为例,课例的开发选择实用性较强的计算器,如用顺序结构中输出语句进行菜单设计,用选择结构的switch语句进行分支中的加、减、乘、除等计算,如果要想运算多次,可增加do-while循环语句进行多次运算。所涉及的知识点包含有顺序结构、选择结构、循环结构,涵盖整个结构化程序设计单元。

整个教学过程课例设计按照“分析、计划、决策、实施、展示、评价”等六个步骤进行设计,在实践环节采用任务驱动式教学法。将班级学生分成几个学习小组,每组选出一位技术水平较高的学生担任小组长。由组长负责整个项目各个模块的设计和开发,制订项目开发计划和分工任务。每个学生在不同阶段分别担任不同的角色,通过协作、探究共同完成系统需求分析、统功能分析和模块设计、系统流程图数据结构设计、各功能模块设计、编码、调试等工作。每个课例完成之后进行成果展示,学生和教师分别进行评价和总结,以进一步丰富和完善课例。整个过程中教师进行全程引导,根据学生表现给予一定物质奖励,以激励学生自主完成任务。

3.学习评量

成果导向评量过程分为自我评量、组长评量和教师评量三个方面。自我评价是小组内部学生之间根据项目的工作过程,如课堂表现、上机操作、出勤等,进行小组内部成员的互相评分;组长评量是组长根据组员在组内的表现,如团结协作、组内互助、组内分担任务的完成情况进行评量;教师评量主要根据学生回答问题、代码的编写及调试、组内的表现等情况进行评量。这就要求每一个课例都要进行详细的功能分解,界面设计、各模块的功能实现都要占一定比例,评分前设计出详细的评分标准,根据给出的评分标准确定学生最终的得分。

三、小结

成果导向教学模式下的C++程序设计课例已经应用了一学期,学生成绩显著提升,期末总体平均成绩提高了约5分。课例的应用显著提高了学生的动手能力,同时也培养了学生专业能力及发现问题、问题解决等能力。但在实践过程中也发现了一些不足,课例的开发应不断完善,以期达到更好的效果。

Java程序员和C++程序员的区别 篇12

随着计算机技术的迅猛发展, 很多新的、高效的软件开发技术应运而生。《C++程序设计》就是应潮流与需求而发展起来的一门优秀的程序设计语言, 它受到许多计算机专业人士及程序设计人员的青睐,在很多高等院校中《C++程序设计》都被列为计算机专业教学体系中的一门重要的主干课。但由于其使用的灵活性、抽象性、复杂性, 相对来说就成为一门难教又难学的课程。笔者根据自身教学经验和讲授中出现的问题, 在此进行分析探讨, 以期能进一步提高本课程的教学效果和教学质量。

1.《C++程序设计》教学特点

1.1《C++程序设计》优点

C++程序设计是近年来在国内外得到迅速推广和应用的一种计算机语言,它是在C语言的基础上扩充了面向对象机制而形成的一种OOP (Object-Oriented Programming) 面向对象程序设计。C++除继承了C的全部优点和功能外,还支持OOP。与其它程序设计语言相比, C++程序设计语言简洁、紧凑, 功能丰富, 表达能力强, 使用灵活方便, 目标程序效率高, 可移植性好, 适合编写各种软件, 尤其是系统软件[1]。

1.2《C++程序设计》教学目的

C++是一门高效实用的程序设计语言, 其教学目的是:通过理论和实践教学, 理解面向对象的概念, 树立OOP的思维, 学会采用面向对象的方法进行问题分析, 能够灵活运用面向对象思想建立模型, 并能够用OOP方法编程, 培养学生的动手和创新能力。教师在教学过程中以“让学生掌握面向对象程序设计的方法, 理解面向对象程序设计的灵魂”为教学原则, 让学生在掌握面向对象程序设计的基本概念、基本知识、基本思想的同时, 着重培养学生运用所学的知识去解决实际问题的能力[2]。

2. 课程存在的主要问题

2.1 学生学习兴趣不高

《C++程序设计》教学的目的是向学生介绍面向对象的程序设计方法, 使学生掌握面向对象的编程技术, 掌握软件开发的技巧。初接触C++课程时,很多学生感到新奇好玩。但C++程序设计是一门高度抽象的课程,具有繁多得数据类型和复杂灵活多变的语法结构,很多内容只可体会,很难言传,随着课程的不断深入,大量的规则、定义、要求和机械的格式出现,很容易使一部分学生产生枯燥无味的感觉,没有一定的毅力与恒心很难坚持下去。

2.2 实践教学环节重视不够

C++语言是一门实践性操作性非常强的计算机语言[3], 需要学生经常上机实验, 调试程序。但是很多学生上机目的不明确, 实验的内容不清楚, 只是照着书上的例题或课后习题输入程序, 满足于得出和书本上一样的运行结果, 并不真正理解程序。而且, 学生在程序调试过程中出现了的问题,只会被动地等待老师解决, 根本不会独立思考。

2.3 教师教学内容和方法单一

有些教师在授课时, 采用常规的顺序式、填鸭式的教学方法, 在教学过程中与学生之间几乎没有互动,因此学生学习的主动性没有得到充分发挥运用。对于基本概念只是讲解概念的定义, 缺乏联系实际, 造成很多学生对这门课程的理解,仅停留在一些死记硬背的术语上, 不能学以致用或解决实际问题。此外, 有些教师在讲解知识点时所选的例题大多是死板没有趣味的例题, 使很多学生感到C++语言枯燥、没有兴趣, 这严重影响了教学效果。

3.课程教学方法改革探讨

3.1 采用启发互动式教学

在C++程序设计课程中,有一些概念之间的差别和程序设计的步骤如果只通过教师讲述,学生虽然在字面上可以接受,但在理解深度上往往达不到令人满意的效果。如果能设计出一系列问题,让学生在解决问题的过程中自己去探究和体验,采用启发互动式教学,效果将大不相同。比如,在学习条件语句时,通过例子“谁做的好事”:四位同学中的一位做了好事,不留名,A说:不是我。B说:是C。C说:是D。D说:他胡说。已知三个同学说的是真话,一个同学说的是假话。现在要根据这些信息,找出做了好事的同学。成功引入了分支条件的概念。再比如,学习循环语句前[4],提问:一张普通的纸张对折了多少次后,纸张的厚度就能达到珠穆朗玛峰的高度 (8848米) 呢?普通纸张厚度约0.1mm,答案是只需要对折27次就可以实现题目要求。结果往往令多数学生觉得不可思议,这时再引入对循环语句的学习,并通过实例来解决该问题。由于同学们的兴趣提上来了,在讲解循环语法结构时,很轻易的就使学生掌握并留下了深刻的印象。

3.2 采用举一反三、循序渐进教学法

举一反三的教学方法,能引导学生在学习编程的过程中养成运用动态思维来解决问题,对培养学生的逻辑思维、抽象思维以及促进学生综合编程能力有非常重要的作用。在实际教学过程中,可通过在书本原有程序的基础上逐渐改变和增加条件的方法来提高学生的综合编程能力。例如在讲循环语句时,用例题求1+2+3+…+10的和,接着问求1*2*3*…*10的积呢?那么再求1+1/2+1/3+…+1/10的和呢?再加深问求1/2+2/3+3/5+5/8+8/13+…,又该怎么求呢?在讲循环嵌套前,给出一个有趣的实际问题“案情分析”,某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:A、B至少有一人作案;A、E、F三人中至少有两人参与作案;A、D不可能是同案犯;B、C或同时作案,或与本案无关;C、D中有且仅有一人作案;如果D没有参与作案,则E也不可能参与作案。试编一程序,将作案人找出来。让学生带着问题去学新知识,有利于增强学习的积极性。另外,还可以故意设置一些错误的程序,设计一些陷阱,让大家自己去发现并把程序编写错了的地方改正过来,以提高他们的敏锐性和判断能力,激发他们学习的求知欲。

3.3 加强理论联系实际, 多上机实践操作

C++程序设计的实践性操作性特点决定了上机实践是教学过程中十分重要的部分, 如何加强上机实践, 提高实际操作的效果, 并以此进一步提高教学质量是值得广大计算机教师认真思考的问题。笔者认为可从以下几个方面来考虑:1.在课堂上给学生指定明确的上机操作题目, 让学生在课下进行充分的上机准备, 上机时做到目标明确、有的放矢;2.针对性地给学生一些趣味性的程序设计题目, 让学生能通过查阅资料、询问老师等各种方式将程序编写调试出来, 这可以深化课堂上学到的内容, 增强学生学以致用的能力, 同时让学生有一种学习的成就感;3.加强对学生进行实时指导, 要求每个学生都能对课堂上讲到的内容通过上机来理解掌握, 并随机抽查学生掌握情况,对上机过程中普遍存在的一些问题进行统一讲解。

3.4 采用多媒体辅助教学法

使用多媒体进行课堂教学, 可以给学生营造一个良好的程序设计环境。与传统教学方式相比, 多媒体教学具有形象生动、交互性好、信息量大、减少文字书写等显著特点。对课程中难以理解的抽象内容可以给予直观展示和动态模拟, 例如对大量的算法和结构流程的描述,通过计算机图形显示、动画模拟及文字说明等,营造一个全新的图文并茂、生动直观的教学环境,大大增加了教学信息量,提高了学习效率,有效地刺激和培养了学生的形象思维。对一些重要的结构流程和算法,通过实例动态演示和模拟程序的执行过程,既能辅助教师形象地讲授课程中的难点和重点, 又能激发学生学习的兴趣, 从而显著提高教学效果,对学生学习也可以起到事半功倍的作用。

4. 结束语

教学改革是教学活动的一个永恒主题, OOP教学在计算机专业教学中举足轻重。本文针对笔者在《C++程序设计》教学过程中出现的问题, 进行了思考和探索, 并将所提出的方法在教学活动中实施,这些措施可使学生强化对面向对象概念的理解,灵活运用面向对象思想建立模型, 学会采用面向对象的思维来分析问题, 并用OOP语言编程解决具体问题, 较好地激发了学生的兴趣, 调动了学生的学习积极性, 取得了显著的教学效果。

摘要:C++是一门高效实用的程序设计语言, 也是高等院校计算机专业教学体系中一门重要的主干课。作为一门难学又难教的课程, 本文就该课程教学中遇到的问题, 提出了改进措施和科学合理的解决方法, 着重强调教学方法在教学中的重要性, 使学生能更好地学习掌握。

关键词:C++,面向对象程序设计,教学方法,多媒体教学

参考文献

[1]王萍主编.C++面向对象程序设计[M].北京:清华大学出版社, 2002.

[2]张海藩, 牟永敏主编.面向对象程序设计实用教程[M].北京:清华大学出版社, 2002.

[3]莫露洁.《C++面向对象程序设计》课程教学探讨[J].科技信息, 2008 (24) .

JAVA程序员的求职信 篇13

您好!

了解了贵公司的招聘信息,对Flash程序员这个职位很感兴趣。大学毕业后,一直在深圳一家网络公司做Flash程序员。对Flash游戏课件编程有很好的理解和熟悉,相信我有能力承担贵公司要求的Flash编程任务。

本人对计算机编程兴趣浓厚,熟练使用Flash动画和Action Script2.0编程,熟悉Flash游戏开发流程;熟悉Photoshop、Dreamweaver MX 20xx、Visual Studio 20xx等网页制作工具,熟悉HTML,有一定的搭建能力。NET+SQL网站。

面对今天激烈的人才竞争,我知道我的知识有限,但我更清楚,我有不甘落后的精神,有不断学习和提高的欲望。愿意上进,不怕挫折,是我的人生信条。给我一个实践的机会,去做吧,因为我的能力终究是要在实践中培养,在实践中体现的。我相信我的专业技能、积累的知识和良好的人际关系将帮助我翻开人生的新 篇章。

比如,如果我有幸成为贵公司的一员,我相信我能胜任贵公司安排的工作,我愿意与公司同甘共苦,我会以敬业、努力、开拓、创新的精神投入到工作中。我相信贵公司能为我提供另一片施展才华的天空,我也相信我的努力能让贵公司的事业再上一层楼。谢谢大家对我的关注!

此致

敬礼

求职人:xxx

Java程序员和C++程序员的区别 篇14

2012-06-28 14:01 without0815 博客园 我要评论(0)字号:T | T

本文主要详解了Java语言的8大排序的基本思想以及实例解读,详细请看下文 AD: 51CTO云计算架构师峰会 抢票进行中!

8种排序之间的关系:

1,直接插入排序

(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的。如此反复循环,直到全部排好顺序。(2)实例

(3)用java实现

1.2.3.4.5.package com.njue;

public class insertSort { public insertSort(){

inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};6.7.8.9.10.11.12.13.14.15.16.17.18.int temp=0;

for(int i=1;i

int j=i-1;temp=a[i];

for(;j>=0&&temp

a[j+1]=a[j];//将大于temp的值整体后移一个单位

}

a[j+1]=temp;}

for(int i=0;i

2,希尔排序(最小增量排序)

(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。(2)实例:

(3)用java实现

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.public class shellSort { public shellSort(){

int a[]={1,54,6,3,78,34,12,45,56,100};

double d1=a.length;

int temp=0;

while(true){

d1= Math.ceil(d1/2);

int d=(int)d1;

for(int x=0;x

for(int i=x+d;i

int j=i-d;temp=a[i];

for(;j>=0&&temp

a[j+d]=temp;} }

if(d==1)

break;}

for(int i=0;i

3.简单选择排序(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;

然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(2)实例:

(3)用java实现

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.4,堆排序 public class selectSort { public selectSort(){

int a[]={1,54,6,3,78,34,12,45};

int position=0;

for(int i=0;i

int j=i+1;position=i;

int temp=a[i];

for(;j

if(a[j]

a[position]=a[i];a[i]=temp;}

for(int i=0;i

堆的定义如下:具有n个元素的序列(h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项(大顶堆)。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个堆,这时堆的根节点的数最大。然后将根节点与堆的最后一个节点交换。然后对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有两个节点的堆,并对它们作交换,最后得到有n个节点的有序序列。从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。(2)实例:

初始序列:46,79,56,38,40,84 建堆:

交换,从堆中踢出最大数

依次类推:最后堆中剩余的最后两个结点交换,踢出一个,排序完成。(3)用java实现

1.2.3.4.import java.util.Arrays;

public class HeapSort { int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};5.6.7.public HeapSort(){ heapSort(a);} 8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.public void heapSort(int[] a){ System.out.println(“开始排序”);

int arrayLength=a.length;

//循环建堆

for(int i=0;i

//建堆

buildMaxHeap(a,arrayLength-1-i);

//交换堆顶和最后一个元素

swap(a,0,arrayLength-1-i);

System.out.println(Arrays.toString(a));} }

private void swap(int[] data, int i, int j){

// TODO Auto-generated method stub

int tmp=data[i];data[i]=data[j];data[j]=tmp;}

//对data数组从0到lastIndex建大顶堆

private void buildMaxHeap(int[] data, int lastIndex){

// TODO Auto-generated method stub

//从lastIndex处节点(最后一个节点)的父节点开始

for(int i=(lastIndex-1)/2;i>=0;i--){

//k保存正在判断的节点

int k=i;

//如果当前k节点的子节点存在while(k*2+1<=lastIndex){

//k节点的左子节点的索引

int biggerIndex=2*k+1;

//如果biggerIndex小于lastIndex,即biggerIndex+1代表的k节 if(biggerIndex

//若果右子节点的值较大

if(data[biggerIndex]

//biggerIndex总是记录较大子节点的索引

biggerIndex++;} }

//如果k节点的值小于其较大的子节点的值

if(data[k]

//交换他们

swap(data,k,biggerIndex);点的右子节点存在 51.52.53.54.55.56.//将biggerIndex赋予k,开始while循环的下一次循环,重新保 k=biggerIndex;}else{

break;}

}

}

align=“left”>    }

}

5.冒泡排序

(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)实例:

(3)用java实现

1.2.3.public class bubbleSort { public bubbleSort(){ int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};4.5.6.7.8.9.int temp=0;

for(int i=0;i

for(int j=0;j

if(a[j]>a[j+1]){ temp=a[j];a[j]=a[j+1];10.11.12.13.14.15.16.17.18.a[j+1]=temp;} } }

for(int i=0;i

6.快速排序

(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。(2)实例:

(3)用java实现

1.public class quickSort { 2.int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};

3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.public quickSort(){ quick(a);

for(int i=0;i

public int getMiddle(int[] list, int low, int high){

int tmp = list[low];//数组的第一个作为中轴

while(low < high){

while(low < high && list[high] >= tmp){

high--;}

list[low] = list[high];//比中轴小的记录移到低端

while(low < high && list[low] <= tmp){ low++;}

list[high] = list[low];//比中轴大的记录移到高端

}

list[low] = tmp;//中轴记录到尾

return low;//返回中轴的位置

}

public void _quickSort(int[] list, int low, int high){

if(low < high){

int middle = getMiddle(list, low, high);//将list数组进 _quickSort(list, low, middle1);} } } 行一分为二

归排序

排序

7、归并排序

(1)基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。(2)实例:

(3)用java实现

1.2.3.4.import java.util.Arrays;

public class mergingSort { int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.public mergingSort(){ sort(a,0,a.length-1);

for(int i=0;i

public void sort(int[] data, int left, int right){

// TODO Auto-generated method stub

if(left

//找出中间索引

int center=(left+right)/2;

//对左边数组进行递归

sort(data,left,center);

//对右边数组进行递归

sort(data,center+1,right);

//合并

merge(data,left,center,right);} }

public void merge(int[] data, int left, int center, int right){

// TODO Auto-generated method stub

int [] tmpArr=new int[data.length];

int mid=center+1;

//third记录中间数组的索引

29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.int third=left;

int tmp=left;

while(left<=center&&mid<=right){

//从两个数组中取出最小的放入中间数组

if(data[left]<=data[mid]){ tmpArr[third++]=data[left++];}else{

tmpArr[third++]=data[mid++];} }

//剩余部分依次放入中间数组

while(mid<=right){

tmpArr[third++]=data[mid++];}

while(left<=center){

tmpArr[third++]=data[left++];}

//将中间数组中的内容复制回原数组

while(tmp<=right){

data[tmp]=tmpArr[tmp++];}

System.out.println(Arrays.toString(data));}

}

8、基数排序

(1)基本思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。(2)实例:

(3)用java实现

1.2.3.4.5.import java.util.ArrayList;import java.util.List;

public class radixSort {

int

a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,101,56,17,18,23,34,15,35,25,53,51};6.7.8.9.10.11.12.13.14.15.16.public radixSort(){ sort(a);

for(int i=0;i

public void sort(int[] array){

//首先确定排序的趟数;

int max=array[0];

for(int i=1;i

if(array[i]>max){ 17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.max=array[i];} }

int time=0;

//判断位数;

while(max>0){ max/=10;time++;}

//建立10个队列;

List queue=new ArrayList();

for(int i=0;i<10;i++){

ArrayList queue1=new ArrayList();queue.add(queue1);}

//进行time次分配和收集;

for(int i=0;i

//分配数组元素;

for(int j=0;j

int x=array[j]%(int)Math.pow(10, ArrayList queue2=queue.get(x);queue2.add(array[j]);queue.set(x, queue2);}

int count=0;//元素计数器;

//收集队列元素;

for(int k=0;k<10;k++){

while(queue.get(k).size()>0){

ArrayList queue3=queue.get(k);array[count]=queue3.get(0);queue3.remove(0);count++;} } }

}

上一篇:物料泄漏应急演练下一篇:砍价优秀作文