Jaka jest najfajniejsza rzecz, jaką możesz zrobić w <10 liniach prostego kodu? Pomóż mi zainspirować początkujących! [Zamknięte]


406

Szukam najfajniejszej rzeczy, którą możesz zrobić w kilku liniach prostego kodu. Jestem pewien, że możesz napisać zestaw Mandelbrota w Haskell w 15 liniach, ale trudno go wykonać.

Moim celem jest zainspirowanie studentów, że programowanie jest fajne .

Wiemy , że programowanie jest fajne, ponieważ możesz tworzyć wszystko, co sobie wyobrażasz - jest to najlepszy kreatywny rynek zbytu. Chcę zainspirować tych początkujących i sprawić, by przeszli przez jak najwięcej garbów wczesnego uczenia się.

Teraz moje powody są samolubne. Uczę się Intro do obliczeniowe Oczywiście do grupy 60 pół-engineering, pół kierunków biznesowych; wszystkich studentów pierwszego roku. Są to uczniowie pochodzący z upośledzonych szkół średnich. Z mojego doświadczenia z przeszłości, grupa jest ogólnie podzielić w następujący sposób: kilka skalnych gwiazdek , tacy, którzy bardzo się starają i rodzaj dostać, niewielu, którzy bardzo się starają i ledwo dostać, a nieliczni, którzy nie obchodzi. Chcę dotrzeć do jak największej liczby tych grup. Oto przykład, w jaki sposób użyłbym programu komputerowego do nauczania:

Oto przykład tego, czego szukam: 1-liniowy skrypt VBS, aby Twój komputer mógł z Tobą porozmawiać:

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

Mógłbym to wykorzystać do wykazania kolejności operacji. Pokażę kod, pozwolę mu się z nim bawić, a następnie wyjaśnię, że w tej linii wiele się dzieje, ale komputer może to zrozumieć, ponieważ zna reguły. Potem pokazałbym im coś takiego:

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

I widać, że najpierw muszę zrobić (5 * 5). Następnie mogę pomnożyć przez 4. A teraz stworzyłem Obiekt. Dzielenie przez 10 jest takie samo jak wywoływanie Mów - nie mogę mówić, zanim nie mam obiektu, i nie mogę dzielić, zanim mam 100. Następnie z drugiej strony najpierw tworzę InputBox z instrukcjami, jak go wyświetlić . Kiedy klikam Enter w polu wprowadzania, ocenia lub „zwraca” wszystko, co wpisałem. (Wskazówka: „oooooo” wydaje zabawny dźwięk) Więc kiedy mówię Mów, mówisz po prawej stronie. I dostaję to z InputBox.

Więc kiedy robisz kilka rzeczy na linii, na przykład:

x = 14 + y;

Musisz być świadomy kolejności rzeczy. Najpierw dodajemy 14 i y. Następnie umieszczamy wynik (to, co ocenia lub zwraca) w x.

To jest mój cel, aby mieć mnóstwo tych fajnych przykładów, aby zademonstrować i uczyć klasę podczas zabawy. Próbowałem tego przykładu u mojej współlokatorki i chociaż nie mogę tego wykorzystać jako pierwszej lekcji, spodobała jej się i czegoś się nauczyła.

Niektóre fajne programy matematyczne, które tworzą piękne wykresy lub kształty, które są łatwe do zrozumienia, byłyby dobrym pomysłem i przyjrzę się tym. Oto kilka skomplikowanych przykładów skryptów akcji, ale jest to trochę zbyt zaawansowane i nie mogę uczyć flashowania. Jakie masz inne pomysły?


102
Myślę, że pytania dotyczące nauczania programowania są doskonałe i nietrywialne. Powodzenia w tym, co próbujesz zrobić.
Mike Dunlavey

6
„moim celem jest zainspirowanie studentów, że programowanie jest fajne”. Nie sądzę, żebyś mógł powiedzieć ludziom, że programowanie jest fajne. Albo im się to podoba, albo nie.
Rik

2
Twój linijkowy skrypt VBS nie działa na moim komputerze Mac! :-P Dobre pytanie.
John Topley

1
Zawsze lubię tego rodzaju rzeczy, ale komu próbujesz zaimponować, to ja, uszczelka Sierpińskiego, zrobiłbym dobrą robotę. Dla informatyków może być coś, co tworzy pliki, dla niektórych osób rozmowa przy komputerze byłaby imponująca i tak dalej. Więc co się liczy dla odbiorców docelowych, wtedy określasz, co jest fajne.
Oakcool

5
83 osoby głosują za komentarzem na temat tego, jak pytanie to jest „doskonałe i nietrywialne” ... zamknięte jako „niekonstruktywne” przez 5 osób, które najwyraźniej się nie zgadzają. Czy moc nie jest wielka?
rg88

Odpowiedzi:


78

Moje dzieci otrzymały świetną odpowiedź dzięki szybkiemu skryptowi VB do manipulowania postacią Agenta Microsoft. Dla tych, którzy nie znają MS Agent, jest to seria animowanych postaci ekranowych, którymi można manipulować za pomocą interfejsu COM. Możesz pobrać kod i znaki ze strony pobierania Microsoft Agent .

