Apa hal paling keren yang bisa Anda lakukan dalam <10 baris kode sederhana? Bantu saya menginspirasi pemula! [Tutup]

406

Saya mencari hal paling keren yang dapat Anda lakukan dalam beberapa baris kode sederhana. Saya yakin Anda dapat menulis satu set Mandelbrot di Haskell dalam 15 baris tetapi sulit untuk diikuti.

Tujuan saya adalah untuk menginspirasi siswa bahwa pemrograman itu keren .

Kami tahu bahwa pemrograman itu keren karena Anda dapat membuat apa pun yang Anda bayangkan - ini adalah outlet kreatif terbaik. Saya ingin mengilhami para pemula ini dan menyelesaikannya sebanyak mungkin gundukan pembelajaran awal yang saya bisa.

Sekarang, alasan saya egois. Saya mengajar kursus Intro to Computing kepada sekelompok 60 jurusan setengah-setengah, setengah bisnis; semua mahasiswa baru. Mereka adalah siswa yang berasal dari sekolah menengah bawah. Dari pengalaman masa lalu saya, kelompok ini umumnya terpecah sebagai berikut: beberapa bintang rock , beberapa yang berusaha sangat keras dan semacam mendapatkannya, beberapa yang berusaha sangat keras dan nyaris tidak mendapatkannya, dan beberapa yang tidak peduli. Saya ingin menjangkau sebanyak mungkin kelompok ini seefektif mungkin. Berikut adalah contoh bagaimana saya akan menggunakan program komputer untuk mengajar:

Berikut ini contoh yang saya cari: skrip VBS 1 baris untuk membuat komputer Anda berbicara dengan Anda:

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

Saya bisa menggunakan ini untuk menunjukkan urutan operasi. Saya akan menunjukkan kodenya, membiarkan mereka bermain dengannya, kemudian menjelaskan bahwa ada banyak hal yang terjadi di baris itu, tetapi komputer dapat memahaminya, karena ia tahu aturannya. Lalu saya akan menunjukkan kepada mereka sesuatu seperti ini:

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

Dan Anda dapat melihat bahwa pertama yang perlu saya lakukan adalah (5 * 5). Lalu saya bisa mengalikan untuk 4. Dan sekarang saya telah membuat Object. Membagi dengan 10 sama dengan memanggil Bicara - Saya tidak bisa Bicara sebelum saya memiliki objek, dan saya tidak bisa membaginya sebelum saya memiliki 100. Kemudian di sisi lain saya pertama kali membuat InputBox dengan beberapa instruksi untuk cara menampilkannya . Ketika saya menekan enter pada kotak input, ia mengevaluasi atau "mengembalikan" apa pun yang saya masukkan. (Petunjuk: 'oooooo' membuat suara lucu) Jadi ketika saya mengatakan Bicara, sisi kanan adalah apa yang harus Bicara. Dan saya mendapatkannya dari InputBox.

Jadi, ketika Anda melakukan beberapa hal dalam satu jalur, seperti:

x = 14 + y;

Anda perlu menyadari urutan hal-hal. Pertama kita tambahkan 14 dan y. Lalu kami memasukkan hasilnya (apa yang dievaluasi, atau dikembalikan) ke x.

Itulah tujuan saya, untuk memiliki banyak contoh keren ini untuk menunjukkan dan mengajar kelas sambil bersenang-senang. Saya mencoba contoh ini pada teman sekamar saya dan sementara saya mungkin tidak menggunakan ini sebagai pelajaran pertama, dia menyukainya dan belajar sesuatu.

Beberapa program Mathematica keren yang membuat grafik atau bentuk yang indah yang mudah dimengerti adalah ide yang bagus dan saya akan melihatnya. Berikut adalah beberapa contoh script action yang rumit tapi itu agak terlalu maju dan saya tidak bisa mengajar flash. Apa ide lain yang kamu punya?

George Stocker
sumber
102
Saya pikir pertanyaan tentang bagaimana cara mengajar pemrograman sangat bagus dan non-sepele. Semoga berhasil dengan apa yang Anda coba lakukan.
Mike Dunlavey
6
"Tujuan saya adalah untuk menginspirasi siswa bahwa pemrograman itu keren." Saya tidak berpikir Anda bisa mengatakan pemrograman orang keren. Entah mereka menyukainya, atau tidak.
Rik
2
Skrip VBS satu baris Anda tidak berfungsi di Mac saya! :-P Pertanyaan yang bagus.
John Topley
1
Saya selalu suka hal-hal semacam ini, tetapi siapa yang Anda coba untuk mengesankan, saya paking Sierpinski yang akan melakukan pekerjaan yang bagus. Untuk orang IT, mungkin ada sesuatu yang membuat file, bagi sebagian orang membuat pembicaraan komputer akan mengesankan, dan sebagainya. Jadi apa yang menjadi target audiens, maka Anda menentukan apa yang keren.
Oakcool
5
83 orang memuji komentar tentang bagaimana pertanyaan ini "sangat baik dan non-sepele" ... ditutup sebagai "tidak konstruktif" oleh 5 orang yang tampaknya tidak setuju. Bukankah kekuatan besar?
rg88

Jawaban:

78

Saya mendapat respons yang bagus dari anak-anak saya dengan skrip VB cepat untuk memanipulasi karakter Microsoft Agent. Bagi mereka yang tidak terbiasa dengan MS Agent, ini adalah serangkaian karakter animasi layar yang dapat dimanipulasi melalui antarmuka COM. Anda dapat mengunduh kode dan karakter di halaman unduhan Microsoft Agent .

