Basit kodun <10 satırında yapabileceğiniz en havalı şey nedir? Yeni başlayanlara ilham vermeme yardım et! [kapalı]


406

Basit kod birkaç satırda yapabileceğiniz en havalı şey arıyorum. Haskell'de 15 satırda bir Mandelbrot seti yazabileceğinizden eminim ama takip etmek zor.

Amacım öğrencilere programlamanın serin olduğu konusunda ilham vermek .

Biz biliyoruz sen hayal bir şey yaratabilir çünkü programlama serin - bu nihai yaratıcı çıkış var. Bu yeni başlayanlara ilham vermek ve onları olabildiğince erken öğrenme kamburlarının üstesinden gelmek istiyorum.

Şimdi, nedenlerim bencil. Bir öğretiyorum Bilgisayarlara Intro 60 yarı mühendislik, yarım iş binbaşı, bir grup ders; tüm birinci sınıf öğrencileri. Onlar, az olan liselerden gelen öğrencilerdir. Geçmiş deneyimlerime göre, grup genellikle şu şekilde bölünür: bazıları çok sert ve biraz deneyen birkaç rock yıldızı , çok az çabalayan ve zar zor elde eden az sayıda kişi ve umursamayan birkaç yıldız . Bu grupların çoğuna olabildiğince etkili bir şekilde ulaşmak istiyorum. Aşağıda, öğretmek için bir bilgisayar programını nasıl kullanacağımın bir örneği verilmiştir:

İşte aradığım şeyin bir örneği: Bilgisayarınızın sizinle konuşmasını sağlamak için 1 satırlık bir VBS komut dosyası:

CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it")

İşlem sırasını göstermek için bunu kullanabilirim. Kodu gösterirdim, onunla oynamasına izin verdim, sonra açıklayın O satırda çok şey var, ama bilgisayar bunu anlayabilir, çünkü kuralları biliyor. Sonra onlara böyle bir şey gösterirdim:

4(5*5) / 10 + 9(.25 + .75)

Ve ilk önce yapmam gereken şeyin (5 * 5) olduğunu görebilirsiniz. Sonra 4 için çarpabilirim. Ve şimdi Object'i yarattım. 10'a bölmek, Speak'i çağırmakla aynıdır - Bir nesneye sahip olmadan önce konuşamam ve 100'ümden önce bölemem. Daha sonra diğer tarafta ilk olarak nasıl görüntüleneceği ile ilgili bazı talimatlar içeren bir InputBox oluşturuyorum . Giriş kutusuna enter tuşuna bastığımda girdiğim her şeyi değerlendirir veya "döndürür". (İpucu: 'oooooo' komik bir ses çıkarıyor) Yani Konuş dediğimde, sağ tarafta Konuşacak. Ve bunu InputBox'tan alıyorum.

Yani bir çizgi üzerinde birkaç şey yaptığınızda, örneğin:

x = 14 + y;

Şeylerin sırasının farkında olmalısınız. Önce 14 ve y ekliyoruz. Sonra sonucu (değerlendirdiği veya döndürdüğü) x'e koyarız.

Amacım, dersi eğlenirken göstermek ve öğretmek için bu harika örneklere sahip olmak. Bu örneği oda arkadaşımda denedim ve bunu ilk ders olarak kullanmasam da, hoşuma gitti ve bir şeyler öğrendi.

Anlaşılması kolay güzel grafikler veya şekiller yapan bazı harika matematik programları iyi fikirler olacaktır ve bunlara bakacağım. İşte bazı karmaşık actionscript örnekleri ama biraz fazla gelişmiş ve flash öğretemiyorum. Başka hangi fikirlerin var?


102
Programlamanın nasıl öğretileceğiyle ilgili soruların mükemmel ve önemsiz olduğunu düşünüyorum. Yapmaya çalıştığınız şeyde iyi şanslar.
Mike Dunlavey

6
"Amacım öğrencilere programlamanın serin olduğu konusunda ilham vermek." İnsanlara programlamanın harika olduğunu söyleyebileceğinizi sanmıyorum. Ya hoşlanıyorlar ya da sevmiyorlar.
Rik

2
Bir satırlık VBS komut dosyanız Mac'imde çalışmıyor! :-P Yine de iyi bir soru.
John Topley

1
Her zaman bu tür şeyleri severim, ama etkilemeye çalıştığınız kişi, bana Sierpinski contasından bir tane iyi iş yaparım. Bir BT çocuklar için dosya oluşturan bir şey olabilir, bazı insanlar için bilgisayar konuşmasını yapan etkileyici olurdu, vb. Hedef kitlenin ne olduğu, o zaman neyin havalı olduğunu tanımlarsınız.
Oakcool

5
83 kişi, bu sorunun nasıl "mükemmel ve önemsiz" olduğu hakkında yorumda bulunuyor ... görünüşte katılmayan 5 kişi tarafından "yapıcı değil" olarak kapatıldı. Büyük güç değil mi?
rg88

Yanıtlar:


78

Bir Microsoft Agent karakteri manipüle etmek için hızlı bir VB komut dosyası ile çocuklarımdan büyük bir yanıt aldım. MS Agent'a aşina olmayanlar için, bir COM arayüzü aracılığıyla manipüle edilebilen bir dizi animasyonlu ekran karakteridir. Kodu ve karakterleri Microsoft Agent indirme sayfasından indirebilirsiniz.

