Co jest najfajniejsze, co można zrobić w

Szukam najfajniejszej rzeczy, którą możesz zrobić w kilku linijkach prostego kodu. Jestem pewien, że możesz napisać Mandelbrota w Haskell w 15 linijkach , ale jest to trudne do naśladowania.

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

Wiemy, że programowanie jest fajne, ponieważ możesz stworzyć wszystko, co sobie wyobrazisz - to najlepszy Twórczy punkt wyjścia. Chcę zainspirować tych początkujących i uzyskać ich przez tyle garb wczesnej nauki, jak ja może.

Moje powody są samolubne. Uczę wstępu do informatyki dla grupy 60 pół-inżynierów, pół-biznesmenów, wszystkich pierwszaków. Są to uczniowie, którzy pochodzili z upośledzonych szkół średnich. Z mojego doświadczenia wynika, że grupa jest ogólnie podzielona w następujący sposób: kilka gwiazd rocka , niektórzy, którzy bardzo się starają i w pewnym sensie rozumieją, niewielu, którzy bardzo się starają i ledwo rozumieją, i niewielu, którym to nie zależy. Chcę dotrzeć do jak wielu z tych grup tak efektywnie, jak tylko mogę. Oto przykład, jak używam programu komputerowego do nauczania:

Oto przykład tego, co szukam za: 1-liniowy skrypt VBS, aby uzyskać swój komputer do rozmowy:

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

Mógłbym użyć tego do zademonstrowania porządku operacji. Pokazałbym kod, niech bawią się nim, a następnie wyjaśniają, że Dużo się dzieje w tej linii, ale komputer potrafi to zrozumieć, bo zna zasady. Wtedy bym Pokaż im coś takiego:

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

I widzisz, że najpierw muszę do is (5*5). Wtedy mogę pomnożyć dla 4. A teraz stworzyłem obiekt. Dzielenie przez 10 jest tym samym co wywołanie Speak - I can ' t Speak before I have an / align = "left" / weź 100. Potem po drugiej stronie I najpierw Utwórz InputBox z kilkoma instrukcje, jak go wyświetlić. Kiedy nacisnę enter na polu wprowadzania to ewaluuje lub "zwraca" cokolwiek I wszedł. (Podpowiedź: 'ooooo' sprawia, że funny sound) więc kiedy mówię mów, prawa strona jest tym, co mówić. I Ja weź to ze skrzynki odbiorczej.

Więc kiedy robisz kilka rzeczy na linia, jak:

x = 14 + y;

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

To jest mój cel, aby mieć kilka tych fajnych przykładów, aby zademonstrować i uczyć klasę, podczas gdy oni dobrze się bawią. Wypróbowałem ten przykład na moja współlokatorka i chociaż mogę nie używać tego jako pierwszej lekcji, ona to lubiła i czegoś się nauczyła.

Niektóre fajne programy mathematica, które tworzą piękne wykresy lub kształty, które są łatwe do zrozumienia, byłyby dobrymi pomysłami i zamierzam się nimi przyjrzeć. Oto kilka skomplikowanych przykładów actionscript , ale to trochę zbyt zaawansowane i nie mogę nauczyć Flasha. Jakie masz inne pomysły?
Author: George Stocker, 2009-05-01

30 answers

Dostałem świetną odpowiedź od moich dzieci z szybkim skryptem VB do manipulowania postacią agenta Microsoft. Dla tych, którzy nie są zaznajomieni z MS Agent, jest to seria animowanych postaci na ekranie, które można manipulować za pomocą interfejsu COM. Kod i znaki można pobrać ze strony pobierania Microsoft Agent.

Kilka szalonych linii sprawi, że postać Merlina pojawi się na ekranie, będzie latać, pukać po ekranie, aby zwrócić na siebie uwagę i powiedzieć Witam.

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ć. Sprawdź http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx aby uzyskać więcej informacji.

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

 78
Author: Bob Mc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-02 12:56:11

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 najfajniejsze "jednoliniowe" jakie znam =)

 339
Author: Espen Herseth Halvorsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-17 11:59:39

Kiedy po raz pierwszy to napisałem.