Beberapa baris berikut akan membuat karakter Merlin muncul di layar, terbang berkeliling, mengetuk layar untuk mendapatkan perhatian Anda, dan menyapa.

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"

Ada banyak sekali perintah lain yang dapat Anda gunakan. Memeriksahttp://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx untuk informasi lebih lanjut.

EDIT 2011-09-02 Saya baru-baru ini menemukan bahwa Microsoft Agent tidak diinstal secara asli pada Windows 7. Namun ditawarkan sebagai unduhan terpisah di sini . Saya belum menguji ini sehingga tidak dapat memverifikasi apakah ini beroperasi.

Bob Mc
sumber
Itu luar biasa. Ini layak mendapatkan lebih banyak upvotes.
Tom Ritter
Terima kasih atas pengakuan Tom. Sucks bahwa saya tidak akan mendapatkan poin rep bahkan jika itu mulai mendapatkan upvotes sekalipun. :-P
Bob Mc
32
Dengan cara ini Anda dapat melihat penjepit kertas sepanjang waktu : D
Pedery
8
@ Bob BASIC adalah bahasa pemula. VB bukan BASIC. VB adalah pisau tentara swiss yang dibuat MS agar sesuai dengan kebutuhan saat itu. Saat ini, ada alat yang jauh lebih baik (lebih khusus) untuk menggantikannya. VB bukan bahasa yang buruk, hanya memiliki banyak kelebihan bagasi. Jika saya memberikan satu alasan yang sama sekali tidak bias mengapa tidak menggunakannya, itu karena MS secara perlahan menjatuhkan dukungan untuk VB. Itu bahasa yang sekarat. Tunggu saja sampai skrip Office selesai dengan JavaScript (yang direncanakan dalam waktu dekat) maka penurunan VB akan menjadi hal yang pasti.
Evan Plaice
3
@Van - Terima kasih atas jawaban yang adil, daripada beberapa screed agama. Bagus sekali. Belum pernah mendengar tentang langkah Javascript Office. Akan menyelidiki.
Bob Mc
339

Masukkan kode ini di bilah alamat Anda (di browser Anda) dan tekan enter. Kemudian Anda dapat mengedit semua konten halaman web!

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

Itu adalah "one-liner" paling keren yang saya tahu =)

Espen Herseth Halvorsen
sumber
95
"One-liner" keliru. Itu 3 baris, sungguh. Kode apa pun bisa menjadi satu baris jika Anda menginginkannya.
DisgruntledGoat
5
Ini terlihat sangat rapi, tetapi apakah ada cara untuk mendapatkan halaman setelah dimodifikasi?
Sylverdrag
51
Saya sangat menyukainya, saya menang untuk Anda 999999999 kali !! img707.imageshack.us/img707/4843/jshack.png
JRL
4
Ini tidak lagi benar di Firefox karena javascript: telah dinonaktifkan. Memalukan.
2
@ DisgruntledGoat, javascript:dan void 0merupakan boilerplate: setara dengan int main() {dan return 0; }dalam C. Dan dua baris lainnya hanyalah API browser yang berbeda yang melakukan hal yang sama: Yang pertama adalah IE API, yang kedua adalah NetScape API. Penggunaan HTML5 contentEditable, jadi kecuali Anda peduli untuk mendukung Firefox 1.5 atau apalah, jumlah kode sebenarnya adalah:document.body.contentEditable='true';
Zarel
201

Ketika saya pertama kali menulis ini.

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

Itu mengejutkan orang! Komputer mengingat nama mereka!

EDIT: Hanya untuk menambah ini. Jika Anda dapat meyakinkan programmer baru ini adalah hal paling keren yang bisa mereka lakukan, mereka akan menjadi programmer yang baik. Saat ini, Anda dapat melakukan hampir semua hal yang Anda inginkan dengan satu baris kode untuk menjalankan pustaka yang ditulis orang lain. Saya pribadi sama sekali tidak puas dengan melakukan itu dan melihat sedikit manfaat dalam mengajarkannya.

Robin Day
sumber
15
akan lebih baik dengan yang berikut: 40 GOTO 30
pemboros
8
+1 untuk menampilkan nama pengguna, orang selalu suka melihat nama mereka sendiri ditampilkan. @ saua, bagaimana itu bukan loop cetak tanpa batas? Ini kembali ke baris 30, bukan baris 20.
z -
13
Harus kebagian 10 pasti jadi orang lain bisa memasukkan nama mereka ...
Omar Kooheji
17
Anda lupa 35 PRINT CHR $ (7)
Adam Jaskiewicz
6
ini adalah bagaimana saya belajar pemrograman juga. Itu jawaban imo terbaik. +1 untuk menerima yang satu ini
Klik Upvote
180

PHP - paking Sierpinski alias Triforce

OK, ini 15 baris kode tetapi hasilnya luar biasa! Hal-hal semacam itulah yang membuatku panik ketika aku masih kecil. Ini dari manual 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);

paking sierpinski