Aşağıdaki birkaç satır Merlin karakterini ekranda gösterecek, etrafta uçacak, dikkatinizi çekmek için ekrana çarpacak ve merhaba diyecektir.

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"

Kullanabileceğiniz çok sayıda başka komut var. KontrolDaha fazla bilgi için http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx .

EDIT 2011-09-02 Kısa bir süre önce Microsoft Agent'ın Windows 7'de yerel olarak yüklü olmadığını keşfettim. Ancak burada ayrı bir yükleme olarak sunulmaktadır . Bunu test etmedim, bu yüzden çalışıp çalışmadığını doğrulayamıyorum.


Bu harika. Bu, daha fazla oyu hak ediyor.
Tom Ritter

Tanıma için teşekkürler Tom. Olsa da oylar almaya başlar olsa bile hiçbir rep puan almak berbat. :-P
Bob Mc

32
Böylece ataç her zaman görebilirsiniz : D
Pedery

8
@Bob BASIC yeni başlayan bir dildir. VB TEMEL değildir . VB, MS'in o zamanki ihtiyaca göre oluşturduğu İsviçre çakısıdır. Günümüzde yerini almak için çok daha iyi (çok daha uzmanlaşmış) araçlar var. VB kötü bir dil değil, çok fazla bagajı var. Ben neden bir tamamen tarafsız gerekçe olsaydı değil kullanmak için MS yavaşça VB için destek düşüyorsa, bunun nedeni olurdu. Ölmekte olan bir dil. Office komut dosyaları JavaScript ile (yakın gelecekte planlanan) yapılır yapılana kadar bekleyin, o zaman VB'nin düşüşü kesin bir şey olacaktır.
Evan Plaice

3
@Evan - Bazı dini şaplardan ziyade adil cevap için teşekkürler. Güzel yapılmış. Office Javascript hamlesini duymamıştım. Araştırır.
Bob Mc

339

Bu kodu adres çubuğunuza (tarayıcınıza) girin ve enter tuşuna basın. Sonra web sayfasının tüm içeriğini düzenleyebilirsiniz!

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

Bu en havalı "tek astarlı" biliyorum =)


95
"Tek katlı" böyle bir yanlış adlandırmadır. Bu 3 satır, gerçekten. İstediğiniz herhangi bir kod bir satır olabilir.
DisgruntledGoat

5
Bu gerçekten düzgün görünüyor, ancak sayfayı değiştirdikten sonra almanın bir yolu var mı?
Sylverdrag

51
Çok beğendim, 999999999 kez senin için oyladım! img707.imageshack.us/img707/4843/jshack.png
JRL

4
Javascript: devre dışı bırakıldığı için bu Firefox'ta artık geçerli değil. Utanç.

2
@DisgruntledGoat javascript:ve void 0boilerplate: int main() {ve return 0; }C'ye eşdeğerdir . Ve diğer iki satır aynı şeyi yapan farklı tarayıcı API'larıdır: Birincisi IE API, ikincisi NetScape API. HTML5 kullanır contentEditable, bu nedenle Firefox 1.5 veya başka bir şeyi desteklemeyi umursamıyorsanız, gerçek kod şu şekilde olur:document.body.contentEditable='true';
Zarel

201

Bunu ilk yazdığımda.

10 PRINT "What is your name?"
20 INPUT A$
30 PRINT "Hello " A$
40 GOTO 30

İnsanları havaya uçurdu! Bilgisayar isimlerini hatırladı!

EDIT: Sadece buna eklemek için. Yeni bir programcıyı ikna edebiliyorsanız, yapabildikleri en havalı şey budur, iyi programcı olurlar. Bu gün, başka birinin yazdığı bir kütüphaneyi çalıştırmak için bir kod satırı ile neredeyse istediğiniz her şeyi yapabilirsiniz. Şahsen bunu yapmaktan kesinlikle tatmin olmuyorum ve öğretirken çok az fayda görüyorum.


15
aşağıdakilerle daha iyi olur: 40 GOTO 30
harcama

8
Kullanıcı adını görüntülemek için +1, insanlar her zaman kendi adlarını görmeyi severler. @saua, bu sonsuz bir baskı döngüsü nasıl değil? Satır 20'ye değil, satır 30'a geri döner.
z -

13
Kesinlikle 10 tane olmalı, böylece birileri kendi isimlerini girebilir ...
Omar Kooheji

17
35 PRINT CHR $ (7)
Adam Jaskiewicz'i

6
ben de programlamayı bu şekilde öğrendim. En iyi cevap imo. Bunu kabul etmek için +1
09:47

180

PHP - Triforce adlı Sierpinski contası

Tamam, 15 satır kod var ama sonuç harika! Bu çocukken beni korkutacak şeyler. Bu PHP kılavuzundan:

$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);

sierpinski contası


25
Kayıt için, bu bir Sierpinski contası.
kaos

6
Bu harika, ama bence kursun ortalarında gelmesi gerekiyor, çünkü döngüler ve diziler gibi bir dizi kavram üzerine kuruludur.
Mike Dunlavey

