tag:blogger.com,1999:blog-62980492607404326952024-03-13T02:43:13.946+03:00Программирование для детейОбучение детей программированию на языке Processing (основан на Java)Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.comBlogger39125tag:blogger.com,1999:blog-6298049260740432695.post-87662768806062288082022-07-31T10:05:00.001+03:002022-07-31T10:08:12.995+03:00Почему ребенок вроде бы изучает программирование успешно, а потом забрасывает?<div><span style="font-family: arial;">Вопрос от подписчика: </span></div><div><span style="font-family: arial;"><i>"Хочу научить ребенка программированию и уже имеем некоторый опыт. Но все несколько заходов почему-то прерываются и потом программирование у него откладывается долгий ящик. Недавно проверил, как он запомнил материал – и на мое удивление, он написал небольшую программу. В общем знания вроде сохраняются и это радует. Но почему то всегда этот процесс прерывается на каком-то этапе. Возможно это больше моя вина – что я не соблюдаю регулярность. Все жду, что он сам загорится этим. Одной из проблем которые вижу – это отсутсвие окружения, таких же ребят которые интересуются программированием среди школьников"</i></span><br />
<span style="font-family: arial;"></span></div><div><span style="font-family: arial;"><br /></span></div><span style="font-family: arial;">Как всегда причин множество. В целом нет проблем с перерывами, у детей меняется настроение, увлечения. Может позаниматься то одним, то другим. </span><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Еще могут быть особенности баланса технического/гумманитарного мышления. То есть, например, техническую часть осваивает хорошо или даже отлично, но сердце больше лежит к художественной самореализации. Тогда можно поискать что-то на стыке тех/гум: 3d движки, дизайн, видео, аудио, сторрителлинг. Гуманитарное тоже может быть разным: у кого-то отличное визуальное мышление, кто-то фанатеет по звуку, а кто-то "весь в тексте" и пишет прекрасные истории, нарративный писатель.</span></div><div><span style="font-family: arial;"><br /></span><div><span style="font-family: arial;">Главное – в отношении ребенка не проецировать свои ожидания, а задавать себе вопрос: "Мне ужасно интересно, а кто ты, какой ты?". Мы склонны достраивать ожидания исходя из своих ценностей, опыта, привычек. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">А у детей – сильнейшая потребность самореализоваться именно такими, какими они хотят и могут быть. А самореализация – это 1) самостоятельная 2) реализация 3) своих самых сильных сторон.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">И здесь часто родители упускают первый пункт про "самостоятельность". Я тут могу завернуть длинный спич про нейрофизиологию и особенности дофамино/серотонино/кортизольного "обмена". Этот базис важно знать, чтобы помогать выстраивать автономную мотивацию у ребенка.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">Но если кратко, то "регулярность" больше относится к гигиене в самом общем смысле и не у всех относится к области мотивации, зависит от характера. Поэтому да, ждать это хорошо, а еще лучше ждать проактивно, подкрепляя успехи.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">По окружению – вы все верно заметили. Окружение – одно из сильнейших подкреплений. И совместная туса со сверстниками в любимом деле – крутая штука, которую сложно переоценить. Но оно также может и сбивать с собственной волны, так что не является чем-то безусловно необходимым. </span></div><div><br /></div>
<div><br /></div><div><span style="font-family: arial;">(Полный дейли-блог по написанию и изданию книги "Программирование на Python для детей" веду в Телеграм: </span><span style="font-family: arial;"><a href="https://t.me/p4kids">https://t.me/p4kids</a>)</span></div></div>Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-61431964232429419442022-04-03T15:42:00.002+03:002022-04-03T15:42:50.824+03:00Опрос: прорабатываем новую книжку для детей по программированию на Python<p><span style="font-family: arial;">Вот хочет родитель купить книгу по программированию для своего ребенка и думает:</span><span style="font-family: arial;"> "новый комп в текущей ситуации покупать дорого, а свой рабочий не могу дать ребенку". "А вот смартфон у него и так есть, куплю книжку и пусть учится программировать".</span></p><p><span style="font-family: arial;">🧑💻 Компов много, но смартфонов несравненно больше. Сейчас почти у каждого ребенка 10+ </span><span style="font-family: arial;">есть свой смартфон. </span></p><p><span style="font-family: arial;">🛏 Прям картинку вижу, как сидит ребенок в кресле/на стуле/лежит на диване: в одной руке цветная красивая книжка, в другой – смартфон.</span></p><p><span style="font-family: arial;">📖 Открывает книжку, перелистывает страницу, читает, улыбается.</span></p><p><span style="font-family: arial;">📱</span><span style="font-family: arial;">Берет телефон и наводит камеру на страницу. На телефоне автоматически открывается код из примера.</span></p><p><span style="font-family: arial;">🎲 Тыкает пальцем в смартфон, проверяет, как работает код, экспериментирует.</span></p><p><span style="font-family: arial;">📖</span><span style="font-family: arial;"> </span><span style="font-family: arial;">Откладывает смартфон. Снова берет книгу, читает дальше. Следующий шаг, следующую главу.</span></p><p><span style="font-family: arial;">📱Снова наводит камеру смартфона на qr-код на странице. Бах, пример из книги "волшебным" образом оказался на смартфоне и сам запустился. Это какая-то простая самописная игра или просто анимированная картинка. Тамагочи, графический редактор, стрелялка или что-то другое.</span></p><p><span style="font-family: arial;">📱Ребенок меняет цвета, правит алгоритм. Меняет последовательность действий, изучает команды языка Питон. Добавляет циклы, условные выражения. Может списки (массивы) или функции.</span></p><p><span style="font-family: arial;">📱Сохраняет код и отправляет ссылку себе в соц. сеть.</span></p><p><span style="font-family: arial;">📖</span><span style="font-family: arial;"> Когда не получилось, находит в книге подсказки.</span></p><p><span style="font-family: arial;">📖 </span><span style="font-family: arial;">Открывает книгу дальше, чтобы сделать следующий интересный проект.</span></p><p><span style="font-family: arial;">🐶 Берет книгу и телефон в школу, собирая вокруг себя заинтересованных друзей.</span></p><p><span style="font-family: arial;">🐞 Берет на прогулку. Кодит в путешествии и поездках. Берет "в гости" к бабушке. Кодит </span><span style="font-family: arial;">вместо прополки огорода – "я работаю на будущее, не отвлекайте!"</span><span style="font-family: arial;"> </span></p><p><span style="font-family: arial;">👉 Это мы планируем написание новой книги для детей.<br />Я думаю о том, чтобы читая книгу для детей по программированию можно было бы кодить на мобильном! Без стационарного компа или ноутбука!</span></p><p><span style="font-family: arial;">Мне кажется, что телефон естественным образом дополняет книгу.</span></p><div><span style="font-family: arial;"><b>А вы что думаете?</b></span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">(Дубль блога в Телеграм: </span><span style="font-family: arial;"><a href="https://t.me/p4kids">https://t.me/p4kids</a>)</span></div>Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-13522499126151091522016-09-12T12:47:00.000+03:002017-07-07T19:02:08.372+03:00Курс по основам программирования на Java для новичков<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Новый интерактивный курс по Легкой Java с поддержкой преподавателя онлайн!</span></h3>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">От автора книжки "Яша учится программировать"!</span><br />
<br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Как проходит обучение?</span><br />
<ol style="text-align: left;">
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Вы регистрируетесь на курс <a href="http://khasang.io/p/tryjava?utm_campaign=prog4kids1&src=prog4kids1" target="_blank">здесь</a>.</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Слушаете лекцию.</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Нажимаете кнопку "Я СДЕЛАЛ".</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Переходите к следующей лекции или к программированию.</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Программируете прямо в браузере! Без установки дополнительных программ!</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Сохраняете код – пересылаете его вашему преподавателю.</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Он смотрит и вам отвечает – общаетесь с преподавателем, задаете вопросы, спрашиваете, что не понятно было.</span></li>
<li><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Проходите бесплатный курс и можете продолжить обучение на самую современную профессию Java-разработчика на последующих курсах.</span></li>
</ol>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<h3 style="text-align: left;">
<b><span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">Заходите: <a href="http://khasang.io/p/tryjava?utm_campaign=prog4kids1&src=prog4kids1" target="_blank">khasang.io/courses/tryjava</a> </span></b></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://khasang.io/p/tryjava?utm_campaign=prog4kids1&src=prog4kids1"><img alt=" khasang.io/courses/tryjavaintro" border="0" height="329" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGTs7a6yrVHbnVZ3n-Jv-NhhaziYN1W2TQkDcnBU9Z6jAckMT5OOhsmJvyjjna7i-Wk0f8vevyGeDrYr24Uj5XTaUBRb18MOZlRsyIFFvYrSLegWw5kBwCf2Mc63mpCrK3rCHpw0Ce2-Q/s640/tryjava_workspace.png" title="" width="640" /></a></div>
<br /></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-65203964978126215842016-04-05T19:09:00.001+03:002016-04-05T19:09:37.791+03:00Как исправить русские буквы в Процессинге<div dir="ltr" style="text-align: left;" trbidi="on">
Нам пишут:<br />
<br />
"Интик, в новой версии процессинга 3.0.1, когда вводишь текст "русскими буквами" вместо текста отображаются крокозяблы.<br />
Хотя когда Создатель Планет ее запускает то все отображается отлично.<br />
<br />
Так вот что бы русские буквы корректно отображались в коде программы можно в File -> Preferences -> Editor and console font поставить шрифт к примеру Courier New.<br />
<br />
И тогда все становится супер!<br />
<br />
Малыши могут запутаться, наверное им надо об этом рассказать!"<br />
(спасибо автору: <span class="b-message-head__contact"><span class="b-message-head__name">ddinamit ddd)</span></span></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-80432207943634768782016-01-19T14:37:00.001+03:002016-01-19T14:37:27.214+03:00Какой язык программирования изучать детям?<div dir="ltr" style="text-align: left;" trbidi="on">
Что изучать детям:<br />
<br />
<b>-- 1. Скретч</b><br />
<br />
позиционируется от 8 до 16 лет<br />
https://scratch.mit.edu/about/<br />
<br />
Однако пик возраста изучающих 10 - 15 лет<br />
https://scratch.mit.edu/statistics/<br />
<br />
Есть хорошие интерактивные обучающие онлайн-уроки по Scratch.<br />
Чем могла бы быть интересна книга по Скретч?<br />
а) Предположим, она описывает, как им пользоваться. <br />
Но 1. это будет неконкурентно онлайн-туториалу. Все равно, что писать книгу, как играть в Angry Birds или Plant vs Zombies. Современные онлайн-туториалы уже заточены под интерактивное обучение. <br />
И 2. Чтобы объяснить как играть в скретч придется делать сотни скриншотов экрана. И, раз для детей, то цветных. Объем книги получится несколько сотен страниц. <br />
Получается, что дорого издать, а большой объем скорее всего отпугнет детей, дети в этом возрасте не любят толстые книжки, насыщенные информацией.<br />
б) Следовательно, книга могла бы быть полезна, как маркетинговый, завлекающий материал. Чтобы заинтересовать Скретчем.<br />
Тогда она должна быть маленькой, страниц на 30 - 50, и больше рассказывающей про программистов, а не обучающей.<br />
<br />
<br />
<b>-- 2. Детская Java (aka Processing)</b><br />
<br />
возраст целевой аудитории тот же: около 10 лет и старше<br />
<br />
Плюсы:<br />
1. Опыт преподавания показывает, что эту книгу будут гарантировано читать не только дети, но и взрослые, особенно гуманитарии, которые хотят узнать что-то про программирование, но обычные материалы для них скучны. (Собственно, Яшу так читают и рекомендуют)<br />
Ее можно распространять на обучающих курсах.<br />
<br />
2. Позиционирование: это серьезный язык.<br />
Не просто какой-то непонятный язык, а базируется на Java, которая уже двадцать лет на 1-2 месте среди всех языков программирования.<br />
<br />
3. Пути развития намного шире: после изучения Детской Java легко программировать роботов на самой известной платформе: Ардуино. Так как там используется тот же самый язык.<br />
В перспективе можно двигаться в сторону программирования под Андроид. Под Андроид программируют тоже на Java. А количество запросов на программистов под Андроид в разы растет каждый год.<br />
Java-программисты по прежнему имеют самый высокий оклад на рынке. Это связано с тем, что Java масштабно используется в банковском и фин. секторе.<br />
<br />
Покупая книжку по Детской Java для ребенка, родители понимают, что реально вкладываются в его будущее. Ведь их ребенок делает первые шаги в языке, который за двадцать лет показал свою стабильность и востребованность.<br />
И даже, если он не станет программистом, само изучение языка программирования отлично влияет на успеваемость. <br />
<br />
4. Легкость освоения. Он не сложнее скретча. Но за счет необходимости изучать синтаксис (есть свои правила, как в русском или иностранном языке) требует от детей, чтобы они были где-то на год старше.<br />
По сравнению с взрослыми языками Детская Java ориентирована на визуальную составляющую, что детям очень нравится.<br />
<br />
5. Можно легко сделать версию с русским языком в виде команд, тогда изучать его еще проще<br />
См. <a href="http://www.programmingforkids.ru/2013/10/detskaya-java-priklyuchenie-pervoe.html">http://www.programmingforkids.ru/2013/10/detskaya-java-priklyuchenie-pervoe.html</a><br />
<br />
Соответственно есть вариант написания мини книги на основе http://www.programmingforkids.ru/2013/10/detskaya-java-priklyuchenie-pervoe.html<br />
<br />
<b>-- 3. Языки: Ruby, python, javascript и другие</b><br />
<br />
Тоже прекрасный и современный выбор. Но из-за еще большей абстрактности требования к возрасту целевой аудитории еще на пару лет выше.<br />
Или же требует детальной проработки тем с упором на визуальную составляющую</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com5tag:blogger.com,1999:blog-6298049260740432695.post-64157057701915017762016-01-16T15:08:00.000+03:002016-01-16T15:08:00.642+03:00Интервью с автором книги Игорем Грессусом для ELLE<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhghjxuZ6cPkAmSGcGE5Wl7bEwoLiHxWG4Ijjmz6Ivn7I14n4aWMV2ZvFORyPYzBGpl6ypZwI5ftXmRCvA-HWYVRCMY3nzAPexS7LSZR-jwzEqTiyJr0WF6r3rPxb5fxkjM_SMwmBaeT1k/s1600/elle_programmingforkids2landscape.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhghjxuZ6cPkAmSGcGE5Wl7bEwoLiHxWG4Ijjmz6Ivn7I14n4aWMV2ZvFORyPYzBGpl6ypZwI5ftXmRCvA-HWYVRCMY3nzAPexS7LSZR-jwzEqTiyJr0WF6r3rPxb5fxkjM_SMwmBaeT1k/s640/elle_programmingforkids2landscape.png" width="628" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Если коротко и на пальцах. Программирование — это вид общения через
набор команд.<br />
<br />
Сначала планирование, затем исполнение. Это способ
взаимодействия.<br />
«Когда ребенок просит: «Налей мне сока, пожалуйста», это
не что иное, как адресное обращение к кому-либо, чтобы получить
что-либо.<br />
<br />
Именно это обращение в программировании мы называем командой,
инструкцией, действием, — проводит параллели с бытовой жизнью Игорь
Грессус, преподаватель, коуч и автор книги для детей «Яша учится
программировать».<br />
<br />
— Мнение, что программирование — это что-то неразрывно
связанное только с компьютером и ребенок должен до этого дорасти,
ошибочно.<br />
Детей можно обучать практически с любого возраста, причем для
них этот процесс не будет ничем отличаться от других игр.<br />
Но вместе с
тем — поможет лучше узнать современный мир, его устройство, а значит,
найти свое место в нем».<br />
Более того, по словам специалистов,
компьютерные языки даже помогают детям в изучении родного русского — они
быстрее и легче схватывают правила, систематизируют информацию и очень
точно применяют ее на практике. <br />
<br />
Полный текст статьи здесь: <br />
<a href="http://www.elle.ru/elle-kids/chto-takoe-detskoe-programmirovanie-i-zachem-ono-nujno/">http://www.elle.ru/elle-kids/chto-takoe-detskoe-programmirovanie-i-zachem-ono-nujno/</a></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-49426831248185709182016-01-15T14:42:00.000+03:002016-01-15T14:43:04.198+03:00Игра от Denko: Разбор полетов от Мокея Лазаревского<iframe width="853" height="480" src="https://www.youtube.com/embed/vnrY2MhMvGk" frameborder="0" allowfullscreen></iframe>
<br>Ученики учеников и немного юмораIgor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-27911703686933765162015-10-01T00:57:00.002+03:002015-10-01T00:58:20.395+03:00Новый Processing 3 (Детская Java)!<div dir="ltr" style="text-align: left;" trbidi="on">
Детская Java — Processing теперь в версии 3!<br />
<br />
Легкая Java для начинающих, попробуйте!<br />
1. Теперь ищет и подсказывает, где ошибки<br />
<br />
2. Автодополнение (Code Completion)! Wow<br />
<br />
3. Можно запустить программу, она будет работать и одновременно можно менять цвета в коде или значения переменных -- и это сразу будет видно, без перезапуска! Wow<br />
<br />
4. Теперь есть деббагер! Можно выполнять код построчно! Wow<br />
<br />
5. Можно запускать fullscreen -- на инсталяциях, больших мониторах!<br />
<br />
6. Поддержка ретины! (можно указывать pixelDensity)<br />
<br />
7. Добавили новый рендеринг на основе JavaFX! (экспериментально)<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="https://player.vimeo.com/video/140600280" webkitallowfullscreen="" width="500"></iframe> <br />
<a href="https://vimeo.com/140600280">Welcome to Processing 3</a> from <a href="https://vimeo.com/processingfoundation">Processing Foundation</a> on <a href="https://vimeo.com/">Vimeo</a>.</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-82073557466681975892015-06-25T18:26:00.000+03:002015-06-25T18:30:05.894+03:00Зарплатные перспективы для начинающих программистов<span style="-webkit-text-size-adjust: auto; background-color: white; font-family: Verdana, sans-serif; font-size: 14px; line-height: 22px;">HeadHunter: самые выгодные профессии — у юристов, банковских служащих и программистов.</span><span style="-webkit-text-size-adjust: auto; background-color: white; font-family: Verdana, sans-serif; font-size: 14px; line-height: 22px;"> </span><br />
<br />
<span style="-webkit-text-size-adjust: auto; background-color: white; font-family: Verdana, sans-serif; font-size: 14px; line-height: 22px;">По информации от Минобразования: <b>Самая высокая зарплата в начале карьеры ожидает программистов</b>, им московские компании предлагают 44 тысячи рублей в месяц. Юристы получат 38 тысяч. Работники сферы продаж, сотрудники банков и рекламисты могут устроиться на зарплату в 35 тысяч рублей.</span><br />
<span style="-webkit-text-size-adjust: auto; background-color: white; font-family: Verdana, sans-serif; font-size: 14px; line-height: 22px;"><br /></span>
http://megamozg.ru/post/16724/<br />Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-8800246070009473132014-12-10T12:05:00.000+03:002014-12-14T11:31:51.274+03:00Час кода. Программирование для начинающих<b>На этой неделе проходит акция «Час Кода» от code.org, которую мы поддерживаем и предлагаем вам принять участие в открытом бесплатном вебинаре по обучению программированию.</b>
<br><br>
Для детей и их родителей, а так же для всех начинающих. Один час интерактивного обучения основам программирования. Все что вам нужно для программирования - это просто браузер!
<br><br>
Язык программирования мы будем использовать или Scratch, или Детскую Java (Processing).
<br><br>
Присоединяйтесь, будет весело и полезно!
<br><br>
<b>В ближайшее воскресенье 14 декабря 2014 с 11:00 по 12:00 (по Москве)</b>
<br><br>
<strike><a href="https://www.anymeeting.com/135-200-587">ССЫЛКА ДЛЯ ПОДКЛЮЧЕНИЯ</a></strike>
<strike><a href="https://www.anymeeting.com/394-063-155">ССЫЛКА ДЛЯ ПОДКЛЮЧЕНИЯ</a></strike>
<br><br>
<a href="http://programmingforkids.timepad.ru/event/169539">Регистрация</a>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-64573116914408559512014-11-21T02:56:00.001+03:002014-11-21T02:56:41.840+03:00Программирование на процессинге и разработка игр для начинающих<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe allowfullscreen="" frameborder="0" height="480" src="//www.youtube.com/embed/j5yV3I7rlfo?list=UUTkbyz3TOCb_iVqGX9IuZog" width="853"></iframe>
<br><br>
Илюха открыл свой канал на youtube и показывает, какие игры написал на Детской Java / Processing!<br>
<a href="http://www.youtube.com/channel/UCTkbyz3TOCb_iVqGX9IuZog">http://www.youtube.com/channel/UCTkbyz3TOCb_iVqGX9IuZog</a>
<br><br>
Круто для шестого класса, как вы считаете?<br>
Кстати, большая часть этих программ была написана Ильей когда он учился в пятом или даже в четвертом классе.
</div>Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-12065002963243638762014-11-19T01:34:00.001+03:002014-11-19T01:34:58.547+03:00Красота программирования<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6BzHtUmTP1sO3ZNff-texpEgcxw6MEnLV1ZeT5mGs1hpGKIHziDNjlOLsZUotWkJpuN6EW4Oueuh3BW2zNh5NvDzMQmttGWZZwdycAegTSWXYkakRdeYT9ReIjNOBihcifsDHjoQkFBc/s1600/tux.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6BzHtUmTP1sO3ZNff-texpEgcxw6MEnLV1ZeT5mGs1hpGKIHziDNjlOLsZUotWkJpuN6EW4Oueuh3BW2zNh5NvDzMQmttGWZZwdycAegTSWXYkakRdeYT9ReIjNOBihcifsDHjoQkFBc/s1600/tux.jpg" height="237" width="320" /></a><i>"Не знаю, как описать мою любовь к программированию, но я попробую.</i><br />
<br />
<i>Если этим занимаешься, кажется, что в мире нет ничего интереснее. </i><br />
<br />
<i>Эта игра гораздо увлекательнее шахмат, игра, в которой можно устанавливать собственные правила и где конечный результат можно понимать по-своему".</i><br />
<div>
<br /></div>
<div>
Линус Торвальдс</div>
</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com1tag:blogger.com,1999:blog-6298049260740432695.post-20648102294736661542014-06-03T15:00:00.000+04:002014-06-03T15:00:00.922+04:00Язык Swift. Урок 1.2: переменные<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<h1>
Переменные. Основа</h1>
В языке Swift переменные объявлять проще простого:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="data:image/png;base64,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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" src="data:image/png;base64,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" /></a></div>
<br />
Достаточно указать var и все. Сам тип переменной компилятор определит в зависимости от того, что вы этой переменной присвоите. <br />
Неизменяемые переменные мы объявляем чуть по другому. Вместо var пишем let. Вот так все просто. <br />
В примере выше раз вы присваиваете переменной число, то сама переменная будет числовая. И в дальнейшем ей тоже можно будет присваивать только числа. <br /><br />
<br />
<br /></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-49421666431488758282014-06-03T09:14:00.000+04:002014-06-03T09:14:27.447+04:00 Язык Swift от Apple. Первая программа “Hello world”<div dir="ltr" style="text-align: left;" trbidi="on">
<h1>
</h1>
Новый язык Swift очень прост, и отлично подойдет для обучения программированию. <br />
Посмотрите, как просто написать программу “Привет, мир!”:<br />
<br />
<pre><code>println("Привет, Мир!")</code></pre>
<br />
Даже не нужно ставить точку с запятой в конце строки!</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com1tag:blogger.com,1999:blog-6298049260740432695.post-2048387674199451552014-05-21T23:58:00.000+04:002014-12-10T17:50:34.904+03:00Сайты по программированию: Час кода от code.org, computer science, обучающие материалы по программированию для детей<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://farm3.staticflickr.com/2901/14236379821_e67e123892_z_d.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="335" src="https://farm3.staticflickr.com/2901/14236379821_e67e123892_z_d.jpg" width="400" /></a></div>
<br><br>
Update: В ближайшее воскресенье 14 декабря 2014 года в 11:00 (по Москве) пройдет бесплатный открытый часовой вебинар по обучению программированию для начинающих.
<br>
Подробности здесь: <a href="http://www.programmingforkids.ru/2014/12/hour-of-code.html">http://www.programmingforkids.ru/2014/12/hour-of-code.html</a>
<br>
<br />
<b>Есть потрясающий глобальный сайт по обучению детей программировать.</b><br />
<b>Как думаете, сколько человек уже попробовало на нем научится программировать?</b><br />
<b>Ответ: около 36 000 000 человек!</b><br />
<br />
Большая часть информации на нем на английском языке, но кое-что встречается и на русском. Посмотрите, попробуйте!<br />
<br />
И, кстати, наш проект наконец-то появился там в поиске:<br />
<br />
Если зайти по ссылке: искать локальные проекты по программированию в вашей области <a href="http://csedweek.org/learn/local">http://csedweek.org/learn/local</a><br />
<br />
то как раз можно найти и наш проект: <a href="http://csedweek.org/learn/local#www.ProgrammingForKids.ru---KidsJava">http://csedweek.org/learn/local#www.ProgrammingForKids.ru---KidsJava</a></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-27751575906121038632014-04-06T01:14:00.002+04:002014-04-06T01:16:44.491+04:00Неявное объявление переменных в языках, которые не подходят для изучающих программирование с нуля<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://farm4.staticflickr.com/3800/13651827594_5d0e051b43_o.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://farm4.staticflickr.com/3800/13651827594_5d0e051b43_o.png" /></a></div>
Существует такое популярное заблуждение.<br />
Когда детям для изучения программирования рекомендуют языки программирования в которых не нужно указывать тип у переменных. Полагают, что таким образом уберегают детей от лишней писанины.<br />
<br />
Но это совершенно не верно! В корне ошибочный подход!<br />
<br />
Потому как при таком программировании возникают очень часто встречающиеся скрытые ошибки, которые ребенку самостоятельно будет найти почти что невозможно.<br />
<br />
Например, ребенок придумал переменную number, и присвоил ей 100:<br />
number = 100;<br />
А затем где-то дальше попытался эту переменную использовать, но опечатался и стал использовать переменную nunber.<br />
<br />
Что произойдет?<br />
Компьютер сразу создаст переменную nunber, и присвоит ей значение 0. Найти ошибку будет крайне сложно.<br />
<br />
Об этом же говорит известнейший автор книг по профессиональному программированию Стив Макконел. Скриншот с его цитатой вы наверняка уже прочитали выше. Он приводит как раз подобный пример!<br />
И это для взрослых дяденек, а представляете, как было бы трудно ребенку или начинающему программисту?<br />
<br />
Поэтому мы для обучения программированию используем язык Детская Java (Processing), в котором с объявлением переменных все в полном порядке!<br />
<br />
Присоединяйтесь к изучению! Успехов!</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-49346698229236065752014-04-05T02:36:00.000+04:002014-04-05T02:36:31.475+04:00Примеры программ в книгах по программированию для начинающих<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://farm8.staticflickr.com/7094/13631910593_9c845a407a.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://farm8.staticflickr.com/7094/13631910593_9c845a407a.jpg" /></a></div>
<br />
Те, кто уже прочитал книгу "Яша учится программировать" знает, что примеры в ней особенные. Не похожи на примеры из других книг по обучению программированию.<br />
<br />
И основное отличие заключается в том, что вместо того, чтобы приводить сразу завершенный и во всех отношениях вылизанный пример, который разве что может фрустрировать начинающего программиста, приводится весь ход размышлений, все ошибки, как просто опечатки, так и логические.<br />
Наглядно показывается весь путь, который ведет от идеи до работающей программы. Даже если эта программа очень маленькая.<br />
<br />
Вот я нашел одно из подтверждений правильности такого подхода от уважаемых авторов Дэвида Парнаса и Пола Клементса.<br />
Которые явно говорят, что даже в книжках, обычных, приводятся слишком вылизанные примеры, рафинированные, которые не помогают усваивать концепцию развития программного обеспечения.<br />
И если такой подход изложения мешает изучать программирование взрослым людям, представьте себе, насколько же сложно должно быть юным программистам, когда они сталкиваются в обычной книге с примерами, которые кристально вылизаны, отточены, и в которых нет ни одной ошибки. А у самих обучающихся ошибки ведь есть! И много! Да на каждом шагу, скажем честно!<br />
И мой личный опыт обучения детей программированию говорит о том, что именно изначально несовершенные примеры, с внутренними ошибками, которые совершенствуются по шагам, по мере чтения книги, и помогают детям идеально и легко усваивать сложные программные парадигмы, и обучаться программированию действительно очень и очень быстро!<br />
<br />
Всем ни пуха, ни пера! Ни бага, ни лага!</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-26097125158857879532014-02-20T14:46:00.000+04:002014-02-20T14:46:01.551+04:00Функция cursor(); Справочная информация по Процессингу<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe width="853" height="480" src="//www.youtube.com/embed/nNv-XSIZMTs" frameborder="0" allowfullscreen></iframe>
<br><br>
Мы часто видим в компьютерных играх, как курсор на экране отображается в соответствии с задумкой создателя игры. И почти никогда он не остается обычной «системной» стрелочкой. В этом видео мы научимся менять вид курсора так, чтобы он выглядел и крестиком, и рукой, и полосочкой. Узнаем, как в качестве курсора отображать свою нарисованную картинку!
<br /></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-25371450926420535312014-02-17T18:45:00.000+04:002014-02-17T18:45:12.631+04:00Программирование для детей. Елочка. Команды vertex(); beginShape(); endShape(); <iframe width="853" height="480" src="//www.youtube.com/embed/cL46wpEXXIo" frameborder="0" allowfullscreen></iframe>
<br><br>
Может вы помните, как когда-то рисовали фигуры, соединяя точки. Сначала было не понятно, что за картинка зашифрована, но соединяя последовательно точку за точкой можно было увидеть картинку, которую задумал художник.
В Детской Java / Процессинге можно рисовать произвольные фигуры похожим образом. Посмотрите видео, чтобы узнать как это сделать!Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-52879632674675310752014-02-10T14:54:00.000+04:002014-02-10T14:54:17.235+04:00Я такой! Мне хорошо! Бернский зенненхунд<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe allowfullscreen="" frameborder="0" height="480" src="//www.youtube.com/embed/r3hqGrxU3uc" width="853"></iframe>
<br><br>
Этот пост совсем не про программирование, просто в эти выходные наша команда побывала на встрече владельцев собак породы Бернский зенненхунд. Собаки очень понравились, добрые, ласковые. Когда искал видео на ютюбе не смог найти съемок в неформально-душевной обстановке, поэтому смонтировал свое.
</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-28072438815216618042013-12-23T15:27:00.000+04:002013-12-23T15:27:39.230+04:00Сайт Процессинга восстановлен<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://processing.org/">Processing.org</a> восстановлен от взлома. Англоязычный форум все еще недоступен</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-74479145668410470752013-12-22T17:05:00.001+04:002013-12-22T17:14:36.058+04:00Сайт Процессинга взломан. Где теперь его скачать<div dir="ltr" style="text-align: left;" trbidi="on">
Сайт Процессинга был взломан. И сейчас по адресу processing.org отображается мошеннический сайт.<br />
<br />
Чтобы скачать среду программирования, пожалуйста, воспользуйтесь вот этой ссылкой: <a href="https://code.google.com/p/processing/downloads/list">https://code.google.com/p/processing/downloads/list </a><br />
<br />
Официальный твиттер проекта: <a href="https://twitter.com/ProcessingOrg">https://twitter.com/ProcessingOrg</a></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-88920845807928412412013-11-23T22:11:00.001+04:002013-11-23T22:27:04.312+04:00Программируйте на Детской Java (Processing) онлайн!<script src="http://processingjs.org/js/processing.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<style>
body {
font: 15px "Helvetica Neue", Helvetica, Arial, sans-serif;
//font-weight: 300;
//font: 15px Palatino, “Palatino Linotype”, Georgia, "Book Antiqua", serif;
line-height: 1.625;
}
#littleStory{
//font: 15px "Trebuchet MS", Helvetica, sans-serif;
font: 16px "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: 300;
line-height: 1.625;
color: #303030;
//font: 18px Palatino, 'Palatino Linotype', "Book Antiqua", Georgia, serif;
//line-height: 27px;
//color: #207020;
//width: 800px;
//font-size: 18px;
//font-family: arial;
}
p {
display: block;
text-indent: 34px;
/*
-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;*/
}
code.cmd{
background-attachment: scroll;
background-clip: border-box;
//background-color: #FFFFD0;
background-color: #393030;
background-image: none;
background-origin: padding-box;
//color: #393030;
color: #FFFFD0;
display: inline;
font-family: "Courier New", Courier, monospace;
//font-size: 17px;
font-size: 15px;
font-style: normal;
font-weight: normal;
height: 0px;
line-height: 27px;
min-width: 0px;
text-indent: 34px;
white-space: nowrap;
width: 0px;
padding: 2px 4px 1px 4px;
}
#h2learn {
font-size: 24px;
color: #999999;
text-shadow: 1px 1px 2px #555555;
}
#h2error {
color: #cccccc
}
/*canvas#sketch {
//width: 400px;
//height: 300px;
border: 1px solid;
}*/
textarea#code{
/*width: 50%;
width: 400px;*/
cursor: text;
font-size: 16px;
font-family: Courier New, monospace;
background-color:#393030;
color: #FFFFD0;
-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;
border-style: dashed;
padding: 10px 10px 10px 10px;
position: relative;
//left: 100px;
outline: none;
display: inline;
}
textarea:focus#code{
background-color: #494040;
}
textarea#output {
/*width: 50%;
width: 400px;*/
cursor: text;
font-size: 14px;
font-family: monospace;
background-color:#EEEEEE;
color: #FF8888;
-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;
border:1px #CCCCCC;
border-style: dashed;
padding: 10px 10px 10px 10px;
//position: relative; left: 100px;
}
#allLearnPage {position:relative;}
#allLittleStory
{
width: 500px;
min-height: 800px;
float: left;
position: relative;
padding: 10px 10px 10px 10px;
}
#step1Div
{
position:relative;
display: inline;
float: left;
}
#resultCode
{
height:auto;
display: inline;
position:relative;
//border:1px solid #d3d3d3;
//right:10px;
//top:110px;
//top: -390px;
//left: 480px;
//bottom:40px;
//width:48%;
}
#sketch
{
//position:absolute;
//top:30px;
//left: 100px;
//right: 0px;
//bottom:10px;
//min-width:400px;
//min-height:50px;
background-color: #ffffff;
border:1px solid #d3d3d3;
border-style: dashed;
outline: none;
}
#sketch-container{
border: 0px;
display: inline;
}
/*#pValue
{
border: 1px solid #cccccc;
width: 400px;
height: 300px;
}*/
input#goInput
{
//display:inline-block;
width:210px;height:28px;
padding:4px;
font-size:13px;
line-height:18px;
background-color:#1D832A;
color:#FFFFFF;
border:1px solid #1D5824;
-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;
position: relative; left: 220px;
}
</style>
<script type="text/javascript">
var globalSketchIsRunning = false;
var isOverSketch = false;
function strTranslit(new_el)
{
A = new Array();
A["Ё"]="YO";A["Й"]="I";A["Ц"]="TS";A["У"]="U";A["К"]="K";A["Е"]="E";A["Н"]="N";A["Г"]="G";A["Ш"]="SH";A["Щ"]="SCH";A["З"]="Z";A["Х"]="H";A["Ъ"]="'";
A["ё"]="yo";A["й"]="i";A["ц"]="ts";A["у"]="u";A["к"]="k";A["е"]="e";A["н"]="n";A["г"]="g";A["ш"]="sh";A["щ"]="sch";A["з"]="z";A["х"]="h";A["ъ"]="'";
A["Ф"]="F";A["Ы"]="I";A["В"]="V";A["А"]="A";A["П"]="P";A["Р"]="R";A["О"]="O";A["Л"]="L";A["Д"]="D";A["Ж"]="ZH";A["Э"]="E";
A["ф"]="f";A["ы"]="i";A["в"]="v";A["а"]="a";A["п"]="p";A["р"]="r";A["о"]="o";A["л"]="l";A["д"]="d";A["ж"]="zh";A["э"]="e";
A["Я"]="YA";A["Ч"]="CH";A["С"]="S";A["М"]="M";A["И"]="I";A["Т"]="T";A["Ь"]="";A["Б"]="B";A["Ю"]="YU";
A["я"]="ya";A["ч"]="ch";A["с"]="s";A["м"]="m";A["и"]="i";A["т"]="t";A["ь"]="";A["б"]="b";A["ю"]="yu";
new_el = new_el.replace(/([\u0410-\u0451])/g,
function (str,p1,offset,s) {
if (A[str] != 'undefined'){return A[str];}
}
);
return (new_el);
}
function clickOnCanvas(){
//alert("hoho");
runSketch();
}
function clickOnCode(){
if (globalSketchIsRunning == true){
globalSketchIsRunning=false;
startCanvas();
}
//runSketch();
//document.write("test");
}
function clickOutsideCode(){
//if (globalSketchIsRunning == false){document.write("test");
createCanvas();
runSketch();
//}
//return true;
}
/*function mouseOverSketch(){
if (globalSketchIsRunning == false && isOverSketch == false){
//overCanvas();
isOverSketch=true;
}
}
function mouseOutSketch(){
if (globalSketchIsRunning == false){
startCanvas();
}
isOverSketch=false;//alert('sdf');
}*/
</script>
<a name='more'></a>
<div id="allLearnPage">
<!--h2>Давайте начнем! <br>Добро пожаловать в программирование на ДЕТСКОЙ JAVA (aka Processing)</h2-->
<!--div id="allLittleStory">
<h2 id="h2learn">Шаг первый. Создание вселенной</h2>
<p id="littleStory">Давай представим, что мы вернулись на много-много миллионов лет назад!
Когда наш мир был еще маленькой-маленькой точкой! Так говорят ученые.
Как бы он выглядел?
Давай напишем заклинание, чтобы его создать?
Заклинание так и звучит: "точка"!
Очень просто, правда?
Но ГДЕ эта точка находится?
Наверно, ты играл в шахматы, шашки или морской бой?
<b>точка(100, 100);</b>
</p>
</div-->
<div id="step1Div">
<!--h2 id="h2learn">Напиши текст заклинания</h2-->
<!--размер(300,300);
овал(100, 100, 120, 130);
овал(10, 10, 120, 130);
овал(100, 10, 120, 130);
овал(200,200, 300,100);-->
<!--autofocus-->
<textarea rows="15" cols="40" id="code" onfocus="clickOnCode();" onblur="clickOutsideCode();">
void setup(){
size(400,300);
}
void draw(){
text("ПРИВЕТ", 100,100);
}
</textarea>
</div>
<!--pre><p contenteditable="true" id="code">
размер(300,300);
овал(100, 100, 120, 130);
овал(10, 10, 120, 130);
овал(100, 10, 120, 130);
овал(200,200, 300,100);
</p> </pre-->
<!--
<h2 id="h2learn">2. Нажми на кнопку</h2>
<input onclick="runSketch();" type="button" value="ИСПОЛНИТЬ ЗАКЛИНАНИЕ" id="goInput"></input>
-->
<!--div id="resultCode" onclick='clickOnCanvas()' onmouseover='mouseOverSketch()' onmouseout='mouseOutSketch()'-->
<div id="resultCode">
<!--h2 id="h2learn">Посмотри, что наколдовал</h2-->
<div id="sketch-container" onclick='clickOnCanvas()'>
<canvas id="sketch"></canvas>
</div>
</div>
</div> <!--allLearnPage-->
<script>
function startCanvas() {
globalSketchIsRunning = false;
createCanvas();
var c=document.getElementById("sketch");
var ctx=c.getContext("2d");
ctx.fillStyle="#106000";
ctx.font="12px Arial";
ctx.fillText("Нажми здесь, чтобы выполнить заклинание",10,15);
var grd=ctx.createRadialGradient(125,50,5,140,60,100);
grd.addColorStop(0,"white");
grd.addColorStop(1,"green");
ctx.save();
ctx.shadowBlur=7;
ctx.shadowOffsetX=2;
ctx.shadowOffsetY=2;
ctx.shadowColor="black";
ctx.beginPath();
ctx.arc(150,75,50,0,2*Math.PI);
ctx.fillStyle=grd;
ctx.fill();
ctx.restore();
ctx.beginPath();
ctx.lineWidth="5";
ctx.strokeStyle="green"; // Green path
ctx.moveTo(135,55);
ctx.lineTo(175,75);
ctx.lineTo(135,95);
ctx.closePath();
ctx.fillStyle="#CCCCCC";
ctx.fill();
ctx.beginPath();
ctx.lineWidth="5";
ctx.strokeStyle="green"; // Green path
ctx.moveTo(137,58);
ctx.lineTo(175,75);
ctx.lineTo(135,95);
ctx.closePath();
ctx.fillStyle="#FFFFFF";
ctx.fill();
}
/* function overCanvas() {
createCanvas();
var c=document.getElementById("sketch");
var ctx=c.getContext("2d");
ctx.fillStyle="#106000";
ctx.font="12px Arial";
ctx.fillText("Нажми здесь, чтобы выполнить заклинание",10,15);
var grd=ctx.createRadialGradient(125,50,5,140,60,100);
grd.addColorStop(0,"yellow");
grd.addColorStop(1,"green");
ctx.beginPath();
ctx.arc(150,75,50,0,2*Math.PI);
ctx.fillStyle=grd;
ctx.fill();
ctx.beginPath();
ctx.lineWidth="5";
ctx.strokeStyle="green"; // Green path
ctx.moveTo(135,55);
ctx.lineTo(175,75);
ctx.lineTo(135,95);
ctx.closePath();
ctx.fillStyle="#CCCCCC";
ctx.fill();
ctx.beginPath();
ctx.lineWidth="5";
ctx.strokeStyle="green"; // Green path
ctx.moveTo(137,58);
ctx.lineTo(175,75);
ctx.lineTo(135,95);
ctx.closePath();
ctx.fillStyle="#FFFFA0";
ctx.fill();
}
*/
startCanvas();
function createCanvas() {
// Make a new canvas, in case we're switching from 2D to 3D contexts.
var container = document.getElementById('sketch-container');
var sketch = document.getElementById('sketch');
container.removeChild(sketch);
sketch = document.createElement('canvas');
sketch.id = 'sketch';
//sketch.width = "440";
//sketch.height = "300";
container.appendChild(sketch);
return sketch;
}
function showErrorOnCanvas(){
createCanvas();
var c=document.getElementById("sketch");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.font="12px Arial";
ctx.fillText("Произошла какая-то ошибка!",10,55);
ctx.fillText("Проверь, все ли правильно написал?",10,75);
}
</script>
<!--p contenteditable="true" id="pContent" onkeyup="highlightText()">This is a paragraph. It is editable. Try to change this text.</p-->
<!--script type="text/javascript">
function highlightText() {
x = document.getElementById("pContent");
var pValue = x.innerHTML;
pValue = pValue.replace(/овал/gi,"<b>овал</b>");
x.innerHTML = pValue;
return false;
}
</script-->
<!-- //временно отключено
<br><br><h2 id="h2error">Сообщения об ошибках:</h2>
<textarea rows="3" cols="50" id="output" readonly="readonly">Здесь могут отобразиться сообщения об ошибках. А могут и не отобразиться</textarea>
-->
<!--button id="sharingButton">Получить код для соцсетей</button><br>
<textarea rows="4" cols="60" id="shareTA" readonly="readonly">Сначала запусти программу!
Тогда здесь появится код для вставки в соц. сети</textarea-->
<!--script>
$("#shareTA").hide();
$(document).ready(function(){
$("#sharingButton").click(function(){
//runSketch();
$("#shareTA").toggle(500);
});
});
</script-->
<!--script src="http://processingjs.org/tools/jsbeautify.js"></script-->
<br>
<script>
//SHARING
function createSharingText(shareCode){
shareCode = shareCode.replace(/\n/gi,"");
var rn=Math.floor((Math.random()*100000)+1);
x=document.getElementById("shareTA"); // Find the element
var codeSText='<script src="http://processingjs.org/js/processing.min.js"></script>\
<script type="application/processing" data-processing-target="pCanvas'+rn+'">'+shareCode+
'</script>\
<canvas id="pCanvas'+rn+'" width="440" height="300" style="border:1px solid #000000;"> </canvas><br>Сертификат программиста от <a href="www.programmingforkids.ru">www.programmingforkids.ru</a>';
x.innerHTML=codeSText;
}
</script>
<script>
(function(global) {
//var rusWords=["овал","ellipse","размер","size"];
var canvas = document.getElementById('sketch'),
code = document.getElementById('code'),
//output = document.getElementById('output'),//временно отключено
instance = null;
function waitForExit() {
var checkbox = document.getElementById('expect-exit-callback');
if (!checkbox) {
return false;
}
return checkbox.checked || checkbox.value;
}
global.runSketch = function(callback) {
globalSketchIsRunning=true;
try {
/*var codeValue2 = code.value;
codeValue2 = codeValue2.replace(/[а-я]{1,}/gi,"!");
alert(codeValue2);*/
var codingMode = "full";
var codeValue = code.value;
codeValue = codeValue.replace(/точка/gi,"point");
codeValue = codeValue.replace(/жирность/gi,"strokeWeight");
codeValue = codeValue.replace(/линия/gi,"line");
codeValue = codeValue.replace(/цветКарандаша/gi,"stroke");
codeValue = codeValue.replace(/овал/gi,"ellipse");
codeValue = codeValue.replace(/цветФигуры/gi,"fill");
codeValue = codeValue.replace(/красный/gi,"255,0,0");
codeValue = codeValue.replace(/зеленый/gi,"0,190,0");
codeValue = codeValue.replace(/синий/gi,"0,0,255");
codeValue = codeValue.replace(/желтый/gi,"255,255,0");
codeValue = codeValue.replace(/оранжевый/gi,"247,130,12");
codeValue = codeValue.replace(/розовый/gi,"255,180,200");
codeValue = codeValue.replace(/фиолетовый/gi,"141,9,178");
codeValue = codeValue.replace(/голубой/gi,"127,139,252");
codeValue = codeValue.replace(/черный/gi,"0,0,0");
codeValue = codeValue.replace(/белый/gi,"255,255,255");
codeValue = codeValue.replace(/мышкаГ/gi,"mouseX");
codeValue = codeValue.replace(/мышкаВ/gi,"mouseY");
codeValue = codeValue.replace(/если/gi,"if");
codeValue = codeValue.replace(/мышкаНажата/gi,"mousePressed");
codeValue = codeValue.replace(/выполнитьОдинРаз/gi,"void setup");
codeValue = codeValue.replace(/выполнитьМногоРаз/gi,"void draw");
codeValue = codeValue.replace(/цветЭкрана/gi,"background");
codeValue = codeValue.replace(/число/gi,"float");
codeValue = codeValue.replace(/запомни/gi,"=");
codeValue = codeValue.replace(/размер/gi,"size");
//ВРЕМЕННО ОТКЛЮЧЕНА ТРАНСЛИТЕРАЦИЯ РУССКИХ БУКВ
//codeValue = strTranslit(codeValue);
//alert(codeValue);
//if (currentStory <= 3) codeValue = "strokeWeight(10);" + codeValue;
if (codingMode=="easy"){
codeValue = "void setup(){size(440, 300);} void draw(){size(440, 300);" + codeValue + "}";
}
if (codingMode=="medium"){
codeValue = "size(440, 300);" + codeValue + "";
}
if (codingMode=="full"){
codeValue = "" + codeValue + "";
}
// ВРЕМЕННО ОТКЛЮЧЕНО - возможность поделиться в соц. сетях
//createSharingText(codeValue);
/*for (var i=0;i<rusWords.length;i+=2)
{
codeValue = codeValue.replace(/овал/gi,"ellipse");
document.write(cars[i] + "<br>");
}*/
//output.value = '';//временно отключено
canvas = createCanvas();
var sketch = Processing.compile(codeValue);
if (callback) {
if (!/exit\(\);/.test(codeValue)) {
throw "exit() not found in sketch. Add the exit() command, and re-run the sketch.";
}
sketch.onExit = callback;
instance = new Processing(canvas, sketch);
} else {
instance = new Processing(canvas, sketch);
}
} catch (e) {
showErrorOnCanvas();
//временно отключили
//output.value = "Error! Error was:\n" + e.toString();
}
};
global.convertToJS = function() {
try {
output.value = js_beautify(
Processing.compile(code.value).sourceCode).replace(/\n\n\n+/g, '\n\n');
output.select();
} catch (e) {
output.value = "Parser Error! Error was:\n" + e.toString();
}
};
global.generateDataURI = function() {
// Run the sketch first, in case the user hasn't
runSketch();
output.value = canvas.toDataURL();
output.select();
};
function buildRefTest() {
try {
// if the test was 2d, we can just call getImageData
if (!instance.use3DContext) {
var context = canvas.getContext('2d');
var imgData = context.getImageData(0, 0, canvas.width, canvas.height).data;
// else, we'll need to call WebGL's readPixels.
} else {
// The order of the pixels go from bottom to top, left to right.
var context = canvas.getContext("experimental-webgl");
var imgData = new Uint8Array(canvas.width * canvas.height * 4);
context.readPixels(0, 0, canvas.width, canvas.height, context.RGBA, context.UNSIGNED_BYTE, imgData);
}
var pixels = [];
for(var i = 0, idl = imgData.length; i < idl; i++) {
pixels[i] = imgData[i];
}
var dimensions = "[" + canvas.width + "," + canvas.height + "]";
// Opera doesn't have btoa() so this won't work there.
document.location.href= "data:text/plain;charset=utf-8;base64," +
btoa('//' + dimensions + pixels + '\n' + code.value);
} catch (e) {
output.value = "Error creating ref test! Error was: " + e.toString();
}
};
global.generateRefTest = function() {
// Run the sketch first, in case the user hasn't
runSketch(buildRefTest);
};
}(window));
</script>
<style>
#_comments, #_blog-pager, ._breadcrumbs, ._post-footer{display:none}
#ContactForm1, #sidebar-right-1, #f_orHideRightColumn{
display:none;
}
</style>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-40385918371858196882013-11-22T23:59:00.001+04:002013-11-23T22:30:30.643+04:00Временная недоступность файлов<div dir="ltr" style="text-align: left;" trbidi="on">
Некоторое время книги и файлы были не доступны. Сейчас книга перезалита на Google Drive. Надеюсь выдержит.</div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0tag:blogger.com,1999:blog-6298049260740432695.post-43116870314427596832013-11-21T12:34:00.000+04:002013-11-23T01:49:11.112+04:00Эмуляция жизни клеток на языке Процессинг (версия 2.0)<div dir="ltr" style="text-align: left;" trbidi="on">
Следующая версия клеточной формы жизни от Илюхи! Теперь их можно кормить цветными шариками! Для этого нажмите мышкой в любом месте экрана!
Сама программа работает онлайн и доступна под катом.
<br />
<a name='more'></a>
<!--script src="https://dl.dropboxusercontent.com/u/8566382/programmingforkids/processing-1.4.1.min.js"--><!--/script-->
<script src="http://processingjs.org/js/processing.min.js"></script>
<script data-processing-target="processing-canvas201311221" type="text/processing">
class Tochka{
float a=0;
float dlina=50;
float xc=50, yc=50;
Tochka(float d){
dlina=d;
}
float x(){
return xc+cos(radians(a))*dlina;
}
float y(){
return yc+sin(radians(a))*dlina;
}
void setCenter(float xc, float yc){
this.xc=xc; this.yc=yc;
}
}
class Zizn {
Tochka t1 = new Tochka(30);
Tochka t2 = new Tochka(20);
Tochka t3 = new Tochka(20);
Tochka t4 = new Tochka(20);
Tochka t5 = new Tochka(30);
Tochka t6 = new Tochka(20);
Tochka t7 = new Tochka(20);
Tochka t8 = new Tochka(20);
int rasmer, R, G, B, hp, am=0;
float X, Y, dX, dY, popX=0, popY=0, popnaX=1, popnaY=1;
Zizn(float X2, float Y2, int rasmer2, float dX2, float dY2, int R2, int G2, int B2, int hp2) {
rasmer=rasmer2;
X=X2;
Y=Y2;
dX=dX2;
dY=dY2;
R=R2;
G=G2;
B=B2;
hp=hp2;
}
void pocas() {
t1.setCenter(X, Y);
//point(t1.x(), t1.y());
t1.a-=4;
t2.setCenter(t1.x(), t1.y());
//point(t2.x(), t2.y());
t2.a+=20;
t3.setCenter(t2.x(), t2.y());
//point(t3.x(), t3.y());
t3.a-=4;
t4.setCenter(t3.x(), t3.y());
//point(t4.x(), t4.y());
t4.a+=20;
t5.setCenter(t4.x(), t4.y());
//point(t1.x(), t1.y());
t5.a-=4;
t6.setCenter(t5.x(), t5.y());
//point(t2.x(), t2.y());
t6.a+=20;
t7.setCenter(t6.x(), t6.y());
//point(t3.x(), t3.y());
t7.a-=4;
t8.setCenter(t7.x(), t7.y());
//point(t4.x(), t4.y());
t8.a+=20;
for (int b=0; b<=ami.size()-1; b++) {
Nama am = (Nama) ami.get(b);
if(dist(t1.xc, t1.yc, am.X, am.Y)<10 || dist(t2.xc, t2.yc, am.X, am.Y)<10 || dist(t3.xc, t3.yc, am.X, am.Y)<10 || dist(t4.xc, t4.yc, am.X, am.Y)<10 || dist(t5.xc, t5.yc, am.X, am.Y)<10 || dist(t6.xc, t6.yc, am.X, am.Y)<10 || dist(t7.xc, t7.yc, am.X, am.Y)<10 || dist(t8.xc, t8.yc, am.X, am.Y)<10){
dX=(am.X-X)/ (dist(am.X, am.Y, X, Y)/20);
dY=(am.Y-Y)/ (dist(am.X, am.Y, X, Y)/20);
}
}
strokeWeight(1);
line(t1.x(), t1.y(), t2.x(), t2.y());
line(t2.x(), t2.y(), t3.x(), t3.y());
line(t3.x(), t3.y(), t4.x(), t4.y());
line(t4.x(), t4.y(), t5.x(), t5.y());
line(t5.x(), t5.y(), t6.x(), t6.y());
line(t6.x(), t6.y(), t7.x(), t7.y());
line(t7.x(), t7.y(), t8.x(), t8.y());
line(t1.x(), t1.y(), X-10, Y-10);
fill(R, G, B, 0);
ellipse(X, Y, rasmer, rasmer);
ellipse(X+dX*20, Y+dY*20, 200, 200);
fill(0, 255, 0);
rect(X-hp/14, Y-(rasmer/2+20), hp/7, 2);
text(hp, X, Y-(rasmer/2+20));
if(popnaX==1)popX+=dX;
if(popnaX==0)popX-=dX;
if(dX>0){
if(popX>dX*5)popnaX=0;
if(popX<0-dX*5)popnaX=1;
}
if(dX<0){
if(popX<dX*5)popnaX=0;
if(popX>0-dX*5)popnaX=1;
}
if(popnaY==1)popY+=dY;
if(popnaY==0)popY-=dY;
if(dY>0){
if(popY>dY*5)popnaY=0;
if(popY<0-dY*5)popnaY=1;
}
if(dY<0){
if(popY<dY*5)popnaY=0;
if(popY>0-dY*5)popnaY=1;
}
strokeWeight(10);
line(X+10, Y-10, X-dX*10+popX, Y-dY*10+popY);
strokeWeight(2);
hp-=1;
fill(255, 255, 0);
ellipse(X+10, Y-10, 20, 20);
fill(255, 255, 255);
ellipse(X+10, Y+10, 20, 20);
fill(0, 255, 0);
ellipse(X+10, Y+10, 10, 10);
fill(0, 0, 0);
ellipse(X+10, Y+10, 5, 5);
fill(255, 0, 0);
ellipse(X-10, Y-10, 20, 20);
strokeWeight(1);
am=0;
}
void go() {
X+=dX;
Y+=dY;
if (Y>height) {
dY-=dY*2-(Y-height);
}
if (Y<0) {
dY-=dY*2+(0-Y);
}
if (X>width) {
dX-=dX*2-(X-width);
}
if (X<0) {
dX-=dX*2+(0-X);
}
}
}//ddhdfhtydhytgfgbgfb fhtrhg ghngn ghnm .,nbv gf ghghv dfgth/lk gf;
class Kletka extends Zizn {
Kletka(float X2, float Y2, int rasmer2, float dX2, float dY2, int hp2) {
super(X2, Y2, rasmer2, dX2, dY2, 255, 0, 0, hp2);
}
void go() {
X+=dX;
Y+=dY;
if (Y>height) {
dY-=dY*2;
}
if (Y<0) {
dY-=dY*2;
}
if (X>width) {
dX-=dX*2;
}
if (X<0) {
dX-=dX*2;
}
if(dX<0)dX=-4;
if(dX>0)dX=4;
if(dY<0)dY=-4;
if(dY>0)dY=4;
}
}
class Nama {
int rasmer, R, G, B, hp;
float X, Y, dX, dY;
Nama(float X2, float Y2, int rasmer2, float dX2, float dY2, int R2, int G2, int B2) {
rasmer=rasmer2;
X=X2;
Y=Y2;
dX=dX2;
dY=dY2;
R=R2;
G=G2;
B=B2;
}
void pocas() {
fill(R, G, B);
ellipse(X, Y, rasmer, rasmer);
}
void go() {
X+=dX;
Y+=dY;
if (Y>height) {
dY-=dY*2-(Y-height);
}
if (Y<0) {
dY-=dY*2+(0-Y);
}
if (X>width) {
dX-=dX*2-(X-width);
}
if (X<0) {
dX-=dX*2+(0-X);
}
}
}
ArrayList orgi=new ArrayList();
ArrayList ami=new ArrayList();
void setup() {
size(900, 700);
colorMode(RGB);
background(0, 0, 255);
//frameRate(10000000);
for (int i=0; i<5; i++) {
Kletka org = new Kletka(random(width), random(height), 60, random(-4, 4), random(-4, 4), 2000);
orgi.add (org);
org.pocas();
}
}
void draw() {
background(0, 0, 255);
for (int t=0; t<=orgi.size()-1; t++) {
Kletka org = (Kletka) orgi.get(t);
for (int b=0; b<=ami.size()-1; b++) {
Nama am = (Nama) ami.get(b);
if (dist(org.X+org.dX*20, org.Y+org.dY*20, am.X, am.Y)<100) {
org.dX=(am.X-org.X)/ (dist(am.X, am.Y, org.X, org.Y)/10);
org.dY=(am.Y-org.Y)/ (dist(am.X, am.Y, org.X, org.Y)/10);
}
if (dist(org.X, org.Y, am.X, am.Y)<60) {
ami.remove(b);
org.hp+=40;
}
}
org.go();
org.pocas();
if (org.hp<1 ) {
orgi.remove(t);
}
}
if (mousePressed) {
Nama am = new Nama(mouseX, mouseY, 20, random(-4, 4), random(-4, 4), (int)random(255), (int)random(255), (int)random(255));
ami.add (am);
}
for (int b=0; b<=ami.size()-1; b++) {
Nama am = (Nama) ami.get(b);
am.go();
am.pocas();
}
}
/*void mousePressed() {
Nama am = new Nama(mouseX, mouseY, 20, random(-4, 4), random(-4, 4), (int)random(255), (int)random(255), (int)random(255));
ami.add (am);
}*/
</script>
<canvas id="processing-canvas201311221"> </canvas>
<br />
<br><br>
Здесь Илюха уже "шпарит" объектно-ориентировано. Ведь именно объектно-ориентированное программирование позволяет создавать сложные повторящиеся явления.
По объектно-ориентированному подходу у меня есть некоторые наброски для следующей книги для детей. О ней - как-нибудь позже.
<br /></div>
Igor Gressushttp://www.blogger.com/profile/00684716137818101551noreply@blogger.com0