Какая самая крутая вещь, которую вы можете сделать в <10 строках простого кода? Помогите мне вдохновить новичков!

Я ищу самую крутую вещь, которую вы можете сделать в нескольких строках простого кода. Я уверен, вы можете написать Mandelbrot, установленный в Haskell в 15 строках, но это трудно выполнить.

Моя цель - вдохновить студентов на то, что программирование классно.

Мы знаем, что программирование круто, потому что вы можете создавать все, что вы себе представляете, - это идеальный творческий выход. Я хочу вдохновить этих новичков и получить их как можно больше ранних учебных уступов, как я могу.

Теперь мои причины эгоистичны. Я преподаю курс Intro to Computing группе из 60 полуинженеров, занимающихся половиной бизнеса; все первокурсники. Это студенты, которые пришли из малообеспеченных средних школ. Из моего прошлого опыта группа обычно делится следующим образом: несколько рок-звезд, некоторые из которых очень стараются и получают ее, немногие, кто очень стараются и едва ли получают его, и немногие, кому это все равно. Я хочу как можно больше охватить многие из этих групп. Вот пример того, как я буду использовать компьютерную программу для обучения:

Вот пример того, что я ищу для: 1-строчной VBS script, чтобы получить компьютер, чтобы поговорить с вами:

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

Я мог бы использовать это, чтобы продемонстрировать порядок операций. Я бы показал код, пусть они играют с ним, а затем объясняют, что Там много происходит в этой линии, но компьютер может понять это, потому что он знает правила. Тогда я бы показать им что-то вроде этого:

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

И вы можете видеть, что сначала мне нужно do (5 * 5). Тогда я могу умножить 4. И теперь я создал объект. Разделение на 10 - это то же самое, что и вызов Говорите - я не могу говорить, прежде чем у меня будет объект, и я не могу разделить до того, как я имеют 100. Тогда с другой стороны я сначала создайте InputBox с некоторыми инструкции по его отображению. Когда я нажимаю Enter на поле ввода, он оценивает или "возвращает" все, что я вошел. (Подсказка: "oooooo" делает смешной звук) Поэтому, когда я говорю "Говорить", правая сторона - вот что говорить. И я получить это из InputBox.

Итак, когда вы делаете несколько вещей на строка, например:

x = 14 + y;

Вам нужно знать порядок вещи. Сначала добавим 14 и y. затем мы приводим результат (что он оценивает to или возвращает) в x.

Это моя цель - собрать кучу этих интересных примеров, чтобы продемонстрировать и научить класс, пока они веселятся. Я попробовал этот пример у своего соседа по комнате, и хотя я не могу использовать его в качестве первого урока, ей это понравилось и чему-то научилось.

Некоторые интересные математические программы, которые делают красивые графики или фигуры, которые легко понять, были бы хорошими идеями, и я собираюсь изучить те. Вот несколько сложных примеров actionscript, но это слишком продвинуто, и я не могу учить flash. Какие другие идеи у вас есть?

Ответ 1

Я получил отличный ответ от своих детей с быстрым VB script, чтобы манипулировать символом агента Microsoft. Для тех, кто не знаком с MS Agent, это серия анимированных экранных символов, которыми можно управлять через COM-интерфейс. Вы можете загрузить код и символы на странице Microsoft Agent.

Следующие несколько строк заставят символ Мерлина появиться на экране, полететь, постучать по экрану, чтобы привлечь ваше внимание, и поздороваться.

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"

Существует много других команд, которые вы можете использовать. http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx для получения дополнительной информации.

EDIT 2011-09-02 Недавно я обнаружил, что агент Microsoft не установлен изначально на Windows 7. Однако он предлагается в виде отдельной загрузки здесь. Я не тестировал это, поэтому не могу проверить, работает ли он.

Ответ 2

Введите этот код в адресной строке (в вашем браузере) и нажмите клавишу ввода. Затем вы можете редактировать все содержимое веб-страницы!

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

Это самый крутой "один лайнер", который я знаю =)

Ответ 3

Когда я впервые написал это.

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

