Що найкрутіше, що ви можете зробити в <10 рядків простого коду? Допоможіть мені надихнути початківців! [зачинено]


406

Я шукаю круту річ, яку ви можете зробити в декількох рядках простого коду. Я впевнений, що ви можете написати набір Мандельброта в Haskell в 15 рядків, але це важко дотримуватися.

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

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

Тепер мої причини корисливі. Я викладаю курс « Вступ до обчислювальної техніки» групі з 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 з деякими інструкціями, як його відобразити . Коли я натискаю клавішу Enter у полі введення, вона оцінює або "повертає" все, що я ввів. (Підказка: "oooooo" видає кумедний звук) Тож, коли я кажу "Говори", правильна сторона - це те, що говорити. І я отримую це від InputBox.

Отже, коли ви робите кілька речей на лінії, наприклад:

x = 14 + y;

Потрібно знати про порядок речей. Спочатку додаємо 14 і у. Потім ми ставимо результат (те, що він оцінює, або повертає) у х.

Це моя мета, щоб мати купу цих класних прикладів, щоб продемонструвати та навчити клас, поки вони розважаються. Я спробував цей приклад на своїй кімнаті по кімнаті, і хоча я не можу використовувати це як перший урок, їй це сподобалось і щось навчилося.

Деякі класні програми з математики, які створюють гарні графіки чи форми , які легко зрозуміти, були б хорошими ідеями, і я збираюся розглянути їх. Ось кілька складних прикладів сценарію дій, але це занадто вдосконалено, і я не можу навчити спалаху. Які ще ідеї у вас є?


102
Я думаю, що питання про те, як навчати програмуванню, є чудовими та нетривіальними. Удачі в тому, що ви намагаєтеся зробити.
Майк Данлаве

6
"моя мета - надихнути студентів на те, що програмування класно". Я не думаю, що ти можеш сказати людям, що програмування це круто. Або їм це подобається, або їм це не подобається.
Рік

2
Ваш скрипт VBS в одному рядку не працює на моєму Mac! :-P Хоча гарне запитання.
Джон Топлі

1
Мені завжди подобаються подібні речі, але ким ти намагаєшся справити враження, мені, прокладка Сірпінського, зробила б мені гарну роботу. Для ІТ-хлопців може щось створювати файли, для деяких людей, які роблять комп'ютерні розмови, будуть вражаючими тощо. Отож, яка важлива цільова аудиторія, то ви визначаєте, що цікаво.
Дубовук

5
83 особи схвалюють коментар про те, як це питання є "відмінним та нетривіальним" ... закритим як "неконструктивним" 5 людей, які, очевидно, не згодні. Невже влада велична?
rg88

Відповіді:


78

Я отримав чудову відповідь від своїх дітей за допомогою швидкого сценарію VB для маніпулювання символом агента Microsoft. Для тих, хто не знайомий з агентом MS, це серія анімованих екранні символи, якими можна керувати через 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 для отримання додаткової інформації.

EDIT 2011-09-02 Нещодавно я виявив, що Microsoft Agent не встановлений у Windows 7, проте він пропонується як окрема завантаження тут . Я цього не тестував, тому не можу перевірити, чи працює він.


Це круто. Це заслуговує на більшу кількість коштів.
Том Ріттер

Дякую за визнання Том. Зрозуміло, що я не отримаю балів повторень, навіть якщо він почне отримувати відгуки. :-P
Боб Мак

32
Таким чином ви можете бачити скріпки весь час : D
Педері

8
@Bob BASIC - мова для початківців. VB не є ОСНОВНИМ. VB - швейцарський армійський ніж, створений MS, щоб відповідати потребам у той час. На сьогоднішній день є набагато кращі (набагато більш спеціалізовані) інструменти, які можуть зайняти своє місце. VB - це не погана мова, у неї просто багато зайвого багажу. Якби я наводив одну абсолютно неупереджену причину, чому б не використовувати її, це було б тому, що MS поступово припиняє підтримку VB. Це вмираюча мова. Зачекайте, поки сценарії Office будуть виконані за допомогою JavaScript (що планується найближчим часом), тоді зниження VB буде впевненою справою.
Еван Плейс

3
@Evan - Спасибі за справедливу відповідь, а не за якусь релігійну витівку. Чудово зроблено. Я не чув про переїзд JavaScript Javascript. Буде розслідувати.
Боб Мак

339

Введіть цей код у адресному рядку (у своєму браузері) та натисніть клавішу Enter. Потім ви можете редагувати весь вміст веб-сторінки!

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

Це найкрутіший "однолінійний", який я знаю =)


95
"Однолінійний" - така помилка. Це 3 рядки, справді. Будь-який код може бути одним рядком, якщо ви хочете, щоб він був.
НевдоволенийGoat

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