Poniższe kilka wierszy sprawi, że postać Merlina pojawi się na ekranie, będzie latać, pukać po ekranie, aby zwrócić na siebie uwagę i przywitać się.

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"

Istnieje wiele innych poleceń, których możesz użyć. Czekhttp://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx, aby uzyskać więcej informacji.

EDIT 2011-09-02 Niedawno odkryłem, że Microsoft Agent nie jest natywnie zainstalowany w systemie Windows 7. Jest on jednak oferowany jako osobny plik do pobrania tutaj . Nie przetestowałem tego, więc nie mogę zweryfikować, czy działa.


To cudownie. To zasługuje na znacznie więcej pozytywnych opinii.
Tom Ritter

Dzięki za uznanie, Tom. Bani, że nie dostanę punktów powtórzeń, nawet jeśli zaczną się pojawiać pozytywne głosy. :-P
Bob Mc

32
W ten sposób możesz cały czas oglądać spinacz : D
Pedery

8
@Bob BASIC to język dla początkujących. VB nie jest BASIC. VB to szwajcarski scyzoryk, który MS stworzył w celu dopasowania do potrzeb w tym czasie. Obecnie istnieją o wiele lepsze (znacznie bardziej wyspecjalizowane) narzędzia, aby zająć jego miejsce. VB nie jest złym językiem, ma po prostu dużo nadbagażu. Gdybym miał podać jeden całkowicie obiektywny powód, dla którego miałbym tego nie używać, byłoby tak, ponieważ stwardnienie rozsiane powoli rezygnuje z obsługi VB. To umierający język. Poczekaj, aż skrypty pakietu Office zostaną wykonane za pomocą JavaScript (co jest planowane w najbliższej przyszłości), a następnie spadek VB będzie pewny.
Evan Plaice,

3
@Evan - Dzięki za uczciwą odpowiedź, a nie za jakiś religijny jastrych. Ładnie wykonane. Nie słyszałem o przeniesieniu Office JavaScript. Zbada.
Bob Mc

339

Wpisz ten kod w pasku adresu (w przeglądarce) i naciśnij enter. Następnie możesz edytować całą zawartość strony!

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

To najfajniejszy „jeden-liner”, jaki znam =)


95
„One-liner” to takie mylące określenie. To naprawdę 3 linie. Każdy kod może być jednym wierszem, jeśli chcesz.
DisgruntledGoat

5
Wygląda to naprawdę schludnie, ale czy istnieje sposób na uzyskanie strony po zmodyfikowaniu?
Sylverdrag

51
Bardzo mi się podoba, głosowałem za ciebie 999999999 razy !! img707.imageshack.us/img707/4843/jshack.png
JRL

4
To nie jest już prawdą w Firefoksie, ponieważ javascript: został wyłączony. Wstyd.

2
@DisgruntledGoat, javascript:i void 0są płytkami kotłowymi : odpowiednik int main() {iw return 0; }C. Pozostałe dwa wiersze to po prostu różne interfejsy API przeglądarki, które robią to samo: pierwszy to interfejs API IE, drugi to interfejs API NetScape. HTML5 używa contentEditable, więc jeśli nie zależy ci na obsłudze Firefoksa 1.5 lub czegoś podobnego, rzeczywisty kod wynosi:document.body.contentEditable='true';
Zarel

201

Kiedy pierwszy raz to napisałem.

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

To zdmuchnęło ludzi! Komputer zapamiętał ich nazwę!

EDYCJA: Wystarczy dodać do tego. Jeśli uda ci się przekonać nowego programistę, że jest to najfajniejsza rzecz, jaką mogą zrobić, staną się dobrymi programistami. Obecnie możesz zrobić prawie wszystko, co chcesz, za pomocą jednego wiersza kodu, aby uruchomić bibliotekę napisaną przez kogoś innego. Osobiście nie czerpię absolutnie żadnej satysfakcji z tego i nie widzę żadnej korzyści z nauczania tego.


15
byłoby lepiej z następującymi: 40 GOTO 30
spędza

8
+1 za wyświetlanie nazwy użytkownika, ludzie zawsze uwielbiają wyświetlać swoje własne nazwy. @saua, jak to nie jest nieskończona pętla drukowania? Wraca do wiersza 30, a nie do wiersza 20.
z -

13
Na pewno powinno być 10, żeby ktoś mógł wpisać swoje imię ...
Omar Kooheji

17
Zapomniałeś 35 PRINT CHR $ (7)
Adam Jaskiewicz

6
tak też nauczyłem się programowania. To najlepsza odpowiedź imo. +1, aby zaakceptować ten
kliknij Upvote

180

PHP - uszczelka Sierpińskiego aka Triforce

OK, to 15 linii kodu, ale wynik jest niesamowity! Takie rzeczy doprowadzały mnie do szału, gdy byłem dzieckiem. To jest z podręcznika 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);

uszczelka sierpińskiego


25
Dla przypomnienia, to uszczelka Sierpińskiego.
chaos

