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

406

Я ищу самое классное, что вы можете сделать в нескольких строках простого кода. Я уверен, что вы можете написать набор Мандельброта на Хаскеле в 15 строк, но за ним трудно следовать.

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

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

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

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

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

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

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

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

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

x = 14 + y;

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

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

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

Джордж Стокер
источник
102
Я думаю, что вопросы о том, как преподавать программирование, превосходны и нетривиальны. Удачи в том, что вы пытаетесь сделать.
Майк Данлавей
6
«Моя цель - вдохновить студентов на то, что программирование - это круто». Я не думаю, что вы можете сказать людям, что программирование - это круто. Либо им это нравится, либо нет.
Рик
2
Ваш однострочный сценарий VBS не работает на моем Mac! :-P Хороший вопрос, хотя.
Джон Топли
1
Мне всегда нравятся такие вещи, но кого ты пытаешься произвести на меня впечатление, меня, прокладку Серпинского, я бы неплохо сделал. Для айтишников может быть что-то, что создает файлы, для некоторых людей, говорящих на компьютере, это будет впечатляюще и так далее. Итак, что имеет значение для целевой аудитории, тогда вы определяете, что круто.
Oakcool
5
83 человека поддержали комментарий о том, что этот вопрос «превосходный и нетривиальный» ... закрыт как «неконструктивный» 5 людьми, которые явно не согласны. Разве власть не велика?
rg88

Ответы:

78

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

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

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 для получения дополнительной информации.

РЕДАКТИРОВАТЬ 2011-09-02 Я недавно обнаружил, что Microsoft Agent изначально не установлен на Windows 7. Однако он предлагается для отдельной загрузки здесь . Я не проверял это, поэтому не могу проверить, работает ли он.

Боб Мак
источник
Это потрясающе. Это заслуживает гораздо больше голосов.
Том Риттер
Спасибо за признание Том. Отстой, что я не получу очков репутации, даже если он начнет получать голоса. :-P
Боб Мак
32
Таким образом, вы можете видеть скрепку все время : D
Pedery
8
@Bob BASIC - язык для начинающих. VB не бейсик. VB - это швейцарский армейский нож, который MS создал, чтобы соответствовать потребностям того времени. В настоящее время есть гораздо лучшие (гораздо более специализированные) инструменты, чтобы занять его место. VB не плохой язык, у него просто много лишнего багажа. Если бы я дал одну совершенно непредвзятую причину, почему бы не использовать ее, это было бы потому, что MS постепенно отказывается от поддержки VB. Это умирающий язык. Просто подождите, пока сценарии Office будут выполнены с помощью JavaScript (что планируется в ближайшее время), тогда снижение VB будет верным.
Эван Плейс
3
@Evan - Спасибо за честный ответ, а не за какую-то религиозную стяжку. Красиво сделано. Не слышал о перемещении Office Javascript. Будем расследовать.
Боб Мак
339

Введите этот код в адресную строку (в вашем браузере) и нажмите Enter. Тогда вы можете редактировать весь контент веб-страницы!

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

То есть самый крутой "однострочник" я знаю =)

Espen Herseth Halvorsen
источник
95
«Однострочник» является таким неправильным. Это действительно 3 строки. Любой код может быть одной строкой, если вы хотите, чтобы это было.
Рассерженная шлюха
5
Это выглядит действительно аккуратно, но есть ли способ получить страницу после ее изменения?
Сильвердраг
51
Мне так нравится, я проголосовал за вас 999999999 раз! img707.imageshack.us/img707/4843/jshack.png
JRL,
4
Это больше не относится к Firefox, так как javascript: отключен. Стыд.
2
@DisgruntledGoat, javascript:и void 0являются шаблонными: эквивалент int main() {и return 0; }в C. А две другие строки - это просто разные API-интерфейсы браузера, которые выполняют одну и ту же функцию: первая - это API-интерфейс IE, вторая - API-интерфейс NetScape. HTML5 использует contentEditable, поэтому, если вы не заботитесь о поддержке Firefox 1.5 или чего-то document.body.contentEditable='true';
подобного
201

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

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

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