Це підірвало людей! Комп’ютер запам’ятав їх ім’я!

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


15
було б краще з наступним: 40 GOTO 30
витрачається

8
+1 за показ імені користувача, люди завжди люблять бачити своє ім’я. @saua, як це не нескінченний цикл друку? Він повертається до рядка 30, а не до рядка 20.
z -

13
Повинне бути до 10, напевно, щоб хтось інший міг ввести своє ім'я ...
Омар Кохеджі

17
Ви забули 35 PRINT CHR $ (7)
Адам Яскевич

6
ось як я навчився програмування теж. Його найкраща відповідь. +1, щоб прийняти цю
натисніть Upvote

180

PHP - прокладка Sierpinski aka 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 прокладка


25
Для запису, це прокладка Серпінського.
хаос

6
Це дивовижно, але я думаю, що це має прийти приблизно в середині курсу, оскільки він ґрунтується на ряді понять, таких як петлі та масиви.
Майк Данлаве

4
@Masi: загальна ідея полягає у тому, щоб мати три фіксованих точки, які є кутами трикутника, та "поточну" точку, яку ви постійно оновлюєте. Щоб зробити хід, виберіть один із кутів навмання та перемістіть поточну точку половиною шляху до цього кута. Колір у поточній точці. Потім зробіть ще один хід таким же чином, а потім знову ще кілька тисяч разів і візерунок з’явиться. Потім спробуйте його з різною кількістю кутів або змінити дріб, на який поточна точка стрибає до кута, щоб побачити, як це впливає на візерунок.
Даніель Ервікер

18
Для запису, що це не прокладка Сьєрпінського ... Це, власне, Triforce. en.wikipedia.org/wiki/The_Legend_of_Zelda
jason

2
Цей код мені здається дивним, тому що я зазвичай бачу це за допомогою рекурсії (також із дуже малою кількістю рядків коду). Насправді фрактали - це хороший вступ до рекурсії на уроках інформатики. Але мені здається, що цей код буде досить неефективним, малюючи та перефарбовуючи багато пікселів через свій випадковий підхід.
Стів Вортем

105

У Microsoft є Small Basic , IDE для "дітей".

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

Він спеціально розроблений, щоб показати, наскільки класним є програмування.


80
Це насправді відстійно, тому що ці дзвінки в бібліотеку здаються магічними. Ви налаштовуєте їх, щоб вони були дітьми сценарію VB. Я боюся, що вони ніколи не зациклюються на тій «темній магії» області і залишаться на «безпечній» сантехнічній ділянці. ... О, дивіться ось як зробити Інтернет-браузер в один рядок! MSIEControl (.. blabla як би все ...). Show ()
hasen

88
Я не думаю, що діти - ідіоти. Якщо ви захоплюєте їх можливостями програмування, вони дізнаються, як зробити більш просунуті речі самостійно. Якщо нічого іншого, юні інфіковані тестостероном хлопці намагалися б дізнатися найсміливіші, темні магічні речі, перш ніж ви навіть дізнаєтесь, що сталося.
Тім Лін

28
@hansen j, це несправедливо, всі повинні десь почати.
Джон Фаррелл

30
Це не ступінь CS для дітей, це іграшка для програмування. Незалежно від того, що шлюз полягає в тому, щоб діти побачили веселу сторону програмування, це чудово, це не повинно бути ASM.
Copas

29
Знаючи дітей, яких я намагався навчити, минуло десять секунд, перш ніж вони спробують pic = Flickr.GetRandomPicture ("сиськи")
Ієн Галлоуей,

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 рядків]


Це справді акуратно! Я не був знайомий із об’єктом SyndicationFeed - дякую за код!
Tad Donaghe

Цільова аудиторія - це непріхотники, ерго, вони не бляшають про твіттер?
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()

68

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

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

Сценарій, який застосовує спеціальні ефекти до зображення? Ось для чого і Photoshop. І Photoshop знімає все, що можна зробити, за 10 рядків.

Як щодо копіювання компакт-диска та перетворення файлу в MP3? Ух, у мене вже є 50 000 пісень, які я отримав від BitTorrent. Вони вже у форматі MP3. Я відтворюю їх на своєму iPhone. Хто купує компакт-диски взагалі?

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

а) застосовне до чогось, що їм здається цікавим і класним, і b) робить те, чого вони ще не можуть зробити.

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

Але переважна більшість з них не мають уявлення, як насправді працює будь-яка з цих «комп'ютерних речей».

Вони неймовірно креативні купу: вони люблять створювати речі. Вони просто хочуть вміти робити або робити щось, чого не можуть їхні друзі. Вони хочуть чим похвалитися.