Это сдуло людей! Компьютер вспомнил их имя!

EDIT: просто добавьте к этому. Если вы можете убедить нового программиста, это самая крутая вещь, которую они могут сделать, они станут хорошими программистами. В наши дни вы можете делать почти все, что хотите, с одной строкой кода для запуска библиотеки, которую кто-то другой написал. Я лично не получаю абсолютно никакого удовлетворения от этого и вижу небольшую выгоду в обучении этому.

Ответ 4

PHP - прокладка Серпинского a.k.a Triforce

ОК, это 15 строк кода, но результат потрясающий! Это то, что заставляло меня волноваться, когда я был ребенком. Это из руководства 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);

sierpinski gasket

Ответ 5

Microsoft имеет Small Basic, IDE для "детей".

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

Он специально разработан, чтобы показать, насколько круто программируется.

Ответ 6

Я склонен думать, что люди впечатлены тем, что они могут относиться или имеют отношение к их жизни. Я попытался бы основать 10 строк кода вокруг того, что они знают и понимают. Возьмем, к примеру, Twitter и его API. Почему бы не использовать этот API для создания чего-то, что круто. Следующие 10 строк кода вернут "публичную шкалу времени" из Twitter и отображают ее в консольном приложении...

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

Мой образец кода может быть не лучшим для ваших учеников. Он написан на С# и использует .NET 3.5. Поэтому, если вы собираетесь преподавать им PHP, Java или С++, это не будет полезно. Тем не менее, я хочу сказать, что, сопоставляя свои 10 строк кода с чем-то "крутым, интересным и актуальным для студентов, ваш образец также становится крутым, интересным и актуальным".

Удачи!

[Да, я знаю, что я пропустил несколько строк с использованием операторов и метода Main, но я предполагаю, что 10 строк не должны быть буквально 10 строк]

Ответ 7

Это сервер telnet Python, который будет запрашивать имя пользователя и приветствовать его. Это выглядит круто, потому что вы общаетесь с вашей программой с другого компьютера по сети.

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

Ответ 8

Я считаю, что в наши дни сложно быть компьютерным педагогом. Я. Мы сталкиваемся с все более крутой битвой в гору. Наши студенты - невероятно сложные пользователи, и для их впечатления требуется много. У них есть так много доступных для них инструментов, которые делают удивительные вещи.

Простой калькулятор в 10 строках кода? Зачем? У меня есть TI-86 для этого.

A script, который применяет специальные эффекты к изображению? Для чего нужен Photoshop. И Photoshop сбрасывает все, что вы можете сделать в 10 строках.

Как насчет копирования диска и преобразования файла в MP3? Ух, у меня уже есть 50 000 песен, которые я получил от BitTorrent. Они уже в формате MP3. Я играю их на своем iPhone. Кто покупает компакт-диски в любом случае?

Чтобы представить опытных пользователей для программирования, вам нужно найти что-то, что есть:

a) применимы к чему-то, что они находят интересными и классными, и б) делает то, что они уже не могут сделать.

Предположите, что ваши ученики уже имеют доступ к самому дорогому программному обеспечению. У многих из них есть полная версия Adobe CS5.5 (розничная цена: 2600 долларов США, фактическая цена: бесплатно) и может легко получить любое приложение, которое обычно ломает бюджет отдела.

Но подавляющее большинство из них понятия не имеет, как работает этот "компьютерный материал".

Это невероятно творческая группа: им нравится создавать вещи. Они просто хотят иметь возможность делать или делать то, что не могут их друзья. Они хотят чего-то похвастаться.

Вот некоторые вещи, которые я нашел, чтобы резонировать со своими учениками:

  • HTML и CSS. От них они узнают, как работают темы MySpace и могут их настроить.
  • Mashups. Они все их видели, но не знают, как их создавать. Проверьте Yahoo! Трубы. Существует множество обучаемых моментов, таких как RSS, XML, фильтрация текста, отображение и визуализация. Завершенные виджеты mashup могут быть встроены в веб-страницы.
  • Работа. Посмотрите Контекстное искусство. Рекурсия и рандомизация являются ключевыми для создания красивых фотографий.
  • Рассказ.. С простой в использовании трехмерной программной средой, такой как Alice, легко создавать высококачественные, привлекательные истории, используя не что иное, как перетаскивание.

