Was ist das Coolste, was Sie in <10 Zeilen einfachen Codes tun können? Hilf mir, Anfänger zu inspirieren! [geschlossen]

406

Ich suche das Coolste, was Sie in ein paar Zeilen einfachen Codes tun können. Ich bin sicher, Sie können ein Mandelbrot-Set in 15 Zeilen in Haskell schreiben , aber es ist schwierig zu folgen.

Mein Ziel ist es, die Schüler zu inspirieren, dass Programmieren cool ist .

Wir wissen, dass Programmieren cool ist, weil Sie alles erstellen können, was Sie sich vorstellen - es ist das ultimative kreative Medium. Ich möchte diese Anfänger inspirieren und sie über so viele früh lernende Buckel wie möglich hinwegbringen.

Jetzt sind meine Gründe egoistisch. Ich unterrichte einen Intro-to-Computing- Kurs für eine Gruppe von 60 halb Ingenieur-, halb Business-Majors. alle Neulinge. Sie sind die Schüler, die von benachteiligten Gymnasien kamen. Nach meiner bisherigen Erfahrung ist die Gruppe im Allgemeinen wie folgt aufgeteilt: ein paar Rockstars , einige, die sich sehr anstrengen und es irgendwie bekommen, die wenigen, die sich sehr anstrengen und es kaum bekommen, und die wenigen, die sich nicht darum kümmern. Ich möchte so viele dieser Gruppen so effektiv wie möglich erreichen. Hier ist ein Beispiel, wie ich ein Computerprogramm zum Unterrichten verwenden würde:

Hier ist ein Beispiel für das, wonach ich suche: ein einzeiliges VBS-Skript, mit dem Ihr Computer mit Ihnen sprechen kann:

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

Ich könnte dies verwenden, um die Reihenfolge der Operationen zu demonstrieren. Ich würde den Code zeigen, sie damit spielen lassen und dann erklären, dass in dieser Zeile viel los ist, aber der Computer kann einen Sinn daraus machen, weil er die Regeln kennt. Dann würde ich ihnen so etwas zeigen:

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

Und Sie können sehen, dass ich zuerst (5 * 5) tun muss. Dann kann ich für 4 multiplizieren. Und jetzt habe ich das Objekt erstellt. Das Teilen durch 10 ist dasselbe wie das Aufrufen von Sprechen - ich kann nicht sprechen, bevor ich ein Objekt habe, und ich kann nicht teilen, bevor ich 100 habe. Auf der anderen Seite erstelle ich zuerst eine InputBox mit einigen Anweisungen zum Anzeigen . Wenn ich im Eingabefeld die Eingabetaste drücke, wird alles, was ich eingegeben habe, ausgewertet oder "zurückgegeben". (Hinweis: 'oooooo' macht ein lustiges Geräusch.) Wenn ich also Sprechen sage, ist die rechte Seite das, was gesprochen werden soll. Und das bekomme ich von der InputBox.

Wenn Sie also mehrere Dinge in einer Zeile tun, wie zum Beispiel:

x = 14 + y;

Sie müssen sich der Reihenfolge der Dinge bewusst sein. Zuerst addieren wir 14 und y. Dann setzen wir das Ergebnis (was es auswertet oder zurückgibt) in x.

Das ist mein Ziel, ein paar dieser coolen Beispiele zu haben, um die Klasse zu demonstrieren und zu unterrichten, während sie Spaß haben. Ich habe dieses Beispiel an meiner Mitbewohnerin ausprobiert und obwohl ich es möglicherweise nicht als erste Lektion verwende, hat sie es gemocht und etwas gelernt.

Einige coole Mathematica-Programme, die schöne Grafiken oder Formen erstellen, die leicht zu verstehen sind, wären gute Ideen, und ich werde mich mit diesen befassen. Hier sind einige komplizierte Actionscript-Beispiele, aber das ist etwas zu fortgeschritten und ich kann Flash nicht unterrichten. Welche anderen Ideen haben Sie?

George Stocker
quelle
102
Ich denke, Fragen zum Unterrichten von Programmieren sind ausgezeichnet und nicht trivial. Viel Glück mit dem, was Sie versuchen zu tun.
Mike Dunlavey
6
"Mein Ziel ist es, die Schüler zu inspirieren, dass Programmieren cool ist." Ich glaube nicht, dass man den Leuten sagen kann, dass Programmieren cool ist. Entweder sie mögen es oder sie tun es nicht.
Rik
2
Ihr einzeiliges VBS-Skript funktioniert auf meinem Mac nicht! :-P Gute Frage.
John Topley
1
Ich mag solche Sachen immer, aber wen du zu beeindrucken versuchst, mir die Sierpinski-Dichtung würde man gut machen. Für einen IT-Mitarbeiter mag etwas, das Dateien erstellt, für einige Leute, die den Computer zum Sprechen bringen, beeindruckend sein und so weiter. Also, was ist die Zielgruppe, dann definieren Sie, was cool ist.
Oakcool
5
83 Personen stimmen dem Kommentar zu, dass diese Frage "ausgezeichnet und nicht trivial" ist ... von 5 Personen, die anscheinend nicht einverstanden sind, als "nicht konstruktiv" abgeschlossen. Ist Power nicht großartig?
rg88

Antworten:

78

Ich habe eine großartige Antwort von meinen Kindern mit einem schnellen VB-Skript erhalten, um einen Microsoft Agent-Charakter zu manipulieren. Für diejenigen, die mit MS Agent nicht vertraut sind, ist es eine Reihe von animierten Bildschirmzeichen, die über eine COM-Schnittstelle bearbeitet werden können. Sie können den Code und die Zeichen auf der Microsoft Agent- Downloadseite herunterladen.