РЕДАКТИРОВАТЬ: Просто чтобы добавить к этому. Если вы сможете убедить нового программиста, это самая крутая вещь, которую они могут сделать, они станут хорошими программистами. В наши дни вы можете делать практически все, что захотите, с помощью одной строки кода для запуска библиотеки, написанной кем-то другим. Я лично не получаю абсолютно никакого удовольствия от этого и вижу небольшую пользу в обучении этому.

Robin Day
источник
15
было бы лучше со следующим: 40 GOTO 30
спонсор
8
+1 для отображения имени пользователя, люди всегда любят видеть свое имя. @ Сауа, как же это не бесконечный цикл печати? Он возвращается к строке 30, а не к строке 20.
z -
13
Должно быть, к 10 наверняка, чтобы кто-то еще мог ввести свое имя ...
Омар Кохеджи
17
Вы забыли 35 PRINT CHR $ (7)
Адам Яскевич
6
Так я тоже научился программированию. Это лучший ответ IMO. +1, чтобы принять это
Нажмите Upvote
180

PHP - прокладка Серпинского ака 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);

прокладка Серпинского

отметка
источник
25
Для записи, это прокладка Серпинского.
хаос
6
Это потрясающе, но я думаю, что это должно произойти примерно в середине курса, потому что он основан на ряде понятий, таких как циклы и массивы.
Майк Данлавей
4
@Masi: общая идея состоит в том, чтобы иметь три фиксированные точки, которые являются углами треугольника, и «текущую» точку, которую вы постоянно обновляете. Чтобы сделать ход, выберите один из случайных углов и переместите текущую точку на полпути к этому углу. Цвет в текущей точке. Затем сделайте еще один ход таким же образом, а затем снова несколько тысяч раз, и шаблон появится. Затем попробуйте сделать это с другим числом углов или измените дробь, на которую текущая точка прыгает в сторону угла, чтобы увидеть, как она влияет на рисунок.
Дэниел Эрвикер
18
Для справки, это не прокладка Серпинского ... На самом деле это Triforce. en.wikipedia.org/wiki/The_Legend_of_Zelda
Джейсон
2
Этот код кажется мне странным, потому что я обычно вижу, что это делается с помощью рекурсии (также с очень небольшим количеством строк кода). Фактически, фракталы - хорошее введение в рекурсию на уроках информатики. Но мне кажется, что этот код будет довольно неэффективным, он рисует и перерисовывает много пикселей из-за своего случайного подхода.
Стив Уортэм
105

У Microsoft есть Small Basic , IDE для "детей".

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

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

Боб Фангер
источник
80
Это фактически отстой, потому что эти библиотечные вызовы кажутся волшебством. Вы настраиваете их, чтобы они были сценаристами VB. Я боюсь, что они никогда не будут скрываться в этой области "темной магии" и оставаться в "безопасной" зоне водопровода. ... О, вот посмотрите, как сделать интернет-браузер в одну строку! MSIEControl (.. блабла, что угодно ...). Show ()
hasen
88
Я не думаю, что дети - идиоты. Если вы будете в восторге от возможностей программирования, они узнают, как делать более сложные вещи самостоятельно. Если не что иное, молодые зараженные тестостероном мальчики будут пытаться выучить самые загадочные, темные магические вещи, прежде чем вы даже узнаете, что произошло.
Тим Лин
28
@ Hansen J, это несправедливо, все должны с чего-то начинать.
Джон Фаррелл
30
Это не диплом CS для детей, это игрушка для программирования. Какими бы ни были эти ворота, чтобы дети увидели интересную сторону программирования, это здорово, но не обязательно быть ASM.
Копас
29
Зная детей, которых я пытался научить, пройдет около десяти секунд, прежде чем они попробуют pic = Flickr.GetRandomPicture ("boobs")
Iain Galloway
83

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

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

