我正在教一门入门级的C ++编程课程。我们只在课堂上使用iostream(无GUI)。看起来学生们并不那么兴奋地将字符串和数字打印到他们的控制台。 (大多数学生以前从未使用过控制台。)通过在控制台中显示字符串很难激发或传达编程的兴奋。
可以由C ++初学者编写的优秀且令人兴奋的控制台程序是什么?我正在寻找可以使用基本C ++技能的东西+有点挑战+非常令人兴奋,这可以激励学生学习编程语言。
任何意见将不胜感激。
答案 0 :(得分:3)
当我教授本科课程时,我们直接用Game of Fifteen作为第三个家庭作业项目。它的范围非常好,而且它是一个游戏,所以那里有一些固有的动力。
答案 1 :(得分:3)
当我教书时,我早期的项目是ATM机。
纯文字界面,具有提款,存款,查询余额,账户间转账等基本操作。
这是每个人都熟悉的东西,并没有花费大量的编程时间,但它确实帮助学生感觉它是一个实用和现实的程序。
其他类似的想法是现金登记(手续费退款,优惠券,按英镑计价的物品,销售税,商店特价等),或手机计费程序(白天,晚上和周末分钟,账单短信,图片信息等。)
答案 2 :(得分:2)
从甲板上产生一组扑克牌的系统怎么样?虽然明确定义,确保没有重复卡等的复杂性,使其成为一个很好的入门级挑战。
作为扩展,您可以让系统输入您是想下注还是弃牌,并有效地玩扑克游戏。
最后,一个好的设计将允许他们稍后在gui前端切换控制台(例如中级)。
答案 3 :(得分:1)
我总是喜欢有真实世界目的的问题。类似于计算数学方程或一系列素数的东西。我想,ProjectEuler上的很多东西都会很好。不是每个人都喜欢数学(但话说再来一次,这对计算机科学来说是必要的!)。
答案 4 :(得分:1)
您可以制作ascii动画,而不仅仅是打印到屏幕上。
答案 5 :(得分:1)
向您的学生介绍管道和过滤器。创建一个有用的实用程序,从stdin获取数据并将其输出定向到stdout。创建另一个使用相同协议执行其他操作的实用程序。创建第三个实用程序。展示公用事业可以如何稳健地协同工作。
例如,创建GNU head
和tee
实用程序的克隆,并且可能添加一个名为cap
的新实用程序,该实用程序将字母大写。然后演示如何将文本文件的前3行大写,并将文件传送到文件和标准输出。接下来,演示如何在不更改单行代码的情况下使用相同的实用程序来获取文件的前5行,并将大写字母和文件输出到屏幕。
答案 6 :(得分:0)
当我使用C ++时,我们不得不复制一个Theseus和Minotaur游戏。它可以很好地输出多行到控制台以形成“图形化”的东西,并且它很容易基于一组实现的规则。
答案 7 :(得分:0)
我之前必须在控制台中编写一个Tower of Hanoi游戏,我发现这很有趣。它需要使用基本的数据结构,用户输入,检查游戏结束条件,这对我认为的初学者来说是好事。
答案 8 :(得分:0)
新的编程学生通常会发现图形程序是最令人兴奋的。
它不一定非常先进,只是能够操纵像素和东西应该足以让他们感兴趣。围绕SDL制作一个简单的图形课应该没问题。也许是这样的:
int main()
{
GraphicWindow graphic;
graphic.setPixel(10,20,GraphicWindow::Red);
graphic.idle();
}
然后你给出了诸如“实现drawRect函数”之类的作业等。
答案 9 :(得分:0)
可能是Lunar Lander game的纯文字版本。您可以使用完整的ASCII艺术和动画(可能使用ncurses)作为高级练习,但即使是纯文本形式也可能很有趣。
我记得玩过在HP 67计算器上运行的版本,只有七段显示器才能使用它。
我模糊地回忆起一个可能在MITS / Microsoft BASIC编写的ALTAIR 8800上运行的版本,该版本使用该行的主要部分来显示高于地面的高度作为ASCII艺术,并提示您在右边刻录下一个刻度。
另一个传统的选择是实施Hunt the Wumpus,或野心勃勃的战舰。
答案 10 :(得分:0)
我的第一个编程课程中有一个关于实施(减少)大富翁游戏的长篇功课。
您可以为电路板使用链式列表。 您可以对板块使用继承。 你需要一些逻辑来处理玩家轮流。
这可能是我在CS做过的第一个项目,我可以和我的非技术朋友谈谈并引起一些兴趣。