4
@Masi: genel fikir, üçgenin köşeleri olan üç sabit noktaya ve güncellemeye devam ettiğiniz "geçerli" bir noktaya sahip olmaktır. Bir hareket yapmak için, köşelerden birini rastgele seçin ve geçerli noktayı yarının o köşeye doğru hareket ettirin. Geçerli noktadaki renk. Sonra aynı şekilde başka bir hamle yapın ve sonra birkaç bin kez daha ve desen görünecektir. Ardından farklı sayıda köşeyle deneyin veya deseni nasıl etkilediğini görmek için geçerli noktanın köşeye atladığı kesri değiştirin.
Daniel Earwicker,

18
Kayıt için, bu bir Sierpinski contası değil ... Aslında, Triforce. en.wikipedia.org/wiki/The_Legend_of_Zelda
jason

2
Bu kod benim için garip görünüyor çünkü normalde bunun yinelemeyle yapıldığını görüyorum (ayrıca çok az kod satırı ile). Aslında, fraktallar bilgisayar bilimi derslerinde özyinelemeye iyi bir giriş niteliğindedir. Ama bana öyle geliyor ki, bu kod oldukça verimsiz olacak, rastgele yaklaşımı nedeniyle çok sayıda pikseli boyadı ve yeniden boyadı.
Steve Wortham

105

Microsoft, "çocuklar" için bir IDE olan Small Basic'e sahiptir .

pic = Flickr.GetRandomPicture("beach")
Desktop.SetWallpaper(pic)

Programlamanın ne kadar havalı olduğunu göstermek için özel olarak tasarlanmıştır.


80
Bu gerçekten berbat, çünkü bu kütüphane çağrıları sihir gibi görünüyor. Onları VB senaryosu olarak ayarlıyorsunuz. Korkarım onlar asla bu "kara büyü" alanına gizlenir ve "güvenli" sıhhi tesisat alanında kalmak. ... Oh bak bir satırda nasıl bir internet tarayıcısı yapmak için! MSIEControl (.. blabla whatever ...). Show ()
hasen

88
Çocukların aptal olduğunu düşünmüyorum. Programlama olanakları konusunda onları heyecanlandırırsanız, daha gelişmiş şeyleri kendi başlarına nasıl yapacaklarını öğreneceklerdir. Başka bir şey olmasa bile, testosteron ile enfekte olan genç çocuklar, ne olduğunu bile bilmeden önce en gizli ve karanlık olayları öğrenmeye çalışıyorlardı.
Tim Lin

28
@hansen j, bu haksızlık, herkes bir yerden başlamak zorunda.
John Farrell

30
Bu çocuklar için bir CS derecesi değil, bu bir programlama oyuncağı. Bu ağ geçidi ne olursa olsun, çocukların programlamanın eğlenceli yönünü görmelerini sağlamak ASM olmak zorunda değil.
Copas

29
Öğretmeye çalıştığım çocukları bilerek, pic = Flickr.GetRandomPicture ("göğüsler") denemeden önce yaklaşık on saniye olurdu
Iain Galloway

83

İnsanların hayatlarıyla ilgili olabilecekleri veya hayatlarıyla ilgili olabilecek şeylerden etkilendiklerini düşünüyorum. 10 satır kodumu bildikleri ve anladıkları bir şeyin etrafına dayandırırım. Örneğin Twitter ve API'sını ele alalım. Bu API'yi neden havalı bir şey oluşturmak için kullanmıyorsunuz? Aşağıdaki 10 kod satırı, "genel zaman çizelgesini" Twitter'dan döndürecek ve bir konsol uygulamasında görüntüleyecektir ...

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));
    }

Kod örneğim öğrencileriniz için en iyisi olmayabilir. C # ile yazılmış ve .NET 3.5 kullanıyor. Bu yüzden onlara PHP, Java veya C ++ öğretecekseniz bu yararlı olmayacaktır. Bununla birlikte, 10 satır kodunuzu "havalı, ilginç ve öğrencilerle alakalı bir şeyle ilişkilendirerek, örneğinizin de havalı, ilginç ve alakalı hale gelmesidir.

İyi şanslar!

[Evet, ifadeleri ve Ana yöntemi kullanarak birkaç satırı kaçırdığımı biliyorum, ancak 10 satırın tam anlamıyla 10 satır olması gerekmediğini tahmin ediyorum]


Bu gerçekten temiz! SyndicationFeed nesnesine aşina değildim - kod için teşekkürler!
Tad Donaghe

Hedef kitle meraklısı değil ergo, tweeter hakkında lanet etmiyorlar mı?
peufeu

80

Bu, kullanıcıların adını soracak ve onlara merhaba diyecek bir Python telnet sunucusudur. Ağınızdaki farklı bir bilgisayardan programınızla iletişim kurduğunuz için bu harika görünüyor.

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()

68

Bence bugünlerde bir bilgisayar eğitimcisi olmak zor. Ben. Giderek dik bir yokuş yukarı savaşıyoruz. Öğrencilerimiz inanılmaz derecede sofistike kullanıcılardır ve onları etkilemek çok zaman alır. İnanılmaz şeyler yapan çok sayıda araç var.

10 satır kod basit bir hesap makinesi? Neden? Bunun için bir TI-86 var.