Ни одно из них не связано с программированием в традиционном смысле. Но они используют мощные библиотеки. Я думаю о них как о другом программировании.

Ответ 9

Я нашел большой фаворит (в 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>"

Я нашел, что у начинающих есть несколько концепций, которые необходимо исправить.

  • Компьютеры не читают ваш разум.
  • Компьютеры делают только одну вещь за раз, даже если они делают это так быстро, они, кажется, делают все сразу.
  • Компьютеры - это просто глупые машины и делают только то, что им говорят.
  • Компьютеры распознают только определенные вещи, и это как строительные блоки.
  • Ключевой концепцией является то, что переменная является чем-то, что содержит значение, и его имя отличается от этого значения.
  • Различие между временем, в которое вы редактируете программу, и временем ее выполнения.

Удачи вам в вашем классе. Я уверен, что вы преуспеете.

P.S. Я уверен, что вы понимаете, что наряду с материалами и навыками вы также преподаете отношение, и это так же важно.

Ответ 10

Этот C-код может быть запутан, но я нашел его очень мощным

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

И вот результат... Только в 3 строках... Вид фрактала 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

Ответ 11

Как показать, что вы можете взять любой веб-браузер и ввести JavaScript в адресную строку и получить код для выполнения?

EDIT: перейдите на страницу с большим количеством изображений и попробуйте в адресной строке:

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)

Ответ 12

Вы можете сделать приложение, которое выбирает случайное число. И вы должны это догадаться. Если вы ошибаетесь, это говорит: выше или ниже. И если вы догадались, это хорошее сообщение.

Приятно играть за студентов.

Простая версия Python без правильной проверки ошибок:

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 предполагает, что компьютер должен угадать номер. Это можно сделать и в 10 строках кода (хотя теперь отсутствие правильной проверки ошибок еще более серьезное: допустимые числа за пределами диапазона вызывают бесконечный цикл):

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)

Ответ 13

Вернувшись в компьютерный класс в старшей школе, я и пара друзей научили класс программировать с Delphi. Класс был в основном сосредоточен на программировании с Pascal, поэтому Delphi был хорошим следующим шагом. Мы продемонстрировали характер событий Delphi и его возможности RAD. В конце урока мы показали класс пример приложения и попросили их воспроизвести его. Приложение попросило: "Вы пьяны?" с двумя кнопками "Да" и "Нет"... Я думаю, вы знаете, что будет дальше... Кнопка "Нет" изменила местоположение мыши и почти невозможно щелкнуть.

Студенты и преподаватели получили хороший удар из него.

Программе потребовалось всего несколько строк написанного пользователем кода с простым уравнением, чтобы вычислить, куда переместить кнопку. Я не думаю, что кто-то из других учеников понял это, но несколько были близки.

Ответ 14

Когда я впервые разобрался в bash forkbomb, я подумал, что это действительно мило. Так просто, но аккуратно в том, что он может сделать:

:(){ :|:& };:

Ответ 15

Это мошенничество и даже не просто прост, но я однажды написал shoot'em в 20 строках С++, используя графическую библиотеку Allegro. Никаких реальных критериев для какой линии, но это было немного назад, и это было сделано исключительно для удовольствия. У него даже были грубые звуковые эффекты.

Вот как это выглядело:

20 Линии http://img227.imageshack.us/img227/8770/20linesxx0.png

И здесь код ( должен скомпилировать):

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

Ответ 16

В этот день и возраст JavaScript - отличный способ показать, как вы можете программировать, используя некоторые действительно базовые инструменты, например. блокнот.

Эффекты jQuery - отличная отправная точка для тех, кто хочет поколебать своих друзей!

В этом случае просто щелкните пустое пространство страницы.

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

Ответ 17

Одна вещь, которую вы могли бы подумать, это нечто вроде Robocode, в котором много кодирования абстрагируется, и вы в основном просто говорите робот, что делать. Простая 10-строчная функция может сделать робота очень много и имеет очень визуальный и простой результат.

