Qual è la cosa più bella che puoi fare in <10 righe di codice semplice? Aiutami a ispirare i principianti! [chiuso]


406

Sto cercando la cosa più bella che puoi fare in poche righe di codice semplice. Sono sicuro che puoi scrivere un set Mandelbrot in Haskell in 15 righe, ma è difficile da seguire.

Il mio obiettivo è ispirare gli studenti che la programmazione è interessante .

Noi sappiamo che la programmazione è fresco perché è possibile creare qualsiasi cosa si immagina - è l'ultimo sbocco creativo. Voglio ispirare questi principianti e farli superare il maggior numero di gobbe di apprendimento precoce che posso.

Ora, le mie ragioni sono egoistiche. Sto insegnando un corso di introduzione al calcolo a un gruppo di 60 specialisti in metà ingegneria e metà in affari; tutte matricole. Sono gli studenti che provengono dalle scuole superiori svantaggiate. Dalla mia esperienza passata, il gruppo è generalmente suddiviso come segue: alcune rockstar , alcune che si sforzano molto e in qualche modo lo ottengono, i pochi che ci provano molto e a malapena lo ottengono, e i pochi a cui non importa. Voglio raggiungere il maggior numero possibile di questi gruppi. Ecco un esempio di come utilizzare un programma per computer per insegnare:

Ecco un esempio di quello che sto cercando: uno script VBS a 1 riga per far parlare il tuo computer con te:

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

Potrei usarlo per dimostrare l'ordine delle operazioni. Mostrerei il codice, li lascerei giocare, poi spiegherei che c'è molto da fare in quella linea, ma il computer può dare un senso, perché conosce le regole. Quindi mostrerei loro qualcosa del genere:

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

E puoi vedere che per prima cosa devo fare è (5 * 5). Quindi posso moltiplicare per 4. E ora ho creato l'Oggetto. Dividere per 10 equivale a chiamare Parla: non posso parlare prima di avere un oggetto e non posso dividere prima di averne 100. Quindi, dall'altro lato, creo un InputBox con alcune istruzioni su come visualizzarlo . Quando premo invio sulla casella di input valuta o "ritorna" qualunque cosa io abbia inserito. (Suggerimento: "oooooo" emette un suono divertente) Quindi quando dico Speak, il lato giusto è cosa parlare. E lo ottengo dall'InputBox.

Quindi quando fai diverse cose su una linea, come:

x = 14 + y;

Devi essere consapevole dell'ordine delle cose. Per prima cosa aggiungiamo 14 e y. Quindi inseriamo il risultato (ciò che valuta o restituisce) in x.

Questo è il mio obiettivo, avere un mucchio di questi fantastici esempi per dimostrare e insegnare alla classe mentre si divertono. Ho provato questo esempio sulla mia compagna di stanza e anche se non posso usarlo come prima lezione, le è piaciuto e ha imparato qualcosa.

Alcuni fantastici programmi di matematica che creano meravigliosi grafici o forme facili da capire sarebbero buone idee e li esaminerò. Ecco alcuni esempi complicati di ActionScript ma è un po 'troppo avanzato e non posso insegnare il flash. Quali altre idee hai?


102
Penso che le domande su come insegnare la programmazione siano eccellenti e non banali. Buona fortuna per quello che stai cercando di fare.
Mike Dunlavey,

6
"il mio obiettivo è ispirare gli studenti che la programmazione è interessante". Non credo che si possa dire alla gente che programmare è bello. O a loro piace o no.
Rik

2
Il tuo script VBS a una riga non funziona sul mio Mac! :-P Buona domanda però.
John Topley,

1
Mi piace sempre questo genere di cose, ma chi stai cercando di impressionare, io la guarnizione Sierpinski mi farebbe un buon lavoro. Per un IT i ragazzi possono creare qualcosa che crea file, per alcune persone parlare al computer sarebbe impressionante, e così via. Quindi, ciò che conta è il pubblico target, quindi definisci ciò che è interessante.
Oakcool,

5
83 persone hanno valutato il commento su come questa domanda sia "eccellente e non banale" ... chiusa come "non costruttiva" da 5 persone che apparentemente non sono d'accordo. Il potere non è grande?
rg88

Risposte:


78

Ho ricevuto un'ottima risposta dai miei figli con un veloce script VB per manipolare un personaggio di Microsoft Agent. Per coloro che non hanno familiarità con MS Agent, è una serie di personaggi animati su schermo che possono essere manipolati tramite un'interfaccia COM. È possibile scaricare il codice e i caratteri nella pagina di download di Microsoft Agent .

Le poche righe che seguono faranno apparire sullo schermo il personaggio di Merlino, voleranno in giro, busseranno allo schermo per attirare la tua attenzione e salutare.

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"

Ci sono molti altri comandi che puoi usare. Dai un'occhiatahttp://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx per ulteriori informazioni.

EDIT 2011-09-02 Di recente ho scoperto che Microsoft Agent non è installato nativamente su Windows 7. Tuttavia, è disponibile come download separato qui . Non l'ho testato, quindi non posso verificare se funziona.


È fantastico Questo merita molti più voti.
Tom Ritter,

Grazie per il riconoscimento Tom. Fa schifo che non otterrò punti rep anche se inizia a ottenere voti. :-P
Bob Mc

32
In questo modo è possibile vedere la graffetta per tutto il tempo : D
Pedery