Die folgenden paar Zeilen lassen den Merlin-Charakter auf dem Bildschirm erscheinen, fliegen herum, klopfen auf den Bildschirm, um Ihre Aufmerksamkeit zu erregen, und sagen Hallo.

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"

Es gibt sehr viele andere Befehle, die Sie verwenden können. PrüfenWeitere Informationen finden Sie unter http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx .

2011-09-02 EDIT Ich habe vor kurzem festgestellt , dass Microsoft Agent nicht nativ auf Windows 7 installiert ist , aber es als separater Download angeboten wird , hier . Ich habe dies nicht getestet und kann daher nicht überprüfen, ob es funktioniert.

Bob Mc
quelle
Das ist großartig. Dies verdient viel mehr Stimmen.
Tom Ritter
Danke für die Anerkennung Tom. Scheiße, dass ich keine Wiederholungspunkte bekomme, auch wenn es anfängt, positive Stimmen zu bekommen. :-P
Bob Mc
32
Auf diese Weise können Sie die Büroklammer die ganze Zeit sehen : D
Pedery
8
@ Bob BASIC ist eine Anfängersprache. VB ist nicht BASIC. VB ist das Schweizer Taschenmesser, das MS speziell für die damaligen Bedürfnisse entwickelt hat. Heutzutage gibt es viel bessere (viel spezialisiertere) Werkzeuge, die an seine Stelle treten. VB ist keine schlechte Sprache, es hat nur viel Übergepäck. Wenn ich einen völlig unvoreingenommenen Grund nennen würde, warum ich ihn nicht verwenden sollte, wäre dies darauf zurückzuführen, dass MS die Unterstützung für VB langsam einstellt. Es ist eine sterbende Sprache. Warten Sie nur, bis Office-Skripte mit JavaScript erstellt wurden (was in naher Zukunft geplant ist), dann ist der Rückgang von VB eine sichere Sache.
Evan Plaice
3
@Evan - Danke für die faire Antwort und nicht für einen religiösen Estrich. Schön gemacht. Hatte noch nichts von dem Umzug von Office Javascript gehört. Werde untersuchen.
Bob Mc
339

Geben Sie diesen Code in Ihre Adressleiste (in Ihrem Browser) ein und drücken Sie die Eingabetaste. Dann können Sie den gesamten Inhalt der Webseite bearbeiten!

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

Das ist der coolste "Einzeiler", den ich kenne =)

Espen Herseth Halvorsen
quelle
95
"Einzeiler" ist eine solche Fehlbezeichnung. Das sind wirklich 3 Zeilen. Jeder Code kann eine Zeile sein, wenn Sie möchten.
DisgruntledGoat
5
Das sieht wirklich ordentlich aus, aber gibt es eine Möglichkeit, die Seite zu erhalten, sobald sie geändert wurde?
Sylverdrag
51
Ich mag es so sehr, ich habe 999999999 mal für dich gestimmt !! img707.imageshack.us/img707/4843/jshack.png
JRL
4
Dies gilt in Firefox nicht mehr, da Javascript: deaktiviert wurde. Eine Schande.
2
@DisgruntledGoat javascript:und void 0sind Boilerplate: das Äquivalent von int main() {und return 0; }in C. Und die anderen beiden Zeilen sind nur verschiedene Browser-APIs, die dasselbe tun: Die erste ist die IE-API, die zweite ist die NetScape-API. HTML5 verwendet. contentEditabledocument.body.contentEditable='true';
Wenn
201

Als ich das zum ersten Mal schrieb.

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

Es hat die Leute umgehauen! Der Computer erinnerte sich an ihren Namen!

EDIT: Nur um das hinzuzufügen. Wenn Sie einen neuen Programmierer davon überzeugen können, dass dies das Coolste ist, was er tun kann, werden sie zu guten Programmierern. Heutzutage können Sie fast alles, was Sie wollen, mit einer Codezeile tun, um eine Bibliothek auszuführen, die jemand anderes geschrieben hat. Ich persönlich bin absolut nicht zufrieden damit und sehe wenig Nutzen darin, es zu unterrichten.

Robin Day
quelle
15
wäre besser mit folgendem: 40 GOTO 30
Spender
8
+1 für die Anzeige des Benutzernamens, Menschen lieben es immer, ihren eigenen Namen anzuzeigen. @saua, wie ist das nicht eine Endlosschleife? Es geht zurück zu Zeile 30, nicht zu Zeile 20.
z -
13
Sollte sicher 10 sein, damit jemand anderes seinen Namen eingeben kann ...
Omar Kooheji
17
Sie haben 35 PRINT CHR $ (7)
Adam Jaskiewicz
6
So habe ich auch Programmieren gelernt. Es ist die beste Antwort imo. +1, um dieses zu akzeptieren
Klicken Sie auf Upvote
180

PHP - die Sierpinski-Dichtung alias die Triforce

OK, es sind 15 Codezeilen, aber das Ergebnis ist fantastisch! Das ist das Zeug, das mich als Kind ausflippen ließ. Dies ist aus dem PHP-Handbuch:

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