10 PRINT "What is your name?"
20 INPUT A$
30 PRINT "Hello " A$
40 GOTO 30
To rozwaliło ludzi! Komputer zapamiętał ich imię!

EDIT: żeby dodać do tego. Jeśli przekonasz nowego programistę, że jest to najfajniejsza rzecz, jaką mogą zrobić, staną się dobrymi programistami. W dzisiejszych czasach możesz zrobić prawie wszystko, za pomocą jednej linii kodu, aby uruchomić bibliotekę napisaną przez kogoś innego. Ja osobiście nie mam absolutnie żadnej satysfakcji z robienia tego i nie widzę żadnych korzyści w nauczaniu tego.

 201
Author: Robin Day,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-04 14:23:01

PHP-Uszczelka Sierpińskiego vel Triforce

OK, to 15 linijek kodu, ale wynik jest niesamowity! Takie rzeczy doprowadzały mnie do szału, kiedy 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

 180
Author: markus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-19 02:32:39

[1]}Microsoft ma Small Basic , IDE dla "dzieci".

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

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

 105
Author: Bob Fanger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-23 18:25:51

Myślę, że ludzie są pod wrażeniem rzeczy, które mogą odnosić się do lub są istotne dla ich życia. Spróbowałbym oprzeć moje 10 linijek kodu na czymś, co oni znają i rozumieją. Weźmy na przykład Twitter i jego API. Dlaczego nie użyć tego API, aby zbudować coś, co jest fajne. Kolejne 10 linii kodu zwróci "publiczną oś czasu" z Twittera i wyświetli ją w aplikacji konsolowej...

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

Moja próbka kodu może nie być najlepsza dla Twoich uczniów. On napisany w C# i używa. NET 3.5. Więc jeśli masz zamiar nauczyć ich PHP, Java, lub c++ to nie będzie przydatne. Chodzi mi jednak o to, że łącząc 10 linii kodu z czymś " fajnym, interesującym i istotnym dla uczniów, twoja próbka również staje się fajna, interesująca i istotna.

Powodzenia!

[tak, Wiem, że przegapiłem kilka linijek użycia instrukcji i głównej metody, ale zgaduję, że 10 linijek nie musiało być dosłownie 10 linijek]

 83
Author: Martin Peck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-27 04:43:40

Jest to serwer Telnet w języku Python, który zapyta o nazwę użytkownika i przywita się z nim. Wygląda to fajnie, ponieważ komunikujesz się z programem z innego komputera przez sieć.

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()
 80
Author: user17918,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-17 12:00:25

Myślę, że w dzisiejszych czasach ciężko jest być pedagogiem komputerowym. Jestem. Stoczymy coraz bardziej stromą bitwę pod górę. Nasi uczniowie są niezwykle wyrafinowanymi użytkownikami i potrzeba wiele, aby zaimponować im. Mają tak wiele dostępnych narzędzi, które robią niesamowite rzeczy.

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

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

Może zgrywanie płyty CD i konwersja pliku do MP3? Uhh, Mam już 50.000 piosenek, które dostałem z BitTorrenta. Są już w formacie MP3. Odtwarzam je na moim iPhonie. Kto kupuje płyty?

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

A) dotyczy czegoś, co uważają za interesujące i fajne, a b) robi coś, czego już nie mogą zrobić.

Zakładaj swoich uczniów 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że łatwo uzyskać dowolną aplikację, która normalnie złamałaby budżet Twojego działu.

jednak zdecydowana większość z nich nie ma pojęcia, jak te "komputerowe rzeczy" faktycznie działają.

Są niesamowicie kreatywną grupą: lubią tworzyć rzeczy. Po prostu chcą być w stanie zrobić lub zrobić coś, co ich przyjaciele chcą się czymś pochwalić.