6
To jest niesamowite, ale myślę, że powinno ono przyjść mniej więcej w połowie kursu, ponieważ opiera się na wielu koncepcjach, takich jak pętle i tablice.
Mike Dunlavey

4
@Masi: ogólną ideą jest posiadanie trzech stałych punktów, które są narożnikami trójkąta, i „bieżącego” punktu, który ciągle aktualizujesz. Aby wykonać ruch, wybierz jeden z rogów losowo i przesuń aktualny punkt w połowie drogi do tego rogu. Kolor w bieżącym punkcie. Następnie wykonaj kolejny ruch w ten sam sposób, a następnie jeszcze kilka tysięcy razy i pojawi się wzór. Następnie wypróbuj go z inną liczbą narożników lub zmień ułamek, o który bieżący punkt przeskakuje w stronę narożnika, aby zobaczyć, jak wpływa na wzór.
Daniel Earwicker

18
Dla przypomnienia, to nie jest uszczelka Sierpińskiego ... To w rzeczywistości Triforce. en.wikipedia.org/wiki/The_Legend_of_Zelda
jason

2
Ten kod wydaje mi się dziwny, ponieważ zwykle widzę, że robi się to z rekurencją (także z bardzo małą liczbą wierszy kodu). W rzeczywistości fraktale są dobrym wstępem do rekurencji na zajęciach z informatyki. Ale wydaje mi się, że ten kod będzie dość nieefektywny, malując i odmalowując wiele pikseli ze względu na swoje losowe podejście.
Steve Wortham

105

Microsoft ma Small Basic , IDE dla „dzieci”.

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

Jest specjalnie zaprojektowany, aby pokazać, jak fajne jest programowanie.


80
To jest do kitu, bo te wywołania z biblioteki wydają się magiczne. Ustawiasz je na dzieciaki skryptów VB. Obawiam się, że nigdy nie będą czaiły się w tym obszarze „czarnej magii” i pozostaną w „bezpiecznym” obszarze wodno-kanalizacyjnym. ... Och, spójrz tutaj, jak zrobić przeglądarkę internetową w jednym wierszu! MSIEControl (.. blabla cokolwiek ...). Show ()
hasen

88
Nie sądzę, żeby dzieci były idiotami. Jeśli podekscytujesz ich możliwościami programowania, dowiedzą się, jak samodzielnie robić bardziej zaawansowane rzeczy. Jeśli nic więcej, młodzi zarażeni testosteronem chłopcy będą próbowali nauczyć się najbardziej tajemniczych, mrocznych magii rzeczy, zanim zdążysz wiedzieć, co się stało.
Tim Lin

28
@hansen j, to niesprawiedliwe, wszyscy muszą gdzieś zacząć.
John Farrell,

30
To nie jest stopień CS dla dzieci, to zabawka do programowania. Niezależnie od tego, czym jest brama, aby dzieci zobaczyły zabawną stronę programowania, to świetnie, że nie musi to być ASM.
Copas

29
Znając dzieci, których próbowałem uczyć, upłynęło około dziesięciu sekund, zanim spróbują pic = Flickr.GetRandomPicture („cycki”)
Iain Galloway,

83

Wydaje mi się, że ludzie są pod wrażeniem rzeczy, z którymi mogą się odnosić lub które są istotne dla ich życia. Spróbuję oprzeć moje 10 wierszy kodu na czymś, co znają i rozumieją. Weźmy na przykład Twittera i jego API. Dlaczego nie wykorzystać tego interfejsu API do stworzenia czegoś fajnego. Poniższe 10 wierszy kodu zwróci „publiczną oś czasu” z Twittera i wyświetli ją w aplikacji konsoli ...

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

Mój przykładowy kod może nie być najlepszy dla twoich uczniów. Jest napisany w C # i używa .NET 3.5. Więc jeśli zamierzasz ich uczyć PHP, Java lub C ++, nie będzie to przydatne. Chodzi mi jednak o to, że poprzez powiązanie 10 linii kodu z czymś „fajnym, interesującym i istotnym dla studentów, twoja próbka również staje się fajna, interesująca i odpowiednia.

Powodzenia!

[Tak, wiem, że przegapiłem kilka wierszy użycia instrukcji i metody Main, ale zgaduję, że 10 linii nie musiało być dosłownie 10 liniami]


To jest naprawdę fajne! Nie znałem obiektu SyndicationFeed - dzięki za kod!
Tad Donaghe

Docelowi odbiorcy to nie-maniacy, ergo, nie obchodzą ich głośniki wysokotonowe?
Peufeu,

80

To jest serwer telnet w Pythonie, który poprosi o nazwę użytkownika i przywitać się z nim. Wygląda to świetnie, ponieważ komunikujesz się ze swoim programem z innego komputera w sieci.

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

Myślę, że ciężko jest być teraz nauczycielem komputerowym. Jestem. Stajemy w obliczu coraz bardziej stromej bitwy pod górę. Nasi uczniowie są niezwykle wyrafinowanymi użytkownikami i imponowanie im wymaga wiele wysiłku. Mają tak wiele dostępnych narzędzi, które robią niesamowite rzeczy.