Markus
quelle
25
Für die Aufzeichnung ist das eine Sierpinski-Dichtung.
Chaos
6
Das ist großartig, aber ich denke, es sollte ungefähr in der Mitte des Kurses kommen, da es auf einer Reihe von Konzepten wie Loops und Arrays aufbaut.
Mike Dunlavey
4
@Masi: Die allgemeine Idee ist, drei feste Punkte zu haben, die die Ecken des Dreiecks sind, und einen "aktuellen" Punkt, den Sie ständig aktualisieren. Um eine Bewegung auszuführen, wählen Sie eine der Ecken nach dem Zufallsprinzip aus und bewegen Sie den aktuellen Punkt auf halber Strecke in Richtung dieser Ecke. Farbe im aktuellen Punkt. Führen Sie dann auf die gleiche Weise einen weiteren Schritt aus, und dann noch einige tausend Mal, und das Muster wird angezeigt. Versuchen Sie es dann mit einer anderen Anzahl von Ecken oder ändern Sie den Bruchteil, um den der aktuelle Punkt in Richtung der Ecke springt, um zu sehen, wie sich dies auf das Muster auswirkt.
Daniel Earwicker
18
Für die Aufzeichnung ist das keine Sierpinski-Dichtung ... Es ist in der Tat die Triforce. en.wikipedia.org/wiki/The_Legend_of_Zelda
Jason
2
Dieser Code erscheint mir seltsam, weil ich dies normalerweise mit Rekursion sehe (auch mit sehr wenigen Codezeilen). In der Tat sind Fraktale eine gute Einführung in die Rekursion im Informatikunterricht. Aber es sieht für mich so aus, als wäre dieser Code ziemlich ineffizient, da er aufgrund seines zufälligen Ansatzes viele Pixel malt und neu malt.
Steve Wortham
105

Microsoft hat Small Basic , eine IDE für "Kinder".

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

Es wurde speziell entwickelt, um zu zeigen, wie cool das Programmieren ist.

Bob Fanger
quelle
80
Das ist wirklich scheiße, weil diese Bibliotheksaufrufe wie Magie wirken. Sie richten sie als VB-Skriptkinder ein. Ich fürchte, sie werden niemals in diesen Bereich der "dunklen Magie" lauern und auf dem "sicheren" Sanitärbereich bleiben. ... Oh, sehen Sie hier, wie Sie einen Internetbrowser in einer Zeile erstellen! MSIEControl (.. blabla was auch immer ...). Show ()
hasen
88
Ich denke nicht, dass Kinder Idioten sind. Wenn Sie sie für die Möglichkeiten der Programmierung begeistern, werden sie herausfinden, wie sie fortgeschrittenere Dinge selbst erledigen können. Wenn nichts anderes, würden die jungen, mit Testosteron infizierten Jungen versuchen, die geheimnisvollsten, dunkelmagischsten Dinge zu lernen, bevor Sie überhaupt wissen, was passiert ist.
Tim Lin
28
@hansen j, das ist unfair, jeder muss irgendwo anfangen.
John Farrell
30
Dies ist kein CS-Abschluss für Kinder, sondern ein Programmierspielzeug. Was auch immer dieses Tor ist, um Kinder dazu zu bringen, die lustige Seite des Programmierens zu sehen, das großartig ist, es muss nicht ASM sein.
Copas
29
Wenn ich die Kinder kenne, die ich unterrichten wollte, würde es ungefähr zehn Sekunden dauern, bis sie pic = Flickr.GetRandomPicture ("Brüste") versuchen
Iain Galloway
83

Ich neige dazu zu denken, dass Menschen von Dingen beeindruckt sind, mit denen sie sich identifizieren können oder die für ihr Leben relevant sind. Ich würde versuchen, meine 10 Codezeilen auf etwas zu stützen, das sie kennen und verstehen. Nehmen Sie zum Beispiel Twitter und seine API. Warum nicht diese API verwenden, um etwas Cooles zu erstellen? Die folgenden 10 Codezeilen geben die "öffentliche Zeitleiste" von Twitter zurück und zeigen sie in einer Konsolenanwendung an ...

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

Mein Codebeispiel ist möglicherweise nicht das beste für Ihre Schüler. Es ist in C # geschrieben und verwendet .NET 3.5. Wenn Sie ihnen also PHP, Java oder C ++ beibringen möchten, ist dies nicht hilfreich. Mein Punkt ist jedoch, dass durch das Verknüpfen Ihrer 10 Codezeilen mit etwas "Coolem, Interessantem und Relevantem für die Schüler" Ihr Beispiel auch cool, interessant und relevant wird.

Viel Glück!

[Ja, ich weiß, dass ich einige Zeilen mit Anweisungen und der Main-Methode verpasst habe, aber ich vermute, dass die 10 Zeilen nicht buchstäblich 10 Zeilen sein mussten]

Martin Peck
quelle
Das ist wirklich ordentlich! Ich war mit dem SyndicationFeed-Objekt nicht vertraut - danke für den Code!
Tad Donaghe
Zielgruppe sind Nicht-Geeks, ergo, sie kümmern sich nicht um Hochtöner?
Peufeu
80

Dies ist ein Python-Telnet-Server, der nach dem Benutzernamen fragt und ihn begrüßt. Das sieht cool aus, weil Sie mit Ihrem Programm von einem anderen Computer über das Netzwerk kommunizieren.

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()
Benutzer17918
quelle
68

Ich denke, es ist heutzutage schwierig, Computerpädagoge zu sein. Ich bin. Wir stehen vor einer zunehmend steilen Schlacht bergauf. Unsere Schüler sind unglaublich anspruchsvolle Benutzer und es braucht viel, um sie zu beeindrucken. Ihnen stehen so viele Werkzeuge zur Verfügung, die erstaunliche Dinge bewirken.

Ein einfacher Taschenrechner in 10 Codezeilen? Warum? Ich habe einen TI-86 dafür.

Ein Skript, das Spezialeffekte auf ein Bild anwendet? Dafür ist Photoshop da. Und Photoshop bläst alles, was Sie tun können, in 10 Zeilen weg.