8
@Bob BASIC è una lingua per principianti. VB non è BASE. VB è il coltellino svizzero che MS ha creato per soddisfare le esigenze del momento. Oggi ci sono strumenti molto migliori (molto più specializzati) per prendere il suo posto. VB non è un brutto linguaggio, ha solo un sacco di bagaglio in eccesso. Se dovessi dare una ragione completamente imparziale perché non usarla, sarebbe perché MS sta lentamente abbandonando il supporto per VB. È un linguaggio morente. Aspetta che gli script di Office vengano eseguiti con JavaScript (che è pianificato nel prossimo futuro), quindi il declino di VB sarà una cosa certa.
Evan Plaice,

3
@Evan - Grazie per la buona risposta, piuttosto che per un massetto religioso. Ben fatto. Non avevo sentito parlare della mossa Javascript di Office. Investigherà.
Bob Mc

339

Inserisci questo codice nella barra degli indirizzi (nel browser) e premi Invio. Quindi puoi modificare tutto il contenuto della pagina web!

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

Questo è il "one-liner" più cool che conosco =)


95
"One-liner" è un termine improprio. Sono 3 righe, davvero. Qualsiasi codice può essere una riga se lo si desidera.
DisgruntledGoat

5
Sembra davvero pulito, ma c'è un modo per ottenere la pagina una volta modificata?
Sylverdrag,

51
Mi piace così tanto, ho votato per te 999999999 volte !! img707.imageshack.us/img707/4843/jshack.png
JRL

4
Questo non è più vero in Firefox come javascript: è stato disabilitato. Una vergogna.

2
@DisgruntledGoat, javascript:e void 0sono boilerplate: l'equivalente di int main() {e return 0; }in C. E le altre due righe sono solo diverse API del browser che fanno la stessa cosa: la prima è l'IE API, la seconda è l'API NetScape. HTML5 utilizza contentEditable, quindi a meno che non ti interessi supportare Firefox 1.5 o qualcosa del genere, il codice effettivo ammonta a:document.body.contentEditable='true';
Zarel

201

Quando l'ho scritto per la prima volta.

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

Ha spazzato via la gente! Il computer ricordava il loro nome!

EDIT: solo per aggiungere a questo. Se riesci a convincere un nuovo programmatore che questa è la cosa più bella che possono fare, diventeranno i bravi programmatori. In questi giorni, puoi fare quasi tutto quello che vuoi con una riga di codice per eseguire una libreria scritta da qualcun altro. Personalmente non ottengo assolutamente alcuna soddisfazione dal farlo e vedo pochi benefici nell'insegnarlo.


15
sarebbe meglio con quanto segue: 40 GOTO 30
spender

8
+1 per la visualizzazione del nome utente, alle persone piace sempre vedere il proprio nome visualizzato. @saua, come mai non è un ciclo di stampa infinito? Torna alla riga 30, non alla riga 20.
z -

13
Dovrebbe essere sicuramente il 10, quindi qualcun altro può inserire il loro nome ...
Omar Kooheji,

17
Hai dimenticato 35 STAMPA CHR $ (7)
Adam Jaskiewicz,

6
così ho imparato anche la programmazione. È la migliore risposta imo. +1 per accettarlo
Fai clic su Aggiorna

180

PHP - la guarnizione di Sierpinski, nota anche come Triforce

OK, sono 15 righe di codice ma il risultato è fantastico! Questo è il tipo di cose che mi hanno fatto impazzire quando ero bambino. Questo è dal manuale di 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);

guarnizione sierpinski


25
Per la cronaca, questa è una guarnizione Sierpinski.
caos

6
È fantastico, ma penso che dovrebbe arrivare a metà del corso, perché si basa su una serie di concetti, come loop e array.
Mike Dunlavey,

4
@Masi: l'idea generale è di avere tre punti fissi che sono gli angoli del triangolo e un punto "attuale" che si continua ad aggiornare. Per fare una mossa, scegli uno degli angoli a caso e sposta il punto corrente a metà dell'angolo. Colore nel punto corrente. Quindi fai un'altra mossa allo stesso modo, e poi ancora qualche migliaio di volte in più e il modello apparirà. Quindi provalo con un numero diverso di angoli o modifica la frazione con cui il punto corrente salta verso l'angolo, per vedere come influenza il modello.
Daniel Earwicker,

18
Per la cronaca, quella non è una guarnizione di Sierpinski ... È, in effetti, la Triforce. it.wikipedia.org/wiki/The_Legend_of_Zelda
jason

2
Questo codice mi sembra strano perché normalmente lo vedo fatto con la ricorsione (anche con pochissime righe di codice). In effetti, i frattali sono una buona introduzione alla ricorsione nelle lezioni di informatica. Ma mi sembra che questo codice sarà abbastanza inefficiente, dipingendo e ridipingendo molti pixel a causa del suo approccio casuale.
Steve Wortham,

105

Microsoft ha Small Basic , un IDE per "bambini".

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

È specificamente progettato per mostrare quanto sia interessante la programmazione.


80
Questo in realtà fa schifo, perché queste chiamate in biblioteca sembrano magiche. Li stai impostando per diventare kiddie di script VB. Temo che non si nasconderanno mai in quell'area "magia oscura" e rimarranno nell'area idraulica "sicura". ... Oh guarda ecco come creare un browser Internet in una riga! MSIEControl (.. blabla qualunque ...). Show ()
hasen