Prosty kalkulator w 10 liniach kodu? Dlaczego? Mam do tego TI-86.

Skrypt, który stosuje efekty specjalne do obrazu? Po to jest Photoshop. A Photoshop zdmuchuje wszystko, co możesz zrobić, w 10 liniach.

Co powiesz na zgrywanie płyt CD i konwersję pliku do formatu MP3? Uhh, mam już 50 000 piosenek, które dostałem od BitTorrenta. Są już w formacie MP3. Gram na nich na moim iPhonie. Kto i tak kupuje płyty CD?

Aby wprowadzić doświadczonych użytkowników do programowania, musisz znaleźć coś, co:

a) dotyczy czegoś, co wydaje się interesujące i fajne, oraz b) robi coś, czego nie może już zrobić.

Załóżmy, że uczniowie mają już dostęp do najdroższego oprogramowania. Wiele z nich ma pełną wersję Adobe CS5.5 (cena detaliczna: 2600 USD; rzeczywista cena: bezpłatna) i można łatwo uzyskać dowolną aplikację, która normalnie zniszczyłaby budżet Twojego działu.

Ale zdecydowana większość z nich nie ma pojęcia, jak to właściwie działa.

Są niezwykle kreatywną grupą: lubią tworzyć. Chcą tylko móc zrobić lub zrobić coś, czego nie mogą zrobić ich przyjaciele. Chcą się czym chwalić.

Oto kilka rzeczy, które rezonują z moimi uczniami:

  • HTML i CSS. Od nich dowiadują się, jak działają motywy MySpace i mogą je dostosowywać.
  • Mashups. Wszyscy je widzieli, ale nie wiedzą, jak je stworzyć. Sprawdź Yahoo! Rury . Istnieje wiele możliwych do nauczenia momentów, takich jak RSS, XML, filtrowanie tekstu, mapowanie i wizualizacja. Gotowe widżety mashup mogą być osadzone na stronach internetowych.
  • Grafika Spójrz na sztukę bezkontekstową . Rekurencja i randomizacja są kluczem do robienia pięknych zdjęć.
  • Opowiadanie. Dzięki łatwemu w użyciu środowisku programistycznemu 3D, takim jak Alice , łatwo jest tworzyć wysokiej jakości, wciągające historie, używając jedynie techniki „przeciągnij i upuść”.

Żadne z nich nie obejmuje programowania w tradycyjnym znaczeniu. Ale wykorzystują potężne biblioteki. Myślę o nich jako o innym rodzaju programowania.


11
+1 Bardzo podobało mi się to, jak opisałeś dzieci, które mają 50 000 piosenek z bittorrent i Adobe CS4 za darmo, to oczywiście rzeczywistość
thomasrutter,

Napisz prosty algorytm wyszukiwania binarnego w pythonie. Rozerwij książkę telefoniczną pół razy, aby opisać, jak to działa. To proste, ale potężne aspekty programowania, których doświadczeni programiści często przeoczają, a nowicjusze patrzą z podziwem. większość ludzi nie zdaje sobie sprawy, że ich monitory odświeżają co najmniej połowę pikseli na monitorze 60-120 / s. robić wyścigi ludzkie z komputerowymi. zabawne rzeczy. zobacz więcej pomysłów: academicearth.org/courses/introduction-to-computer-science-i : i cokolwiek zrobisz ... nie ucz ich ANSI C jako pierwszego języka. Byłem tam, to było do bani.
Evan Plaice,

3
Jeśli dostosowujesz witryny, dlaczego nie użyć Greasemonkey?
new123456

Kilka przemyśleń na temat twoich przykładów: ponownie w Photoshopie, musisz tylko zwrócić uwagę na oczywiste - w Photoshopie możesz zmienić 1 obraz, a za pomocą skryptów możesz zmienić setki tysięcy. A jeśli chodzi o pliki MP3, masz rację, nikt już nie pobiera płyt CD, ale możesz (jeśli nie byłoby to zgodne z prawem) wyjaśnić, że mogą napisać program, który automatycznie pobierze najnowszą muzykę bezpośrednio na iPoda.
Jeff Welling,

@Jeff Dobrze posługując się programem Photoshop, możesz wprowadzać partie i akcje, aby wprowadzać zmiany w dowolnej liczbie plików. To zadziwiające, jak wiele czasu uważa się obecnie za komputery.
John

63

