博文
针对考研谈谈:伪代码的语法规则(2005-06-24 19:28:00)
摘要:现在很多大学计算机考研时,一般(甚至可以说全部)都要求要考《数据结构》,那么算法的题目基本上是必然要求的,这种题目基本上分为三种类型:
1、 写出算法的设计思想和程序
所写的程序一般要求要有基本的算法思想解释,语言一般不要求,而且可以使用伪代码甚至自然语言。
2、 程序填空,这个程序基本上都是用C/C|++写(因此我认为C++基本上是必学的语言,你可以不选择.net,但是c++至少你应该入门。
这种情况不只是考研,想高级程序员的考试、高校的必修课等等一般所要求的程序设计或者所写出来的程序基本上都是C/C++.
3、 程序和算法思想改错
下面针对第一种情况谈谈伪代码,因为考研的题目基本上是比较有难度的(特别是好的学校)而且有时间限制,因此要写出完整的程序基本上不大可能或者说不合算,因此当自己心中知道了算法思想以后用伪代码设计出来是比较好的。对于伪代码,很多书都没怎么介绍,网上的资料也不多,我以前搜藏了一篇,现在拿出来以享读者。
(以下来自网络非原创,转载的朋友也请说明)
伪代码的使用 Usage of Pseudocode
伪代码(Pseudocode)是一种算法描述语言。使用为代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal, C, Java, etc)实现。因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。
下面介绍一种类Pascal语言的伪代码的语法规则。
伪代码的语法规则
在伪代码中,每一条指令占一行(else if 例外,),指令后不跟任何符号(Pascal和C中语句要以分号结尾);
书写上的“缩进”表示程序中的分支程序结构。这种缩进风格也适用于if-then-else语句。用缩进取代传统Pascal中的begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进;
例如:
line 1
line 2
学不可以已——我一年Java之路的回顾,反思以及展望(转自csdn)(2005-09-11 23:03:00)
摘要:学不可以已——我一年Java之路的回顾,反思以及展望
作者:汪瑜佯 来自:CSDN
大约就是在去年的这个时候吧,Java这个字眼就开始占据了我学习计划中的重要席位,从那时候那杯冒热气的咖啡一直陪伴我到今天。也不知道当时为什么要学习Java,又是为什么选择了Java。因为我记得当时的我,心中所想和现在可谓是大相径庭!那时我曾天真的想着,我将来学管理,你们这些学计算机的人出来也难逃给管理界人士做下属的命运,现在想来,那时是多么的无知和幼稚,我怕现在的很多大学生,更确切的说很多像我们专业――信息管理与信息系统的同学都还抱着这样的想法(当然也不排除很多立志学习金融以及管理的同学^_^)!
其实在蔡学镛先生的Sleepless in Java中也就说过,他在上大学的时候,有两类同学错误的认识,第一种就是瞧不起基础课,觉得学的什么Data Structure,Operating System,Database Concepts没用,以为会VC,VB,SQL Server的就真的能成为众人羡慕的IT白领了;第二种也就是我刚才所说自己犯的错误,真以为那些写程序的人将来入了社会会被那些学管理的人踩在脚下!第一种是短视进利,第二种呢就是好高骛远!在犯了第二种错误后,值得庆幸的是,我对第一种错误总是避而远之!
记得我在网上搜索了很多资料,最后终于锁定两本书作为我的入门教材的入选书籍,一本是《Core Java》,另一本就是《Thinking in Java》了。但是因为当时网上说《TIJ》中文版翻译的不尽如人意,于是我就选择了《Core Java》,现在真觉得当时选择是对的,就我那会的基础根本看不懂TIJ,而《Core Java》是属于教科书风格的书,于当时的我比较适合。随着我翻开《Core Java》的第一页,我就正式踏上了Java之路!
当初我在刚学习Java的时候,我无论对Java还是程序设计都是不折不扣的门外汉,我看《Core Java》第一章的时候完全是如履薄冰,一大堆技术名词搞得我晕头转向的,什么分布式,多线程,GC…,虽然现在看来是非常自然而顺畅的,但在当时可以说是我前面的一座高山,其实,那些技术名词根本不用看,慢慢的学,学的那儿自然就不言而喻了!现在看CSDN上初学者恨不得......
厦门大学2005年第二届程序设计大赛题目(2005-06-24 17:35:00)
摘要:规则:
1.赛题共五题,参赛者做出的题数将是作品评分的一个重要依据。
2.比赛作品平台不限,语言不限(推荐标准C/C++),程序占用的内存不限(只要不是太离谱),程序运行的时间不限(同样不要太离谱),但是程序编写的质量会对最后的评分有一定的影响.
3.请尽量严格按照输入输出的定义编写输入输出接口,方便多组测试样例的数据测试.当然,如果仅仅输入输出格式有问题而算法正确的程序,也同样可以得分.
4.本次比赛的目的主要是问题的分析解决,程序设计和算法设计能力,故将所有结果直接输出而没有算法分析过程的程序,就算能通过测试样例,将也一样无效.
5.理论上允许参赛者对同一份题目提供多份程序,我们可以从中帮你选出最好的,但是请尽量自行挑选一份最好的提交.请提交的时候尽量将代码整理并注释好,并提交相关设计文档.
6.虽然没有在线测试提交系统,但是由于时间上较为充分,请自行考虑编写各种情况下的测试用例,以提高你程序的准确率.
7.请独自完成,严禁代码重复,严禁相互讨论,尊重对手,也是尊重自己.
8.如对赛题有疑惑可以发邮件至: emoon11@sohu.com 征询许鹏展同学,他将热情地解答你提出的问题。
题目:
1. 取胜之道
Program国度的人,喜欢玩这样一个游戏,在一块板上写着一行数,共n个。两个游戏者,轮流从最右或最左取一个数。刚开始,每个游戏者的得分均为零。如果一个游戏者取下一个数,则将该数的值加到该游戏者的得分上,最后谁的得分最高谁就赢了游戏。给出这n个数( 从左往右), 假设游戏者都是非常聪明的,问最后两个人的得分(假设第一个人首先取数).
输入格式:第一行为n(2<=n<=100),第二行为n个数,每个数字之间均用空格隔开。输出为两个游戏者的得分.第一个数表示第一个游戏者的得分,第二个数为第二个游戏者的得分,两个数字之间用空格隔开。
如输入
6
4 7 2 9 5 2
输出
18 11
2. 分数与小数
将分数转化为小数,相信很多人都会吧.那么,这里给定一个分数N/D,N为分子,D为分母(N......
百度技术副总裁刘建国畅谈工程师成长(2005-06-17 14:43:00)
摘要:刘建国:
百度公司副总裁,副教授。1988年毕业于西安交通大学计算机科学工程系软件专业,1991年毕业于北京大学计算机科学技术系,获计算机网络方向硕士学位。1997年起,担任北京大学计算机系计算机网络和分布式系统研究室副主任,1999年被评为副教授。2000年1月加盟百度,现任百度公司技术副总裁,负责公司与技术和工程有关的规划、研究和管理。
从北大计算机系的教授到现在百度公司的技术副总裁,从最初带领六七个奠基工程师到现在管理一百多人的工程师队伍,这个过程和转变让我在管理、技术、做人、做事等等方面获益良多。尤其是在如何管理工程师团队方面,积累了许多宝贵的经验,希望在此与大家分享。
世界上存在很多管理理念和理论,但工程师的管理还是具有一定的特殊性。软件工程师是个非常特殊的群体。他们的特点很鲜明,比如聪明、科学严谨、不事张扬、自尊心极强、非常内秀。工程师善于和机器打交道,但不太擅长和人打交道,沟通技巧稍显欠缺,甚至有时看起来棱角过于分明。
因此,所有的技术管理方法必须和工程师的特点契合,否则注定是要失败的。百度公司刚创始的时候,我可以和工程师直接沟通,不存在什么问题。但随着技术团队规模的增加,就需要制定一些政策和流程,而且要根据工程师的特点来制定。工程师喜欢公平、公正、公开,最痛恨暗箱操作,所以要把很多事情事先约定清楚。比如绩效怎样评估,奖金怎么计算,职称标准是什么,奖励惩罚怎样进行。在制定过程中大家可以对这些规则挑战,但一旦确定下来,所有人都必须遵守。我们的政策是非常透明的,工程师做的怎么样,按照事先制定的规则一条条地对照,奖金和绩效评估都按照标准做,大家没有什么话说。
百度的工程师都抱着一个信条:“技术能够改变世界”,认为通过自己的技术影响大众生活是一件很自豪的事情,这是一个很重要的信仰。在一个以技术为导向的公司中,如果没有这种很高的信仰,就很难有发自内心的工作热情和提高技术水平的动力。在百度,当工程师想到自己所从事的工作是在改变一亿网民的生活时,内心便有一种莫名的激动和强烈的责任感,激励自己把每件工作做好。我本人也有这种强烈的感觉。2001年百度对外提供搜索引擎服务后,每天都有用户发来大量正面反馈,感谢百度如何帮他们找到了工作、学习、生活中需要的资料,如何丰富了他们的业余生活,有的......
收集Eclipse插件网站(转,来自csdn)(2005-09-10 21:18:00)
摘要:收集Eclipse插件网站
摘自 CSDN(http://blog.csdn.net/blueball/archive/2004/07/26/51821.aspx)
http://www.eclipse-workbench.com/jsp/
http://www.objectlearn.com/index.jsp
http://www.crionics.com/products/opensource/eclipse/eclipse.jsp
http://eclipse-plugins.2y.net/eclipse/index.jsp----------good
ftp://202.113.29.2/pub/eclipse/plugins/
http://sourceforge.net/projects-------plugin project
http://vssplugin.sourceforge.net/
http://www.azzurri.jp/en/software/clay/index.jsp---------database modeling plugin
http://www.improve-technologies.com/alpha/struts-config-editor/--------plugin
http://www.sysdeo.com/eclipse/tomcatPlugin.html--tomcat的plugin和jboss的plugin
Lombo
http://www.objectlearn.com/
TomcatPlugin
http://www.sysdeo.com/eclipse/tomcatPlugin.html
EasyStruts
http://easystruts.sourceforge.net
EclipseColorer plugin
http://colorer.sf.net
CVS-SSH2 Plug-in for Eclipse
http://www.jcr......
【经典推荐】每个JAVA初学者都应该搞懂的问题!(转帖)(2005-06-17 11:11:00)
摘要:对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。
问题一:我声明了什么!
String s = "Hello world!";
许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
String string = s;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。
问题二:"=="和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。
根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是&q......
第二届“IBM杯”大中华区高校校园创新设计大赛开幕了!(2005-06-17 10:47:00)
摘要:第一、日程安排
6月7号:开幕式(北京大学)
7月10号:学生报名截止
7月10号~8月20号:相关技术讲座和培训
10月8号:作品提交截止
10月9号~15号:分赛区初评
10月15号~11月14号:完善决赛入围作品和准备决赛答辩
11月15号:决赛终评和闭幕式暨颁奖仪式(北京大学)
第二、參賽須知
参赛作品必须为创新的可以运行于Linux平台的应用系统,功能不限,可以参考推荐题目。
推荐题目:
1.Build an innovative IDE based on ......
再论林杰杰的“JAVA真是强”(2005-06-17 10:27:00)
摘要:引自本blog,林杰杰的“JAVA真是强”
原文:
class 人
{
private String 姓名;
private int 年龄;
public 人(String 名,int 岁)
{
姓名 = 名;
年龄 = 岁;
}
void 介绍()
{
System.out.println("我叫" + 姓名 + ",今年" + 年龄 + "岁。");
}
public static void main(String[] args)
{
人 林 = new 人("林杰杰",22);
林.介绍();
}
}
居然这样写程序也能编译运行,JAVA真是……完......
Together for Eclipse的使用(转载,来自J2ME开发网)(2005-06-15 15:22:00)
摘要:Together for Eclipse的使用
作者:CNN 文章来源:真情流露 点击数:2504 更新时间:2005-1-25
1、介绍
UML对Java系统的设计是一个很有帮助的语言,该语言综合了面向对象的建模语言、方法以及过程,系统整体设计可以帮助我们认清整个软件的开发概貌和过程,相信学过软件工程的人都知道,优点就不多说了。
Together就是Borland公司推出的一款将UML功能和IDE开发工具集成在一起的一套UML建模软件。在使用过程中可以同时看到UML图和Java源代码,修改UML图会使得源代码得到即时的同步修改,反过来,修改Java源代码也会使该代码同步地在UML图中反映出来。
2、版本
Together有专门的开发版本,就是standalone的,以前叫做TogetherControlCenter,这个在网上可以找......
Effective Java读书笔记(转载,来自J2ME开发网)(2005-06-15 15:14:00)
摘要:终于翻开这本James都称赞的java经典书籍了,发现比一般的英语书籍要难懂一些。但是里面的Item都是非常实用的,是java程序员应该理解的。
Creating and Destroying Object
Item 1:考虑用静态工厂方法替代构造器
例如:public static Boolean valueOf(boolean b)
{
return (b?Boolean.TRUE:Boolean.FALSE);
}
这样的好处是方法有名字,并且它可以复用对象,不像构造器每次调用都产生新的对象。其次它还可以返回返回类型的子类。不好的地方是如果没有public
&nbs......