markus
sumber
25
Sebagai catatan, itu adalah paking Sierpinski.
kekacauan
6
Itu luar biasa, tapi saya pikir itu harusnya ada di tengah-tengah saja, karena itu dibangun di atas sejumlah konsep, seperti loop dan array.
Mike Dunlavey
4
@Masi: ide umumnya adalah memiliki tiga titik tetap yang merupakan sudut segitiga, dan titik "saat ini" yang terus Anda perbarui. Untuk membuat gerakan, pilih salah satu sudut secara acak dan pindahkan titik saat ini setengah jalan menuju sudut itu. Warnai di titik saat ini. Kemudian lakukan langkah lain dengan cara yang sama, dan kemudian beberapa ribu kali lagi dan polanya akan muncul. Kemudian cobalah dengan jumlah sudut yang berbeda, atau ubah fraksi yang digunakan titik saat ini melompat ke sudut, untuk melihat bagaimana itu memengaruhi pola.
Daniel Earwicker
18
Sebagai catatan, itu bukan gasket Sierpinski ... Ini sebenarnya adalah Triforce. en.wikipedia.org/wiki/The_Legend_of_Zelda
jason
2
Kode ini tampak aneh bagi saya karena saya biasanya melihat ini dilakukan dengan rekursi (juga dengan sangat sedikit baris kode). Bahkan, fraktal adalah pengantar yang baik untuk rekursi di kelas ilmu komputer. Tetapi bagi saya sepertinya kode ini akan sangat tidak efisien, mengecat & mengecat ulang banyak piksel karena pendekatan acaknya.
Steve Wortham
105

Microsoft memiliki Small Basic , sebuah IDE untuk "anak-anak".

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

Ini dirancang khusus untuk menunjukkan betapa kerennya pemrograman.

Bob Fanger
sumber
80
Ini sebenarnya menyebalkan, karena panggilan perpustakaan ini tampak seperti sulap. Anda mengaturnya untuk menjadi kiddies skrip VB. Saya khawatir mereka tidak akan pernah mengintai ke daerah "sihir gelap" itu, dan tetap berada di area pipa "aman". ... Oh, inilah cara membuat peramban internet dalam satu baris! MSIEControl (.. blabla apapun ...). Show ()
hasen
88
Saya tidak berpikir anak-anak idiot. Jika Anda membuat mereka bersemangat tentang kemungkinan pemrograman, mereka akan mencari tahu bagaimana melakukan hal-hal yang lebih maju sendiri. Jika tidak ada yang lain, anak laki-laki yang terinfeksi testosteron akan mencoba mempelajari hal-hal yang paling misterius dan gelap sebelum Anda tahu apa yang terjadi.
Tim Lin
28
@hansen j, itu tidak adil, semua orang harus memulai suatu tempat.
John Farrell
30
Ini bukan gelar CS untuk anak-anak ini adalah mainan pemrograman. Apa pun gateway itu untuk membuat anak-anak melihat sisi pemrograman yang menyenangkan itu tidak perlu menjadi ASM.
Copas
29
Mengetahui anak-anak yang saya coba ajarkan, itu akan menjadi sekitar sepuluh detik sebelum mereka mencoba pic = Flickr.GetRandomPicture ("payudara")
Iain Galloway
83

Saya cenderung berpikir bahwa orang-orang terkesan dengan hal-hal yang dapat mereka hubungkan atau relevan dengan kehidupan mereka. Saya akan mencoba dan mendasarkan 10 baris kode saya di sekitar sesuatu yang mereka tahu dan mengerti. Ambil, misalnya, Twitter dan API-nya. Mengapa tidak menggunakan API ini untuk membuat sesuatu yang keren. 10 baris kode berikut akan mengembalikan "timeline publik" dari Twitter dan menampilkannya di aplikasi konsol ...

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

Contoh kode saya mungkin bukan yang terbaik untuk siswa Anda. Ini ditulis dalam C # dan menggunakan .NET 3.5. Jadi, jika Anda akan mengajari mereka PHP, Java, atau C ++ ini tidak akan berguna. Namun, maksud saya adalah dengan mengaitkan 10 baris kode Anda dengan sesuatu yang "keren, menarik, dan relevan bagi siswa, sampel Anda juga menjadi keren, menarik, dan relevan.

Semoga berhasil!

[Ya, saya tahu bahwa saya melewatkan beberapa baris menggunakan pernyataan dan metode Utama, tapi saya menduga 10 baris tidak perlu benar-benar 10 baris]

Martin Peck
sumber
Ini sangat rapi! Saya tidak terbiasa dengan objek SyndicationFeed - terima kasih untuk kodenya!
Tad Donaghe
Target audiens adalah non-geeks, ergo, mereka tidak peduli tentang tweeter?
peufeu
80

Ini adalah server telnet Python yang akan menanyakan nama pengguna dan menyapa mereka. Ini terlihat keren karena Anda berkomunikasi dengan program Anda dari komputer yang berbeda melalui jaringan.

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()
pengguna17918
sumber
68

Saya pikir sulit menjadi pendidik komputer akhir-akhir ini. Saya. Kami menghadapi pertempuran menanjak yang semakin curam. Siswa kami adalah pengguna yang luar biasa canggih dan dibutuhkan banyak hal untuk mengesankan mereka. Mereka memiliki begitu banyak alat yang dapat diakses oleh mereka yang melakukan hal-hal menakjubkan.

Kalkulator sederhana dalam 10 baris kode? Mengapa? Saya punya TI-86 untuk itu.

Script yang menerapkan efek khusus pada gambar? Untuk itulah Photoshop digunakan. Dan Photoshop menghancurkan semua yang dapat Anda lakukan dalam 10 baris.