Znalazłem dużą ulubioną (w 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>"

Odkryłem, że początkujący uczniowie mają kilka koncepcji, które należy naprawić.

  • Komputery nie czytają w twoich myślach.
  • Komputery robią tylko jedną rzecz na raz, nawet jeśli robią to tak szybko, że wydają się to robić naraz.
  • Komputery to tylko głupie maszyny i robią tylko to, co im się mówi.
  • Komputery rozpoznają tylko niektóre rzeczy i są one jak elementy składowe.
  • Kluczową koncepcją jest to, że zmienna to coś, co zawiera wartość, a jej nazwa różni się od tej wartości.
  • Różnica między godziną edycji programu a czasem jego uruchomienia.

Powodzenia w twojej klasie. Jestem pewien, że poradzisz sobie dobrze.

PS Jestem pewien, że rozumiesz, że oprócz materiału i umiejętności uczysz także postawy, a to jest równie ważne.


Współczesne komputery robią o wiele więcej niż jedną rzecz na raz.
dreamlax

Ale czy twój kod robi więcej niż jedną rzecz na raz?
JeffO

5
@dreamlax: Oczywiście masz rację, ale nie dzielmy włosów. Mówimy o wprowadzaniu komputerów dla dzieci i zapewnianiu im podstawowych mentalnych elementów składowych. Równoległość może przyjść później.
Mike Dunlavey

1
@Ben S: Czy przypadkiem usunąłeś spację przed linią 10? Włożyłem to, ponieważ wygląda na to, że formatyzator SO wydaje się wgniatać pierwszą linię o 1 spację. Zastanawiam się, czy jest lepszy sposób na wyrównanie kodu?
Mike Dunlavey

2
@foljs: Gosh! Naprawdę? :-) Dreamlax miał ten sam punkt. Chodzi o to, że kiedy pracujesz z ludźmi, którzy nic nie wiedzą o komputerach, wydaje im się, że wszystko dzieje się naraz, więc musimy sobie z tym poradzić, nie dzieląc włosów. Tak naprawdę bardzo podstawowa koncepcja brzmi: „Najpierw robi A, potem B i tak dalej”.
Mike Dunlavey

62

Ten kod C może być zaciemniony, ale uznałem go za bardzo potężny

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

A oto wynik ... Tylko w 3 liniach ... Rodzaj fraktala 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
Miły! Szkoda, że ​​nie ma tam żadnego miejsca, które powiedziałoby „Hello World!”
Ponkadoodle

To jest piękne! Model Mandelbrota: D
Aniket

45

Co powiesz na pokazanie, że możesz wziąć dowolną przeglądarkę internetową i wpisać JavaScript w pasku adresu i uzyskać kod do wykonania?

EDYCJA: Przejdź do strony z dużą ilością zdjęć i spróbuj tego w pasku adresu:

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, ale powinieneś podać konkretny przykład, o którym wiesz ...
hasen

1
@John: Proszę podać konkretny przykład. Użyłem JS tylko na moim serwerze, eksportując plik JS. Nigdy nie umieszczałem kodu na pasku adresu.
Léo Léopold Hertz

7
Cóż, niezbyt ekscytujący przykład, ale możesz zrobić javascript: alert („Hello World”);
John Topley,

Wolę: „javascript: for (var i = 0; i> -1; i ++) alert („ Gratulacje, naciśniesz klawisz Enter dla czasów „+ i +”! ”);”. (Przeczytaj ten kod przed uruchomieniem ...). ^^
Arnis Lapsa

+1 za współczynnik wow ... całkiem spektakularny przykład :)
fretje

37

Możesz utworzyć aplikację, która wybiera losową liczbę. I musisz to zgadnąć. Jeśli się mylisz, mówi: wyżej lub niżej. A jeśli się domyśliłeś, fajna wiadomość.

Fajnie jest grać dla studentów.

Prosta wersja Python bez prawidłowego sprawdzania błędów:

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 sugeruje, aby komputer odgadł numer. Można to zrobić również w obrębie 10 wierszy kodu (choć teraz brak właściwego sprawdzania błędów jest jeszcze poważniejszy: prawidłowe liczby poza zakresem powodują nieskończoną pętlę):

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
Bardziej interesujące byłoby, gdyby użytkownik wybrał losową liczbę, a następnie zgadł.
Erik Forbes,

15
Teraz te dwa programy będą się odtwarzać przez gniazdo.
Josh Lee,

3
Byłoby lepiej, gdyby komputer nie otrzymał numeru bezpośrednio. Powinieneś powiedzieć użytkownikowi, aby „wybrał liczbę od 1 do 100”. Następnie wypisz „Zgaduję 50” i poproś o dane wejściowe („wyższy”, „niższy” lub „poprawny”) i popraw swoje przypuszczenie.
Ponkadoodle

Zrobiłem to z moim synem (9) i ma on również tę zaletę, że zajmuje się myśleniem algorytmicznym, co jest najlepszą strategią znalezienia właściwej liczby w jak najkrótszej liczbie zgadnięć.
mbesso,

Myślę, że chcesz raw_input. Dane wejściowe są równe eval(raw_input(prompt)). Zobacz dane wejściowe .
Jeff Kaufman

26

W szkole średniej wraz z kilkoma przyjaciółmi nauczyłem klasę programowania w Delphi. Zajęcia koncentrowały się głównie na programowaniu w Pascalu, więc Delphi był kolejnym dobrym krokiem. Wykazaliśmy charakter Delphi sterowany zdarzeniami i jego możliwości RAD. Pod koniec lekcji pokazaliśmy klasie przykładową aplikację i poprosiliśmy o jej odtworzenie. Aplikacja zapytała „ Czy jesteś pijany? ” Za pomocą dwóch przycisków Tak i Nie . ... Myślę, że wiesz, co będzie dalej ... Przycisk Brak zmienił położenie myszy na myszy i prawie niemożliwe było kliknięcie.

