我即将结束我的介绍编程类,我们正在使用java并且到目前为止一直在执行命令行程序,没有我喜欢的gui。到目前为止,在课堂上编程任务有些挑战,但让我希望多一点。当我感到无聊时,我发现自己想写一个程序,但总是很难搞清楚要做什么。
我想知道是否有人对我可以编写或工作的程序有任何好的建议,在我的开发过程中,此时要挑战我并帮助强化我在课堂上学到的概念。这个类节奏不是太快,到目前为止我们只是通过类和对象(尽管还没有继承或多态)来掩盖,现在正在使用数组。我对在课堂上所做的所有事情感到很自在,因为在开始上课之前,我已经对自己的学习进行了一些介绍。
任何关于让我忙碌的事情的建议都将不胜感激。
答案 0 :(得分:9)
我会推荐Project Euler。这是锻炼头脑的好方法,用不熟悉的语言实现解决方案是学习该语言的好方法。
答案 1 :(得分:5)
我建议寻找代码katas(如these)或编程测验。这些通常很小,可以作为实践来完成,并具有足够的挑战性来提供学习体验。
此外,请尝试阅读代码。找一个处理您感兴趣的问题域的开源项目,并查看其他人编写的代码。
答案 2 :(得分:4)
使用GUI编写Tic Tac Toe
答案 3 :(得分:3)
这可能是一个巨大的进步,但如果您熟悉Arrays,请尝试查看一些Data Structures,它们对于理解Java概念非常有用。
我的一些使用Java的中间项目:
答案 4 :(得分:3)
您可以寻找一个有趣的开源项目,需要帮助并建议您的帮助。
答案 5 :(得分:3)
您可能想要处理一种新语言。在Java之后,你可以通过尝试C(然后再尝试C ++)来掌权,或者你可以通过尝试Python来掌握权力。 (或Ruby,如果您愿意,甚至是LISP / Scheme。)
如果你尝试一种新的语言,首先要通过练习获得一本讲授语言的好书。尝试练习,看看它们是否激励你做一些新的事情。
一旦学会了Python的基础知识,就可以使用PyGame库来编写某种简单的游戏。如果您这样做,您可能希望获得该书Beginning Game Development with Python and Pygame: From Novice to Professional。
让游戏正常运行后,请务必将其放在Github或其他代码共享网站上与世界分享! (一旦你有一个正在运行的游戏并且你分享它,有人可能会受到启发,让你的游戏和添加新的功能。最终你的游戏可能变成一个大的东西!)
或者,不要编写自己的游戏,而是查看其他人编写的游戏,看看您是否有灵感添加新功能。 PyGame网站上有几十个,处于不同的完成阶段。
P.S。是的,我正在推动Python。我喜欢基本语言的简洁性和高级功能的强大功能。从简单的系统管理脚本到高级AI,您可以使用Python。还有其他好的语言,我不打算在这里开始语言火焰大战,所以如果你想学习别的东西,那也没关系。
我强烈建议您通过编写程序来学习,我强烈建议您尝试不同的语言。我发现我在Python中学到的东西,即使在C语言中也是一个更好的程序员,相比之下,这是一种彻头彻尾的原始语言。经过多年的C经验,我不会期望一个表现较差的高级语言教我很酷的东西,但确实如此。
答案 6 :(得分:2)
尝试新项目。这可能是您感兴趣的任何事情,例如一个小游戏,一个简单的音乐播放器,一个基本的图片浏览器/编辑器,简单的网络应用程序等。只需选择一些小到可以管理但不是太琐碎的东西。这将有助于您更好地熟悉语言及其库。
尝试解决SPOJ,TopCoder和Project Euler等网站上的一些简单问题。除了编码实践,做这些问题有助于更深入地理解和理解解决问题和计算机科学。
获得一本关于算法和数据结构的好书。 CLRS是我最喜欢的,但实际上任何好书都可以。
答案 7 :(得分:1)
编写一个简单的游戏,如纸牌,迷宫等,是许多开发问题和概念的良好起点。
答案 8 :(得分:1)
在视觉上工作......这会更有趣。创建游戏并使用补间效果。您将被迫考虑计时,回调,处理用户交互......
答案 9 :(得分:1)
我最喜欢的一本关于编程的书叫做Software Tools in Pascal。本书让你实现了一堆可以很好地协同工作的简单工具;基本上你是在重新发明UNIX的基本命令行工具。
我建议你得到一本书的副本(亚马逊说用过的副本起价大约4美元,包括运费),并试着用Java重新实现这本书中的程序。如果您刚刚完成了编程入门课程,您应该能够理解本书中的所有内容;你可能不太了解Pascal的语法,但你会发现它很容易阅读。
如果这样做,您将编写与字符串匹配,搜索和替换,计算关键字索引以及扩展宏的程序。我想你不必写书中的每一个程序,但我希望你至少可以阅读这本书。
几年前,在“敏捷”实践被编纂之前,我读了这本书,从中我学到了一种有用的敏捷开发方法。这本书称之为“左角设计”;你从一些有用的程序小部分开始,让它工作,然后一直添加一个功能,直到你的程序完成。这本书向您介绍了这方面的例子。我觉得我作为软件开发人员的成功很大程度上来自于我从本书中学到的经验教训,我对此非常推荐。
答案 10 :(得分:1)
我建议创建一个基于Web的应用程序。服务器端开发是目前Java的主要领域之一,并且您将接触到许多重要的概念,这些概念非常重要且有价值(或通常不在学校教授)。
选择您认为有用的简单数据跟踪应用程序。配方管理器,体育统计数据收集器等。选择像MySQL这样的数据库来跟踪数据并创建基于Web的前端,以使用Servlet输入和查看数据。一旦你看到它是多么痛苦,看看JSP,Spring和其他工具将使它变得更容易。
如果您选择实际使用的项目,您将始终拥有想要进行的新功能和改进。这将让您感兴趣,并将引导您了解更多信息。当您发现重复或难以编码的区域时,请查找其他人用于解决类似问题的工具和模式。
拥有一个真实的项目也将迫使您管理需求,估计范围和板条箱优先级。
可以有许多互连的库和许多新工具需要学习,但是如果你从一个运行servlet的简单Tomcat服务器开始,这些服务器可以读取和写入数据库并从那里构建,那么它是非常易于管理的。
答案 11 :(得分:1)
这是一个有趣的尝试:获得一个“机器人战斗”游戏,你编写驱动机器人的代码,然后你的机器人被放入竞技场与其他代码驱动的机器人和机器人与最好的代码获胜
对于Java,有Robocode。
还有其他语言。这是一个如此简单的想法,多年来已被很多人实施过很多次。
最好的游戏是策略是重要部分的游戏。如果您从未使用雷达进行扫描,则可能看不到另一个适合您的机器人。如果你花太多时间用雷达扫描,你只需坐在那里拍摄。你需要找到扫描,移动,瞄准等的最佳平衡。你选择一个目标,在射击时追逐它直到死亡,然后重复?您是否以不可预测的模式随机驾驶,同时拍摄您碰巧看到的任何内容?战斗机器人的最佳策略是什么?
多年来我没有玩过这样的游戏。这真的很有趣;我应该再这样做。 (我一直想学习Java,我打算将Robocode作为Java教育的一部分。)
答案 12 :(得分:1)
我强烈建议做一些网站开发。对于一个全面的程序员来说,基于Java,Rails,ASP是不是很重要但是与Web技术密切相关。没有网络技能,你可能会陷入“引擎室”。
答案 13 :(得分:0)
典型的进展路径是研究算法和[数据]结构。这可能看起来很无聊但会为您提供长期的重要技能。为了让您了解这是什么类型的东西,请检查MIT's Open CourseWare 6.006。您不一定需要完整地学习这门课程(只是为了让您了解算法和数据结构的含义。
或者你可以通过利用现有的图书馆来尝试开发游戏,但风险在于你对事物的某种肤浅的理解。 (足以将各种东西“粘合”在一起......)
为了确保视频游戏能够比你的男孩/女朋友更好地演示,而不是花哨的排序算法; - )
答案 14 :(得分:0)
编写一个程序从URL中提取HTML源并输出所有超链接,每行一个,如下所示:
Link1 Text: URL1
Link2 Text: URL2
...
你会学到在整个职业生涯中都会使用的东西。
提示:远离正则表达式。并用一堆不同的语言写出来 VB,Common LISP,Ruby,Scheme,ML,Prolog,Go,...
哦,或者编写一个命令行程序,提示用户输入以分号分隔的字符串,然后拆分字符串并使用几种排序算法之一对值进行排序并打印出来。然后你就可以对排序算法进行编码了!
因此用户输入hello;world;1;two;3;!
并且程序输出类似
!
1
3
hello
two
world
答案 15 :(得分:0)
我强烈建议做一些网站开发。对于一个全面的程序员来说,基于Java,Rails,ASP是不是很重要但是与Web技术密切相关。从HTML,CSS开始,然后是一些JavaScript,Ajax,jQuery。 佛瑞德