Oto kilka rzeczy, które znalazłem, aby rezonować z moimi uczniami:

  • HTML i CSS. od tych uczą się, jak działają motywy MySpace i mogą je dostosować.
  • mashupy.Wszyscy je widzieli, ale nie wiedzą, jak je stworzyć. Sprawdź Yahoo! Rury . Istnieje wiele momentów, które można uczyć, takich jak RSS, XML, filtrowanie tekstu, mapowanie i wizualizacja. Ukończone widżety mashup mogą być osadzone na stronach internetowych.
  • grafika. spójrz na Sztuka bez kontekstu . Rekurencja i randomizacja są kluczem do tworzenia pięknych zdjęć.
  • opowiadanie.Dzięki łatwemu w użyciu środowisku programowania 3D, takim jak Alice, łatwo jest tworzyć wysokiej jakości, angażujące historie, używając tylko funkcji przeciągania i upuszczania.

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

 69
Author: Barry Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-12 08:36:54

I ' ve found a big favorite (in GWBASIC) is:

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ę robić to wszystko na raz. Komputery są tylko głupimi maszynami i robią tylko to, co im się każe. Komputery rozpoznają tylko pewne rzeczy, a te są jak klocki.
  • kluczowym pojęciem jest to, że zmienna jest czymś, co zawiera wartość i jej nazwa różni się od tej wartości.
  • rozróżnienie między czasem edycji programu a czasem jego uruchomienia.
Powodzenia z klasą. Na pewno sobie poradzisz.

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

 63
Author: Mike Dunlavey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-27 04:48:21

Ten kod C może być zaciemniony, ale uważam, że jest 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
 62
Author: ThibThib,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-11 20:05:49

Może pokażesz, że możesz wziąć dowolną przeglądarkę internetową i wprowadzić JavaScript w pasku adresu i uzyskać kod do wykonania?

EDIT: 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)
 45
Author: Yuval,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-24 10:55:25

Możesz złożyć wniosek, który wybierze losową liczbę. I musisz to odgadnąć. Jeśli się mylisz, mówi: wyżej lub niżej. A jeśli się domyślasz, miła wiadomość.

Fajnie jest grać dla uczniów.

Prosta wersja Pythona bez odpowiedniego 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, że komputer powinien odgadnąć liczbę. Można to zrobić również w 10 liniach kodu (choć teraz brak właściwego sprawdzania błędów jest jeszcze bardziej poważne: poprawne liczby spoza zakresu 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)
 37
Author: Stephan202,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:37

W klasie komputerowej w liceum, ja i kilku przyjaciół uczyliśmy klasę, jak programować z Delphi. Zajęcia koncentrowały się głównie na programowaniu w Pascalu, więc Delphi było dobrym kolejnym krokiem. Zademonstrowaliśmy specyfikę Delphi opartą na zdarzeniach i jej możliwości RAD. Na koniec lekcji pokazaliśmy klasie przykładową aplikację i poprosiliśmy o jej odtworzenie. Aplikacja zapytała: "jesteś pijany?" z dwoma przyciskami tak i nie . ...Myślę, że wiesz, co będzie dalej...przycisk No zmienił lokalizacje po najechaniu myszką i było prawie niemożliwe do kliknięcia.

Uczniowie i nauczyciele dobrze się bawili.

Program wymagał tylko kilku linijek kodu napisanego przez użytkownika z prostym równaniem, aby obliczyć, gdzie przenieść przycisk. Nie sądzę, żeby inni uczniowie się domyślili, ale kilku było blisko.

 26
Author: Ryan Anderson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 14:18:24

Kiedy po raz pierwszy rozgryzłem Bash forkbomb, pomyślałem, że to naprawdę słodkie. Tak proste, ale schludne w tym co potrafi:

:(){ :|:& };:
 23
Author: hodgesmr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-15 17:26:17

To jest oszustwo, i nawet nie jest proste, ale kiedyś napisałem shoot ' em up w 20 linijkach C++, używając biblioteki graficznej Allegro. Nie ma prawdziwych kryteriów dla tego, czym była linia, ale to było trochę temu i zostało stworzone wyłącznie dla Zabawy. Miał nawet surowe efekty dźwiękowe.

Oto Jak to wyglądało:

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

A oto kod (powinien kompilować):

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()
 22
Author: Kronikarz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-23 12:12:30

W dzisiejszych czasach JavaScript jest doskonałym sposobem na pokazanie, jak można programować przy użyciu naprawdę podstawowych narzędzi, np. notatnika.