Wie wäre es, eine CD zu rippen und die Datei in MP3 zu konvertieren? Ich habe bereits 50.000 Songs von BitTorrent. Sie sind bereits im MP3-Format. Ich spiele sie auf meinem iPhone. Wer kauft schon CDs?

Um versierte Benutzer in die Programmierung einzuführen, müssen Sie etwas finden, das:

a) anwendbar auf etwas, das sie interessant und cool finden, und b) etwas tut, das sie noch nicht tun können.

Angenommen, Ihre Schüler haben bereits Zugriff auf die teuerste Software. Viele von ihnen haben die Vollversion von Adobe CS5.5 (Verkaufspreis: 2.600 USD; tatsächlicher Preis: kostenlos) und können problemlos jede Anwendung erhalten, die normalerweise das Budget Ihrer Abteilung sprengt.

Aber die überwiegende Mehrheit von ihnen hat keine Ahnung, wie irgendetwas von diesem "Computer-Zeug" tatsächlich funktioniert.

Sie sind unglaublich kreativ: Sie kreieren gerne Dinge. Sie wollen nur in der Lage sein, etwas zu tun oder zu machen, was ihre Freunde nicht können. Sie wollen etwas, mit dem sie angeben können.

Hier sind einige Dinge, die ich bei meinen Schülern gefunden habe:

  • HTML und CSS. Von diesen lernen sie, wie MySpace-Themen funktionieren, und können sie anpassen.
  • Mashups. Sie haben sie alle gesehen, wissen aber nicht, wie sie erstellt werden sollen. Schauen Sie sich Yahoo! Rohre . Es gibt viele lehrbare Momente wie RSS, XML, Textfilterung, Mapping und Visualisierung. Die fertigen Mashup-Widgets können in Webseiten eingebettet werden.
  • Kunstwerk. Schauen Sie sich kontextfreie Kunst an . Rekursion und Randomisierung sind der Schlüssel zu schönen Bildern.
  • Geschichten erzählen. Mit einer benutzerfreundlichen 3D-Programmierumgebung wie Alice ist es einfach, hochwertige, ansprechende Geschichten mit nur Drag & Drop zu erstellen.

Keines davon beinhaltet eine Programmierung im herkömmlichen Sinne. Sie nutzen jedoch leistungsstarke Bibliotheken. Ich betrachte sie als eine andere Art der Programmierung.

Barry Brown
quelle
11
+1 Ich fand es toll, wie Sie Kinder in diesen Tagen beschrieben haben, die 50.000 Songs von Bittorrent und Adobe CS4 für nichts haben, es ist natürlich Realität
Thomasrutter
Schreiben Sie einen einfachen binären Suchalgorithmus in Python. Zerreißen Sie ein Telefonbuch mehrmals, um zu beschreiben, wie es funktioniert. Es sind die einfachen, aber leistungsstarken Aspekte der Programmierung, die erfahrene Programmierer oft übersehen, und Anfänger sehen ehrfürchtig aus. Die meisten Menschen wissen nicht, dass ihre Monitore mindestens die Hälfte der Pixel auf ihrem Monitor mit 60-120 / s aktualisieren. Führen Sie Rennen zwischen Mensch und Computer durch. lustige Sachen. Weitere Ideen finden Sie hier: Academicearth.org/courses/introduction-to-computer-science-i : Und was auch immer Sie tun ... unterrichten Sie sie nicht in ANSI C als Muttersprache. Ich war dort, es saugte.
Evan Plaice
3
Wenn Sie Websites anpassen, können Sie Greasemonkey verwenden.
new123456
Nur ein paar Gedanken zu Ihren Beispielen: In Bezug auf Photoshop müssen Sie nur auf das Offensichtliche hinweisen - mit Photoshop können Sie 1 Bild ändern, mit Skripten können Sie Hunderttausende ändern. Und bei MP3s haben Sie Recht, dass niemand mehr CDs herunterlädt, aber Sie könnten (ohne die Legalität) erklären, dass sie ein Programm schreiben könnten, um die neueste Musik automatisch direkt auf ihren iPod herunterzuladen.
Jeff Welling
@JeffWell gut mit Photoshop können Sie Stapel und Aktionen erstellen, um diese Änderungen auch an einer beliebigen Anzahl von Dateien vorzunehmen. Es ist erstaunlich, wie selbstverständlich heutzutage Computer sind.
John
63

Ich habe einen großen Favoriten gefunden (in GWBASIC):

10 input "What is your name ";N$
20 i = int(rnd * 2)
30 if i = 0 print "Hello ";N$;". You are a <fill in insult number 1>"
40 if i = 1 print "Hello ";N$;". You are a <fill in insult number 2>"

Ich habe festgestellt, dass Anfänger einige Vorstellungen haben, die behoben werden müssen.

  • Computer lesen Ihre Gedanken nicht.
  • Computer machen immer nur eine Sache gleichzeitig, selbst wenn sie es so schnell machen, scheinen sie alles auf einmal zu machen.
  • Computer sind nur dumme Maschinen und tun nur das, was ihnen gesagt wird.
  • Computer erkennen nur bestimmte Dinge und diese sind wie Bausteine.
  • Ein Schlüsselkonzept ist, dass eine Variable einen Wert enthält und ihr Name sich von diesem Wert unterscheidet.
  • Die Unterscheidung zwischen dem Zeitpunkt, zu dem Sie das Programm bearbeiten, und dem Zeitpunkt, zu dem es ausgeführt wird.

Viel Glück mit deiner Klasse. Ich bin sicher, du wirst es gut machen.