Bagaimana dengan menyalin CD dan mengonversi file ke MP3? Uhh, saya sudah punya 50.000 lagu yang saya dapat dari BitTorrent. Mereka sudah dalam format MP3. Saya memutarnya di iPhone saya. Lagi pula, siapa yang membeli CD?

Untuk memperkenalkan pengguna yang cerdas ke pemrograman, Anda harus menemukan sesuatu yang:

a) berlaku untuk sesuatu yang mereka anggap menarik dan keren, dan b) melakukan sesuatu yang belum bisa mereka lakukan.

Anggap siswa Anda sudah memiliki akses ke perangkat lunak paling mahal. Banyak dari mereka memiliki versi lengkap Adobe CS5.5 (harga eceran: $ 2.600; harga aktual: gratis) dan dapat dengan mudah mendapatkan aplikasi apa pun yang biasanya akan merusak anggaran departemen Anda.

Tetapi sebagian besar dari mereka tidak tahu bagaimana "barang-barang komputer" ini benar-benar berfungsi.

Mereka adalah kelompok yang sangat kreatif: mereka suka menciptakan sesuatu. Mereka hanya ingin dapat melakukan atau membuat sesuatu yang tidak bisa dilakukan teman mereka. Mereka ingin sesuatu untuk dibanggakan.

Berikut adalah beberapa hal yang saya temukan beresonansi dengan siswa saya:

  • HTML dan CSS. Dari yang mereka pelajari bagaimana tema MySpace bekerja dan dapat menyesuaikannya.
  • Mashup. Mereka semua pernah melihatnya, tetapi tidak tahu cara membuatnya. Lihat Yahoo! Pipa . Ada banyak momen yang dapat diajar, seperti RSS, XML, pemfilteran teks, pemetaan, dan visualisasi. Widget mashup yang lengkap dapat disematkan di halaman web.
  • Karya seni Lihatlah Seni Bebas Konteks . Rekursi dan pengacakan adalah kunci untuk membuat gambar yang indah.
  • Bercerita. Dengan lingkungan pemrograman 3D yang mudah digunakan seperti Alice , mudah untuk membuat cerita yang menarik dan berkualitas tinggi dengan menggunakan tidak lebih dari drag-and-drop.

Tidak ada yang melibatkan pemrograman dalam pengertian tradisional. Tapi mereka memanfaatkan perpustakaan yang kuat. Saya menganggap mereka sebagai jenis pemrograman yang berbeda.

Barry Brown
sumber
11
+1 Saya suka bagaimana Anda menggambarkan anak-anak hari ini yang memiliki 50.000 lagu dari bittorrent dan Adobe CS4 tanpa bayaran, itu tentu saja kenyataan
thomasrutter
Tulis algoritma pencarian biner sederhana dengan python. Robek buku telepon menjadi dua kali beberapa kali untuk menggambarkan cara kerjanya. Ini adalah aspek pemrograman sederhana namun kuat yang sering diabaikan oleh pemrogram berpengalaman dan pemula melihat @ dengan kagum. kebanyakan orang tidak menyadari bahwa monitor mereka menyegarkan setidaknya setengah dari piksel pada monitor mereka 60-120 / detik. melakukan ras kecepatan manusia vs komputer. hal menyenangkan. lihat ini untuk lebih banyak ide: academicearth.org/courses/introduction-to-computer-science-i : dan, apa pun yang Anda lakukan ... jangan mengajari mereka ANSI C sebagai bahasa pertama mereka. Saya pernah ke sana, itu mengisap.
Evan Plaice
3
Jika Anda menyesuaikan situs, mengapa tidak menggunakan Greasemonkey?
new123456
Hanya beberapa pemikiran tentang contoh Anda: kembali photoshop, Anda hanya perlu menunjukkan yang jelas - dengan photoshop Anda dapat mengubah 1 gambar, dengan scripting Anda dapat mengubah ratusan ribu. Dan ulang MP3, Anda benar tidak ada yang mengunduh CD lagi, tetapi Anda dapat (jika bukan karena legalitas) menjelaskan bahwa mereka dapat menulis sebuah program untuk secara otomatis mengunduh musik terbaru langsung ke ipod mereka.
Jeff Welling
@JeffWelling dengan baik dengan Photoshop Anda dapat membuat Batch dan Tindakan untuk melakukan perubahan pada sejumlah file juga. Sungguh menakjubkan betapa banyak yang diterima begitu saja hari ini dengan komputer.
John
63

Saya telah menemukan favorit besar (dalam GWBASIC) adalah:

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

Saya telah menemukan bahwa para siswa pemula memiliki beberapa konsepsi yang perlu diperbaiki.

  • Komputer tidak membaca pikiran Anda.
  • Komputer hanya melakukan satu hal pada satu waktu, bahkan jika mereka melakukannya dengan sangat cepat, mereka sepertinya melakukannya sekaligus.
  • Komputer hanyalah mesin bodoh dan hanya melakukan apa yang diperintahkan.
  • Komputer hanya mengenali hal-hal tertentu dan ini seperti balok penyusun.
  • Konsep kuncinya adalah bahwa variabel adalah sesuatu yang mengandung nilai dan namanya berbeda dari nilai itu.
  • Perbedaan antara waktu di mana Anda mengedit program dan waktu di mana ia berjalan.

Semoga beruntung dengan kelas Anda. Saya yakin Anda akan melakukannya dengan baik.