Efekty JQuery są świetnym punktem wyjścia dla każdego, kto chce zachwycić swoich przyjaciół!

W tym miejscu wystarczy kliknąć białą spację 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>
 21
Author: Jon Winstanley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 15:06:05

Jedną z rzeczy, którą możesz wziąć pod uwagę, jest coś w rodzaju Robocode , w którym wiele kodowania jest abstrakcyjnych i w zasadzie po prostu powiedzieć 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 nadaje się do tego zadania, ale tego typu rzeczy są dobrym sposobem na odniesienie pisanego kodu do działań wizualnych na komputerze, a do tego fajnie jest obserwować, kiedy trzeba dać 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);
 }
}
 20
Author: Pavel Savara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-09 11:27:03

Więc pewnego dnia zdecydowałem, że mam dość. Uczyłbym się gry na pianinie. Widząc ludzi takich jak Elton John command takie opanowanie klawiatury zapewniło mnie, że właśnie to chciałem zrobić.

Nauka gry na pianinie była wielkim rozczarowaniem. Nawet po ukończeniu ośmiu klas lekcji gry na fortepianie, wciąż nie byłem pod wrażeniem tego, jak mój mentalny obraz gry na fortepianie różni się od mojej pierwotnej wizji cieszenia się tą aktywnością. [[3]}jednak to, co mi się bardzo podobało, to moje zwykłe trzy stopnie podstaw teorii muzyki. Dowiedziałem się o budowie muzyki. W końcu udało mi się przejść od świata wykonywania muzyki pisanej do pisania własnej muzyki. Następnie mogłem zacząć grać w to, 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ęć linii prostego kodu" wydaje się wywoływać nastrój "Pokaż mi coś sprytnego".

Możesz pokazać nowego programistę coś mądrego. Następnie możesz nauczyć tego samego programistę, jak replikować tę "wydajność". Ale nie to ich uzależnia od programowania. Naucz ich podstaw i pozwól im zsyntetyzować własne 10 linijek kodu.

Pokazałbym nowemu programiście następujący kod Pythona:

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 muszę przypisywać line do edited_line. Jest to jednak po to, aby wszystko było jasne i pokazać, że nie edytuję oryginalnego dokumentu.

W mniej niż 10 linijek, zwerbowałem dokument. Oczywiście należy również pokazać nowemu programiście wszystkie dostępne metody łańcuchowe . Co ważniejsze, pokazałem trzy zasadniczo interesujące rzeczy, które mogę zrobić: przypisanie zmiennych, pętlę, IO plików i korzystanie z biblioteki standardowej.

Myślę, że zgodzisz się, że ten kod nie oślepia. W zasadzie to trochę nudne. Nie-właściwie to jest bardzo nudne. Ale Pokaż ten kod nowemu programiście i sprawdź czy ten programista nie mogę zmienić każdej części tego scenariusza na coś bardziej interesującego w ciągu tygodnia, jeśli nie dnia. Oczywiście, to będzie niesmaczne dla ciebie (może za pomocą tego skryptu zrobić prosty parser HTML), ale wszystko inne wymaga czasu i doświadczenia.

 18
Author: Wesley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-02 12:56:30

Jak większość innych komentatorów, zacząłem pisać kod do rozwiązywania problemów matematycznych (lub do tworzenia grafiki do naprawdę okropnych gier , które zaprojektowałbym - rzeczy takie jak Indiana Jones kontra zombie).

To, co naprawdę mnie zaczęło (zarówno w matematyce, jak i w programowaniu), to przejście od tekstu, wybór własnego stylu przygody games...to więcej gier opartych na grafice. Zacząłem kolorować papier graficzny i rysować piksele, dopóki nie dostałem się do geometrii...i odkrył, jak używać równań do wykreślania krzywe i linie, pola itp.

Chodzi mi o to, że mogłem naprawdę 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 to jest "Logo" przyszłości.

Są proste przykłady "hello world", które mogą szybko sprawić, że ktoś będzie rysował i zmieniał kod i widział, jak rzeczy się psują i jakie dziwne "wypadki" można stworzyć...aż do bardziej zaawansowanych interakcji i fraktali stworzenie...

 17