88
Non penso che i bambini siano idioti. Se li rendi entusiasti delle possibilità di programmazione, scopriranno come fare cose più avanzate da soli. Se non altro, i giovani ragazzi con infezione da testosterone avrebbero cercato di imparare le cose più arcane e oscure prima ancora che tu sapessi cosa è successo.
Tim Lin,

28
@hansen j, è ingiusto, tutti devono iniziare da qualche parte.
John Farrell,

30
Questo non è un diploma CS per bambini, questo è un giocattolo di programmazione. Qualunque sia quel gateway è quello di far vedere ai bambini il lato divertente della programmazione che è fantastico, non deve essere ASM.
Copas,

29
Conoscendo i bambini che ho cercato di insegnare, sarebbero passati circa dieci secondi prima che provassero pic = Flickr.GetRandomPicture ("tette")
Iain Galloway,

83

Tendo a pensare che le persone siano colpite da cose a cui possono relazionarsi o che sono rilevanti per la loro vita. Proverei a basare le mie 10 righe di codice su qualcosa che conoscono e comprendono. Prendi, ad esempio, Twitter e la sua API. Perché non usare questa API per creare qualcosa di interessante. Le seguenti 10 righe di codice restituiranno la "cronologia pubblica" da Twitter e la visualizzeranno in un'applicazione console ...

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

Il mio esempio di codice potrebbe non essere il migliore per i tuoi studenti. È scritto in C # e utilizza .NET 3.5. Quindi se hai intenzione di insegnare loro PHP, Java o C ++ questo non sarà utile. Tuttavia, il mio punto è che associando le tue 10 righe di codice a qualcosa di "interessante, interessante e pertinente per gli studenti, anche il tuo campione diventa interessante, interessante e pertinente.

In bocca al lupo!

[Sì, so di aver perso alcune righe sull'uso delle istruzioni e del metodo Main, ma suppongo che le 10 righe non debbano essere letteralmente 10 righe]


Questo è davvero pulito! Non avevo familiarità con l'oggetto SyndicationFeed - grazie per il codice!
Tad Donaghe,

Il pubblico di riferimento è non-geek, ergo, non gliene frega niente del tweeter?
peufeu,

80

Questo è un server Telnet Python che chiederà il nome dell'utente e saluterà loro. Sembra interessante perché stai comunicando con il tuo programma da un altro computer in rete.

from socket import *
s=socket(AF_INET, SOCK_STREAM)
s.bind(("", 3333))
s.listen(5)
while 1:
   (c, a) = s.accept()
   c.send("What is your name? ")
   name = c.recv(100)
   c.send("Hello "+name)
   c.close()

68

Penso che sia difficile essere un educatore di computer in questi giorni. Sono. Siamo di fronte a una battaglia in salita sempre più ripida. I nostri studenti sono utenti incredibilmente sofisticati e ci vuole molto per impressionarli. Hanno così tanti strumenti accessibili a loro che fanno cose incredibili.

Una semplice calcolatrice in 10 righe di codice? Perché? Ho una TI-86 per questo.

Una sceneggiatura che applica effetti speciali a un'immagine? Ecco a cosa serve Photoshop. E Photoshop spazza via tutto ciò che puoi fare in 10 righe.

Che ne dici di estrarre un CD e convertire il file in MP3? Ho già 50.000 canzoni che ho ricevuto da BitTorrent. Sono già in formato MP3. Li suono sul mio iPhone. Chi compra comunque i CD?

Per introdurre alla programmazione utenti esperti, dovrai trovare qualcosa che sia:

a) applicabile a qualcosa che trovano interessante e interessante e b) fa qualcosa che non possono già fare.

Supponiamo che i tuoi studenti abbiano già accesso al software più costoso. Molti di essi hanno la versione completa di Adobe CS5.5 (prezzo al dettaglio: $ 2.600; prezzo effettivo: gratuito) e possono facilmente ottenere qualsiasi applicazione che normalmente infrange il budget del dipartimento.

Ma la stragrande maggioranza di loro non ha idea di come funzioni davvero questa "roba di computer".

Sono un gruppo incredibilmente creativo: a loro piace creare cose. Vogliono solo essere in grado di fare o fare qualcosa che i loro amici non possono. Vogliono qualcosa di cui vantarsi.

Ecco alcune cose che ho trovato in risonanza con i miei studenti:

  • HTML e CSS. Da quelli imparano come funzionano i temi di MySpace e possono personalizzarli.
  • Mashup. Li hanno tutti visti, ma non sanno come crearli. Dai un'occhiata a Yahoo! Pipes . Ci sono molti momenti disponibili, come RSS, XML, filtraggio del testo, mappatura e visualizzazione. I widget di mashup completati possono essere incorporati nelle pagine Web.
  • Opera d'arte. Guarda l' arte senza contesto . La ricorsione e la randomizzazione sono fondamentali per realizzare splendide immagini.
  • Narrativa. Con un ambiente di programmazione 3D facile da usare come Alice , è facile creare storie di alta qualità e coinvolgenti utilizzando nient'altro che il trascinamento della selezione.

Nessuno di questi comporta alcuna programmazione in senso tradizionale. Ma sfruttano potenti librerie. Li penso come un diverso tipo di programmazione.


11
+1 Mi è piaciuto molto come hai descritto i bambini in questi giorni che hanno 50.000 canzoni di bittorrent e Adobe CS4 per niente, è ovviamente la realtà
thomasrutter,