Görüntüye özel efektler uygulayan bir komut dosyası mı? Photoshop bunun için. Photoshop, 10 satırda yapabileceğiniz her şeyi uçurur.

CD kopyalamaya ve dosyayı MP3'e dönüştürmeye ne dersiniz? Uhh, zaten BitTorrent'den aldığım 50.000 şarkım var. Zaten MP3 formatındalar. Onları iPhone'umda oynuyorum. CD'leri kim zaten alıyor?

Bilgili kullanıcıları programlamaya tanıtmak için aşağıdakileri bulmanız gerekecek:

a) ilginç ve havalı buldukları bir şeye uygulanabilir ve b) daha önce yapamadıkları bir şeyi yapar.

Öğrencilerinizin en pahalı yazılıma zaten erişebildiğini varsayın. Birçoğu Adobe CS5.5'in tam sürümüne sahiptir (perakende fiyatı: 2,600 $; gerçek fiyat: ücretsiz) ve normalde departmanınızın bütçesini bozacak herhangi bir uygulamayı kolayca alabilir.

Ancak büyük çoğunluğunun bu "bilgisayar işlerinden" herhangi birinin gerçekte nasıl çalıştığı hakkında hiçbir fikri yoktur.

İnanılmaz derecede yaratıcı bir gruptur: bir şeyler yaratmayı severler. Sadece arkadaşlarının yapamayacağı bir şey yapmak veya yapmak istiyorlar. Övünmek için bir şey istiyorlar.

İşte öğrencilerimle yankı bulduğum bazı şeyler:

  • HTML ve CSS. Onlardan MySpace temalarının nasıl çalıştığını öğrenir ve özelleştirebilir.
  • Mashuplar. Hepsi onları gördü, ama nasıl yaratacağını bilmiyorlar. Check out Yahoo! Borular . RSS, XML, metin filtreleme, haritalama ve görselleştirme gibi çok sayıda öğretilebilir an vardır. Tamamlanan mashup widget'ları web sayfalarına yerleştirilebilir.
  • Yapıt. Bağlamdan bağımsız sanata bak . Özyineleme ve rasgeleleştirme güzel fotoğraflar çekmenin anahtarıdır.
  • Storytelling. Alice gibi kullanımı kolay bir 3D programlama ortamıyla , sürükle bıraktan başka bir şey kullanmadan yüksek kaliteli, ilgi çekici hikayeler oluşturmak kolaydır.

Bunların hiçbiri geleneksel anlamda herhangi bir programlamayı içermez. Ancak güçlü kütüphanelerden yararlanırlar. Onları farklı bir tür programlama olarak düşünüyorum.


11
+1 Bugünlerde bittorrent ve Adobe CS4'ten 50.000 şarkıya sahip olan çocukları nasıl tanımladığınızı sevdim, elbette gerçek
thomasrutter

Python'a basit bir ikili arama algoritması yazın. Nasıl çalıştığını açıklamak için bir telefon defterini birden çok kez yırtın. Deneyimli programcıların genellikle gözden kaçırdığı ve acemilerin huşu içinde gözüktüğü programlamanın basit ama güçlü yönleri. çoğu kişi monitörlerinin monitörlerindeki piksellerin en az yarısını 60-120 / sn yenilediğinin farkında değildir. bilgisayar hız yarışlarına karşı insan yapmak. eğlenceli şeyler. daha fazla fikir için bakınız: academearth.org/courses/introduction-to-computer-science-i : ve ne yaparsanız yapın ... onlara ANSI C'yi ilk dilleri olarak öğretmeyin. Orada bulundum, berbattı.
Evan Plaice

3
Siteleri özelleştiriyorsanız, neden Greasemonkey kullanmıyorsunuz?
yeni123456

Örnekleriniz hakkında sadece birkaç düşünce: photoshop'u yeniden görüntülemeniz yeterlidir - photoshop ile 1 resmi değiştirebilir, komut dosyasıyla yüz binlerce değiştirebilirsiniz. Ve MP3'ler olarak, artık kimse CD'leri indirmiyor, haklısın, ancak (yasallık olmasaydı) en son müziği doğrudan iPod'larına otomatik olarak indirmek için bir program yazabileceklerini açıklayabilirsin.
Jeff Welling

Photoshop ile iyi bir şekilde herhangi bir sayıda dosyada bu değişiklikleri yapmak için Toplu İşlemler ve İşlemler yapabilirsiniz. Bilgisayarlarla bugünlerde ne kadar alındığı şaşırtıcı.
John

63

Ben büyük bir favori buldum (GWBASIC içinde):

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>"

Başlangıçta öğrencilerin düzeltilmesi gereken bazı kavramları olduğunu gördüm.

  • Bilgisayarlar zihninizi okumaz.
  • Bilgisayarlar bir seferde sadece bir şey yaparlar, bu kadar hızlı yapsalar bile, hepsini bir kerede yaparlar.
  • Bilgisayarlar sadece aptal makinelerdir ve sadece söylediklerini yaparlar.
  • Bilgisayarlar sadece belirli şeyleri tanır ve bunlar yapı taşları gibidir.
  • Anahtar kavram, bir değişkenin değer içeren bir şey olması ve isminin bu değerden farklı olmasıdır.
  • Programı düzenlediğiniz saat ile çalıştığı saat arasındaki fark.