Удачи!

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

Martin Peck
источник
Это действительно аккуратно! Я не был знаком с объектом SyndicationFeed - спасибо за код!
Тэд Донаге
Целевая аудитория не фанаты, э-э-э, они не наплевать на твитер?
peufeu
80

Это сервер 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()
user17918
источник
68

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

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

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

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

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

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

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

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

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

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

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

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

Барри Браун
источник
11
+1 Мне понравилось, как вы описали детей в эти дни, у которых 50 000 песен от bittorrent и Adobe CS4 даром, это, конечно, реальность
thomasrutter
Напишите простой алгоритм двоичного поиска в Python. Разорвите телефонную книгу пополам несколько раз, чтобы описать, как она работает. Это простые, но мощные аспекты программирования, которые опытные программисты часто упускают из виду, а новички смотрят @ с благоговением. большинство людей не понимают, что их мониторы обновляют по крайней мере половину пикселей на мониторе со скоростью 60-120 в секунду. делать человеческие против компьютерных гонок скорости. забавные вещи. см. это для большего количества идей: academicearth.org/courses/introduction-to-computer-science-i : и, что бы вы ни делали ... не учите их ANSI C как их родному языку. Я был там, это отстой.
Эван Плейс
3
Если вы настраиваете сайты, почему бы не использовать Greasemonkey?
new123456
Несколько примеров на ваших примерах: re photoshop, вам просто нужно указать на очевидное - с photoshop вы можете изменить 1 изображение, а с помощью сценариев вы можете изменить сотни тысяч. И что касается MP3, вы правы, что никто больше не скачивает компакт-диски, но вы могли бы (если бы не законность) объяснить, что они могли бы написать программу для автоматической загрузки самой последней музыки прямо на их iPod.
Джефф Веллинг
@Jeff Хорошо работая с Photoshop, вы можете создавать Пакеты и Действия, чтобы вносить эти изменения в любое количество файлов. Удивительно, сколько в наши дни считается само собой разумеющимся с компьютерами.
Джон
63

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

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

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

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

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

Майк Данлавей
источник
Современные дневные компьютеры делают намного больше, чем одно за раз.
Dreamlax
Но ваш код делает больше, чем одну вещь одновременно?
JeffO
5
@dreamlax: Конечно, ты прав, но давай не будем расставаться. Мы говорим о том, чтобы представить компьютеры детям и дать им основные умственные строительные блоки. Параллелизм может прийти позже.
Майк Данлавей
1
@Ben S: Вы случайно удалили пробел перед строкой 10? Я добавил это, потому что кажется, что форматировщик SO, кажется, разбивает первую строку на 1 пробел. Интересно, есть ли лучший способ заставить код выстраиваться?
Майк Данлавей
2
@foljs: Черт возьми! В самом деле? :-) Dreamlax сделал то же самое. Дело в том, что когда вы работаете с людьми, которые ничего не знают о компьютерах, им кажется, что все происходит за один раз, поэтому мы должны преодолеть это, не ломая волос. Итак, действительно базовая концепция: «Сначала это делает A, затем это делает B, и так далее».
Майк Данлавей
62

Этот 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
ThibThib
источник
5
Ницца! Жаль, что там нет места, которое бы на самом деле говорило:
Ponkadoodle
Это мило! Модель Мандельброта: D
Aniket
45

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

РЕДАКТИРОВАТЬ: перейдите на страницу с большим количеством изображений и попробуйте это в адресной строке:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)
Yuval
источник
2
хорошо, но вы должны привести конкретный пример, который вы знаете ..
hasen
1
@ Джон: Пожалуйста, приведите конкретный пример. Я только использовал JS на своем сервере, экспортируя файл JS. Я никогда не помещал код в мою адресную строку.
Лео Леопольд Герц 준영
7
Ну, не очень захватывающий пример, но вы могли бы сделать javascript: alert ("Hello World");
Джон Топли
Я предпочитаю: "javascript: for (var i = 0; i> -1; i ++) alert ('Поздравляем, вы нажали enter для' + i + 'раз!');". (Прочтите этот код перед запуском ...). ^^
Арнис Лапса
+1 за вау-фактор ... довольно эффектный пример :)
fretje
37

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