Author: Jeffrey Berthiaume,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 20:50:05

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

Np. skrypt, który otwiera notatnik i sprawia, że własny komputer jest w nim i za pomocą skrzynki z wiadomościami, 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")
 15
Author: meepmeep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 16:01:38

Pamiętam, że kiedy zacząłem kodować pętle, zawsze robi na mnie wrażenie. Piszesz 5-10 wierszy kodu (lub mniej) i setki (lub dowolnie wiele podasz) linii wydrukować. (Uczyłem się najpierw w PHP i Javie).

for( int i = 0; i < 200; i++ )
{
   System.out.println( i );
}
 13
Author: Josh Curren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-08 17:49:13

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

Jako przykład, oto skrypt "Google dwie kolumny":

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'; }
 13
Author: joeytwiddle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-23 18:30:38

Jest to bardzo prymitywny tekstowy program c#, który symuluje wirującą akcję automatu. Nie obejmuje To różnych szans na wygraną lub wypłat gotówkowych, ale może to być miłe ćwiczenie dla studentów.

Przepraszam, że jest więcej niż 10 linijek.

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" );
 10
Author: Greg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 20:41:40

Z Tcl masz prosty edytor tekstu z przyciskiem Zapisz w około 12 linijkach kodu (ale nie otwarty, to zajmie kolejne 8 linijek). 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 ładowania lub zapisywania 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 z "wish filename " na wybranej przez siebie platformie. Wish pochodzi z większości * nix i mac, ale będziesz musiał zainstalować go ręcznie dla systemu windows.

Aby pójść o krok dalej, skrypt dwuliniowy może być również napisany w Pythonie, choć zajmuje osiem linijek, nadal poniżej celu 10 linijek:

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
Author: Bryan Oakley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-17 12:02:59

A może bookmarklet? Pokazałoby im, jak manipulować czymś, z czego korzystają na co dzień (Internet), bez konieczności używania narzędzi programistycznych.

 9
Author: Stevo3000,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-17 12:12:00

Jeśli stać Cię na sprzęt, korzystanie z płyty Arduino + processing przyniesie całkiem fajne rzeczy, choć może być trochę zaawansowane dla osób, które mogą nie być zainteresowane w ogóle w programowaniu.

 8
Author: Andrew Sledge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 12:21:48

Napisałem o tym niedawno w artykule " najkrótszy, najbardziej użyteczny program, jaki kiedykolwiek napisałem."

Podsumowanie: napisałem 3-liniową aplikację VB6 w 1996 roku, z której wciąż korzystam każdego dnia. Po upuszczeniu exe do folderu" 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  
 8
Author: JohnFx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-31 02:47:17

To ciekawe, że wspomniałeś o zestawie Mandelbrota, ponieważ tworzenie fraktali z GW-BASIC jest tym, co wywołało moją miłość do programowania w liceum (około 1993 roku). Zanim zaczęliśmy uczyć się o fraktalach, pisaliśmy nudne aplikacje odchylenia standardowego i nadal planowałem zająć się dziennikarstwem.

Ale kiedy zobaczyłem ten długi, trudny do napisania program generujący "fraktalny teren", byłem uzależniony i nigdy nie oglądałem się za siebie. Zmieniło to sposób myślenia o matematyce, nauce, Komputery i sposób, w jaki się uczę.

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

 7
Author: Robert S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 16:43:26

WxPython Pierwsze Kroki

import wx
app = wx.App()
wx.Frame(None, -1, 'simple.py').Show()
app.MainLoop()

Simple.py ramka http://zetcode.com/wxpython/images/simple.jpg

 7
Author: katsh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-26 00:14:06

Jestem pewien, że zamieni się w więcej niż 10 linijek kodu, ale czy rozważałeś aplikację opartą na formularzu, w której naciśnięcie przycisków powoduje zmianę koloru tła lub zmianę rozmiaru tekstu? To pokazałoby im, jak działają programy interaktywne. PokazaĹ 'oby im teĹĽ, ĹĽe jako programista majÄ ... peĹ' nÄ ... kontrolÄ ™ tego, co robi komputer (program).

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

 6
Author: ChrisF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-01 13:42:31