Sınıfında iyi şanslar. Eminim iyi yapacaksın.

PS: Maddi ve beceri ile birlikte bir tutum da öğrettiğinizi anladığınızdan eminim ve bu da aynı derecede önemlidir.


Günümüz bilgisayarları bir seferde birden fazla şey yapar.
dreamlax

Ancak, kodunuz aynı anda birden fazla şey yapıyor mu?
JeffO

5
@dreamlax: Elbette haklısın, ama kılları ayırmayalım. Bilgisayarları çocuklara tanıtmak ve onlara temel zihinsel yapı taşlarını vermekten bahsediyoruz. Paralellik daha sonra gelebilir.
Mike Dunlavey

1
@ Ben S: Herhangi bir tesadüfle 10 satırının önündeki boşluğu kaldırdınız mı? Bunu koydum çünkü SO biçimlendiricinin ilk satırı 1 boşluk bırakmış gibi görünüyor. Kod sıralamak için daha iyi bir yolu var mı acaba?
Mike Dunlavey

2
@foljs: Tanrım! Gerçekten mi? :-) dreamlax aynı noktayı gösterdi. Mesele şu ki, bilgisayarlar hakkında hiçbir şey bilmeyen insanlarla çalışırken, onlara her şey bir anda olurmuş gibi bakar, bu yüzden saçları bölmeden bunun üstesinden gelmeliyiz. Yani gerçekten temel bir kavram "Önce A yapar, sonra B yapar, vb."
Mike Dunlavey

62

Bu C kodu belki gizlenmiş, ama çok güçlü buldum

#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;}

Ve işte sonuç ... Sadece 3 satırda ... Bir çeşit fraktal 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

5
Güzel! Çok kötü, aslında "Merhaba Dünya!"
Şubat'ta Ponkadoodle

Bu guzel! Mandelbrot modeli: D
Aniket

45

Herhangi bir web tarayıcısını alıp adres çubuğuna JavaScript girip yürütülecek kodu alabileceğinizi göstermeye ne dersiniz?

DÜZENLE: Çok sayıda resim içeren bir sayfaya gidin ve adres çubuğunda şunu deneyin:

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)

2
tamam, ama somut bir örnek vermelisiniz u ..
hasen

1
@John: Lütfen, somut bir örnek verin. JS sunucumda yalnızca JS dosyasını dışa aktararak JS kullandım. Kodu asla adres çubuğuma koymadım.
Léo Léopold Hertz 준영

7
Çok heyecan verici bir örnek değil, ama javascript yapabilirsiniz: alert ("Merhaba Dünya");
John Topley

Tercih ederim: "javascript: for (var i = 0; i> -1; i ++) uyarısı ('Tebrikler,' + i + 'kez!') İçin enter tuşuna bastınız!"); ". (Çalıştırmadan önce bu kodu okuyun ...). ^^
Arnis Lapsa

Wow faktörü için +1 ... oldukça muhteşem örnek :)
fretje

37

Rastgele bir sayı seçen bir uygulama yapabilirsiniz. Ve tahmin etmelisin. Eğer yanılıyorsanız şöyle diyor: daha yüksek veya daha düşük. Ve tahmin ettiyseniz, güzel bir mesaj.

Öğrenciler için oynamak harika.

Doğru hata kontrolü olmadan basit Python sürümü:

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!')

Erik bilgisayarın bu sayıyı tahmin etmesini önerir . Bu, 10 satırlık kod içinde de yapılabilir (şimdi doğru hata kontrolünün olmaması daha da ciddidir: aralık dışındaki geçerli sayılar sonsuz bir döngüye neden olur):

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)

4
Daha ilginç olan, kullanıcının rastgele sayıyı seçmesini ve ardından bilgisayarın tahmin etmesini sağlamaktır.
Erik Forbes

15
Şimdi bu iki programın bir soket üzerinden birbirini oynatmasını sağlayın.
Josh Lee

3
Bilgisayara doğrudan numara verilmezse daha iyi olur. Kullanıcıya "1 ile 100 arasında bir sayı seçmesini" söylemelisiniz. Sonra "Sanırım 50" çıktısını alın ve girdi ("daha yüksek", "daha düşük" veya "doğru") isteyin ve tahmininizi geliştirin.
Ponkadoodle

Bunu oğlumla (9) yaptım ve aynı zamanda algoritmik düşünceye girme avantajına da sahip, en kısa tahminlerde doğru sayıyı bulmak için en iyi strateji nedir?
mbesso

Bence raw_input istiyorum. Giriş eşittir eval(raw_input(prompt)). Girişe bakın .
Jeff Kaufman

26

Lisede bilgisayar dersine geri döndüğümde, kendim ve birkaç arkadaşım sınıfa Delphi ile nasıl programlanacağını öğretti. Sınıf çoğunlukla Pascal ile programlamaya odaklandı, bu yüzden Delphi bir sonraki iyi adımdı. Delphi ve RAD yeteneklerinin olaya dayalı doğasını gösterdik. Dersin sonunda sınıfa örnek bir uygulama gösterdik ve tekrar üretmelerini istedik. Uygulama "diye sordu Sarhoş musun? " İki düğme ile Evet ve Hayır . ... sanırım bir sonraki adımın ne olduğunu biliyorsunuz ... Hayır düğmesi farenin üzerindeki yerleri değiştirmedi ve tıklamak neredeyse imkansızdı.