Uczniowie i nauczyciel dobrze to wyszli.

Program wymagał tylko kilku wierszy kodu napisanego przez użytkownika za pomocą prostego równania, aby obliczyć, gdzie przesunąć przycisk. Nie sądzę, żeby którykolwiek z pozostałych uczniów to rozgryzł, ale kilku było blisko.


7
Nie tylko zabawne, ale mój współpracownik zrobił to kiedyś w niektórych programach, tylko był to przycisk „OK” w oknie komunikatu. Była to aplikacja używana wewnętrznie, więc nie była zdziwiona. Zrobił to tylko raz na niebieskim księżycu. Oczywiście, że zadzwonią do niego, a on powie, że musi to zobaczyć, jeśli ma w to uwierzyć. Więc błąkał się i oczywiście to nie zdarzyło się, gdy tam był ...
Jason D

Pamiętam coś takiego ... ale to było we flashu ... a pytanie brzmiało: "Czy jesteś gejem?" ... i kliknięcie przycisku zestawu fajerwerków.
glasnt

2
Byłby to ciekawy czas, aby nauczyć ludzi poruszania się po kartach i spacji.
davidahines,

23

Kiedy po raz pierwszy wymyśliłem bash Forkbomb, pomyślałem, że to naprawdę słodkie. Tak prosty, ale schludny w tym, co może zrobić:

:(){ :|:& };:

7
Oto całkiem dobre wytłumaczenie: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr

12
dla nowych w Linuksie: nie biegaj, inaczej stracisz całą swoją pracę.
Behrooz

@ Behrooz, zależy od twojej dystrybucji, niektóre mają wbudowane dowolne limity wątków / wideł.
Razor Storm

To robi wielki wybuch na SuSE, ale nie robi nic na większości dystrybucji opartych na Debianie.
Behrooz

To, podobnie jak ograniczenia użytkowników, częstotliwość
opróżniania

22

Jest to oszustwo, a nawet nie dość proste, ale kiedyś napisałem shoot'em w 20 liniach C ++, korzystając z biblioteki graficznej Allegro. Brak prawdziwych kryteriów określających linię , ale było to trochę wcześniej i zostało stworzone wyłącznie dla zabawy. Miał nawet prymitywne efekty dźwiękowe.

Oto jak to wyglądało:

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

A oto kod ( powinien się skompilować):

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
Jak to ma kogokolwiek nauczyć? Na niepowiązaną notatkę, COOL! HA! Pokochałem to!
Slezica

21

W dzisiejszych czasach JavaScript jest doskonałym sposobem na pokazanie, jak można programować za pomocą naprawdę podstawowych narzędzi, np. Notatnika.

Efekty jQuery to świetny punkt wyjścia dla każdego, kto chce zachwycić swoich znajomych!

W tym kliknij po prostu biały obszar strony.

<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
Zgodziłbym się. Możesz otworzyć notatnik i zacząć kodować za pomocą skryptu Java, a następnie otworzyć przeglądarkę i jestem pewien, że Twoi uczniowie będą pod wrażeniem. Są to narzędzia, które każdy ma i mogą wyszukiwać wiele różnych efektów i rzeczy, które można zrobić, na przykład Jona.
Jeff Reddy,

1
Nie sądzę, że dobrym pomysłem jest nauczenie kogoś podstawy dość prostego języka za pomocą biblioteki. Możesz to łatwo zrobić bez użycia jQuery, a dla początkujących powinieneś. Biblioteki nie zastępują rzeczywistego języka.
Some Guy

W przypadku javascript, jQuery nie zastępuje javascript, lecz zastępuje (wysoce zmienne) domeny. To świetna rzecz dla każdego.
Kzqai

20

Jedną rzeczą, którą możesz wziąć pod uwagę, jest coś w rodzaju Robocode , w którym dużo kodowania jest oderwane i po prostu mówisz robotowi, co ma robić. Prosta funkcja 10-liniowa może sprawić, że robot zrobi wiele, i ma bardzo wizualny i łatwy do naśladowania wynik.

Być może sam Robocode nie jest odpowiedni do tego zadania, ale tego rodzaju rzecz jest dobrym sposobem na powiązanie napisanego kodu z działaniami wizualnymi na komputerze, a ponadto fajnie jest obserwować, kiedy trzeba podać przykłady.

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
Nie wiem o robocode, ale zacząłem kodować po użyciu Logo. Zdolność do narysowania domu za pomocą naprzód, do tyłu, w lewo, w prawo itp. To pozwala ci myśleć o prostych instrukcjach wykonujących ogromne zadania.
Robin Day

1
Tak, nauczyłem się Logo w pracowni komputerowej w szkole podstawowej. Byłem jednym z dzieciaków, które, nie sądząc, że było fajnie, chciały dowiedzieć się więcej.
Travis