PS Ich bin sicher, Sie verstehen, dass Sie neben Material und Können auch eine Einstellung vermitteln, und das ist genauso wichtig.

Mike Dunlavey
quelle
Moderne Computer machen viel mehr als eine Sache gleichzeitig.
Dreamlax
Aber macht Ihr Code mehr als eine Sache gleichzeitig?
JeffO
5
@dreamlax: Du hast natürlich Recht, aber lass uns nicht die Haare spalten. Wir sprechen davon, Kindern Computer vorzustellen und ihnen die grundlegenden mentalen Bausteine ​​zu geben. Parallelität kann später kommen.
Mike Dunlavey
1
@ Ben S: Haben Sie zufällig das Leerzeichen vor Zeile 10 entfernt? Ich hatte das eingegeben, weil es so aussieht, als ob der SO-Formatierer die erste Zeile um 1 Leerzeichen zu entfernen scheint. Ich frage mich, ob es einen besseren Weg gibt, den Code in eine Reihe zu bringen.
Mike Dunlavey
2
@foljs: Meine Güte! "Ja wirklich?" :-) dreamlax machte den gleichen Punkt. Die Sache ist, wenn Sie mit Leuten arbeiten, die nichts über Computer wissen, sieht es für sie so aus, als ob alles auf einmal passiert, also müssen wir darüber hinwegkommen, ohne Haare zu spalten. Ein wirklich grundlegendes Konzept lautet also: "Zuerst macht es A, dann macht es B und so weiter."
Mike Dunlavey
62

Dieser C-Code ist vielleicht verschleiert, aber ich fand ihn sehr mächtig

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

Und hier ist das Ergebnis ... In nur 3 Zeilen ... Eine Art 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
quelle
5
Nett! Schade, dass es dort keinen Punkt gibt, an dem tatsächlich "Hallo Welt!"
Ponkadoodle
Das ist schön! Mandelbrot Modell: D
Aniket
45

Wie wäre es zu zeigen, dass Sie jeden Webbrowser verwenden und JavaScript in die Adressleiste eingeben und Code zum Ausführen erhalten können?

BEARBEITEN: Gehen Sie zu einer Seite mit vielen Bildern und versuchen Sie dies in der Adressleiste:

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
quelle
2
ok, aber du solltest ein konkretes Beispiel geben, das du kennst ..
hasen
1
@ John: Bitte geben Sie ein konkretes Beispiel. Ich habe JS auf meinem Server nur durch Exportieren der JS-Datei verwendet. Ich habe den Code nie in meine Adressleiste eingefügt.
Léo Léopold Hertz 준영
7
Nun, kein sehr aufregendes Beispiel, aber Sie könnten Javascript machen: alert ("Hello World");
John Topley
Ich bevorzuge: "Javascript: für (var i = 0; i> -1; i ++) alert ('Herzlichen Glückwunsch, Sie haben die Eingabetaste für' + i + 'Zeiten gedrückt!');". (Lesen Sie diesen Code, bevor Sie ihn ausführen ...). ^^
Arnis Lapsa
+1 für den Wow-Faktor ... ziemlich spektakuläres Beispiel :)
Fretje
37

Sie können eine Anwendung erstellen, die eine Zufallszahl auswählt. Und du musst es erraten. Wenn Sie sich irren, heißt es: höher oder niedriger. Und wenn Sie es erraten haben, eine nette Nachricht.

Es ist cool, für die Schüler zu spielen.

Einfache Python-Version ohne ordnungsgemäße Fehlerprüfung:

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 schlägt vor, dass der Computer die Nummer erraten sollte. Dies kann auch innerhalb von 10 Codezeilen erfolgen (obwohl das Fehlen einer ordnungsgemäßen Fehlerprüfung jetzt noch schwerwiegender ist: Gültige Zahlen außerhalb des Bereichs verursachen eine Endlosschleife):

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
quelle
4
Interessanter wäre es, wenn der Benutzer die Zufallszahl auswählt und sie dann vom Computer erraten lässt.
Erik Forbes
15
Lassen Sie diese beiden Programme nun über einen Socket spielen.
Josh Lee
3
Es wäre besser, wenn der Computer die Nummer nicht direkt erhalten würde. Sie sollten den Benutzer anweisen, "eine Zahl zwischen 1 und 100 auszuwählen". Geben Sie dann "Ich denke 50" aus und fragen Sie nach Eingabe ("höher", "niedriger" oder "richtig") und verfeinern Sie Ihre Vermutung.
Ponkadoodle
Ich habe dies mit meinem Sohn (9) gemacht und es hat auch den Vorteil, in das algorithmische Denken einzusteigen, was die beste Strategie ist, um die richtige Anzahl in der kürzesten Anzahl von Vermutungen zu finden.
mbesso
Ich denke du willst raw_input. Eingabe ist gleich eval(raw_input(prompt)). Siehe Eingabe .
Jeff Kaufman
26

Zurück in der Computerklasse in der High School haben ich und ein paar Freunde der Klasse beigebracht, wie man mit Delphi programmiert. Die Klasse konzentrierte sich hauptsächlich auf das Programmieren mit Pascal, daher war Delphi ein guter nächster Schritt. Wir haben die ereignisgesteuerte Natur von Delphi und seine RAD-Funktionen demonstriert. Am Ende der Lektion zeigten wir der Klasse eine Beispielanwendung und baten sie, diese zu reproduzieren. Die Anwendung fragte " Sind Sie betrunken? " Mit zwei Tasten Ja und Nein . ... Ich denke, Sie wissen, was als nächstes kommt ... Die Schaltfläche Nein hat die Position mit der Maus geändert und war fast unmöglich zu klicken.