Öğrenciler ve öğretmen iyi bir vuruş yaptı.

Program, düğmenin nereye taşınacağını hesaplamak için basit bir denklemle kullanıcı tarafından yazılmış birkaç satır gerektirdi. Diğer öğrencilerin hiçbirini çözmediğini sanmıyorum, ancak birkaçı yakındı.


7
Sadece eğlenceli değil, aynı zamanda bir iş arkadaşım bir zamanlar bazı yazılımlarda bunu yaptı, sadece bir mesaj kutusundaki "Tamam" düğmesiydi. Dahili olarak kullanılan bir uygulama olduğu için kaşlarını çatmadı. Bunu sadece mavi ayda bir kez yaptı. Elbette onu arayacaklardı ve eğer inanacak olsaydı bunun olduğunu görmesi gerektiğini söylerdi. Bu yüzden dolaşırdı ve elbette oradayken olmazdı ...
Jason D

Ben böyle bir şey hatırlıyorum .. ama flaş oldu .. ve soru "Eşcinsel misin?" .. ve bir havai fişek olay kümesi düğmesini tıklayın.
glasnt

2
Bu, insanlara sekme ve boşluk yoluyla gezinmeyi öğretmek için ilginç bir zaman olurdu.
davidahines

23

Bash forkbombunu ilk anladığımda, bunun gerçekten tatlı olduğunu düşündüm. Çok basit, ama yapabileceği şeyde düzgün:

:(){ :|:& };:

7
İşte oldukça iyi bir açıklama: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr

12
linux çocuklar için yeni: koşma, aksi takdirde tüm işinizi kaybedeceksiniz.
Behrooz

@Behrooz, dağıtımınıza bağlıdır, bazılarının yerleşik iplik / çatal sınırları vardır.
Razor Storm

SuSE üzerinde büyük bir patlama yapar, ancak çoğu debian tabanlı dağıtımda hiçbir şey yapmaz.
Behrooz

Bu, kullanıcı sınırlarının yanı sıra, disk önbelleklerinizin ne sıklıkta temizlendiğini, dosya sisteminizi ...
new123456

22

Bu hile ve hatta uzaktan basit değil, ama bir keresinde Allegro grafik kütüphanesini kullanarak 20 satır C ++ 'da bir shoot'em yazdım. Bir çizginin ne olduğuna dair gerçek bir kriter yok , ama biraz önceydi ve sadece eğlence için yapıldı. Hatta kaba ses efektleri vardı.

İşte böyle görünüyordu:

20 Satır http://img227.imageshack.us/img227/8770/20linesxx0.png

Ve burada (kod olmalıdır derleme):

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()

5
Bu kimseye nasıl bir şey öğretecek? İlgisiz bir kayda göre COOL! HA! Sevdim!
slezica

21

Bu gün ve yaşta JavaScript, notepad gibi bazı gerçekten temel araçları kullanarak nasıl programlayabileceğinizi göstermenin mükemmel bir yoludur.

jQuery efektleri, arkadaşlarını şaşırtmak isteyen herkes için harika bir başlangıç ​​noktasıdır!

Bu sayfada, sayfanın beyaz alanını tıklamanız yeterlidir.

<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>

1
Katılıyorum. Not defterini açabilir ve java komut dosyası ile kodlamaya başlayabilir ve ardından bir tarayıcı açabilirsiniz ve eminim öğrencileriniz etkilenecektir. Bunlar herkesin sahip olduğu araçlardır ve Jon'un örneği gibi yapılabilecek birçok farklı efekt ve şeyi arayabilirler.
Jeff Reddy

1
Birine bir kütüphane kullanarak oldukça basit bir dilin temelini öğretmenin iyi bir fikir olduğunu düşünmüyorum. Bunu jQuery kullanmadan kolayca yapabilirsiniz ve yeni başlayanlar için yapmanız gerekir. Kütüphaneler gerçek dilin yerini tutmaz.
Bazı Guy

Javascript durumunda, jQuery javascript'in yerini almaz, (çok değişken) domların yerini alır. Bu herkesin yanına çıkmak için harika bir şey.
Kzqai

20

Düşünebileceğiniz bir şey, çok fazla kodlamanın soyutlandığı Robocode gibi bir şeydir ve temel olarak bir robota ne yapacağını söylersiniz. Basit 10 satır işlevi, robotun çok şey yapmasını sağlayabilir ve çok görsel ve takip edilmesi kolay bir sonuca sahiptir.

Belki de Robocode'un kendisi göreve uygun değildir, ancak bu tür bir şey, yazılı kodu bilgisayardaki görsel eylemlerle ilişkilendirmenin iyi bir yoludur, ayrıca örnek vermeniz gerektiğinde izlemek eğlencelidir.

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);
 }
}

6
Robot kodunu bilmiyorum, ama Logo'yu kullandıktan sonra kodlamaya başladım. İleri, geri, sol, sağ, vb. Kullanarak bir ev çizebilmek. Büyük görevleri yerine getiren basit talimatların zihniyetine girmenizi sağlar.
Robin Günü