Ось деякі речі, які я знайшов резонанс у своїх учнів:

  • HTML та CSS. З них вони дізнаються, як працюють теми MySpace і можуть їх налаштувати.
  • Машупи. Всі вони їх бачили, але не знають, як їх створити. Перевірте Yahoo! Труби . Є безліч навчальних моментів, таких як RSS, XML, фільтрація тексту, відображення та візуалізація. Заповнені віджети мішалки можна вбудовувати у веб-сторінки.
  • Художній твір. Подивіться на мистецтво без контексту . Рекурсія та рандомізація є ключовими для створення красивих знімків.
  • Розповідь. Завдяки простому у використанні середовищі програмування 3D, як-от Аліса , легко створювати якісні, цікаві історії, використовуючи не що інше, як перетягування та перетягування.

Жодне з них не передбачає програмування в традиційному розумінні. Але вони користуються потужними бібліотеками. Я думаю про них як про інший вид програмування.


11
+1 Мені сподобалось, як ви описали дітей, які мають 50 000 пісень від bittorrent та Adobe CS4 дарма, це, звичайно, реальність
thomasrutter

Напишіть простий алгоритм бінарного пошуку в python. Розірвіть телефонну книгу вдвічі кілька разів, щоб описати, як вона працює. Це прості, але потужні аспекти програмування, які досвідчені програмісти часто не помічають, а новачки дивляться @ зі страхом. більшість людей не розуміють, що їхні монітори оновлюють принаймні половину пікселів на моніторі 60-120 / сек. робити гонки проти швидкості між комп'ютером та людиною. веселі речі. див. це для отримання додаткових ідей: academicearth.org/courses/introduction-to-computer-science-i : і що б ви не робили ... не вчіть їх ANSI C як їх першої мови. Я там був, це смоктало.
Еван Плейс

3
Якщо ви налаштовуєте сайти, чому б тоді не використовувати Greasemonkey?
new123456

Лише кілька думок щодо ваших прикладів: повторно фотошоп, вам просто потрібно вказати на очевидне - за допомогою фотошопу ви можете змінити 1 зображення, а за допомогою сценаріїв ви можете змінити сотні тисяч. Щодо MP3-файлів, ви праві, ніхто більше не завантажує компакт-диски, але ви можете (якщо б не законності) пояснити, що вони можуть написати програму для автоматичного завантаження найновішої музики прямо на свій iPod.
Джефф Веллінг

@JeffWelling добре за допомогою 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

5
Приємно! Шкода, що там немає жодного місця, яке насправді говорить "Hello World!"
Ponkadoodle

Це досить! Модель Мандельброта: D
Анікет

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)

2
Добре, але ви повинні дати приклад конкретного і знає ..
HASEN

1
@John: Будь ласка, наведіть конкретний приклад. Я використовував JS лише на своєму сервері, експортуючи файл JS. Я ніколи не ставив код у свій адресний рядок.
Лео Леопольд Герц 준영

7
Ну не дуже захоплюючий приклад, але ви можете зробити javascript: alert ("Hello World");
Джон Топлі

Я вважаю за краще: "javascript: for (var i = 0; i> -1; i ++) попередження (" Вітаю, ти натиснув клавішу "+ 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)

4
Більш цікавим було б, щоб користувач обрав випадкове число, а потім комп'ютер відгадав це.
Ерік Форбс

15
Тепер змусьте ці дві програми відтворювати одна одну через сокет.
Джош Лі

3
Було б краще, якби комп’ютеру не було вказано номер безпосередньо. Ви повинні сказати користувачеві "вибрати число від 1 до 100". Потім виведіть "Я здогадуюсь 50" і запитайте про введення ("вище", "нижче" або "правильно") і уточніть свою здогадку.
Ponkadoodle

Я робив це з моїм сином (9), і це також має перевагу вступити в алгоритмічне мислення, яка найкраща стратегія пошуку правильного числа в найкоротшій кількості здогадок.
mbesso

Я думаю, ти хочеш raw_input. Вхід дорівнює eval(raw_input(prompt)). Див. Вхід .
Джефф Кауфман

26

Ще в комп’ютерному класі в середній школі я і пара друзів навчали клас програмування з Delphi. Клас в основному був зосереджений на програмуванні з Паскалем, тому Delphi був гарним наступним кроком. Ми продемонстрували характер Delphi, керований подією та його можливостями RAD. Наприкінці уроку ми показали класу зразок програми та попросили їх відтворити. Програма запитала " Ви п'яні? " З двома кнопками Так і Ні . ... Я думаю, ви знаєте, що буде далі ... ні одна кнопка не змінила місця на миші, і натиснути її було майже неможливо.

Студенти та викладач добре відбилися від цього.

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


7
Не тільки розважаючий, але і мій колега один раз робив це в якомусь програмному забезпеченні, тільки це була кнопка «ОК» на коробці повідомлень. Це було внутрішньо використовуване додаток, тому його не нахмурили. Це робив це лише один раз у синій місяць. Звичайно, вони зателефонують йому, і він скаже, що йому потрібно бачити це, якщо він вірить у це. Тож він блукав, і, звичайно, цього не сталося, коли він був там ...
Джейсон Д