Scrivi un semplice algoritmo di ricerca binaria in Python. Strappare una rubrica a metà più volte per descriverne il funzionamento. Sono gli aspetti della programmazione, semplici ma potenti, che spesso i programmatori esperti trascurano e i novizi sembrano sbalorditi. la maggior parte delle persone non si rende conto che i loro monitor aggiornano almeno la metà dei pixel sul monitor 60-120 / sec. fare gare di velocità umane vs computer. cose divertenti. vedere questo per ulteriori idee: academicearth.org/courses/introduction-to-computer-science-i : e, qualunque cosa tu faccia ... non insegnare loro ANSI C come prima lingua. Sono stato lì, ha fatto schifo.
Evan Plaice,

3
Se stai personalizzando i siti, perché non utilizzare Greasemonkey?
nuovo123456

Qualche riflessione sui tuoi esempi: per Photoshop, devi solo sottolineare l'ovvio: con Photoshop puoi cambiare 1 immagine, con gli script puoi cambiare centinaia di migliaia. E per quanto riguarda gli MP3, hai ragione, nessuno scarica più i CD, ma potresti (se non fosse per la legalità) spiegare che potrebbero scrivere un programma per scaricare automaticamente l'ultima musica direttamente sul loro iPod.
Jeff Welling,

@JeffAccurando bene con Photoshop, puoi apportare batch e azioni per apportare tali modifiche anche a qualsiasi numero di file. È sorprendente quanto sia scontato in questi giorni con i computer.
Giovanni

63

Ho trovato un grande preferito (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>"

Ho scoperto che gli studenti principianti hanno alcune idee che devono essere risolte.

  • I computer non ti leggono nella mente.
  • I computer fanno solo una cosa alla volta, anche se lo fanno così velocemente che sembrano fare tutto in una volta.
  • I computer sono solo macchine stupide e fanno solo ciò che viene loro detto.
  • I computer riconoscono solo determinate cose e questi sono come elementi costitutivi.
  • Un concetto chiave è che una variabile è qualcosa che contiene un valore e il suo nome è diverso da quel valore.
  • La distinzione tra l'ora in cui si modifica il programma e l'ora in cui viene eseguito.

Buona fortuna con la tua classe. Sono sicuro che farai bene.

PS Sono sicuro che capisci che, insieme a materiale e abilità, stai anche insegnando un atteggiamento, e questo è altrettanto importante.


I computer moderni fanno molto più di una cosa alla volta.
dreamlax,

Ma il tuo codice fa più di una cosa alla volta?
JeffO,

5
@dreamlax: hai ragione, certo, ma non dividiamo i capelli. Stiamo parlando di presentare i computer ai bambini e di dare loro le basi mentali di base. Il parallelismo può venire più tardi.
Mike Dunlavey,

1
@Ben S: Hai rimosso per caso lo spazio davanti alla linea 10? L'avevo inserito perché sembra che il formattatore SO sembra non ammaccare la prima riga di 1 spazio. Mi chiedo se esiste un modo migliore per allineare il codice?
Mike Dunlavey,

2
@foljs: Accidenti! Veramente? :-) dreamlax ha fatto lo stesso punto. Il fatto è che quando lavori con persone che non sanno nulla dei computer, sembra loro che tutto accada contemporaneamente, quindi dobbiamo superarlo, senza spaccare i capelli. Quindi un concetto veramente di base è "Prima fa A, poi fa B e così via".
Mike Dunlavey,

62

Questo codice C è forse offuscato, ma l'ho trovato molto potente

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

Ed ecco il risultato ... In sole 3 righe ... Una specie di frattale Hello World...

WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   !dWW!ddddllllrrrrrrrooooooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           drrWdlllrrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wlddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
olddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           droWdlllrrrrrrrr
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   WdWW!ddddllllrrrrrrrooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

5
Bello! Peccato che non ci sia nessun posto lì che in realtà dice "Hello World!"
Ponkadoodle,

Questo è carino! Modello di Mandelbrot: D
Aniket

45

Che ne dici di dimostrare che puoi prendere qualsiasi browser web e inserire JavaScript nella barra degli indirizzi e ottenere il codice da eseguire?

MODIFICA: vai a una pagina con molte immagini e prova questo nella barra degli indirizzi:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)

2
ok, ma dovresti fare un esempio concreto, sai ...
hasen

1
@ Giovanni: Per favore, fai un esempio concreto. Ho usato JS nel mio server esportando il file JS. Non ho mai inserito il codice nella barra degli indirizzi.
Léo Léopold Hertz

7
Beh, non un esempio molto eccitante, ma potresti fare javascript: alert ("Hello World");
John Topley,

Preferisco: "javascript: for (var i = 0; i> -1; i ++) alert ('Congratulazioni, hai premuto invio per' + i + 'times!');". (Leggi quel codice prima di eseguire ...). ^^
Arnis Lapsa,

+1 per il fattore wow ... esempio abbastanza spettacolare :)
fretje,

37

Potresti presentare una domanda che seleziona un numero casuale. E devi indovinarlo. Se sbagli si dice: più alto o più basso. E se hai indovinato, un bel messaggio.

È bello suonare per gli studenti.