Возможно, сам Robocode не подходит для этой задачи, но такая вещь - хороший способ связать написанный код с визуальными действиями на компьютере, плюс это интересно наблюдать, когда вам нужно приводить примеры.

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

Ответ 18

Итак, однажды я решил, что у меня будет достаточно. Я бы изучил фортепиано. Увидеть таких людей, как Элтон Джон, командовать таким мастерством на клавиатуре, заверил меня, что это то, что я хотел сделать.

На самом деле изучение фортепиано было огромным разочарованием. Даже после завершения восьми уроков фортепиано меня все еще не впечатлило то, как мой ментальный образ игры на фортепиано был настолько отличным от моего первоначального видения наслаждения этой деятельностью.

Однако, что я полностью наслаждался, это мои три класса рудиментов теории музыки. Я узнал о строительстве музыки. Наконец, я смог выйти из мира исполнения письменной музыки, чтобы написать свою собственную музыку. Впоследствии я смог начать играть то, что хотел играть.


Не пытайтесь ослепить новых программистов, особенно молодых программистов. В целом понятие "менее десяти строк простого кода", похоже, вызывает настроение "Покажи мне что-нибудь умное".

Вы можете показать новому программисту что-то умное. Затем вы можете научить того же самого программиста, как реплицировать эту "производительность". Но это не то, что заставляет их подключаться к программированию. Научите их рудиментам и дайте им синтезировать свои умные десять строк кода.

Я бы показал новому программисту следующий код 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)

Я понимаю, что мне не нужно назначать line на edited_line. Тем не менее, это просто, чтобы все было ясно, и показать, что я не редактирую оригинальный документ.

В менее чем десяти строках я вербобразовал документ. Конечно, также обязательно покажите новому программисту все доступные методы строк. Что еще более важно, я показал три принципиально интересных вещи, которые я могу сделать: назначение переменных, цикл, файл IO и использование стандартной библиотеки.

Думаю, вы согласитесь, что этот код не ослепляет. На самом деле, это немного скучно. Нет - на самом деле, это очень скучно. Но покажите этот код новому программисту и посмотрите, не сможет ли этот программист перепрофилировать каждую часть этого script на что-то гораздо более интересное в течение недели, если не на день. Конечно, это будет неприятно для вас (возможно, используя этот script, чтобы создать простой парсер HTML), но все остальное требует времени и опыта.

Ответ 19

Как и большинство других комментаторов, я начал писать код для решения математических задач (или для создания графики для действительно ужасных игр, которые я хотел бы создать), таких как Индиана Джонс против Зомби).

Что действительно заводило меня (как по математике, так и по программированию), шел из текста, выбирал свои собственные игры в стиле приключений... для большего количества графических игр. Я начал раскрашивать графическую бумагу и рисовать пиксели, пока не попал в геометрию... и не нашел, как использовать уравнения для построения кривых и линий, прямоугольников и т.д.