1
Evet, ilkokulda bilgisayar laboratuarında Logo öğrendim. Havalı olduğunu düşünmenin ötesinde daha fazla bilmek isteyen çocuklardan biriydim.
Travis

1
+1 RoboCode için! Robocode'u seviyorum ve en iyi algoritmaların kimin geleceğini görmek için aramızda yarışmalar yapardık
Andreas Grech

18

Bu yüzden bir gün yeteri kadar almaya karar verdim. Ben ediyorum piyano öğrenmek. Elton John gibi insanların klavyede bu kadar ustalığa sahip olduğunu görmek, yapmak istediğim şeyin bu olduğunu garanti etti.

Aslında piyano öğrenmek büyük bir hayal kırıklığıydı. Sekiz sınıf piyano dersini tamamladıktan sonra bile, piyano çalma zihinsel imajımın aktivitenin tadını çıkarmaya ilişkin orijinal vizyonumdan ne kadar farklı olduğundan hala etkilenmedim.

Ancak, zevk aldığım şey, müzik teorisinin üç temel ilkesi oldu. Müzik yapımını öğrendim. Sonunda yazılı müziği icra etme dünyasından kendi müziğimi yazmaya geçebildim. Daha sonra oynamak istediğimi oynamaya başladım.


Yeni programcıları, özellikle genç programcıları göz kamaştırmaya çalışmayın. "Ondan az basit kod satırı" kavramı, "Bana akıllıca bir şey göster" havasını ortaya çıkarıyor gibi görünüyor .

Yeni bir programcıya akıllıca bir şey gösterebilirsiniz. Daha sonra aynı programcıya bu "performans" ın nasıl kopyalanacağını öğretebilirsiniz. Ama bu onları programlamaya bağlayan şey değil. Onlara ilkeleri öğretin ve kendi akıllı on satır kodlarını sentezlemelerine izin verin.

Yeni bir programcıya aşağıdaki Python kodunu gösterirdim:

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)

Ben ata gerek yok olduğunu fark lineetmek edited_line. Ancak, bu sadece işleri açık tutmak ve orijinal belgeyi düzenlemediğimi göstermek için.

Ondan az satırda bir belgeyi ayrıntılandırdım. Tabii ki, yeni programcıya mevcut tüm dize yöntemlerini gösterdiğinizden emin olun . Daha da önemlisi, yapabileceğim üç temel ilginç şey gösterdim: değişken atama, bir döngü, dosya GÇ ve standart kütüphanenin kullanımı.

Bu kodun göz kamaştırmayacağını kabul edeceğinizi düşünüyorum. Aslında, biraz sıkıcı. Hayır - aslında çok sıkıcı. Ancak bu kodu yeni bir programcıya gösterin ve bu programcının bu komut dosyasının her bölümünü gün olmasa da hafta içinde daha ilginç bir şeye yeniden yerleştirip geçiremeyeceğini görün. Elbette, sizin için tatsız olacaktır (belki de basit bir HTML ayrıştırıcısı yapmak için bu komut dosyasını kullanarak), ancak diğer her şey zaman ve deneyim gerektirir.


17

Diğer yorumcuların çoğu gibi, matematik problemlerini çözmek için kod yazmaya başladım (veya tasarlayacağım gerçekten korkunç oyunlar için grafikler oluşturmaya başladım - Indiana Jones ve Zombies gibi şeyler).

Beni gerçekten başlatan şey (hem matematikte hem de programlamada) metin tabanlı, kendi macera tarzı oyunlarınızı seçin ... daha grafik tabanlı oyunlara. Geometriye girene kadar grafik kağıdı renklendirmeye ve piksel çizmeye başladım ... ve eğrileri ve çizgileri, kutuları vb. Çizmek için denklemlerin nasıl kullanıldığını keşfettim.

Demek istediğim, gerçekten tipik bir programın şuna benzediği işleme ( http://processing.org/ ) gibi bir şeye girebilirdim :

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);
}

Bana göre bu, geleceğin "Logosu" dur.

Birisinin hızlı bir şekilde kod çizmesini ve değiştirmesini ve işlerin nasıl kırıldığını ve ne tuhaf "kazaların" yaratılabileceğini görmesini kolaylaştıran kolay "merhaba dünya" örnekleri vardır ... daha gelişmiş etkileşim ve fraktal oluşturma yolunda ...


+1 Bence işleme, yeni başlayanların öğrenmesi gereken en önemli konu olan algoritmik düşünceyi öğretmenin harika bir yoludur.
Nils

15

AutoIt ile yazılmış , geleneksel bir uygulama ile programlama arasındaki çizgiyi bulanıklaştıran bir komut dosyası kullanabilirsiniz .

Örneğin, not defterini açan ve kendi bilgisayarlarını bir mesaj kutusu aracılığıyla onlara hakaret eden ve ardından eylemlerinin izini bırakmayan bir komut dosyası:

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")

++ Bir ders planına nereden uyacağından emin değilim, ama sevimli.
Mike Dunlavey

13