Versione semplice di Python senza controllo degli errori corretto:

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 suggerisce che il computer dovrebbe indovinare il numero. Questo può essere fatto anche entro 10 righe di codice (anche se ora la mancanza di un corretto controllo degli errori è ancora più grave: i numeri validi al di fuori dell'intervallo causano un ciclo infinito):

while input('Want to let the pc play higher/lower? ').lower().startswith('y'):
    n = int(input('Give a number between 1 and 100: '))
    lo, hi, guess, tries = 1, 100, 50, 1

    while guess != n:
        tries += 1
        lo, hi = (guess + 1, hi) if guess < n else (lo, guess - 1)
        guess = (lo + hi) // 2

    print('Computer guessed number in %d tries' % tries)

4
Più interessante sarebbe che l'utente scelga il numero casuale, quindi indovina il computer.
Erik Forbes,

15
Ora fai riprodurre questi due programmi su un socket.
Josh Lee,

3
Sarebbe meglio se al computer non fosse assegnato direttamente il numero. Dovresti dire all'utente di "selezionare un numero compreso tra 1 e 100". Quindi emetti "Immagino 50" e chiedi un input ("superiore", "inferiore" o "corretto") e perfeziona la tua ipotesi.
Ponkadoodle,

L'ho fatto con mio figlio (9) e ha anche il vantaggio di entrare nel pensiero algoritmico, qual è la migliore strategia per trovare il numero corretto nel minor numero di ipotesi.
mbesso,

Penso che tu voglia raw_input. L'input è uguale a eval(raw_input(prompt)). Vedi input .
Jeff Kaufman,

26

Al liceo informatico, io e un paio di amici abbiamo insegnato alla classe come programmare con Delphi. La classe si è concentrata principalmente sulla programmazione con Pascal, quindi Delphi è stato un buon passo successivo. Abbiamo dimostrato la natura guidata dagli eventi di Delphi e le sue capacità RAD. Alla fine della lezione abbiamo mostrato alla classe un'applicazione di esempio e abbiamo chiesto loro di riprodurla. L'applicazione ha chiesto " Sei ubriaco? " Con due pulsanti e No . ... Penso che tu sappia cosa sta per succedere ... il pulsante No ha cambiato posizione al passaggio del mouse ed era quasi impossibile fare clic.

Gli studenti e l'insegnante ne sono stati entusiasti.

Il programma richiedeva solo poche righe di codice scritto dall'utente con una semplice equazione per calcolare dove spostare il pulsante. Non penso che nessuno degli altri studenti l'abbia capito, ma alcuni erano vicini.


7
Non solo divertente, ma un mio collega una volta lo ha fatto in alcuni software, solo che era il pulsante "OK" in una finestra di messaggio. Era un'app utilizzata internamente, quindi non era disapprovata. Lo ha fatto solo una volta in una luna blu. Naturalmente lo avrebbero chiamato e lui avrebbe detto che doveva vederlo accadere se ci avesse creduto. Quindi avrebbe vagato e ovviamente non sarebbe successo quando era lì ...
Jason D,

Ricordo qualcosa del genere .. ma era in flash .. e la domanda era "Sei gay?" .. e il set di pulsanti di un evento di fuochi d'artificio.
glasnt,

2
Sarebbe un momento interessante per insegnare alle persone a navigare attraverso la scheda e lo spazio.
davidahines,

23

Quando ho scoperto per la prima volta il forkbomb bash, ho pensato che fosse davvero dolce. Così semplice, ma pulito in ciò che può fare:

:(){ :|:& };:

7
Ecco una spiegazione abbastanza buona: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr

12
per i nuovi a ragazzi di linux: non correre, altrimenti perderai tutto il tuo lavoro.
Behrooz,

@Behrooz, dipende dalla tua distribuzione, alcuni hanno limiti di thread / fork incorporati.
Razor Storm

Fa un botto su SuSE, ma non fa proprio nulla sulla maggior parte delle distribuzioni basate su Debian.
Behrooz,

Ciò, oltre ai limiti dell'utente, con quale frequenza vengono
svuotate le

22

Questo è un imbroglio, e neanche lontanamente semplice, ma una volta ho scritto uno sparatutto in 20 righe di C ++, usando la libreria grafica Allegro. Nessun vero criterio per quello che era una linea , ma era un po 'di tempo fa, ed è stato creato per puro divertimento. Aveva anche effetti sonori grezzi.

Ecco come appariva:

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

Ed ecco il codice ( dovrebbe compilare):

bool inside(int x, int y, int x2, int y2) { return (x>x2&&x<x2+20&&y>y2&&y<y2+10); }
int main() {
  BITMAP* buffer;
  float px,shotx,shoty,monstars[8],first,rnd,pressed,points = 0, maxp = 0;
  unsigned char midi[5] = {0xC0,127,0x90,25,0x54}, plgfx[] = {0,0,0,10,3,10,3,5,6,5,6,10,8,12,10,10,10,5,13,5,13,10,16,10,16,0,13,0,13,2,3,2,3,0,0,0}, mongfx[] = {0,0, 10,5, 20,0, 17,8, 15,6, 10,16, 5,6, 3,8, 0,0};
  allegro_init(), set_color_depth(32), set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0), install_timer(), install_keyboard(),  install_mouse(), buffer = create_bitmap(320,240),srand(time(NULL)),install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT,""),clear_to_color(buffer,makecol32(100,100,255));
    while ((pressed=(!key[KEY_Z]&&pressed)?0:pressed)?1:1&&(((shoty=key[KEY_Z]&&shoty<0&&pressed==0?(pressed=1?200:200):first==0?-1:shoty)==200?shotx=px+9:0)==9999?1:1) && 1+(px += key[KEY_LEFT]?-0.1:0 + key[KEY_RIGHT]?0.1:0) && 1+int(px=(px<0?0:(px>228?228:px))) && !key[KEY_ESC]) {
    rectfill(buffer,0,0,244,240,makecol32(0,0,0));
    for(int i=0;i<8;i++) if (inside(shotx,shoty,i*32,monstars[i])) midi_out(midi,5);
        for (int i=0; i<8; monstars[i] += first++>8?(monstars[i]==-100?0:0.02):-100, points = monstars[i]>240?points-1:points, monstars[i]=monstars[i]>240?-100:monstars[i], points = inside(shotx,shoty,i*32,monstars[i])?points+1:points, (monstars[i] = inside(shotx,shoty,i*32,monstars[i])?shoty=-1?-100:-100:monstars[i]), maxp = maxp>points?maxp:points, i++) for (int j=1; j<9; j++) line(buffer,i*32+mongfx[j*2 - 2],monstars[i]+mongfx[j*2-1],i*32+mongfx[j*2],monstars[i]+mongfx[j*2+1],makecol32(255,0,0));
    if (int(first)%2000 == 0 && int(rnd=float(rand()%8))) monstars[int(rnd)] = monstars[int(rnd)]==-100?-20:monstars[int(rnd)]; // randomowe pojawianie potworkow
    if (shoty>0) rectfill(buffer,shotx,shoty-=0.1,shotx+2,shoty+2,makecol32(0,255,255)); // rysowanie strzalu
    for (int i=1; i<18; i++) line(buffer,px+plgfx[i*2 - 2],200-plgfx[i*2-1],px+plgfx[i*2],200-plgfx[i*2+1],makecol32(255,255,0));
    textprintf_ex(buffer,font,250,10,makecol32(255,255,255),makecol32(100,100,255),"$: %i   ",int(points)*10);
    textprintf_ex(buffer,font,250,20,makecol32(255,255,255),makecol32(100,100,255),"$$ %i   ",int(maxp)*10);
    blit(buffer, screen, 0, 0, 0, 0, 320,240);
  }
} END_OF_MAIN()