Die Schüler und Lehrer haben einen guten Kick draus gemacht.

Das Programm benötigte nur wenige Zeilen benutzerdefinierten Codes mit einer einfachen Gleichung, um zu berechnen, wohin die Schaltfläche bewegt werden soll. Ich glaube, keiner der anderen Schüler hat es herausgefunden, aber einige standen sich nahe.

Ryan Anderson
quelle
7
Nicht nur unterhaltsam, sondern ein Mitarbeiter von mir hat dies einmal in einer Software getan, nur die Schaltfläche "OK" in einem Meldungsfeld. Es war eine intern verwendete App, daher wurde sie nicht verpönt. Dies geschah nur einmal in einem blauen Mond. Natürlich würden sie ihn anrufen und er würde sagen, er müsse es sehen, wenn er es glauben würde. Also würde er rüberwandern und natürlich würde es nicht passieren, wenn er dort war ...
Jason D
Ich erinnere mich an so etwas ... aber es war blitzschnell ... und die Frage war "Bist du schwul?" ... und die Schaltfläche zum Klicken auf ein Feuerwerk.
Glasnt
2
Das wäre eine interessante Zeit, um den Leuten das Navigieren über Tabulatoren und Leerzeichen beizubringen.
Davidahines
23

Als ich die Bash-Gabelbombe zum ersten Mal herausfand, fand ich sie wirklich süß. So einfach und doch ordentlich, was es kann:

:(){ :|:& };:
hodgesmr
quelle
7
Hier ist eine ziemlich gute Erklärung: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr
12
Für Linux-Neulinge: Laufen Sie nicht, sonst verlieren Sie Ihre ganze Arbeit.
Behrooz
@Behrooz, hängt von Ihrer Distribution ab, einige haben willkürliche Thread- / Gabel-Limits eingebaut.
Razor Storm
Es macht einen großen Knall auf SuSE, macht aber auf den meisten Debian-basierten Distributionen einfach nichts.
Behrooz
Das, sowie Benutzerlimits, wie oft Ihre Festplatten-Caches
geleert
22

Das ist Betrug und nicht einmal im entferntesten einfach, aber ich habe einmal ein Shoot'em in 20 Zeilen C ++ mit der Allegro-Grafikbibliothek geschrieben. Keine wirklichen Kriterien für das, was eine Linie war, aber es ist ein bisschen her und es wurde nur zum Spaß gemacht. Es hatte sogar grobe Soundeffekte.

So sah es aus:

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

Und hier ist der Code ( sollte kompiliert werden):

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
quelle
5
Wie soll das jemandem etwas beibringen? In einem anderen Zusammenhang, COOL! HA! Liebte es!
Slezica
21

In der heutigen Zeit ist JavaScript eine hervorragende Möglichkeit, um zu zeigen, wie Sie mit einigen wirklich einfachen Tools, z. B. Notepad, programmieren können.

jQuery-Effekte sind ein guter Ausgangspunkt für alle, die ihre Freunde begeistern möchten!

Klicken Sie in diesem Fall einfach auf den Leerraum der Seite.

<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
quelle
1
Ich würde zustimmen. Sie können den Editor öffnen und mit dem Java-Skript mit dem Codieren beginnen und dann einen Browser öffnen. Ich bin sicher, Ihre Schüler werden beeindruckt sein. Dies sind Werkzeuge, die jeder hat und die viele verschiedene Effekte und Dinge nachschlagen können, die wie Jons Beispiel gemacht werden können.
Jeff Reddy
1
Ich denke nicht, dass es eine gute Idee ist, jemandem die Basis einer ziemlich einfachen Sprache mithilfe einer Bibliothek beizubringen. Sie können dies problemlos ohne jQuery tun, und für Anfänger sollten Sie dies tun. Bibliotheken sind kein Ersatz für die eigentliche Sprache.
Ein
Im Fall von Javascript ist jQuery kein Ersatz für Javascript, sondern ein Ersatz für die (sehr variablen) Doms. Das ist eine großartige Sache, um für jeden ausweichen zu können.
Kzqai
20

Eine Sache, die Sie in Betracht ziehen könnten, ist so etwas wie Robocode , bei dem viel Codierung abstrahiert wird und Sie einem Roboter im Grunde nur sagen, was zu tun ist. Eine einfache 10-Zeilen-Funktion kann den Roboter dazu bringen, viel zu tun, und hat ein sehr visuelles und leicht zu verfolgendes Ergebnis.

Vielleicht ist Robocode selbst nicht für die Aufgabe geeignet, aber so etwas ist eine gute Möglichkeit, geschriebenen Code mit visuellen Aktionen auf dem Computer in Beziehung zu setzen, und es macht Spaß, darauf zu achten, wenn Sie Beispiele nennen müssen.

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
quelle
6
Ich weiß nichts über Robocode, aber ich habe mich nach der Verwendung von Logo mit dem Codieren befasst. In der Lage zu sein, ein Haus mit Vorwärts, Rückwärts, Links, Rechts usw. zu zeichnen. Es bringt Sie in die Denkweise einfacher Anweisungen, die große Aufgaben ausführen.
Robin Day
1
Ja, ich habe Logo im Computerraum der Grundschule gelernt. Ich war eines der Kinder, die, abgesehen davon, dass es cool war, mehr wissen wollten.
Travis
1
+1 Für RoboCode! Ich liebe Robocode, und wir haben früher Wettbewerbe zwischen uns durchgeführt, um zu sehen, wer die besten Algorithmen entwickelt hat
Andreas Grech
18