PS Saya yakin Anda mengerti bahwa, bersama dengan materi dan keterampilan, Anda juga mengajarkan sikap, dan itu sama pentingnya.

Mike Dunlavey
sumber
Komputer zaman modern melakukan lebih dari satu hal sekaligus.
dreamlax
Tetapi, apakah kode Anda melakukan lebih dari satu hal sekaligus?
JeffO
5
@dreamlax: Anda benar, tentu saja, tapi jangan pisahkan rambut. Kita berbicara tentang memperkenalkan komputer kepada anak-anak dan memberi mereka blok pembangun mental dasar. Paralelisme dapat terjadi kemudian.
Mike Dunlavey
1
@ Ben S: Apakah Anda pernah menghilangkan ruang di depan baris 10? Saya telah memasukkan itu karena tampaknya formatter SO tampaknya un-penyok baris pertama dengan 1 spasi. Saya ingin tahu apakah ada cara yang lebih baik untuk membuat kode berbaris?
Mike Dunlavey
2
@foljs: Astaga! Betulkah? :-) dreamlax membuat poin yang sama. Masalahnya adalah, ketika Anda bekerja dengan orang-orang yang tidak tahu apa-apa tentang komputer, tampaknya bagi mereka seolah-olah semuanya terjadi sekaligus, jadi kita harus mengatasinya, tanpa membelah rambut. Jadi konsep yang sangat mendasar adalah "Pertama, A, lalu B, dan seterusnya."
Mike Dunlavey
62

Kode-C ini mungkin dikaburkan, tetapi saya merasa sangat kuat

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

Dan inilah hasilnya ... Hanya dalam 3 baris ... Semacam 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
ThibThib
sumber
5
Bagus! Sayang sekali tidak ada tempat di sana yang benar-benar mengatakan "Hello World!"
Ponkadoodle
Ini cantik! Mandelbrot model: D
Aniket
45

Bagaimana dengan menunjukkan bahwa Anda dapat mengambil browser web apa saja dan memasukkan JavaScript ke bilah alamat dan mendapatkan kode untuk dieksekusi?

EDIT: Buka halaman dengan banyak gambar dan coba ini di bilah alamat:

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)
Yuval
sumber
2
ok, tapi Anda harus memberikan contoh konkret u tahu ..
Hasen
1
@ John: Tolong, berikan contoh nyata. Saya hanya menggunakan JS di server saya dengan mengekspor file JS. Saya tidak pernah memasukkan kode ke bilah alamat saya.
Léo Léopold Hertz 준영
7
Yah bukan contoh yang sangat menarik, tetapi Anda bisa melakukan javascript: lansiran ("Hello World");
John Topley
Saya lebih suka: "javascript: untuk peringatan (var i = 0; i> -1; i ++) ('Selamat, Anda telah menekan enter untuk' + i + 'kali!');". (Baca kode itu sebelum menjalankan ...). ^^
Arnis Lapsa
+1 untuk faktor-faktor ... contoh yang sangat spektakuler :)
fretje
37

Anda dapat membuat aplikasi yang memilih nomor acak. Dan Anda harus menebaknya. Jika Anda salah dikatakan: lebih tinggi atau lebih rendah. Dan jika Anda menebaknya, pesan yang bagus.

Sangat menyenangkan bermain untuk para siswa.

Versi Python sederhana tanpa pengecekan error yang tepat:

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 menyarankan agar komputer menebak nomornya. Ini dapat dilakukan dalam 10 baris kode juga (meskipun sekarang kurangnya pemeriksaan kesalahan yang tepat bahkan lebih serius: angka yang valid di luar rentang menyebabkan loop tak terbatas):

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)
Stephan202
sumber
4
Yang lebih menarik adalah meminta pengguna memilih nomor acak, lalu meminta komputer menebaknya.
Erik Forbes
15
Sekarang buat dua program ini saling bermain melalui soket.
Josh Lee
3
Akan lebih baik jika komputer tidak diberi nomor secara langsung. Anda harus memberi tahu pengguna untuk "memilih angka antara 1 dan 100". Lalu output "Saya kira 50", dan minta input ("lebih tinggi", "lebih rendah", atau "benar") dan sempurnakan tebakan Anda.
Ponkadoodle
Saya telah melakukan ini dengan anak saya (9) dan juga memiliki manfaat memasuki pemikiran algoritmik, apa strategi terbaik untuk menemukan angka yang benar dalam jumlah tebakan terpendek.
mbesso
Saya pikir Anda ingin raw_input. Input sama dengan eval(raw_input(prompt)). Lihat input .
Jeff Kaufman
26

Kembali ke kelas komputer di sekolah menengah, saya dan beberapa teman mengajar di kelas cara pemrograman dengan Delphi. Kelas sebagian besar berfokus pada pemrograman dengan Pascal, jadi Delphi adalah langkah selanjutnya yang baik. Kami mendemonstrasikan sifat event Delphi dan kapabilitas RAD-nya. Di akhir pelajaran, kami menunjukkan kepada kelas sebuah contoh aplikasi dan meminta mereka mereproduksinya. Aplikasi bertanya " Apakah Anda mabuk? " Dengan dua tombol Ya dan Tidak . ... Saya pikir Anda tahu apa yang akan terjadi selanjutnya ... tombol Tidak mengubah lokasi pada mouse dan hampir mustahil untuk mengklik.

Para siswa dan guru mendapat tendangan yang bagus.