Döngüleri ilk kez kodlamaya başladığımda her zaman beni etkilediğini hatırlıyorum. 5 - 10 satır (veya daha az) kod yazarsınız ve yüzlerce (veya belirttiğiniz çok sayıda) satır yazdırılır. (Önce PHP ve Java'da öğrendim).

for( int i = 0; i < 200; i++ )
{
   System.out.println( i );
}

13

Bence bir öğrencinin başlaması için iyi bir yer Greasemonkey olabilir . Userscripts.org'da, bazıları çok küçük olan çok iyi bir okuma malzemesi olan binlerce örnek komut dosyası vardır. Greasemonkey komut dosyaları, öğrencilerin manipüle etmedikleri takdirde kullanmaya zaten aşina olacakları web sayfalarını etkiler. Greasemonkey, test sırasında komut dosyalarını düzenlemek ve etkinleştirmek / devre dışı bırakmak için çok kolay bir yol sunar.

Örnek olarak, "Google İki Sütun" komut dosyası şöyledir:

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'; }

10

Bu, bir slot makinesinin eğirme eylemini simüle eden çok temel bir metin tabanlı c # programıdır. Farklı kazanma veya nakit ödeme olasılıkları içermez, ancak bu öğrenciler için iyi bir egzersiz olabilir.

Üzgünüm 10 satırdan fazla.

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" );

9

İle Tcl (başka bir 8 satırları alacaktı ama hiçbir açık,) 12 hakkında kod satırlarında bir tasarruf düğme ile basit bir metin editörü var. Tüm standart platformlarda çalışır:

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
    }
}

Hedefin 10 satır olduğunu fark ediyorum, bu yüzden 10 veya daha az satıra yapışmak istiyorsanız, yükleme veya kaydetme olmayan basit bir metin editörü sadece iki satırdır. Bu çok perişan değil.

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

İstediğiniz platformda yukarıdaki kod bloklarından birini "dilek dosya adı " ile yürütün . Dilek çoğu * nix ve mac ile birlikte gelir, ancak pencereler için manuel olarak yüklemeniz gerekir.

Bir adım daha ileri gitmek için, bu iki satır komut dosyası da pitonda yazılabilir, ancak yine de 10 satır hedefi altında olan sekiz satır gerekir:

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()

9

Bir yer işaretine ne dersiniz? Onlara her gün kullandıkları bir şeyi (İnternet) herhangi bir geliştirme aracına ihtiyaç duymadan nasıl değiştireceklerini gösterecekti.


Bu öneriyi istiyorum ama bir örnek ve bundan ne öğretilebilirse daha iyi olur. Soruda verilen örnek gibi: [kod] javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ code] işlem sırasını gösterir.
tylermac

8

Donanımı karşılayabiliyorsanız, bir Arduino kartı + işlemesi kullanmak oldukça güzel şeyler üretecektir, ancak programlama ile hiç ilgilenmeyecek insanlar için biraz gelişmiş olabilir.


8

Bu konuyu yakın zamanda "Şimdiye kadar yazdığım en kısa, en faydalı program" başlıklı makalede yazdım.

Özet: 1996'da hala her gün kullandığım 3 satırlık bir VB6 uygulaması yazdım. Exe "Gönder" klasörüne bırakıldıktan sonra. Explorer'daki bir dosyayı sağ tıklamanız ve o dosyanın tam yolunu panoya göndermenizi sağlar.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  

Neden Clipboard.Clear? Metin olmayan veriler (örn. Görüntü verileri) bile panodaki tüm içeriği kaldırır . Bu genellikle istediğiniz şey değildir .
Konrad Rudolph

O zaman belki de en kısa programın mevcut boyutunun yarısı olması gerekir ...
JohnFx

Gerçekten temiz. Uzun yollar
yazmaktan ve

"Modern" Windows sürümlerinde AFAIK dosyayı kopyalarken tam olarak ne yapar (Ctrl + C) ... Sadece dosya adını kopyalamak. Birisi bunu deneyebilir mi (pencerem olmadığı için)?
opatut

Windows 7 var ve bunu yapmıyor.
JohnFx

7

Mandelbrot setinden bahsetmeniz ilginçtir, çünkü GW-BASIC ile fraktallar oluşturmak lisede (1993 civarında) programlama sevgimi tetikleyen şeydir. Fraktalları öğrenmeye başlamadan önce, sıkıcı standart sapma uygulamaları yazdık ve hala gazeteciliğe girmeyi planladım.

Ama bu uzun, yazması zor BASIC programının "fraktal arazi" ürettiğini gördüğümde, bağlandım ve asla geriye bakmadım. Matematik, fen bilimleri, bilgisayarlar ve öğrenme şeklim hakkındaki düşüncelerimi değiştirdi.

Umarım öğrencilerinizde aynı etkiye sahip programı bulursunuz.


Bu bir dönem projesi için harika. Keşke öğretirken bunu düşünmüş olsaydım.
Mike Dunlavey


6

Eminim 10'dan fazla kod satırına dönüşür, ancak düğmelere basmanın arka plan rengini değiştirmek veya metnin boyutunu değiştirmek gibi şeyleri yaptığı form tabanlı bir uygulama düşündünüz mü? Bu onlara interaktif programların nasıl çalıştığını gösterecektir. Ayrıca, programcı olarak bilgisayarın (programın) ne yaptığını tam olarak kontrol ettiklerini de gösterecektir.

Umarım onları değiştirebilecekleri başka şeyler için önerilerde bulunmaya ve sonra yapmak istedikleri diğer şeylere yönlendirmeye yönlendirirdi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.