Eines Tages entschied ich, dass ich genug hatte. Ich würde Klavier lernen. Als ich Leute wie Elton John sah, die die Tastatur so gut beherrschten, versicherte ich mir, dass ich das tun wollte.

Klavier zu lernen war eine große Enttäuschung. Selbst nach Abschluss von acht Klassen Klavierunterricht war ich immer noch nicht beeindruckt, wie sehr sich mein mentales Bild vom Klavierspielen von meiner ursprünglichen Vision, die Aktivität zu genießen, unterschied.

Was mir jedoch sehr gut gefallen hat, waren meine nur drei Stufen der Musiktheorie. Ich habe etwas über den Aufbau von Musik gelernt. Endlich konnte ich von der Welt der schriftlichen Musik zum Schreiben meiner eigenen Musik übergehen. Anschließend konnte ich anfangen zu spielen, was ich spielen wollte.


Versuchen Sie nicht, neue Programmierer zu blenden, insbesondere junge Programmierer. Die ganze Vorstellung von "weniger als zehn Zeilen einfachen Codes" scheint eine Stimmung von "Zeig mir etwas Kluges " hervorzurufen .

Sie können einem neuen Programmierer etwas Kluges zeigen. Sie können dann demselben Programmierer beibringen, wie diese "Leistung" repliziert wird. Aber das ist es nicht, was sie von der Programmierung begeistert. Bringen Sie ihnen die Grundlagen bei und lassen Sie sie ihre eigenen cleveren zehn Codezeilen synthetisieren.

Ich würde einem neuen Programmierer den folgenden Python-Code zeigen:

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)

Ich weiß , dass ich nicht zu assign brauchen linezu edited_line. Dies dient jedoch nur dazu, die Dinge klar zu halten und zu zeigen, dass ich das Originaldokument nicht bearbeite.

In weniger als zehn Zeilen habe ich ein Dokument ausführlich beschrieben. Stellen Sie natürlich auch sicher, dass Sie dem neuen Programmierer alle verfügbaren Zeichenfolgenmethoden anzeigen . Noch wichtiger ist, dass ich drei grundlegend interessante Dinge gezeigt habe, die ich tun kann: Variablenzuweisung, Schleife, Datei-E / A und Verwendung der Standardbibliothek.

Ich denke, Sie werden mir zustimmen, dass dieser Code nicht blendet. In der Tat ist es ein wenig langweilig. Nein - eigentlich ist es sehr langweilig. Zeigen Sie diesen Code jedoch einem neuen Programmierer und prüfen Sie, ob dieser Programmierer nicht jeden Teil dieses Skripts innerhalb der Woche, wenn nicht des Tages, für etwas viel Interessanteres verwenden kann. Sicher, es wird Ihnen unangenehm sein (vielleicht verwenden Sie dieses Skript, um einen einfachen HTML-Parser zu erstellen), aber alles andere braucht nur Zeit und Erfahrung.

Wesley
quelle
17

Wie die meisten anderen Kommentatoren begann ich, Code zu schreiben, um mathematische Probleme zu lösen (oder um Grafiken für wirklich schreckliche Spiele zu erstellen, die ich entwerfen würde - Dinge wie Indiana Jones gegen Zombies).

Was mich (sowohl in Bezug auf Mathematik als auch in Bezug auf Programmierung) wirklich dazu gebracht hat, war, von textbasierten Spielen für Spiele im Abenteuerstil zu mehr grafikbasierten Spielen zu wechseln. Ich fing an, Millimeterpapier zu färben und Pixel zu zeichnen, bis ich mich mit Geometrie beschäftigte ... und entdeckte, wie man Gleichungen verwendet, um Kurven und Linien, Kästchen usw. zu zeichnen.