1
+1 dla RoboCode! Uwielbiam kod roboc i robiliśmy zawody między sobą, aby zobaczyć, kto wymyśli najlepsze algorytmy
Andreas Grech

18

Więc pewnego dnia zdecydowałem, że mam dość. I będzie nauka gry na pianinie. Widząc, że ludzie tacy jak Elton John władają takim opanowaniem klawiatury, zapewniłem mnie, że to właśnie chciałem zrobić.

W rzeczywistości nauka gry na pianinie była ogromnym rozczarowaniem. Nawet po ukończeniu ośmiu klas lekcji gry na fortepianie wciąż nie byłem pod wrażeniem tego, jak bardzo mój umysł gry na fortepianie różni się od mojej pierwotnej wizji czerpania przyjemności z tej gry.

Jednak najbardziej podobały mi się moje zaledwie trzy stopnie podstaw teorii muzyki. Dowiedziałem się o budowie muzyki. W końcu mogłem wyjść ze świata muzyki pisanej do pisania własnej muzyki. Następnie mogłem zacząć grać w to, w co chciałem grać.


Nie próbuj olśnić nowych programistów, zwłaszcza młodych programistów. Całe pojęcie „mniej niż dziesięć wierszy prostego kodu” wydaje się wywoływać nastrój „Pokaż mi coś sprytnego ”.

Możesz pokazać nowemu programistowi coś sprytnego. Następnie możesz nauczyć tego samego programistę replikacji tej „wydajności”. Ale nie to ich uzależnia od programowania. Naucz ich podstaw i pozwól im zsyntetyzować własne sprytne dziesięć linii kodu.

Chciałbym pokazać nowemu programistowi następujący kod 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)

Zdaję sobie sprawę, że nie trzeba przypisać linedo edited_line. Jednak to tylko po to, aby wszystko było jasne i pokazać, że nie edytuję oryginalnego dokumentu.

W mniej niż dziesięciu wierszach zwerbowałem dokument. Oczywiście, pamiętaj również, aby pokazać nowemu programistowi wszystkie dostępne metody ciągów znaków . Co ważniejsze, pokazałem trzy fundamentalnie interesujące rzeczy, które mogę zrobić: przypisanie zmiennych, pętla, operacje wejścia / wyjścia pliku i użycie standardowej biblioteki.

Myślę, że zgodzisz się, że ten kod nie oślepia. W rzeczywistości jest to trochę nudne. Nie - właściwie to jest bardzo nudne. Ale pokaż ten kod nowemu programistowi i sprawdź, czy ten programista nie może zmienić przeznaczenia każdej części tego skryptu na coś bardziej interesującego w ciągu tygodnia, jeśli nie w ciągu dnia. Oczywiście, będzie to dla ciebie niesmaczne (być może użycie tego skryptu do stworzenia prostego parsera HTML), ale wszystko inne wymaga czasu i doświadczenia.


17

Podobnie jak większość innych komentatorów, zacząłem pisać kod, aby rozwiązać problemy matematyczne (lub stworzyć grafikę dla naprawdę okropnych gier, które bym zaprojektował - na przykład Indiana Jones kontra Zombies).

To, co naprawdę mnie zapoczątkowało (zarówno w zakresie matematyki, jak i programowania), to przejście od tekstu, wybieranie własnych gier w stylu przygodowym ... do gier opartych na grafice. Zacząłem kolorować papier milimetrowy i drukować piksele, aż doszedłem do geometrii ... i odkryłem, jak używać równań do kreślenia krzywych i linii, pól itp.