Классно играть для студентов.

Простая версия 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!')

Эрик предлагает, чтобы компьютер угадал число. Это также может быть сделано в пределах 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)
Stephan202
источник
4
Более интересно было бы, чтобы пользователь выбрал случайное число, а затем угадал его на компьютере.
Эрик Форбс
15
Теперь заставьте эти две программы воспроизводить друг друга через сокет.
Джош Ли
3
Было бы лучше, если бы компьютер не получил номер напрямую. Вы должны сказать пользователю «выбрать число от 1 до 100». Затем выведите «Я предполагаю 50», и попросите ввести («выше», «ниже» или «правильно») и уточните свое предположение.
Ponkadoodle
Я сделал это с моим сыном (9), и у него также есть преимущество в том, чтобы заняться алгоритмическим мышлением, что является лучшей стратегией для поиска правильного числа в кратчайшем количестве догадок.
Мбессо
Я думаю, что вы хотите raw_input. Ввод равен eval(raw_input(prompt)). Смотрите вход .
Джефф Кауфман
26

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

Студенты и учителя получили от этого удовольствие.

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

Райан Андерсон
источник
7
Это было не только забавно, но и мой коллега однажды сделал это в каком-то программном обеспечении, только это была кнопка «ОК» в окне сообщения. Это было внутренне используемое приложение, поэтому его не осуждали. Он делал это только один раз в голубой луне. Конечно, ему позвонят, и он скажет, что ему нужно увидеть, как это произойдет, если он поверит в это. Так что он бродил и, конечно, этого не случилось бы, когда он был там ...
Джейсон Д
Я вспоминаю что-то вроде этого ... но это было мгновенно ... и вопрос был "Ты гей?" .. и набор нажатия кнопки фейерверка.
Glasnt
2
Это было бы интересным временем, чтобы научить людей ориентироваться в табуляции и пробелах
Давидахинес
23

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

:(){ :|:& };:
hodgesmr
источник
7
Вот довольно хорошее объяснение: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr
12
для новичков в Linux: не бегайте, иначе вы потеряете всю свою работу.
Behrooz
@Behrooz, зависит от вашего дистрибутива, в некоторых встроены произвольные ограничения потоков / разветвлений.
Razor Storm
Он делает большой удар по SuSE, но ничего не делает в большинстве дистрибутивов на основе Debian.
Behrooz
Это, а также ограничения пользователей, как часто
очищаются
22

Это обман, и даже не простой, но я однажды написал стрельбу в 20 строк C ++, используя графическую библиотеку 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()
оборота Кроникарз
источник
5
Как это должно чему-то научить? На несвязанной ноте, ОХЛАЖДЕНИЕ! ХА! Любил это!
Slezica
21

В наше время 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>
Джон Винстэнли
источник
1
Я бы согласился. Вы можете открыть блокнот и начать писать код с помощью java-скрипта, а затем открыть браузер, и я уверен, что ваши студенты будут впечатлены. Это инструменты, которые есть у каждого, и они могут искать множество различных эффектов и вещей, которые можно сделать, как пример Джона.
Джефф Редди
1
Я не думаю, что это хорошая идея, чтобы научить кого-то основам довольно простого языка с использованием библиотеки. Вы можете легко сделать это без использования jQuery, и для новичка, вы должны. Библиотеки не являются заменой фактическому языку.
Какой-то парень
В случае javascript, jQuery не является заменой для javascript, это замена для (очень изменчивых) doms. И это здорово, если кто-то может обойти стороной.
Kzqai
20