5
Come dovrebbe insegnare qualcosa a qualcuno? Su una nota non correlata, COOL! HA! Lo amo!
slezica,

21

Al giorno d'oggi, JavaScript è un modo eccellente per mostrare come è possibile programmare utilizzando alcuni strumenti davvero basilari, ad esempio il blocco note.

Gli effetti jQuery sono un ottimo punto di partenza per chiunque voglia stupire i propri amici!

In questo, fai clic sullo spazio bianco della pagina.

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(document.body).click(function () {
  if ($("#pic").is(":hidden")) {
    $("#pic").slideDown("slow");
  } else {
    $("#pic").slideUp();
  }
});
</script>
</head>
<body><img id="pic" src="http://www.smidgy.com/smidgy/images/2007/07/26/lol_cat_icanhascheezburger.jpg"/>
</body>
</html>

1
Sarei d'accordo Puoi aprire il blocco note e iniziare a scrivere codice con java script, quindi aprire un browser e sono sicuro che i tuoi studenti saranno colpiti. Questi sono strumenti che ognuno ha e possono cercare molti effetti e cose diverse che possono essere fatte come nell'esempio di Jon.
Jeff Reddy,

1
Non penso sia una buona idea insegnare a qualcuno la base di un linguaggio abbastanza semplice usando una libreria. Puoi farlo facilmente senza usare jQuery e, per un principiante, dovresti. Le biblioteche non sostituiscono la lingua attuale.
Some Guy

Nel caso di javascript, jQuery non è un sostituto di javascript, è un rimpiazzo per i dom (altamente variabili). Che è una grande cosa essere in grado di eludere, per chiunque.
Kzqai,

20

Una cosa che potresti considerare è qualcosa come Robocode , in cui un sacco di codice viene estratto e in pratica dici a un robot cosa fare. Una semplice funzione a 10 righe può far fare molto al robot e ha un risultato molto visivo e facile da seguire.

Forse lo stesso Robocode non è adatto al compito, ma questo genere di cose è un buon modo per mettere in relazione il codice scritto con le azioni visive sul computer, inoltre è divertente fare attenzione quando è necessario fornire esempi.

public class MyFirstJuniorRobot extends JuniorRobot {
 public void run() {
  setColors(green, black, blue);
  // Seesaw forever
  while (true) {
   ahead(100); // Move ahead 100
   turnGunRight(360); // Spin gun around
   back(100); // Move back 100
   turnGunRight(360); // Spin gun around
  }
 }
 public void onScannedRobot() {
  turnGunTo(scannedAngle);
  fire(1);
 }
 public void onHitByBullet() {
  turnAheadLeft(100, 90 - hitByBulletBearing);
 }
}

6
Non conosco il robocode, ma mi sono appassionato alla codifica dopo aver usato il Logo. Essere in grado di disegnare una casa usando avanti, indietro, sinistra, destra, ecc. Ti fa venire in mente istruzioni semplici che eseguono compiti enormi.
Robin Day

1
Sì, ho imparato il logo nel laboratorio informatico della scuola elementare. Ero uno dei bambini che, oltre a pensare che fosse bello, voleva saperne di più.
Travis,