Chodzi mi o to, że naprawdę mogłem dostać się do czegoś takiego jak przetwarzanie ( http://processing.org/ ), gdzie typowy program wygląda mniej więcej tak:

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

Dla mnie jest to „Logo” przyszłości.

Istnieją proste przykłady „hello world”, które mogą szybko sprawić, że ktoś narysuje i zmieni kod i zobaczy, jak się psują i jakie dziwne „wypadki” można stworzyć ... aż do bardziej zaawansowanej interakcji i tworzenia fraktali ...


+1 Myślę, że przetwarzanie to świetny sposób na naukę myślenia algorytmicznego, który jest najważniejszym tematem, którego powinni nauczyć się początkujący.
Nils

15

Możesz użyć skryptu napisanego za pomocą AutoIt , który zaciera granicę między używaniem tradycyjnej aplikacji a programowaniem.

Np. Skrypt, który otwiera notatnik i powoduje, że jego własny komputer obraża go w nim i za pomocą okna komunikatu, a następnie nie pozostawia śladu swoich działań:

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

++ Nie jestem pewien, gdzie by to pasowało w planie lekcji, ale jest urocze.
Mike Dunlavey

13

Pamiętam, kiedy po raz pierwszy zacząłem kodować pętle, zawsze zrobiły na mnie wrażenie. Piszesz 5–10 wierszy kodu (lub mniej) i drukujesz setki (lub tyle, ile określisz) wierszy. (Nauczyłem się najpierw w PHP i Javie).

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

13

Myślę, że dobrym miejscem dla studenta może być Greasemonkey . Istnieją tysiące przykładowych skryptów na userscripts.org, bardzo dobry materiał do czytania, z których niektóre są bardzo małe. Skrypty Greasemonkey wpływają na strony internetowe, z którymi studenci będą już korzystać, jeśli nie manipulować nimi. Sam Greasemonkey oferuje bardzo łatwy sposób edycji i włączania / wyłączania skryptów podczas testowania.

Jako przykład podajemy skrypt „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

Jest to bardzo podstawowy program napisany w języku C #, który symuluje wirujące działanie automatu do gry. Nie obejmuje różnych szans na wygraną ani wypłatę gotówki, ale może to być przyjemne ćwiczenie dla studentów.

Przepraszam, że to więcej niż 10 linii.

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

Z Tcl masz prosty edytor tekstu z przyciskiem zapisu w około 12 wierszach kodu (ale bez otwarcia, to zajmie kolejne 8 wierszy). Działa na wszystkich standardowych platformach:

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

Zdaję sobie sprawę, że celem było 10 linii, więc jeśli chcesz trzymać się 10 linii lub mniej, prosty edytor tekstu bez obciążenia lub zapisu to tylko dwie linie. To nie jest zbyt obskurne.

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

Wykonaj jeden z powyższych bloków kodu za pomocą „wish filename ” na wybranej platformie. Wish jest dostarczany z większością * nix i mac, ale musisz zainstalować go ręcznie w systemie Windows.

Aby pójść o krok dalej, ten skrypt dwuwierszowy można również napisać w pythonie, choć zajmuje on osiem wierszy, wciąż poniżej celu 10 linii:

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

Co powiesz na bookmarklet? Pokaże im, jak manipulować czymś, z czego korzystają na co dzień (Internet), bez konieczności używania jakichkolwiek narzędzi programistycznych.


Chciałbym tę sugestię, ale byłoby lepiej z przykładem i tego, czego można się z tego nauczyć. Tak jak w przykładzie podanym w pytaniu: [kod] javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ code], aby pokazać kolejność operacji.
tylermac

8

Jeśli możesz sobie pozwolić na sprzęt, użycie karty Arduino + spowoduje całkiem fajne rzeczy, choć może być nieco zaawansowane dla osób, które mogą nie być wcale zainteresowane programowaniem.


8

Pisałem o tym niedawno w artykule „Najkrótszy, najbardziej przydatny program, jaki kiedykolwiek napisałem”.

Podsumowanie: W 1996 roku napisałem 3-liniową aplikację VB6, z której wciąż korzystam każdego dnia. Gdy plik exe zostanie upuszczony w folderze „Send-to”. Pozwala kliknąć prawym przyciskiem myszy plik w Eksploratorze i wysłać pełną ścieżkę tego pliku do schowka.

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

Dlaczego Clipboard.Clear? Usuwa całą zawartość ze schowka, nawet dane nietekstowe (np. Dane obrazu). Zasadniczo nie jest to w ogóle to, czego chcesz.
Konrad Rudolph

Cóż, więc może najkrótszy program musi mieć połowę swojego obecnego rozmiaru ...
JohnFx,

Naprawdę fajnie. Nienawidzę konieczności wpisywania długich ścieżek, a potem zastanawiam się, czy jest literówka
Sylverdrag,

AFAIK w „nowoczesnych” wersjach systemu Windows, co dokładnie robi podczas kopiowania pliku (Ctrl + C) ... Po prostu kopiowanie nazwy pliku. Czy ktoś może tego spróbować (ponieważ nie mam okien)?
opatut

Mam Windows 7 i NIE robi tego.
JohnFx

7

Ciekawe, że wspomniałeś o zestawie Mandelbrota, ponieważ tworzenie fraktali za pomocą GW-BASICa wywołało moją miłość do programowania w szkole średniej (około 1993 r.). Zanim zaczęliśmy uczyć się o fraktalach, napisaliśmy nudne aplikacje odchylania standardowego i nadal planowałem zająć się dziennikarstwem.

Ale kiedy zobaczyłem, że ten długi, trudny do napisania program BASIC generuje „teren fraktalny”, byłem uzależniony i nigdy nie oglądałem się za siebie. Zmieniło to sposób, w jaki myślałem o matematyce, nauce, komputerach i sposobie uczenia się.

Mam nadzieję, że znajdziesz program, który ma taki sam wpływ na twoich uczniów.


To świetnie w przypadku projektu semestralnego. Chciałbym o tym pomyśleć, kiedy uczyłem.
Mike Dunlavey


6

Jestem pewien, że zmieniłoby się to w ponad 10 wierszy kodu, ale czy zastanawiałeś się nad aplikacją opartą na formularzu, w której naciskanie przycisków powoduje zmianę koloru tła lub zmianę rozmiaru tekstu? To pokaże im, jak działają programy interaktywne. Pokazałby im również, że jako programista mają pełną kontrolę nad tym, co robi komputer (program).

Mam nadzieję, że doprowadzi ich to do zasugerowania innych rzeczy, które mogą zmienić, a następnie innych rzeczy, które mogą chcieć zrobić.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.