Одна вещь, которую вы могли бы рассмотреть, это что-то вроде 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);
 }
}
Павел Савара
источник
6
Не знаю насчет робокода, но я начал заниматься кодированием после использования логотипа. Возможность нарисовать дом, используя вперед, назад, влево, вправо и т. Д. Это поможет вам понять простые инструкции, выполняющие огромные задачи.
День Робина
1
Да, я выучил логотип в компьютерной лаборатории в начальной школе. Я был одним из детей, которые, помимо мысли, что это круто, хотели узнать больше.
Трэвис
1
+1 За RoboCode! Я люблю robocode, и мы проводили соревнования между собой, чтобы увидеть, кто придумает лучшие алгоритмы
Андреас Греч
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. Тем не менее, это просто для ясности и чтобы показать, что я не редактирую оригинальный документ.

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

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

Уэсли
источник
17

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

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

Суть в том, что я мог бы действительно заняться чем-то вроде обработки ( 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);
}

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

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

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

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

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

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")
meepmeep
источник
++ Я не уверен, где это будет соответствовать плану урока, но это мило.
Майк Данлавей
13

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

for( int i = 0; i < 200; i++ )
{
   System.out.println( i );
}
Джош Валу
источник
13

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

В качестве примера приведем скрипт «Google Two Columns»:

result2 = '<table width="100%" align="center" cellpadding="10" style="font-size:12px">';
gEntry = document.evaluate("//li[@class='g'] | //div[@class='g'] | //li[@class='g w0'] | //li[@class='g s w0']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < gEntry.snapshotLength; i++) {
  if (i==0) { var sDiv = gEntry.snapshotItem(i).parentNode.parentNode; }
  if(i%2 == 0) { result2 += '<tr><td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td>'; }
  if(i%2 == 1) { result2 += '<td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td></tr>'; }
}
sDiv.innerHTML = result2+'</table>';

if (document.getElementById('mbEnd') !== null) { document.getElementById('mbEnd').style.display = 'none'; }
joeytwiddle
источник
10

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

Извините, что это более 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" );
Greg
источник
9

С 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, но вам придется установить его вручную для Windows.

Чтобы продвинуться дальше, этот сценарий из двух строк также может быть написан на 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()
Bryan Oakley
источник
9

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

Stevo3000
источник
Я хотел бы это предложение, но было бы лучше с примером и чему можно научиться из этого. Например, пример, приведенный в вопросе: [code] javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ code] показать порядок работы.
Tylermac
8

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

Эндрю Санки
источник
8

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

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

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  
оборота JohnFx
источник
Почему то Clipboard.Clear? Он удаляет весь контент из буфера обмена, даже нетекстовые данные (например, данные изображения). Это вообще не то, что вы хотите вообще.
Конрад Рудольф
Ну, тогда, возможно, самая короткая программа должна быть в два раза меньше ее текущего размера ...
JohnFx
Действительно аккуратно. Ненавижу вводить длинные пути, а потом спрашиваю, есть ли опечатка
Сильвердраг
AFAIK в «современных» версиях Windows, это именно то, что он делает, когда копируешь файл (Ctrl + C) ... Просто копируешь имя файла. Может кто-нибудь попробовать это (так как у меня нет окон)?
Опатут
У меня есть Windows 7, и он не делает этого.
JohnFx
7

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

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

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

Роберт С.
источник
Это отлично подходит для семестрового проекта. Хотелось бы, чтобы я думал об этом еще когда учил.
Майк Данлавей
6

Я уверен, что это превратится в более чем 10 строк кода, но рассматривали ли вы приложение на основе форм, где нажатие кнопок приводит к изменению цвета фона или изменению размера текста? Это покажет им, как работают интерактивные программы. Это также показало бы им, что они, как программист, полностью контролируют то, что делает компьютер (программа).

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

оборота ChrisF
источник