Tom*_*ter 406 language-agnostic introduction
我正在寻找你能用几行简单代码做的最酷的事情.我敢肯定你可以在15行中用Haskell编写一个Mandelbrot集,但很难遵循.
我的目标是激发学生编程很酷.
我们知道编程很酷,因为你可以创造你想象的任何东西 - 它是最终的创意出路.我想激励这些初学者,让他们尽可能多地学习早期学习.
现在,我的理由是自私的.我正在向一个由60个半工程,半个商业专业组成的团队教授计算机简介课程; 所有新生.他们是来自贫困高中的学生.根据我以往的经验,该集团一般分为如下:一些摇滚明星,一些谁拼命和那种得到它,谁非常努力和一些几乎没有得到它,和几个谁不关心.我想尽可能多地接触这些群体.以下是我如何使用计算机程序进行教学的示例:
以下是我正在寻找的一个示例:一个单行VBS脚本让您的计算机与您通话:
Run Code Online (Sandbox Code Playgroud)CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it")
我可以用它来演示操作顺序.我会展示代码,让它们玩它,然后解释说那条线上有很多东西,但计算机可以理解它,因为它知道规则.然后我会告诉他们这样的事情:
Run Code Online (Sandbox Code Playgroud)4(5*5) / 10 + 9(.25 + .75)
你可以看到我首先需要做的是(5*5).然后我可以乘以4.现在我已经创建了对象.除以10就像调用Speak一样 - 在我有一个对象之前我不能说话,而且在我有100之前我不能分开.然后在另一边我首先创建一个InputBox,其中包含一些如何显示它的说明.当我在输入框中按Enter键时,它会评估或"返回"我输入的内容.(提示:'oooooo'发出有趣的声音)所以当我说Speak时,右边是说话的.我从InputBox中得到了它.
所以当你在一条线上做几件事时,比如:
Run Code Online (Sandbox Code Playgroud)x = 14 + y;
你需要了解事物的顺序.首先我们添加14和y.然后我们将结果(它评估或返回的内容)放入x.
这是我的目标,在他们玩得开心的时候,有一堆很酷的例子来展示和教授课程.我在我的室友身上尝试了这个例子,虽然我可能不会将此作为第一课,但她喜欢它并学到了一些东西.
一些很酷的mathematica程序可以制作出易于理解的漂亮图形或形状,这将是很好的想法,我将研究这些.这里有一些复杂的动作脚本示例,但有点太高级,我不能教flash.你有什么其他想法?
Esp*_*sen 339
在地址栏中输入此代码(在浏览器中),然后按Enter键.然后你可以编辑网页的所有内容!
javascript:document.body.contentEditable='true'; document.designMode='on'; void 0
Run Code Online (Sandbox Code Playgroud)
这是我所知道的最酷的"单线"=)
Rob*_*Day 201
当我第一次写这篇文章时.
10 PRINT "What is your name?"
20 INPUT A$
30 PRINT "Hello " A$
40 GOTO 30
Run Code Online (Sandbox Code Playgroud)
它让人们大吃一惊!电脑记得他们的名字!
编辑:只是添加到此.如果你能说服新程序员这是他们能做的最酷的事情,那么他们将成为优秀的程序员.现在,您可以使用一行代码执行几乎任何操作,以运行其他人编写的库.我个人对此并不满意,并且在教学方面看不到什么好处.
mar*_*kus 180
好的,这是15行代码,但结果真棒!这就是那种让我在孩提时感到惊慌失措的东西.这是来自PHP手册:
$x = 200;
$y = 200;
$gd = imagecreatetruecolor($x, $y);
$corners[0] = array('x' => 100, 'y' => 10);
$corners[1] = array('x' => 0, 'y' => 190);
$corners[2] = array('x' => 200, 'y' => 190);
$red = imagecolorallocate($gd, 255, 0, 0);
for ($i = 0; $i < 100000; $i++) {
imagesetpixel($gd, round($x),round($y), $red);
$a = rand(0, 2);
$x = ($x + $corners[$a]['x']) / 2;
$y = ($y + $corners[$a]['y']) / 2;
}
header('Content-Type: image/png');
imagepng($gd);
Run Code Online (Sandbox Code Playgroud)
Bob*_*ger 105
微软拥有Small Basic,一个用于"孩子"的IDE.
pic = Flickr.GetRandomPicture("beach")
Desktop.SetWallpaper(pic)
Run Code Online (Sandbox Code Playgroud)
它专门用于展示编程的酷炫程度.
Mar*_*eck 83
我倾向于认为人们对他们可能与他们的生活有关或与他们的生活相关的东西印象深刻.我会尝试将我的10行代码基于他们知道和理解的东西.以Twitter及其API为例.为什么不使用这个API来构建一个很酷的东西.以下10行代码将从Twitter返回"公共时间轴"并将其显示在控制台应用程序中...
using (var xmlr = XmlReader.Create("http://twitter.com/statuses/public_timeline.rss"))
{
SyndicationFeed
.Load(xmlr)
.GetRss20Formatter()
.Feed
.Items
.ToList()
.ForEach( x => Console.WriteLine(x.Title.Text));
}
Run Code Online (Sandbox Code Playgroud)
我的代码示例可能不适合您的学生.它是用C#编写的,使用的是.NET 3.5.因此,如果您要教他们PHP,Java或C++,这将没有用.但是,我的观点是,通过将您的10行代码与"酷,有趣,与学生相关"的内容相关联,您的样本也会变得酷炫,有趣和相关.
祝好运!
[是的,我知道我错过了几行使用语句和Main方法,但我猜测10行不需要字面上的10行]
use*_*918 80
这是一个Python telnet服务器,它会询问用户名并向他们打招呼.这看起来很酷,因为您通过网络从另一台计算机与您的程序进行通信.
from socket import *
s=socket(AF_INET, SOCK_STREAM)
s.bind(("", 3333))
s.listen(5)
while 1:
(c, a) = s.accept()
c.send("What is your name? ")
name = c.recv(100)
c.send("Hello "+name)
c.close()
Run Code Online (Sandbox Code Playgroud)
Bob*_* Mc 78
我的孩子们用一个快速的VB脚本来操作Microsoft Agent角色得到了很好的回应.对于那些不熟悉MS Agent的人来说,它是一系列可以通过COM接口操作的动画屏幕字符.您可以在Microsoft Agent下载页面下载代码和字符.
以下几行将使Merlin角色出现在屏幕上,飞来飞去,敲击屏幕引起你的注意,并打个招呼.
agentName = "Merlin"
agentPath = "c:\windows\msagent\chars\" & agentName & ".acs"
Set agent = CreateObject("Agent.Control.2")
agent.Connected = TRUE
agent.Characters.Load agentName, agentPath
Set character = agent.Characters.Character(agentName)
character.Show
character.MoveTo 500, 400
character.Play "GetAttention"
character.Speak "Hello, how are you?"
Wscript.Sleep 15000
character.Stop
character.Play "Hide"
Run Code Online (Sandbox Code Playgroud)
您可以使用许多其他命令.校验http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx了解更多信息.
编辑2011-09-02 我最近发现Microsoft Agent本身并未在Windows 7上安装.但是它在这里单独提供.我没有对此进行测试,因此无法验证它是否正常运行.
Bar*_*own 69
我认为现在成为一名计算机教育工作者很难.我是.我们面临着越来越陡峭的艰苦战斗.我们的学生是非常复杂的用户,要给他们留下深刻的印象需要很多.他们有很多工具可供他们使用,可以做出惊人的事情.
10行代码中的简单计算器?为什么?我有一台TI-86.
一个将特殊效果应用于图像的脚本?这就是Photoshop的用途.Photoshop会吹掉10行中你能做的任何东西.
翻录CD并将文件转换为MP3怎么样?呃,我已经从BitTorrent获得了5万首歌曲.它们已经是MP3格式了.我在iPhone上播放它们.谁买CD呢?
要向精明的用户介绍编程,你将不得不找到以下内容:
a)适用于他们觉得有趣和酷的东西,b)做他们不能做的事情.
假设您的学生已经可以访问最昂贵的软件.他们中的许多人都拥有完整版的Adobe CS5.5(零售价:2,600美元;实际价格:免费),并且可以轻松获得通常会破坏部门预算的任何应用程序.
但绝大多数人都不知道这些"计算机东西"究竟是如何运作的.
他们是一群非常有创意的人:他们喜欢创造东西.他们只是想做或做一些他们的朋友不能做的事情.他们想要吹嘘一些东西.
以下是我发现与学生产生共鸣的一些事情:
这些都不涉及传统意义上的任何编程.但他们确实利用了强大的库.我认为它们是一种不同的编程方式.
Mik*_*vey 63
我发现一个很受欢迎的(在GWBASIC中)是:
10 input "What is your name ";N$
20 i = int(rnd * 2)
30 if i = 0 print "Hello ";N$;". You are a <fill in insult number 1>"
40 if i = 1 print "Hello ";N$;". You are a <fill in insult number 2>"
Run Code Online (Sandbox Code Playgroud)
我发现初学者有一些需要修复的概念.
祝你班上好运.我相信你会做得很好.
PS我相信你明白,除了材料和技巧,你也在教导一种态度,这同样重要.
Thi*_*hib 62
这个C代码可能是混淆的,但我发现它非常强大
#include <unistd.h>
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<L?--_
%6:6:7)+"World! \n",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Run Code Online (Sandbox Code Playgroud)
这是结果......只有3行...一种分形Hello World
......
WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!! !dWW!ddddllllrrrrrrrooooooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo WloW!!!ddddllrrrrrrrrooooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl r!dlooWWWoW!dllrrrrrrroooo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo l! rdo!l!r!dlrrrrrrrrooo
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW lW!ddlrrrrrrrroo
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd ! rlW!ddllrrrrrrrro
Worrrrrrrllllllddd!oooWWWoloWWWWoodr drrWdlllrrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr ro!dlllrrrrrrrr
Wrrllllllllddddd!WWolWr oWoo r!dllllrrrrrrr
Wlllllllldddd!!odrrdW o lWddllllrrrrrrr
Wlddddd!!!!!WWordlWrd oW!ddllllrrrrrrr
olddddd!!!!!WWordlWrd oW!ddllllrrrrrrr
Wlllllllldddd!!odrrdW o lWddllllrrrrrrr
Wrrllllllllddddd!WWolWr oWoo r!dllllrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr ro!dlllrrrrrrrr
Worrrrrrrllllllddd!oooWWWoloWWWWoodr droWdlllrrrrrrrr
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd ! rlW!ddllrrrrrrrro
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW lW!ddlrrrrrrrroo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo l! rdo!l!r!dlrrrrrrrrooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl r!dlooWWWoW!dllrrrrrrroooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo WloW!!!ddddllrrrrrrrrooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!! WdWW!ddddllllrrrrrrrooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Run Code Online (Sandbox Code Playgroud)
Joh*_*ley 45
如何显示您可以使用任何Web浏览器并在地址栏中输入JavaScript并获取要执行的代码?
编辑:转到包含大量图像的页面,并在地址栏中尝试:
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)
Run Code Online (Sandbox Code Playgroud)
Vin*_*ent 37
您可以创建一个选择随机数的应用程序.你必须猜测它.如果你错了,它说:更高或更低.如果你猜对了,那就是一个好消息.
这对学生来说很酷.
没有正确错误检查的简单Python版本:
import random
while input('Want to play higher/lower? ').lower().startswith('y'):
n = random.randint(1, 100)
g = int(input('Guess: '))
while g != n:
print(' %ser!' % (g > n and 'low' or 'high'))
g = int(input('Guess: '))
print(' Correct! Congratulations!')
Run Code Online (Sandbox Code Playgroud)
Erik建议计算机应该猜测数字.这也可以在10行代码内完成(尽管现在缺少正确的错误检查更严重:范围之外的有效数字会导致无限循环):
while input('Want to let the pc play higher/lower? ').lower().startswith('y'):
n = int(input('Give a number between 1 and 100: '))
lo, hi, guess, tries = 1, 100, 50, 1
while guess != n:
tries += 1
lo, hi = (guess + 1, hi) if guess < n else (lo, guess - 1)
guess = (lo + hi) // 2
print('Computer guessed number in %d tries' % tries)
Run Code Online (Sandbox Code Playgroud)
Rya*_*son 26
回到高中的计算机课上,我和几个朋友教授课程如何用Delphi编程.该课程主要侧重于使用Pascal进行编程,因此Delphi是一个很好的下一步.我们演示了Delphi的事件驱动特性及其RAD功能.在课程结束时,我们向班级展示了一个示例应用程序,并要求他们重现它.该应用程序询问" 你喝醉了吗? ",带有两个按钮是和否....我想你知道接下来会发生什么......没有按钮改变鼠标上的位置,几乎不可能点击.
学生和老师得到了很好的启发.
该程序只需要几行用户编写的代码和一个简单的公式来计算按钮的移动位置.我不认为其他任何学生都知道这一点,但有些学生很接近.
hod*_*smr 23
当我第一次想出bash forkbomb时,我觉得它真的很甜.如此简单,但却能够做到:
:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)
Gha*_*nPL 22
这是作弊,甚至不是很简单,但我曾经使用Allegro图形库在20行C++中写了一篇文章.对于什么是一条线没有真正的标准,但它是在很久以前,它纯粹是为了好玩.它甚至有粗糙的声音效果.
这是它的样子:
20行http://img227.imageshack.us/img227/8770/20linesxx0.png
这是代码(应该编译):
bool inside(int x, int y, int x2, int y2) { return (x>x2&&x<x2+20&&y>y2&&y<y2+10); }
int main() {
BITMAP* buffer;
float px,shotx,shoty,monstars[8],first,rnd,pressed,points = 0, maxp = 0;
unsigned char midi[5] = {0xC0,127,0x90,25,0x54}, plgfx[] = {0,0,0,10,3,10,3,5,6,5,6,10,8,12,10,10,10,5,13,5,13,10,16,10,16,0,13,0,13,2,3,2,3,0,0,0}, mongfx[] = {0,0, 10,5, 20,0, 17,8, 15,6, 10,16, 5,6, 3,8, 0,0};
allegro_init(), set_color_depth(32), set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0), install_timer(), install_keyboard(), install_mouse(), buffer = create_bitmap(320,240),srand(time(NULL)),install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT,""),clear_to_color(buffer,makecol32(100,100,255));
while ((pressed=(!key[KEY_Z]&&pressed)?0:pressed)?1:1&&(((shoty=key[KEY_Z]&&shoty<0&&pressed==0?(pressed=1?200:200):first==0?-1:shoty)==200?shotx=px+9:0)==9999?1:1) && 1+(px += key[KEY_LEFT]?-0.1:0 + key[KEY_RIGHT]?0.1:0) && 1+int(px=(px<0?0:(px>228?228:px))) && !key[KEY_ESC]) {
rectfill(buffer,0,0,244,240,makecol32(0,0,0));
for(int i=0;i<8;i++) if (inside(shotx,shoty,i*32,monstars[i])) midi_out(midi,5);
for (int i=0; i<8; monstars[i] += first++>8?(monstars[i]==-100?0:0.02):-100, points = monstars[i]>240?points-1:points, monstars[i]=monstars[i]>240?-100:monstars[i], points = inside(shotx,shoty,i*32,monstars[i])?points+1:points, (monstars[i] = inside(shotx,shoty,i*32,monstars[i])?shoty=-1?-100:-100:monstars[i]), maxp = maxp>points?maxp:points, i++) for (int j=1; j<9; j++) line(buffer,i*32+mongfx[j*2 - 2],monstars[i]+mongfx[j*2-1],i*32+mongfx[j*2],monstars[i]+mongfx[j*2+1],makecol32(255,0,0));
if (int(first)%2000 == 0 && int(rnd=float(rand()%8))) monstars[int(rnd)] = monstars[int(rnd)]==-100?-20:monstars[int(rnd)]; // randomowe pojawianie potworkow
if (shoty>0) rectfill(buffer,shotx,shoty-=0.1,shotx+2,shoty+2,makecol32(0,255,255)); // rysowanie strzalu
for (int i=1; i<18; i++) line(buffer,px+plgfx[i*2 - 2],200-plgfx[i*2-1],px+plgfx[i*2],200-plgfx[i*2+1],makecol32(255,255,0));
textprintf_ex(buffer,font,250,10,makecol32(255,255,255),makecol32(100,100,255),"$: %i ",int(points)*10);
textprintf_ex(buffer,font,250,20,makecol32(255,255,255),makecol32(100,100,255),"$$ %i ",int(maxp)*10);
blit(buffer, screen, 0, 0, 0, 0, 320,240);
}
} END_OF_MAIN()
Run Code Online (Sandbox Code Playgroud)
Jon*_*ley 21
在这个时代,JavaScript是展示如何使用一些非常基本的工具(如记事本)进行编程的绝佳方式.
对于想要让他们的朋友惊叹的人来说,jQuery效果是一个很好的起点!
在这一个中,只需单击页面的空白区域即可.
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(document.body).click(function () {
if ($("#pic").is(":hidden")) {
$("#pic").slideDown("slow");
} else {
$("#pic").slideUp();
}
});
</script>
</head>
<body><img id="pic" src="http://www.smidgy.com/smidgy/images/2007/07/26/lol_cat_icanhascheezburger.jpg"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Wel*_*bog 20
你可能会考虑的一件事就是Robocode,其中大量的编码被抽象出来,你基本上只是告诉机器人该做什么.一个简单的10行功能可以使机器人做很多事情,并且具有非常直观和易于理解的结果.
也许Robocode本身不适合这项任务,但这种方式是将书面代码与计算机上的视觉动作联系起来的好方法,而且当你需要提供示例时,需要注意这一点很有趣.
public class MyFirstJuniorRobot extends JuniorRobot {
public void run() {
setColors(green, black, blue);
// Seesaw forever
while (true) {
ahead(100); // Move ahead 100
turnGunRight(360); // Spin gun around
back(100); // Move back 100
turnGunRight(360); // Spin gun around
}
}
public void onScannedRobot() {
turnGunTo(scannedAngle);
fire(1);
}
public void onHitByBullet() {
turnAheadLeft(100, 90 - hitByBulletBearing);
}
}
Run Code Online (Sandbox Code Playgroud)
Wes*_*ley 18
所以有一天,我决定我已经受够了.我会学习钢琴.看到像埃尔顿约翰这样的人掌握了对键盘的掌握,这让我确信这就是我想做的事情.
实际上学习钢琴是一个巨大的失望.即使在完成了八年级的钢琴课之后,我对钢琴演奏的心理形象与我最初的欣赏活动的想法如此不同仍然没有留下深刻的印象.
然而,我非常喜欢的只是我三年级的音乐理论基础.我了解了音乐的构建.我终于能够从执行书面音乐的世界走向写自己的音乐.随后,我开始玩我想玩的东西.
不要试图让新程序员,特别是年轻程序员目瞪口呆."不到十行简单代码"的整个概念似乎引出了"给我一些聪明的东西" 的情绪.
你可以向新程序员展示一些聪明的东西.然后,您可以教同一个程序员如何复制这种"性能".但这并不是让他们迷上编程的原因.教他们基本知识,让他们综合自己聪明的十行代码.
我将向新程序员展示以下Python代码:
input = open("input.txt", "r")
output = open("output.txt", "w")
for line in input:
edited_line = line
edited_line = edited_line.replace("EDTA", "ethylenediaminetetraacetic acid")
edited_line = edited_line.replace("ATP", "adenosine triphosphate")
output.write(edited_line)
Run Code Online (Sandbox Code Playgroud)
我意识到,我并不需要分配line
给edited_line
.但是,这只是为了保持清晰,并表明我没有编辑原始文档.
在不到十行中,我对一份文件进行了检验.当然,也一定要向新程序员展示所有可用的字符串方法.更重要的是,我展示了三个我能做的基本有趣的事情:变量赋值,循环,文件IO和标准库的使用.
我想你会同意这段代码并不令人眼花缭乱.事实上,这有点无聊.不 - 实际上,这很无聊.但是向新程序员展示代码并查看该程序员是否不能将该脚本的每个部分重新用于本周内更有趣的事情,如果不是那一天.当然,这对你来说是令人反感的(可能使用这个脚本来制作一个简单的HTML解析器),但其他一切只需要时间和经验.
Jef*_*ume 17
像大多数其他评论者一样,我开始编写代码来解决数学问题(或者为我设计的非常糟糕的游戏创建图形 - 像印第安纳琼斯和僵尸这样的东西).
真正开始我的(数学和编程)是从基于文本的,选择你自己的冒险风格游戏......到更多基于图形的游戏.我开始着色方格纸和绘制像素,直到我进入几何...并发现如何使用方程来绘制曲线和线条,方框等.
我的观点是,我可以真正得到像处理(http://processing.org/)这样的东西,其中典型的程序看起来像这样:
void setup()
{
size(200, 200);
noStroke();
rectMode(CENTER);
}
void draw()
{
background(51);
fill(255, 204);
rect(mouseX, height/2, mouseY/2+10, mouseY/2+10);
fill(255, 204);
int inverseX = width-mouseX;
int inverseY = height-mouseY;
rect(inverseX, height/2, (inverseY/2)+10, (inverseY/2)+10);
}
Run Code Online (Sandbox Code Playgroud)
对我而言,这是未来的"标志".
有一个简单的"hello world"示例可以快速地让某人绘制和更改代码,看到事情如何破碎以及可以创建什么奇怪的"事故"......一直到更高级的交互和分形创建......
mee*_*eep 15
您可以使用用AutoIt编写的脚本,这模糊了使用传统应用程序和编程之间的界限.
例如,打开记事本并使自己的计算机通过消息框侮辱它们的脚本,然后不留下其动作的痕迹:
Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("You smell of human.")
Sleep(10000)
MsgBox(0, "Humans smell bad", "Yuck!")
WinClose("Untitled - Notepad")
WinWaitActive("Notepad", "Do you want to save")
Send("!n")
Run Code Online (Sandbox Code Playgroud)
Jos*_*ren 13
我记得当我第一次开始编码循环时总是给我留下深刻印象.您可以编写5到10行代码(或更少)和数百(或多个指定)行打印出来.(我在PHP和Java中首先学到的).
for( int i = 0; i < 200; i++ )
{
System.out.println( i );
}
Run Code Online (Sandbox Code Playgroud)
joe*_*dle 13
我认为学生入门的好地方可能是Greasemonkey.在userscripts.org上有成千上万的示例脚本,非常好的阅读材料,其中一些非常小.Greasemonkey脚本会影响网页,学生们已经熟悉了这些网页,如果不操作的话.Greasemonkey本身提供了一种在测试时编辑和启用/禁用脚本的简便方法.
例如,这是"Google Two Columns"脚本:
result2 = '<table width="100%" align="center" cellpadding="10" style="font-size:12px">';
gEntry = document.evaluate("//li[@class='g'] | //div[@class='g'] | //li[@class='g w0'] | //li[@class='g s w0']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < gEntry.snapshotLength; i++) {
if (i==0) { var sDiv = gEntry.snapshotItem(i).parentNode.parentNode; }
if(i%2 == 0) { result2 += '<tr><td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td>'; }
if(i%2 == 1) { result2 += '<td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td></tr>'; }
}
sDiv.innerHTML = result2+'</table>';
if (document.getElementById('mbEnd') !== null) { document.getElementById('mbEnd').style.display = 'none'; }
Run Code Online (Sandbox Code Playgroud)
Gre*_*reg 10
这是一个非常基本的基于文本的c#程序,它模拟老虎机的旋转动作.它不包括不同的获胜或现金支付的可能性,但这对学生来说可能是一个很好的练习.
对不起,它超过10行.
string[] symbols = new[] { "#", "?", "~" }; // The symbols on the reel
Random rand = new Random();
do
{
string a="",b="",c="";
for( int i = 0; i < 20; i++ )
{
Thread.Sleep( 50 + 25 * i ); // slow down more the longer the loop runs
if( i < 10 )
a = symbols[rand.Next( 0, symbols.Length )];
if( i < 15 )
b = symbols[rand.Next( 0, symbols.Length )];
c = symbols[rand.Next( 0, symbols.Length )];
Console.Clear();
Console.WriteLine( "Spin: " + a + b + c );
}
if( a == b && b == c )
Console.WriteLine( "You win. Press enter to play again or type \"exit\" to exit" );
else
Console.WriteLine( "You lose. Press enter to play again or type \"exit\" to exit" );
}
while( Console.ReadLine() != "exit" );
Run Code Online (Sandbox Code Playgroud)
使用Tcl,你有一个简单的文本编辑器,在大约12行代码中有一个保存按钮(但没有打开,需要另外8行).它适用于所有标准平台:
pack [frame .toolbar] -side top -fill x
pack [button .save -text save -command save] -in .toolbar -side left
pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side right -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true
proc save {} {
set filename [tk_getSaveFile]
if {$filename ne ""} {
set f [open $filename w]
puts $f [.text get 1.0 end-1c]
close $f
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到目标是10行,所以如果你想要坚持10行或更少,一个没有加载或保存的简单文本编辑器只有两行.那不是太破旧.
pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side left -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true
Run Code Online (Sandbox Code Playgroud)
在您选择的平台上使用"wish filename " 执行上述任一代码块.希望附带大多数*nix和Mac,但你必须手动安装它的Windows.
更进一步,这两行脚本也可以用python编写,虽然需要八行,仍然在10行目标下:
from Tkinter import *
root=Tk()
text = Text(wrap="word")
sb = Scrollbar(orient="vertical", command=text.yview)
text.configure(yscrollcommand=sb.set)
sb.pack(side="right", fill="y")
text.pack(side="left", fill="both", expand=True)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我最近在一篇文章"我写过的最短,最有用的程序"中写到了这一点.
简介:我在1996年写了一个3行VB6应用程序,我仍然每天使用它.一旦exe被删除在"发送到"文件夹中.它允许您右键单击资源管理器中的文件,并将该文件的完整路径发送到剪贴板.
Public Sub Main()
Clipboard.SetText Command$
End Sub
Run Code Online (Sandbox Code Playgroud)
有趣的是你提到了Mandelbrot集合,因为用GW-BASIC创建分形是我在高中时期(1993年左右)引起我对编程的热爱.在我们开始学习分形之前,我们编写了无聊的标准偏差应用程序,我仍然计划进入新闻业.
但是,一旦我看到那个漫长的,难以编写的BASIC程序产生"分形地形",我就被迷住了,我再也没有回头.它改变了我对数学,科学,计算机和我学习方式的看法.
我希望你能找到对学生有同样影响的课程.
import wx
app = wx.App()
wx.Frame(None, -1, 'simple.py').Show()
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)
simple.py框架http://zetcode.com/wxpython/images/simple.jpg
作为你提出的任何想法的补充,我说你应该告诉他们如何做一些基本的数学.把它作为
"现在你可能会认为这很简单或很复杂......但你有没有被困在数学作业上?"
然后从某人的书中拿出一个例子.大多数数学问题可以在10行中解决,因为它可能是一个简单的问题.然后向他们展示如何花费10分钟来弄清楚他们可能会得到的A值.这是一个漫长的过程,但你可能会抓住一些想要花很少时间做功课的人.
这主要源于我希望我曾想过用化学编写一个软件程序......所有这些测验和作业都是100多个......
编辑:回应彼得的评论:
说出类似于3a 2的衍生物.所以你可以只显示一个他们可以从命令行调用的简单函数:
public int SimpleDerivative(int r, int exponent){
r = r * exponent
exponent =- 1
return (String "{0}a^{1}" where {0} = r, {1} = exponent)
}
Run Code Online (Sandbox Code Playgroud)
我确定它会变成超过10行的代码,但你是否考虑过基于表单的应用程序,按下按钮可以改变背景的颜色或改变文本的大小?这将向他们展示交互式程序的工作原理.它还会向他们表明,作为程序员,他们可以完全控制计算机(程序)的功能.
希望它会引导他们为他们可以改变的其他事情提出建议,然后再提出他们可能想做的其他事情.
许多人发现赌博令人兴奋和激励.你可以自己建立一个二十一点经销商类,暴露一个界面.然后,让孩子们建立一个二十一点的玩家类.
您可以为每个学生的解决方案构建一个图表,显示资金与时间的关系,以激励任务.
该系统的优点在于您可以在数周内生成增量解决方案:
天真的解决方案是始终低于某个水平.这可能是5行代码.
更好的解决方案是查看经销商所暴露的内容并调整您的打击率.
更好的解决方案是考虑到您拥有的实际卡片 - 而不仅仅是其值的总和.
最终的解决方案可能是通过多手掌握所处理的卡片.(经销商对象可以在玩家对象上调用DealerIsShuffling(int numberofdecks),告诉玩家有多少套牌.)
另一个可能的方向是让游戏具有竞争力 - 而不是通过经销商赢钱,而是与其他人的解决方案对抗.当然,你必须轮换谁先开始打击以使事情公平.
此bash代码会锁定您的计算机.它被称为叉炸弹.
:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)
更多信息:http://en.wikipedia.org/wiki/Fork_bomb
归档时间: |
|
查看次数: |
127272 次 |
最近记录: |