1
+1 per RoboCode! Adoro il robocodice e facevamo gare tra di noi per vedere chi avrebbe inventato i migliori algoritmi
Andreas Grech,

18

Quindi un giorno ho deciso che ne avrei avuto abbastanza. Mi piacerebbe imparare il pianoforte. Vedere persone come Elton John comandare una tale padronanza della tastiera mi ha assicurato che era quello che volevo fare.

In realtà l'apprendimento del pianoforte è stato un grande delusione. Anche dopo aver completato otto gradi di lezioni di piano, non ero ancora impressionato da come la mia immagine mentale di suonare il piano fosse così diversa dalla mia visione originale di godermi l'attività.

Tuttavia, ciò che mi è piaciuto molto sono stati i miei tre soli gradi di rudimenti della teoria musicale. Ho imparato a conoscere la costruzione della musica. Sono stato finalmente in grado di uscire dal mondo della musica scritta e scrivere la mia musica. Successivamente, sono stato in grado di iniziare a suonare ciò che volevo suonare.


Non cercare di stupire i nuovi programmatori, in particolare i giovani programmatori. L'intera nozione di "meno di dieci righe di codice semplice" sembra suscitare uno stato d'animo di "Mostrami qualcosa di intelligente ".

Puoi mostrare a un nuovo programmatore qualcosa di intelligente. È quindi possibile insegnare allo stesso programmatore come replicare questa "performance". Ma questo non è ciò che li aggancia alla programmazione. Insegna loro i rudimenti e lascia che sintetizzino le loro intelligenti dieci righe di codice.

Vorrei mostrare a un nuovo programmatore il seguente codice Python:

input = open("input.txt", "r")
output = open("output.txt", "w")

for line in input:
    edited_line = line
    edited_line = edited_line.replace("EDTA", "ethylenediaminetetraacetic acid")
    edited_line = edited_line.replace("ATP", "adenosine triphosphate")
    output.write(edited_line)

Mi rendo conto che non ho bisogno di assegnare linea edited_line. Tuttavia, è solo per chiarire le cose e per dimostrare che non sto modificando il documento originale.

In meno di dieci righe, ho verbosificato un documento. Naturalmente, assicurati anche di mostrare al nuovo programmatore tutti i metodi di stringa disponibili. Ancora più importante, ho mostrato tre cose fondamentalmente interessanti che posso fare: assegnazione di variabili, un ciclo, file IO e uso della libreria standard.

Penso che accetti che questo codice non abbaglia. In effetti, è un po 'noioso. No, in realtà è molto noioso. Ma mostra quel codice a un nuovo programmatore e vedi se quel programmatore non può riutilizzare ogni parte di quello script in qualcosa di molto più interessante durante la settimana, se non il giorno. Certo, sarà sgradevole per te (forse usando questo script per creare un semplice parser HTML), ma tutto il resto richiede solo tempo ed esperienza.


17

Come la maggior parte degli altri commentatori, ho iniziato a scrivere codice per risolvere problemi di matematica (o per creare grafica per giochi davvero terribili che avrei progettato - cose come Indiana Jones contro Zombi).

Ciò che mi ha veramente iniziato (sia in matematica che in programmazione) è stato passare dal testo, scegliere i tuoi giochi in stile avventura ... a più giochi basati sulla grafica. Ho iniziato a colorare la carta millimetrata e a tracciare i pixel, fino a quando non sono entrato nella geometria ... e ho scoperto come usare le equazioni per tracciare curve e linee, scatole, ecc.

Il mio punto è che avrei potuto davvero entrare in qualcosa di simile all'elaborazione ( http://processing.org/ ) in cui un programma tipico assomiglia a questo:

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

Per me, questo è il "logo" del futuro.

Ci sono semplici esempi di "ciao mondo" che possono far sì che qualcuno disegni e modifichi rapidamente il codice e veda come le cose si rompano e quali strani "incidenti" possano essere creati ... fino all'interazione più avanzata e alla creazione di frattali ...


+1 Penso che l'elaborazione sia un ottimo modo per insegnare il pensiero algoritmico, che è l'argomento più importante che i principianti devono imparare.
Nils,

15

È possibile utilizzare uno script scritto con AutoIt , che offusca la linea tra l'utilizzo di un'applicazione tradizionale e la programmazione.

Ad esempio uno script che apre il blocco note e fa sì che il proprio computer li insulti in esso e tramite una finestra di messaggio, quindi non lascia traccia delle sue azioni:

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

++ Non sono sicuro di dove si adatterebbe in un piano di lezione, ma è carino.
Mike Dunlavey,

13

Ricordo che quando ho iniziato a programmare i loop mi ha sempre impressionato. Scrivi 5-10 righe di codice (o meno) e vengono stampate centinaia (o comunque molte righe). (Ho imparato prima in PHP e Java).

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

13

Penso che un buon posto per iniziare uno studente potrebbe essere Greasemonkey . Ci sono migliaia di script di esempio su userscripts.org, materiale di lettura molto valido, alcuni dei quali molto piccoli. Gli script Greasemonkey influiscono sulle pagine Web, che gli studenti avranno già familiarità con l'uso, se non manipolando. Greasemonkey stesso offre un modo molto semplice per modificare e abilitare / disabilitare gli script durante il test.

Ad esempio, ecco lo script "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'; }

10