Program ini hanya membutuhkan beberapa baris kode yang ditulis pengguna dengan persamaan sederhana untuk menghitung di mana harus memindahkan tombol. Saya tidak berpikir ada siswa lain yang mengetahuinya, tetapi ada beberapa yang dekat.

Ryan Anderson
sumber
7
Bukan hanya menghibur, tetapi rekan kerja saya pernah melakukan itu di beberapa perangkat lunak, hanya itu adalah tombol "OK" pada kotak pesan. Itu adalah aplikasi yang digunakan secara internal sehingga tidak disukai. Ini hanya dilakukan sekali dalam bulan biru. Tentu saja mereka akan memanggilnya dan dia akan mengatakan dia perlu melihat itu terjadi jika dia akan mempercayainya. Jadi dia berkeliaran dan tentu saja itu tidak akan terjadi ketika dia ada di sana ...
Jason D
Saya ingat sesuatu seperti ini .. tapi itu dalam sekejap .. dan pertanyaannya adalah "Apakah Anda seorang gay?" .. dan tombol yang mengklik set acara kembang api.
glasnt
2
Itu akan menjadi waktu yang menarik untuk mengajar orang bernavigasi melalui tab dan ruang.
davidahines
23

Ketika saya pertama kali menemukan garpu bash, saya pikir itu benar-benar manis. Sangat sederhana, namun rapi dalam hal apa yang dapat dilakukannya:

:(){ :|:& };:
hodgesmr
sumber
7
Berikut ini penjelasan yang cukup bagus: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr
12
untuk orang baru ke linux: jangan lari, kalau tidak Anda akan kehilangan semua pekerjaan Anda.
Behrooz
@Behrooz, tergantung pada distro Anda, beberapa memiliki batas thread / fork yang acak.
Razor Storm
Itu membuat ledakan besar pada SuSE, tetapi tidak menghasilkan apa-apa di sebagian besar distro berbasis debian.
Behrooz
Itu, dan juga batasan pengguna, seberapa sering cache disk Anda dimatikan, sistem file Anda ...
new123456
22

Ini curang, dan bahkan tidak sederhana, tapi saya pernah menulis shoot'em di 20 baris C ++, menggunakan perpustakaan grafis Allegro. Tidak ada kriteria nyata untuk apa garis itu, tetapi itu sedikit lalu, dan itu dibuat murni untuk bersenang-senang. Bahkan memiliki efek suara kasar.

Begini tampilannya:

20 Garis http://img227.imageshack.us/img227/8770/20linesxx0.png

Dan inilah kodenya ( harus dikompilasi):

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()
Kronikarz
sumber
5
Bagaimana ini bisa mengajarkan sesuatu kepada siapa pun? Pada nada yang tidak berhubungan, COOL! HA! Menyukainya!
slezica
21

Di zaman sekarang ini, JavaScript adalah cara terbaik untuk menunjukkan bagaimana Anda dapat memprogram menggunakan beberapa alat yang sangat mendasar, misalnya notepad.

Efek jQuery adalah titik awal yang bagus bagi siapa pun yang ingin memukau teman-teman mereka!

Di sini, cukup klik ruang putih halaman.

<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>
Jon Winstanley
sumber
1
Saya akan setuju. Anda dapat membuka notepad dan mulai mengkodekan dengan java script dan kemudian membuka browser dan saya yakin siswa Anda akan terkesan. Ini adalah alat yang dimiliki setiap orang dan mereka dapat melihat banyak efek dan hal yang berbeda yang dapat dilakukan seperti contoh Jon.
Jeff Reddy
1
Saya tidak berpikir itu ide yang baik untuk mengajar seseorang dasar bahasa yang cukup sederhana menggunakan perpustakaan. Anda dapat dengan mudah melakukan ini tanpa menggunakan jQuery, dan bagi pemula, Anda harus melakukannya. Perpustakaan bukan pengganti bahasa aktual.
Some Guy
Dalam kasus javascript, jQuery bukan pengganti javascript, ini adalah pengganti dom (sangat bervariasi). Yang merupakan hal hebat untuk dapat menghindar, bagi siapa pun.
Kzqai
20

Satu hal yang mungkin Anda pertimbangkan adalah sesuatu seperti Robocode , di mana banyak pengkodean disarikan dan Anda pada dasarnya hanya memberi tahu robot apa yang harus dilakukan. Fungsi 10-line sederhana dapat membuat robot melakukan banyak hal, dan memiliki hasil yang sangat visual dan mudah diikuti.

Mungkin Robocode itu sendiri tidak cocok untuk tugas itu, tetapi hal semacam ini adalah cara yang baik untuk menghubungkan kode tertulis dengan tindakan visual di komputer, ditambah itu menyenangkan untuk ditonton ketika Anda perlu memberikan contoh.

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);
 }
}
Pavel Savara
sumber
6
Tidak tahu tentang robocode, tapi saya masuk ke coding setelah menggunakan Logo. Mampu menggambar rumah menggunakan maju, mundur, kiri, kanan, dll. Ini membawa Anda ke dalam pola pikir instruksi sederhana melakukan tugas-tugas besar.
Robin Day
1
Ya saya belajar Logo di lab komputer di sekolah dasar. Saya adalah salah satu dari anak-anak yang, di luar dugaan itu keren, ingin tahu lebih banyak.
Travis
1
+1 Untuk RoboCode! Saya suka Robocode, dan kami biasa melakukan kompetisi di antara kami untuk melihat siapa yang akan datang dengan algoritma terbaik
Andreas Grech
18