Mein Punkt ist, ich hätte wirklich in so etwas wie Verarbeitung ( http://processing.org/ ) geraten können, wo ein typisches Programm ungefähr so ​​aussieht:

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

Für mich ist dies das "Logo" der Zukunft.

Es gibt einfache "Hallo Welt" -Beispiele, mit denen jemand schnell Code zeichnen und ändern kann und sieht, wie Dinge kaputt gehen und welche seltsamen "Unfälle" entstehen können ... bis hin zu fortgeschrittener Interaktion und fraktaler Erstellung ...

Jeffrey Berthiaume
quelle
+1 Ich denke, Verarbeitung ist eine großartige Möglichkeit, algorithmisches Denken zu lehren, was das wichtigste Thema ist, das Anfänger lernen müssen.
Nils
15

Sie können ein mit AutoIt geschriebenes Skript verwenden , das die Grenze zwischen der Verwendung einer herkömmlichen Anwendung und der Programmierung verwischt.

ZB ein Skript, das den Editor öffnet und seinen eigenen Computer dazu bringt, sie darin und über ein Meldungsfeld zu beleidigen, und dann keine Spur seiner Aktionen hinterlässt:

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")
meep Meep
quelle
++ Ich bin mir nicht sicher, wo es in einen Stundenplan passen würde, aber es ist süß.
Mike Dunlavey
13

Ich erinnere mich, als ich anfing, Loops zu programmieren, hat mich das immer beeindruckt. Sie schreiben 5 bis 10 Codezeilen (oder weniger) und drucken Hunderte (oder wie viele Sie auch angeben) Zeilen aus. (Ich habe zuerst in PHP und Java gelernt).

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

Ich denke, ein guter Ort für einen Studenten, um loszulegen, könnte Greasemonkey sein . Auf userscripts.org gibt es Tausende von Beispielskripten, sehr gutes Lesematerial, von denen einige sehr klein sind. Greasemonkey-Skripte wirken sich auf Webseiten aus, mit deren Verwendung die Schüler bereits vertraut sind, wenn sie sie nicht bearbeiten. Greasemonkey selbst bietet eine sehr einfache Möglichkeit, Skripte während des Testens zu bearbeiten und zu aktivieren / deaktivieren.

Hier ist als Beispiel das Skript "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
quelle
10

Dies ist ein sehr rudimentäres textbasiertes c # -Programm, das die Drehaktion eines Spielautomaten simuliert. Es beinhaltet keine unterschiedlichen Gewinnchancen oder Barauszahlungen, aber das könnte eine schöne Übung für die Schüler sein.

Entschuldigung, dass es mehr als 10 Zeilen sind.

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

Mit Tcl haben Sie einen einfachen Texteditor mit einer Schaltfläche zum Speichern in etwa 12 Codezeilen (aber kein Öffnen, das würde weitere 8 Zeilen dauern). Es funktioniert auf allen Standardplattformen:

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

Mir ist klar, dass das Ziel 10 Zeilen waren. Wenn Sie also 10 Zeilen oder weniger beibehalten möchten, besteht ein einfacher Texteditor ohne Laden oder Speichern nur aus zwei Zeilen. Das ist nicht zu schäbig.

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

Führen Sie einen der oben genannten Codeblöcke mit " Wunschdateiname " auf der Plattform Ihrer Wahl aus. Wish kommt mit den meisten * nix's und dem Mac, aber Sie müssen es manuell für Windows installieren.

Um noch einen Schritt weiter zu gehen, kann dieses zweizeilige Skript auch in Python geschrieben werden, obwohl es acht Zeilen benötigt, immer noch unter dem Ziel von 10 Zeilen:

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

Wie wäre es mit einem Lesezeichen? Es würde ihnen zeigen, wie sie etwas manipulieren können, das sie jeden Tag benutzen (das Internet), ohne Entwicklungswerkzeuge zu benötigen.

Stevo3000
quelle
Ich würde diesen Vorschlag mögen, aber es wäre besser mit einem Beispiel und dem, was daraus gelehrt werden kann. Wie das Beispiel in der Frage: [Code] Javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ code], um die Reihenfolge der Operationen anzuzeigen.
Tylermac
8

Wenn Sie sich die Hardware leisten können, wird die Verwendung einer Arduino-Karte + -Verarbeitung einige ziemlich coole Dinge hervorbringen, obwohl sie für Leute, die möglicherweise überhaupt nicht an Programmierung interessiert sind, etwas fortgeschritten sein kann.

Andrew Sledge
quelle
8

Ich habe darüber kürzlich in einem Artikel geschrieben: "Das kürzeste und nützlichste Programm, das ich je geschrieben habe."

Zusammenfassung: Ich habe 1996 eine dreizeilige VB6-App geschrieben, die ich immer noch jeden Tag benutze. Sobald die Exe im Ordner "Senden an" abgelegt ist. Sie können mit der rechten Maustaste auf eine Datei im Explorer klicken und den vollständigen Pfad dieser Datei an die Zwischenablage senden.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  
JohnFx
quelle
Warum das Clipboard.Clear? Es entfernt alle Inhalte aus der Zwischenablage, auch Nicht-Textdaten (z. B. Bilddaten). Dies ist im Allgemeinen überhaupt nicht das, was Sie wollen.
Konrad Rudolph
Nun, dann muss vielleicht das kürzeste Programm die Hälfte seiner aktuellen Größe haben ...
JohnFx
Wirklich ordentlich. Ich hasse es, lange Pfade
eingeben zu müssen
AFAIK in "modernen" Windows-Versionen ist genau das, was es tut, wenn Sie die Datei kopieren (Strg + C) ... Kopieren Sie einfach den Dateinamen. Kann jemand dies versuchen (da ich keine Fenster habe)?
Opatut
Ich habe Windows 7 und das macht es NICHT.
JohnFx
7

Es ist interessant, dass Sie das Mandelbrot-Set erwähnen, da das Erstellen von Fraktalen mit GW-BASIC meine Liebe zum Programmieren in der High School (um 1993) geweckt hat. Bevor wir anfingen, über Fraktale zu lernen, haben wir langweilige Standardabweichungsanwendungen geschrieben, und ich hatte immer noch vor, in den Journalismus einzusteigen.

Aber als ich sah, dass dieses lange, schwer zu schreibende BASIC-Programm "fraktales Terrain" erzeugt, war ich begeistert und habe nie zurückgeschaut. Es veränderte die Art und Weise, wie ich über Mathematik, Naturwissenschaften, Computer und das Lernen nachdachte.

Ich hoffe, Sie finden das Programm, das die gleichen Auswirkungen auf Ihre Schüler hat.

Robert S.
quelle
Das ist toll für ein Semesterprojekt. Ich wünschte, ich hätte damals daran gedacht, als ich unterrichtete.
Mike Dunlavey
6

Ich bin mir sicher, dass daraus mehr als 10 Codezeilen werden würden, aber haben Sie eine formularbasierte App in Betracht gezogen, bei der durch Drücken der Tasten beispielsweise die Farbe des Hintergrunds oder die Größe des Texts geändert wird? Dies würde ihnen zeigen, wie interaktive Programme funktionieren. Es würde ihnen auch zeigen, dass sie als Programmierer die vollständige Kontrolle darüber haben, was der Computer (das Programm) tut.

Hoffentlich würde es sie dazu bringen, Vorschläge für andere Dinge zu machen, die sie ändern könnten, und dann für andere Dinge, die sie vielleicht tun möchten.

ChrisF
quelle