Questo è un programma c # testuale molto rudimentale che simula l'azione di rotazione di una slot machine. Non include diverse probabilità di vincite o pagamenti in contanti, ma potrebbe essere un buon esercizio per gli studenti.

Mi dispiace che siano più di 10 righe.

string[] symbols = new[] { "#", "?", "~" }; // The symbols on the reel
Random rand = new Random();

do
{
    string a="",b="",c="";

    for( int i = 0; i < 20; i++ )
    {
        Thread.Sleep( 50 + 25 * i ); // slow down more the longer the loop runs

        if( i < 10 )
            a = symbols[rand.Next( 0, symbols.Length )];

        if( i < 15 )
            b = symbols[rand.Next( 0, symbols.Length )];

        c = symbols[rand.Next( 0, symbols.Length )];

        Console.Clear();
        Console.WriteLine( "Spin: " + a + b + c );
    }

    if( a == b && b == c )
        Console.WriteLine( "You win. Press enter to play again or type \"exit\" to exit" );
    else
        Console.WriteLine( "You lose. Press enter to play again or type \"exit\" to exit" );
}
while( Console.ReadLine() != "exit" );

9

Con Tcl hai un semplice editor di testo con un pulsante di salvataggio in circa 12 righe di codice (ma non aperto, che richiederebbe altre 8 righe). Funziona su tutte le piattaforme standard:

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

Mi rendo conto che l'obiettivo era di 10 righe, quindi se si desidera attenersi a 10 righe o meno, un semplice editor di testo senza caricamento o salvataggio è solo due righe. Non è troppo malandato.

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

Esegui uno dei blocchi di codice sopra con "wish filename " sulla piattaforma che preferisci. Wish viene fornito con la maggior parte dei * nix e del Mac, ma dovrai installarlo manualmente per Windows.

Per fare un ulteriore passo avanti, questo script a due righe può anche essere scritto in Python, sebbene siano necessarie otto righe, sempre con l'obiettivo di 10 righe:

from Tkinter import *
root=Tk()
text = Text(wrap="word")
sb = Scrollbar(orient="vertical", command=text.yview)
text.configure(yscrollcommand=sb.set)
sb.pack(side="right", fill="y")
text.pack(side="left", fill="both", expand=True)
root.mainloop()

9

Che ne dici di un bookmarklet? Mostrerebbe loro come manipolare qualcosa che usano ogni giorno (Internet) senza richiedere strumenti di sviluppo.


Vorrei questo suggerimento, ma sarebbe meglio con un esempio e cosa si può insegnare da esso. Come nell'esempio fornito nella domanda: [code] javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ code] per mostrare l'ordine di funzionamento.
Tylermac,

8

Se puoi permetterti l'hardware, l'uso di una scheda Arduino + l'elaborazione produrrà cose piuttosto interessanti, anche se potrebbe essere un po 'avanzato per le persone che potrebbero non essere interessate alla programmazione.


8

Ne ho scritto di recente in un articolo "Il programma più breve e utile che abbia mai scritto".

Riepilogo: Nel 1996 ho scritto un'app VB6 a 3 righe che uso ancora ogni giorno. Una volta che l'exe viene rilasciato nella cartella "Invia a". Ti consente di fare clic con il pulsante destro del mouse su un file in Explorer e inviare il percorso completo di quel file negli Appunti.

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

Perché il Clipboard.Clear? Rimuove tutto il contenuto dagli appunti, anche i dati non testuali (ad es. Dati di immagini). Questo è in genere non è ciò che si vuole a tutti.
Konrad Rudolph,

Bene, allora forse il programma più corto deve essere la metà della sua dimensione attuale ...
JohnFx,

Davvero pulito. Odio dover scrivere lunghi percorsi e poi mi chiedo se ci sia un refuso
Sylverdrag,

AFAIK nelle versioni "moderne" di Windows è esattamente quello che fa quando si copia il file (Ctrl + C) ... Basta copiare il nome del file. Qualcuno può provare questo (dato che non ho finestre)?
opatut

Ho Windows 7 e NON lo fa.
JohnFx,

7

È interessante menzionare il set di Mandelbrot, poiché la creazione di frattali con GW-BASIC è ciò che ha scatenato il mio amore per la programmazione al liceo (intorno al 1993). Prima di iniziare a conoscere i frattali, scrivevamo noiose applicazioni di deviazione standard e avevo ancora in programma di dedicarmi al giornalismo.

Ma una volta ho visto che il programma BASIC lungo, difficile da scrivere, generava "terreno frattale", sono stato catturato e non ho mai guardato indietro. Ha cambiato il modo in cui ho pensato alla matematica, alla scienza, ai computer e al modo in cui imparo.

Spero che trovi il programma che ha lo stesso effetto sui tuoi studenti.


È fantastico per un progetto del semestre. Vorrei averci pensato quando insegnavo.
Mike Dunlavey,


6

Sono sicuro che si trasformerebbe in più di 10 righe di codice, ma hai preso in considerazione un'app basata su moduli in cui premendo i pulsanti si fanno cose come cambiare il colore dello sfondo o cambiare la dimensione del testo? Ciò mostrerebbe loro come funzionano i programmi interattivi. Mostrerebbe anche loro che, come programmatori, hanno il controllo completo di ciò che fa il computer (programma).

Speriamo che li porti a dare suggerimenti per altre cose che potrebbero cambiare e poi su altre cose che potrebbero voler fare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.