Jadi suatu hari, saya memutuskan bahwa saya sudah cukup. Saya akan belajar piano. Melihat orang seperti Elton John memerintahkan penguasaan keyboard seperti itu meyakinkan saya bahwa inilah yang ingin saya lakukan.

Sebenarnya belajar piano adalah kekecewaan besar. Bahkan setelah menyelesaikan delapan kelas pelajaran piano, saya masih tidak terkesan dengan bagaimana citra mental saya bermain piano sangat berbeda dari visi awal saya menikmati kegiatan.

Namun, yang benar-benar saya nikmati hanyalah tiga tingkatan dasar teori musik saya. Saya belajar tentang konstruksi musik. Saya akhirnya bisa melangkah dari dunia melakukan musik tertulis ke menulis musik saya sendiri. Selanjutnya, saya bisa mulai memainkan apa yang ingin saya mainkan.


Jangan mencoba memukau programmer baru, terutama programmer muda. Seluruh gagasan "kurang dari sepuluh baris kode sederhana" tampaknya memunculkan suasana "Tunjukkan sesuatu yang pintar ".

Anda dapat menunjukkan kepada programmer sesuatu yang pintar. Anda kemudian dapat mengajarkan programmer yang sama itu bagaimana mereplikasi "kinerja" ini. Tapi ini bukan apa yang membuat mereka kecanduan pemrograman. Ajari mereka dasar-dasarnya, dan biarkan mereka mensintesis sepuluh baris kode pintar mereka sendiri.

Saya akan menunjukkan kepada programmer baru kode Python berikut:

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)

Saya menyadari bahwa saya tidak perlu menetapkan lineuntuk edited_line. Namun, itu hanya untuk memperjelas, dan untuk menunjukkan bahwa saya tidak mengedit dokumen asli.

Dalam waktu kurang dari sepuluh baris, saya telah melakukan verbosifikasi dokumen. Tentu saja, juga pastikan untuk menunjukkan kepada programmer baru semua metode string yang tersedia. Lebih penting lagi, saya telah menunjukkan tiga hal mendasar yang menarik yang bisa saya lakukan: penugasan variabel, loop, file IO, dan penggunaan perpustakaan standar.

Saya pikir Anda akan setuju bahwa kode ini tidak menyilaukan. Faktanya, ini sedikit membosankan. Tidak - sebenarnya, ini sangat membosankan. Tetapi tunjukkan kode itu ke programmer baru dan lihat apakah programmer itu tidak dapat menggunakan kembali setiap bagian dari skrip itu untuk sesuatu yang jauh lebih menarik dalam seminggu, jika bukan hari itu. Tentu, itu akan tidak menyenangkan bagi Anda (mungkin menggunakan skrip ini untuk membuat parser HTML sederhana), tetapi yang lainnya hanya membutuhkan waktu dan pengalaman.

Wesley
sumber
17

Seperti kebanyakan komentator lainnya, saya mulai menulis kode untuk menyelesaikan masalah matematika (atau membuat grafik untuk game yang benar-benar mengerikan yang akan saya desain - hal-hal seperti Indiana Jones versus Zombies).

Apa yang benar-benar mulai saya (baik matematika dan pemrograman) mulai dari berbasis teks, pilih game gaya petualangan Anda sendiri ... ke lebih banyak game berbasis grafis. Saya mulai mewarnai kertas grafik dan memplot piksel, sampai saya masuk ke geometri ... dan menemukan cara menggunakan persamaan untuk menggambar kurva dan garis, kotak, dll.