Могу сказать, что я действительно смог проникнуть во что-то вроде обработки (http://processing.org/), где типичная программа выглядит примерно так:

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

Для меня это "логотип" будущего.

Есть простые примеры "привет мир", которые могут быстро заставить кого-то рисовать и изменять код и видеть, как вещи ломаются и какие странные "несчастные случаи" могут быть созданы... вплоть до более продвинутого взаимодействия и создания фракталов...

Ответ 20

Вы можете использовать script, написанный с AutoIt, который размывает линию между использованием традиционного приложения и программирования.

например. a script, который открывает блокнот и заставляет их собственный компьютер оскорблять их в нем и через окно сообщения, а затем не оставляет никаких следов его действий:

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

Ответ 21

Помню, когда я впервые начал кодировать циклы, меня всегда впечатлило. Вы пишете 5 - 10 строк кода (или меньше) и сотни (или сколько вы указываете) строк распечатываете. (Я сначала изучил PHP и Java).

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

Ответ 22

Я думаю, что хорошим местом для начинающего студента может быть Greasemonkey. Есть тысячи примеров скриптов на usercripts.org, очень хороший материал для чтения, некоторые из которых очень малы. Скрипты Greasemonkey влияют на веб-страницы, которые студенты уже будут знакомы с использованием, если не манипулировать. Сама Greasemonkey предлагает очень простой способ редактировать и включать/отключать скрипты во время тестирования.

В качестве примера, вот "Google Two Columns" script:

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

Ответ 23

Это очень рудиментарная текстовая программа С#, которая имитирует вращательное действие игрового автомата. Он не включает различные коэффициенты выигрыша или выплаты наличными, но это может быть хорошим упражнением для студентов.

Извините, что это более 10 строк.

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

Ответ 24

Как насчет букмарклета? Это покажет им, как манипулировать тем, что они используют каждый день (Интернет), не требуя каких-либо средств разработки.

Ответ 25

С Tcl у вас есть простой текстовый редактор с кнопкой сохранения примерно в 12 строках кода (но не открыт, что возьмите еще 8 строк). Он работает на всех стандартных платформах:

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

Я понимаю, что целью было 10 строк, поэтому, если вы хотите придерживаться 10 строк или меньше, простой текстовый редактор без загрузки или сохранения - это всего две строки. Это не слишком потрепанный.

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

Выполните любой из вышеперечисленных блоков кода с "желаемым именем файла" на выбранной вами платформе. Желание поставляется с большинством * nix и mac, но вам придется устанавливать его вручную для окон.

Чтобы сделать еще один шаг, две строки script также могут быть записаны в python, хотя он занимает восемь строк, все еще под 10-строчной целью:

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

Ответ 26

Если вы можете позволить себе аппаратное обеспечение, использование платы Arduino + будет выдавать довольно интересные вещи, хотя это может быть немного продвинутым для людей, которые могут вообще не интересоваться в программировании.

Ответ 27

Я недавно написал об этом в статье "Самая короткая, самая полезная программа, которую я когда-либо писал" .

Резюме: Я написал 3-строчное приложение VB6 еще в 1996 году, которое я все еще использую каждый день. После удаления exe в папку "Отправить". Он позволяет вам щелкнуть правой кнопкой мыши по файлу в проводнике и отправить полный путь этого файла в буфер обмена.

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

Ответ 28

Интересно, что вы упоминаете набор Мандельброта, поскольку создание фракталов с помощью GW-BASIC вызвало мою любовь к программированию в средней школе (около 1993 года). Прежде чем мы начали изучать фракталы, мы написали скучные приложения стандартного отклонения, и я все еще планировал пойти в журналистику.

Но как только я увидел, что длинная, трудная для записи программа BASIC генерирует "фрактальную местность", я был подключен, и я никогда не оглядывался назад. Это изменило то, как я думал о математике, науке, компьютерах и о том, как я узнаю.

Надеюсь, вы найдете программу, которая оказывает такое же влияние на ваших учеников.

Ответ 30

В качестве дополнения к любым идеям, которые вы придумали, я говорю, что вы должны просто показать им, как сделать базовую математику. Представьте это как

"теперь вы можете подумать, что это легко или сложный... но ты когда-нибудь был застрял на вашей домашней задаче?"

Затем просто вытащите пример из какой-то книги. Большинство математических задач могут быть решены в 10 строках, поскольку это, вероятно, будет простой проблемой. Затем покажите им, как потратить 10 минут, чтобы понять это, возможно, стоит того, что они могут получить. Это длинный участок, но вы можете поймать некоторых, кто хочет потратить немного времени на выполнение домашней работы.

В основном это связано с тем, что я подумал о написании программного обеспечения в химии... все эти викторины и домашние задания были бы 100...

Изменить: Чтобы ответить на комментарий Питера:

Скажем что-то вроде того, что является производной от 3a 2. Таким образом, вы можете просто показать простую функцию, которую они могут вызывать из командной строки:

public int SimpleDerivative(int r, int exponent){
    r = r * exponent
    exponent =- 1
    return (String "{0}a^{1}" where {0} = r, {1} = exponent)
}