Я пригадую щось подібне .. але це було спалахом .. і питання було "Ти гей?" .. і кнопкою, що натискає набір феєрверку.
glasnt

2
Це був би цікавий час навчити людей орієнтуватися через вкладку та пробіл.
davidahines

23

Коли я вперше з'ясував баш-форкбомбу, я подумав, що це справді солодко. Настільки просте, але чітке, що він може зробити:

:(){ :|:& };:

7
Ось досить вдале пояснення: cyberciti.biz/faq/understanding-bash-fork-bomb
hodgesmr

12
для нових хлопців з Linux: не бігайте, інакше ви втратите всю свою роботу.
Behrooz

@ Beehrooz, залежить від вашого дистрибутива, деякі мають вбудовані довільні межі нитки / вилки.
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
Як це повинно когось навчити? На незв’язану ноту, COOL! ХА! Дуже сподобалося!
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. Однак це просто для того, щоб все було зрозуміло, і щоб показати, що я не редагую оригінальний документ.

Менш ніж за десять рядків я переписав документ. Звичайно, також обов'язково покажіть новому програмісту всі наявні строкові методи . Що ще важливіше, я показав три принципово цікавих речі, які я можу зробити: призначення змінної, цикл, IO файлів та використання стандартної бібліотеки.

Я думаю, ти погодишся, що цей код не засліплює. Насправді це трохи нудно. Ні - насправді це дуже нудно. Але покажіть цей код новому програмісту і подивіться, чи не зможе він змінити кожну частину цього сценарію на щось набагато цікавіше протягом тижня, якщо не дня. Звичайно, вам буде неприємно (можливо, використовуючи цей скрипт, щоб зробити простий 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")

++ Я не впевнений, де він би вписався в план уроку, але це мило.
Майк Данлаве

13

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

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

13

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

Як приклад, ось сценарій "Дві колонки Google":

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

if (document.getElementById('mbEnd') !== null) { document.getElementById('mbEnd').style.display = 'none'; }

10

Це дуже рудиментарна текстова програма 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" );

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

Виконайте будь-який із наведених вище блоків коду з " ім'ям файлу бажань " на обраній вами платформі. Wish постачається з більшістю * 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()

9

Як щодо закладки? Це показало б їм, як маніпулювати тим, чим вони користуються щодня (в Інтернеті), не вимагаючи жодних інструментів розробки.


Мені подобається ця пропозиція, але краще було б із прикладом і чого можна з цього навчитись. Такий, як приклад, наведений у запитанні: [код] javascript: alert (4 (5 * 5) / 10 + 9 (.25 + .75)); [/ код], щоб показати порядок роботи.
tylermac

8

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


8

Про це я писав недавно у статті "Найкоротша, найкорисніша програма, яку я коли-небудь писав".

Короткий зміст: Я написав додаток VB6 для 3 рядків ще в 1996 році, який я все ще використовую щодня. Після того, як exe буде скинуто в папку "Надіслати". Це дозволяє вам клацнути правою кнопкою миші на файл в Explorer і відправити повний шлях цього файлу до буфера обміну.

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

Чому Clipboard.Clear? Він видаляє весь вміст із буфера обміну, навіть нетекстові дані (наприклад, дані зображення). Це взагалі не те, чого ви хочете взагалі.
Конрад Рудольф

Ну, то, можливо, найкоротша програма повинна дорівнювати половині її поточного розміру ...
JohnFx

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

AFAIK у "сучасних" версіях Windows - саме те, що робиться при копіюванні файлу (Ctrl + C) ... Просто копіювання імені файлу. Хтось може спробувати це (так як у мене немає вікон)?
opatut

У мене є Windows 7, і це НЕ робить.
JohnFx

7

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

Але одного разу я побачив, що довга, складна для написання програма BASIC породжує "фрактальну місцевість", мене причепили і я ніколи не озирався назад. Це змінило те, як я думав про математику, науку, комп’ютери та про те, як я навчаюсь.

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


Це чудово для семестрового проекту. Мені б хотілося, щоб я про це думав ще під час викладання.
Майк Данлаве


6

Я впевнений, що він перетвориться на понад 10 рядків коду, але чи розглядали ви додаток на основі форми, де натискання кнопок робить такі речі, як зміна кольору фону або зміна розміру тексту? Це показало б їм, як працюють інтерактивні програми. Це також показало б їм, що вони, як програміст, повністю контролюють те, що робить комп'ютер (програма).

Сподіваємось, це призведе до того, що вони можуть робити пропозиції щодо інших речей, які вони можуть змінити, а потім до інших речей, які вони можуть захотіти зробити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.