Maksud saya adalah, saya bisa benar - benar masuk ke sesuatu seperti pemrosesan ( http://processing.org/ ) di mana program khas terlihat seperti ini:

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

Bagi saya, ini adalah "Logo" masa depan.

Ada contoh "halo dunia" yang mudah yang dapat dengan cepat membuat seseorang menggambar dan mengubah kode dan melihat bagaimana banyak hal pecah dan "kecelakaan" aneh apa yang dapat dibuat ... semua jalan menuju interaksi yang lebih maju dan penciptaan fraktal ...

Jeffrey Berthiaume
sumber
+1 Saya pikir pemrosesan adalah cara yang bagus untuk mengajarkan pemikiran algoritmik yang merupakan topik paling penting yang perlu dipelajari pemula.
Nils
15

Anda dapat menggunakan skrip yang ditulis dengan AutoIt , yang mengaburkan batas antara menggunakan aplikasi dan pemrograman tradisional.

Misalnya skrip yang membuka notepad dan membuat komputer mereka sendiri menghina mereka di dalamnya dan melalui kotak pesan, dan kemudian tidak meninggalkan jejak tindakannya:

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")
meepmeep
sumber
++ Saya tidak yakin di mana itu akan cocok dengan rencana pelajaran, tetapi itu lucu.
Mike Dunlavey
13

Saya ingat ketika saya pertama kali mulai coding loop selalu membuat saya terkesan. Anda menulis 5 - 10 baris kode (atau kurang) dan ratusan (atau berapa banyak yang Anda tentukan) dicetak. (Saya belajar dulu di PHP dan Java).

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

Saya pikir tempat yang baik bagi siswa untuk memulai Greasemonkey . Ada ribuan contoh skrip di userscripts.org, bahan bacaan yang sangat bagus, beberapa di antaranya sangat kecil. Skrip Greasemonkey memengaruhi halaman web, yang sudah biasa digunakan siswa, jika tidak dimanipulasi. Greasemonkey sendiri menawarkan cara yang sangat mudah untuk mengedit dan mengaktifkan / menonaktifkan skrip saat pengujian.

Sebagai contoh, berikut ini skrip "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'; }
joeytwiddle
sumber
10

Ini adalah program c # berbasis teks yang sangat sederhana yang mensimulasikan aksi pemintalan mesin slot. Itu tidak termasuk peluang berbeda untuk menang atau pembayaran tunai, tetapi itu bisa menjadi latihan yang bagus untuk siswa.

Maaf lebih dari 10 baris.

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" );
Greg
sumber
9

Dengan Tcl Anda memiliki editor teks sederhana dengan tombol simpan di sekitar 12 baris kode (tetapi tidak terbuka, itu akan mengambil 8 baris lain). Ia bekerja di semua platform standar:

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

Saya menyadari tujuannya adalah 10 baris, jadi jika Anda ingin tetap pada 10 baris atau kurang, editor teks sederhana tanpa memuat atau menyimpan hanya dua baris. Itu tidak terlalu buruk.

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

Jalankan salah satu dari blok kode di atas dengan " nama file harapan " pada platform pilihan Anda. Wish hadir dengan sebagian besar * nix's dan mac tetapi Anda harus menginstalnya secara manual untuk windows.

Untuk melangkah lebih jauh, skrip dua baris itu juga dapat ditulis dengan python, meskipun dibutuhkan delapan baris, masih di bawah sasaran 10 baris:

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()
Bryan Oakley
sumber
9

Bagaimana dengan bookmarklet? Itu akan menunjukkan kepada mereka bagaimana memanipulasi sesuatu yang mereka gunakan setiap hari (Internet) tanpa memerlukan alat pengembangan.

Stevo3000
sumber
Saya ingin saran ini, tetapi akan lebih baik dengan contoh dan apa yang bisa diajarkan darinya. Seperti contoh yang diberikan dalam pertanyaan: [code] javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ kode] untuk menunjukkan urutan operasi.
tylermac
8

Jika Anda mampu membeli perangkat keras, menggunakan papan + pemrosesan Arduino akan menghasilkan beberapa hal yang cukup keren, meskipun mungkin sedikit canggih bagi orang-orang yang mungkin tidak tertarik sama sekali dalam pemrograman.

Andrew Sledge
sumber
8

Saya menulis tentang ini baru-baru ini di sebuah artikel "Program terpendek, paling berguna yang pernah saya tulis."

Rangkuman: Saya menulis aplikasi 3 baris VB6 pada tahun 1996 yang masih saya gunakan setiap hari. Setelah exe dijatuhkan di folder "Send-to". Ini memungkinkan Anda mengklik kanan pada file di explorer dan mengirim path lengkap file itu ke clipboard.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  
JohnFx
sumber
Mengapa Clipboard.Clear? Ini menghapus semua konten dari clipboard, bahkan data non-teks (misalnya data gambar). Ini umumnya bukan yang Anda inginkan sama sekali.
Konrad Rudolph
Nah, maka mungkin program terpendek perlu setengah ukuran saat ini ...
JohnFx
Sangat rapi. Saya benci harus mengetikkan jalan yang panjang dan kemudian bertanya-tanya apakah ada kesalahan ketik
Sylverdrag
AFAIK dalam versi "modern" windows persis seperti apa yang dilakukannya ketika Anda menyalin file (Ctrl + C) ... Hanya menyalin nama file. Adakah yang bisa mencoba ini (karena saya tidak punya windows)?
opatut
Saya memiliki Windows 7 dan TIDAK melakukan itu.
JohnFx
7

Sangat menarik bahwa Anda menyebutkan set Mandelbrot, karena membuat fraktal dengan GW-BASIC adalah apa yang memicu kecintaan saya pada pemrograman di sekolah menengah (sekitar 1993). Sebelum kami mulai belajar tentang fraktal, kami menulis aplikasi standar deviasi yang membosankan dan saya masih berencana untuk masuk ke jurnalisme.

Tetapi begitu saya melihat bahwa program BASIC yang panjang dan sulit untuk ditulis menghasilkan "medan fraktal," saya terpikat dan saya tidak pernah melihat ke belakang. Itu mengubah cara saya berpikir tentang matematika, sains, komputer, dan cara saya belajar.

Saya harap Anda menemukan program yang memiliki dampak yang sama pada siswa Anda.

Robert S.
sumber
Itu bagus untuk proyek semester. Saya berharap saya memikirkan hal itu ketika saya mengajar.
Mike Dunlavey
6

Saya yakin itu akan berubah menjadi lebih dari 10 baris kode, tetapi apakah Anda sudah mempertimbangkan aplikasi berbasis formulir di mana menekan tombol melakukan hal-hal seperti mengubah warna latar belakang atau mengubah ukuran teks? Ini akan menunjukkan kepada mereka bagaimana program interaktif bekerja. Ini juga akan menunjukkan kepada mereka bahwa mereka, sebagai programmer, memiliki kendali penuh atas apa yang komputer (program) lakukan.

Semoga itu akan mengarahkan mereka untuk membuat saran untuk hal-hal lain yang bisa mereka ubah dan kemudian ke hal-hal lain yang mungkin ingin mereka lakukan.

ChrisF
sumber