Уроки алгоритм билдер: Algorithm Builder. Урок 1 — Введение

Содержание

Среда программирования Algorithm Builder — GetChip.net

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

 

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

Автор программы Геннадий Громов.
Сайт программы www.algrom.net

Итак что имеет Algorithm Builder в своем арсенале?
Полный цикл разработки. Algorithm Builder предназначен для производства полного цикла разработки начиная от ввода алгоритма, включая процесс отладки и заканчивая программированием кристалла.

Algorithm Builder довольно нетрадиционная программа в плане языка программирования. Автор немного лукавит, называя программу Построителем Алгоритмов. На самом деле, алгоритма, в привычном понимании этого слова, нет. Есть ассемблер, завернутый  в красивую обертку визуального программирования. Правильнее было бы назвать программу – визуальный ассемблер или построитель ассемблера. А раз это ассемблер то Вы получите на выходе максимально эффективный код.

Работа с переменными и константами организована гениально просто. Инициализация производиться в отдельном окне в виде таблицы – освобождая алгоритм от лишних записей. В буквальном смысле слова все разложено по полочкам. Удобно иметь в любой момент под рукой перечень всех переменных и констант.

Настройщик периферии. Algorithm Builder имеет удобный настройщик периферии (таймеры, UART, ADC, SPI и т.д.) позволяющий, не читая даташитов, просто выбрать необходимые параметры работы устройства в окне настройки. В этом же окне Билдер честно покажет набор инструкций, обеспечивающих эти параметры.

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

Внутрисхемное программирование кристалла. При использовании внутрисхемного программатора микроконтроллер подключается к COM порту компьютера через несложный адаптер (три диода и несколько резисторов).Также есть вариант USB подключения. Программатор ведет подсчет числа перепрограммирований кристалла, сохраняя счетчик непосредственно в кристалле. Процесс программирования кристалла очень прост — в два «тыка».

Мониторная отладка на кристалле. Algorithm Builder обеспечивает мониторную отладку на кристалле (On Chip debug) которая позволяет наблюдать содержимое реального кристалла в заданной точке останова.

При этом для связи микроконтроллера с компьютером используется только один вывод, причем по выбору пользователя. Мониторная отладка может быть применена к любому типу кристалла, имеющего SRAM. Это софтверный вариант debugWIRE. Я без этой штуки просто не представляю себе отладку программ.

Так почему такая хорошая программа так малоизвестна?
Первая причина — программа до 2010 года была платной. Бесплатная демоверсия имела полную функциональность, но ограничивала код откомпилированной программы до 2 килобайт. В 2010 году автор программы сделал новогодний подарок – версия 5.43 вышла свободной от ограничений.

Вторая причина — отсутствие поддержки программы. Вы не найдете ни одного апнота производителя в котором бы использовался Билдер. Интернет ресурсы, посвященные данной программе, можно пересчитать по пальцам.
Жаль, конечно – программа действительно интересна.

Выводы:
Ассемблерщики при переходе на Algorithm Builder будут писать кипятком, так как они будут иметь все тот же ассемблер, но управляться им станет на порядок легче и наглядней. Одно плохо – придется распрощаться с наработанными библиотеками и писать новые.
Сишникам однозначно Билдер не понравится, так как придется опускаться до уровня ассемблера, а какому сишнику понравится возюкаться с регистрами.

Наверное, наилучшая целевая аудитория — начинающие осваивать микроконтроллеры. Программа проста и поэтому будет легко осваивать программирование.
В общем, конечно, выводы получились неоднозначные. Думайте сами… 🙂

Программа имеет мануал, написанный в форме обучающей статьи. В мануале рассмотрено создание простого проекта – вольтметра, даны схемы программаторов COM и USB. Скачать версию без ограничений можно здесь

AB544.exe (207926 Загрузок)

 

Кому интересно посмотреть мануал, а устанавливать программу лениво – вот выкладываю его отдельно

manual.pdf (207738 Загрузок)

 

Программа активно развивается, поэтому смотрите свежие версии на сайте программы www.algrom.net. Кроме того, там же есть небольшая подборка библиотек.

P.S. Программа портативная. Тесть после установки папку с программой скидываем на флешку и работаем с нее.

(Visited 25 512 times, 1 visits today)

Основы работы в Algorithm Builder

Очень часто на радиолюбительских форумах я встречал горячие споры об эффективности написания программ для микроконтроллеров. Суть споров – на каком языке писать? С одной стороны приверженцы языков высокого уровня (Си, Паскаль, Баском и пр.), с другой, конечно же, писатели на ассемблере. Как всегда истина где-то посредине, и моё твёрдое мнение таково – ассемблер нужно знать обязательно, так как, не зная его, невозможно понять внутреннюю архитектуру микроконтроллера, суть происходящих процессов. А вот на чём писать – каждый выбирает для себя сам, и это исходит, прежде всего, из поставленной задачи. В этой статье я вкратце опишу процесс написания программы на ассемблере, используя графическую среду для разработки программного обеспечения для микроконтроллеров с архитектурой AVR фирмы ATMEL под названием Algorithm Builder. Разработала эту софтину группа российских товарищей под руководством небезызвестного Геннадия Громова, за что ему честь и хвала, а также наше эмбеддерское спасибо. Мнений об Algorithm Builder (далее по тексту AB) в инернете великое множество: от восторженных воплей до холодных порицаний. Лично мне AB очень нравится – процесс написания кода до предела ясный и вся программа очень наглядно смотрится, хотя это утверждение относиться к написанию небольших программ, до 1 – 2 –х килобайт. Повторюсь – это моё личное мнение. Программа в AB – это обычная программа на ассемблере, но мнемоники в ней заменяются на графические элементы, а векторные переходы (условные, безусловные, возврат из подпрограммы и пр.) – на визуальные связи (просто стрелки). Таким образом, разработка кода сводится к размещению на плоскости графических элементов и установлению между ними векторных связей из условных и безусловных переходов. Ну, это всё преамбула, переходим к практике. Заходим на страницу AB и качаем установочный файл. Отмечу, что с недавнего времени все ограничения в размере кода сняты (раньше размер разрабатываемой программы в свободной версии AB ограничивался 2к). Устанавливаем программу обычным образом на свой компьютер. Открываем главное окно.

Ничего особенного или свехоригинального: те же «Файл», «Отображение», «Редактировать» и пр. Кликните по значку «?» – здесь есть мануал по работе с AB, и, если Вы собираетесь работать в этой среде, то сразу распечатайте себе сей документ и внимательно прочитайте – написано всё до предела ясно. ?так, начинаем креатив. Для того, чтобы не создавать очередной «Hello, world», я решил совместить приятное с полезным. Часто в автомобильных поездках приходится сталкиваться с проблемой подзарядки мобильников или нетбука. Да ещё и мобильники у меня, жены и детей все разные (ну у каждого же свой вкус:)). Поэтому, чем плодить массу различных DC-DC адаптеров под каждое зарядное устройство, лучше сделать универсальный инвертор DC(12 В) – AC(220 В) и использовать штатные зарядные устройства. В качестве «сердца» инвертора я применил завалявшийся невесть где ATtiny15. На рисунке представлена схема устройства:

Контроллер формирует меандр 50 Гц и поочерёдно подаёт его в каждое плечо двухтактного усилителя мощности, выполненного на полевых транзисторах. Нагрузкой усилителя служит первичная обмотка обыкновенного советского накального трансформатора серии ТН – в данной конструкции он служит повышающим трансформатором. Трансформатор может быть любой, хоть самодельный, с двумя обмотками по 12 В, или одной 24 В с отводом посредине, с допустимым током, рассчитанным под Вашу нагрузку.  В цепи затворов полевиков введены конденсаторы, которые обеспечивают быстрое их открытие. В 220-ти вольтовой обмотке трансформатора добавлен конденсатор, который шунтирует высокочастотную составляющую, возникающую в результате переходных процессов в индуктивности обмотки и резистор, разряжающий этот конденсатор. Цепь питания микроконтроллера стандартна до безобразия. В общем, мне кажется, по схеме вопросов быть не должно. Возвращаемся к софту. В главном окне AB щёлкаем «Файл» — «Новый». Создаём новый файл, сохраняем его под каким-нибудь именем (лучше латиницей) в заранее созданную папку – всё стандартно, как в любом редакторе. На открывшемся поле наблюдаем следующее:  по умолчанию создался элемент «V» (вершина блока) и под ней пустая операция NOP. Затем щёлкаем «Опции» — «Опции проекта» и выбираем тип кристалла, тактовую частоту и др.

После этого производим непосредственно ввод кода. Небольшое отступление… Я не буду рассказывать здесь назначение элементов AB и порядок их редактирования. Любители, работавшие с микроконтроллерами и знающие их хоть немного, разберутся сами, используя вышеуказанный манул… После набора моя программа имеет следующий вид. ?меться два блока операторов, начинающиеся элементом «V» — «Вершина блока»  и озаглавленные соответственно RESET и Timer_0_Overflow. То есть наборы операндов обработчиков прерываний, сброса и переполнения таймера 0. Записи типа «$FF -> DDRB» добавляются кнопкой «F» — элемент «Поле» и вводятся с помощью клавиатуры. Знак стрелки «->» — левая верхняя клавиша клавиатуры «ё» (под ESC). Серые прямоугольники, подписанные элементами периферии, добавляются с помощью кнопки «S» — элемент «Настройщик управляющих регистров». В нём (Настройщике) простой отметкой необходимых галочек настраивается работа соответствующего модуля периферии, а справа отображается элементарные операции, которые при этом выполняются. Вертикальная линия, куда упирается вектор безусловного перехода, — это метка, создаётся с помощью кнопки «L» — элемент «Метка». Стрелки переходов – кнопка «J» — элемент «Переход». Ещё есть кнопка «C» — «Условный переход» и кнопка «T» — «Текст», но в своём примере я их не использовал. Подведя курсор к любой строке можно наблюдать всплывающее окно, в котором указаны наборы элементарных операндов и описание используемых регистров. Откомпилируем проект, нажав кнопку «Компилировать». Если всё сделано правильно, вылезет окно с результатами компиляции.

Ещё AB имеет встроенный симулятор и программатор. Симулятор (кстати, удобнейшая штука!) запускается кнопкой «Запуск с симулятором». В режиме симулятора кнопкой «Открыть» можно пооткрывать различные окна, отображающие всю периферию: регистры, ОЗУ, таймеры и пр., и наблюдать изменения в регистрах и ячейках памяти.

Симулировать можно пошагово, с заходом в функции и без такового, а также выполнять до точки останова и до выделенного. В общем, всё как и в большинстве подобных программ. Записать код в кристалл можно используя встроенный программатор. Для этого нужно собрать простейший адаптер для COM-порта, состоящий из трёх диодов и семи резисторов. А можно прошить, используя любой имеющийся у Вас в наличии программатор, ведь после компиляции в папке проекта пропишется hex-файл. Пару слов о самой программе.

RESET (После сброса) — Стек инициализировать не нужно, т.к. в семействе ATtiny1x он аппаратный. 1) Переводим порт В на выход. 2) Корректируем рабочую частоту микроконтроллера записью числа в регистр OSCCAL. (Значение этого числа удобно определять с помощью программатора AVRISP mkII. Коннектимся в AVRStudio и на соответствующей вкладке считываем это значение.) 3) Записываем в счётный регистр таймера 0 начальное значение счёта, чтобы переполнение происходило через 10 мс (одна полуволна). 4) В порт В записываем начальное значение (единицы на паре управляющих одним из полевиков выходах). 5) Настраиваем и запускаем таймер 0 с коэффициентом деления 64. 6) Разрешаем прерывание таймера 0 при переполнении. 7) Разрешаем прерывания контроллера. 8)Пустой бесконечный цикл в ожидании прерывания таймера 0.

Timer_0_Overflow (переполнение таймера 0). 1) Переключаем управляющий сигнал с одного входа полевика на другой, посредством операции ?СКЛЮЧАЕЩЕЕ ?Л?. 2) Обновляем начальное значение счёта таймера 0. 3) Выходим из функции обработчика прерывания.

Сборка описанного инвертора подтвердила его полную работоспособность. Для подтверждения вышеуказанного были одновременно заряжены два мобильных телефона. В этом режиме при напряжении АКБ 13,6 В,  напряжение на выходе было 215 В при токах 800 мА и 40 мА соответственно. Таким образом КПД составил около 80 %, что вполне неплохо. Пусть Вас не пугает, что вместо синусоиды на выходе имеем меандр. Абсолютное большинство современных зарядок импульсные, а им всё равно – синус или меандр. Да и другие, неиндуктивные нагрузки, можно запитывать меандром. В своём случае я применил в качестве выходного ТН-36 220/50. Он рассчитан на ток 1,2 А в накальных обмотках. Для моей задачи вполне достаточно. Если поставить ТН-61, то можно получить на выходе до 120 Вт, но силовые транзисторы, возможно, придётся поставить на радиаторы. Также по своему усмотрению можно добавить индикаторы наличия 12 В на входе и 220 В на выходе (на схеме я их не показал). Кроме того, возможно применение 400-герцовых трансформаторов (в этом случае уменьшатся габариты устройства), т.к 50-ти герцовые трансформаторы в 400-герцовой сети работают нормально, а вот наоборот не получится. Фото готового устройства пока не выкладываю, т.к. не нашёл подходящий корпус.

Вывод: с помощью простейшего микроконтроллера можно сделать такое полезное устройство, написав при этом 33 слова кода.

UPLOAD за 19.02.2013г. Наш коллега Дмитрий не зажлобился 🙂  и поделился тестовой библиотекой для работы с ЖК? на АБ. Принимайте, товарищи и задавайте ему вопросы.

Простейшая программа для AVR — Меандр — занимательная электроника

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

Для начала я познакомлю Вас со средой программирования Algorithm Builder, которая на мой взгляд очень удобна для написания программ на языке ассемблер. Скачать её можно на сайте автора. Она полностью бесплатна. Далее установите её и после того, как установили, откройте её и появится вот такое окно:

Эта программа является хорошей графической средой программирования на ассемблере. В отличии от классического ассемблера здесь пишется не сам код программы на ассемблере, а рисуется алгоритм работы этой программы, а компилятор при компиляции сам составит и скомпилирует код. Инструкций по работе с программой давать не буду – основы работы с ней описаны в родном руководстве на русском языке. Для того, чтобы открыть руководство по программе нужно нажать на знак вопроса, который находится на верху программы и нажать на пункт “manual.pdf”. В руководстве всё отлично расписано и даже есть пример вольтметра.

Теперь перейдем к нашей программке, которая будет мигать светодиодом. Для начала разберём алгоритм работы программы. Для того, чтобы помигать светодиодом нужно его подключить к какому-либо порту ввода-вывода микроконтроллера. Что же такое порты ввода-вывода? Порты  ввода-вывода (далее порты в/в) это выводы микроконтроллера, состоянием которых можно управлять из программы, прошитой в мк. Они могут быть в трёх состояниях:

  • Высокий уровень – логическая единица (это состояние вывода, при котором порт в/в подключён напряжению питания, то есть на этом выводе уровень напряжения, равный напряжению питания)
  • Низкий уровень – логический ноль ( в этом состоянии порт в/в подключён напрямую к земле (минусу питания) и напряжение на нём равно 0 Вольт)
  • Высокоомное HI-Z состояние (в этом состоянии ножка не подключена ни к чему т.е на ней не 0 и не 1)

Эти порты есть у каждого микроконтроллера AVR и почти все выводы контроллера (кроме земли и питания) могут работать в режиме порта в/в. А теперь откроем даташит на микроконтроллер, и посмотрим где же у него располагаются эти сами порты в/в. Для  примера будем использовать микроконтроллер ATmega16. Итак, заходи на atmel.com, находим даташит на ATmega16 и открываем его. Далее идём на вторую страницу документа и видим там распиновку микроконтроллера в разных корпусах. Нас интересует распиновка контроллера в DIP корпусе. Вот она:

Видите выводы PD1,2,3 PC1,2,3, и т.д.? Вот это и есть порты в/в. Например, PC0 расшифровывается как Port C 0. Как видно, у данного микроконтроллера 4 порта в/в и каждый из них имеет по 8 выводов, значит всего в нашем распоряжении 32 ножки.

Теперь раздерём как эти выводы настраиваются и как с ними работать. Порты в/в можно настроить на вход или на выход. Делается это установкой соответствующих бит в регистре DDR (Data Direction Register – регистр направления порта в/в). Для каждого порта есть свой регистр DDR. Именуются они так: в начале идёт префикс DDR, а после него имя порта. Например, для порта A регистр будет называться DDRA. Также есть ещё регистры PORT и PIN, но о них позже. Регистр состоит из 8-ми бит, которые соответствуют ножке, например, бит 0 в регистре DDRA будет определять направление вывода PA0. Если записать в этот бит 1, то вывод PA1 будет портом вывода т.е. выходом, а если записать 0 – входом.

Итак, создадим уже наконец новый проект в Algorithm Builder и настроим вывод PA0 в режим выхода. Для этого, как я и говорил нужно записать в 0 бит регистра DDRA единицу. Для начала настроим наш проект. Заходим в опции проекта и указываем микроконтроллер и тактовую частоту в герцах (в нашем случае это 8000000 Гц = 8 мГц):

Нажимаем применить и начинаем рисовать алгоритм. Как я уже говорил нужно в бит 0 регистра DDRA записать 1. Делается это вот так:

Чёрточка, которая находится наверху – это вершина блока с алгоритмом (элемент Vertex). Разберём команду, которую я написал. DDRA.0 означает, что мы записываем в регистр DDRA, бит 0, а 1 ->  — записываем единицу. Проще говоря, записываем единицу в 0 бит регистра DDRA.

Порт на выход мы настроили, теперь нужно записать в него единичку, тем самым зажечь светодиод. Чтобы записать единицу в порт, нужно записать единицу в регистр PORT. Именуется он также, как и DDR т.е. порту А соответствует регистр PORTA. Запишем в 0 бит порта A единичку:

Скомпилируем программу, нажав в верхнем меню Программа -> Компилировать. Если в нашем алгоритме нет ошибок, программа скомпилируется и вылезет вот такое окошко:

Как видно, программа занимает в памяти контроллера 2 слова. 1 слово – это 2 байта, значит наша программа занимает 4 байта. Теперь при помощи программатора загрузим нашу прогу в мк и подключим светодиод к порту A0 через резистор, сопротивлением 330 ом. Светодиод будет непрерывно гореть.

Далее давайте заставим светодиод не просто гореть, а мигать! Для этого нужно добавить ещё пару строк кода. Итак, продолжим. Чтобы потушить светодиод, нужно подать 0 на вывод PA0. Это делается точно также, как и запись единицы, но записываем мы 0:


Если сейчас скомпилить программу и зашить её в контроллер, то светодиод то мигать будет, но с бешеной скоростью, поэтому нам будет казаться, что он горит. Для того, чтобы снизить скорость мигания, нужно ввести какую-либо задержку между подачей 0 и 1. Проще всего реализовать её так: мы загружаем в три рабочих регистра (кстати, забыл упомянуть, что рабочие регистры – это, можно сказать, ячейки, в которые можно загрузить переменные. Это могут быть какие-нибудь числа или же буквы. В AVR есть 32 8-и разрядных регистра, значит в каждый из них можно загрузить по одному байту т.е. число от 0 до 255 или одну букву) r16, r17, r18 числа, а потом вычитаем их оттуда. Пока не появится 0, как только в регистре появится 0, переходим к разорению следующего регистра 🙂 и т.д., пока не опустошим все. Суть этой задержки в том, чтобы занять процессор бесполезной работой и потратить на это время. Для этой задержки мы создадим подпрограмму, которую можно будет вызывать между записью 1 и 0 в порт, а не прописывать каждый раз. Для этого сначала нужно инициализировать стек – ОЗУ. О стеке и о подпрограммах я расскажу позже, а сейчас напишем нашу подпрограмму:

Подпрограмма Delay – это и есть наша задержка. r16– означает, что мы вычитаем 1 из регистра 16, а стрелочки и -= означает, что если результат не равен нулю мы переходим по метке. Стрелочка указывает на метку. Это называется условный переход т.е. переход при каком-то условии. А теперь разберём основную программу. Между подачей 1 и 0 я написал Delay, это означает, что в этом месте мы подключаем нашу подпрограмму. А стрелочка – это безусловный переход, то есть переход произойдёт вне зависимости от чего-либо. Если сейчас прошить эту программу в мк, то светодиод опят-же будет лишь гореть т.к. мы ещё не инициализировали стек. Стек можно инициализировать с помощью настройщика. Для этого нажимаем на эту кнопочку:

Далее в появившемся меню выбираем “Stack Pointer (SP) и появится вот такое окно:

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

Это так называемый блок настройки периферии. Таким-же образом можно настроить и другую периферию, например, АЦП.

Всё компилируем программу и светодиод замигает! Кстати, о зашивке программы. После компиляции в папке с проектом появятся ещё 2 файла: один из них называется также, как и сам проект, а ко второму добавлено _EE. Первый файл нужно прошивать во flash память микроконтроллера, а второй не трогать вовсе.

Удачи Вам в прошивке!

Скачать архив с проектом.

C++ Builder — Обучалка C++Builder

 

Бурное развитие информационных технологий, без которых немыслимо современное человечество, привело к созданию систем программирования обеспечивающих быструю разработку приложений для самой распространенной операционной системы Windows. К таким системам программирования относятся Visual Basic, Delphi, C++Builder. Системы быстрой разработки основываются на технологии визуального проектирования и событийного программирования. Программирование в подобных системах сводится в основном к наглядному строительству приложения из готовых компонентов, которые содержит сама среда и к написанию функций обработки тех или иных событий, на которые способна реагировать Windows. У программиста высвобождается масса времени из-за того, что среда автоматически генерирует большую часть программного кода. Это время можно употребить на творчество в логике программы – следовательно, сделать приложение более полезным и интересным.

Предлагаемое учебное пособие поможет новичку уверенно сделать первые шаги в визуальном объектно-ориентированном программировании в среде C++Builder. Английское Builder означает – строитель, созидатель. На протяжении всех уроков обучение построено на основе практических примеров по созданию приложений для Windows. В пособии предлагаются простые алгоритмы, требующие написания минимального программного кода, дабы не оттолкнуть начинающего.

В конце сайта в довесок открыл разделы по Visual Basic, Delphi, Android Studio и Sketchware. Сейчас работаю над разделами  WeDo_2.0 и Arduino.

В.М. Коробицин

 

 

 

 

 

 

 

 

 

 

Урок 1 Знакомство со средой программирования Borland C++ Builder. Компоненты: форма, поле вывода текста, образ, электронная кнопка и их свойства. Событие и функция обработки события. Компиляция проекта

Урок 2 Мультимедийное приложение. Компонент проигрыватель мультимедиа и его свойства

Урок 3 Простейший графический редактор. Реакция приложения на различные кнопки мыши. Построение системы меню

Урок 4 Программа для просмотра изображений

Урок 5 Простейшие приемы построения анимации. Компонент таймер и его свойства

Урок 6 Извлечение из компьютера системного времени и даты. Назначение клавиш. Экранная заставка для Windows

Урок 7 Построение многооконных приложений для Windows. Календарь. Генератор звуковых волн

Урок 8 Приложение с окном произвольной формы. Обнаружение некоторых характеристик компьютера

Урок 9 Создание, запись, чтение и печать текстовых файлов. Компонент: поле редактирования текста Memo

Урок 10 Случайные числа. Создание и обработка одномерных массивов

Урок 11 Многомерные массивы и их обработка. Компонент: поле ввода-редактирования строки символов Edit. Квадратная матрица и закономерности расположения ее элементов

Урок 12 Генератор квадратных уравнений. Калькулятор квадратных уравнений

Урок 13 Вычисление определенного интеграла методом прямоугольников и методом трапеций

Урок 14 Магические числа. Ряд Фибоначчи

Урок 15 Работа со строками. Англо-русский и русско-английский словарь

Справочник

Кладовка

 

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

Россия → Нижегородская область → Нижний Новгород
Россия → Ярославская область → Ярославль
Россия → Ростовская область → Батайск
Россия → Калужская область → Обнинск
Россия → Новосибирская область → Новосибирск
Россия → Краснодарский край → Новороссийск
Россия → Липецкая область → Липецк
Россия → Свердловская область → Екатеринбург
Россия → Алтайский край → Барнаул
Россия → Амурская область → Благовещенск
Россия → Санкт-Петербург и Ленинградская область → Санкт-Петербург
Россия → Москва и Московская область → Химки
Россия → Москва и Московская область → Мытищи
Россия → Москва и Московская область → Москвa
Россия → Москва и Московская область → Кубинка
Россия → Москва и Московская область → Балашиха
Россия → Москва и Московская область → Фрязино
Россия → Москва и Московская область → Краснознаменск
Россия → Москва и Московская область → Одинцово
Россия → Москва и Московская область → Клин
Россия → Тверская область → Тверь
Россия → Республика Башкортостан → Уфа
Россия → Тверская область → Кимры
Россия → Республика Татарстан → Казань
Россия → Нижегородская область
Россия → Рязанская область → Рязань
Россия → Республика Тыва → Кызыл
Россия → Ханты-Мансийский автономный округ — Югра → Сургут
Россия → Республика Татарстан → Нижнекамск
Россия → Костромская область → Кострома
Россия → Брянская область → Брянск
Россия → Кемеровская область (Кузбасс) → Кемерово
Россия → Белгородская область → Белгород
Россия → Ростовская область → Таганрог
Россия → Хабаровский край → Хабаровск
Россия → Удмуртская Республика → Ижевск
Россия → Ростовская область → Батайск
Россия → Курская область → Курск
Россия → Тульская область → Тула
Россия → Республика Татарстан → Набережные Челны
Россия → Краснодарский край → Краснодар
Россия → Пензенская область → Пенза
Россия → Псковская область → Псков
Россия → Вологодская область → Вологда
Россия → Калининградская область → Калининград
Россия → Воронежская область → Воронеж
Россия → Пермский край → Пермь
Россия → Омская область → Омск
Россия → Челябинская область → Челябинск
Россия → Челябинская область → Озёрск
Россия → Забайкальский край → Чита
Россия → Иркутская область → Иркутск
Россия → Саратовская область → Саратов
Россия → Самарская область → Самара
Россия → Ульяновская область → Ульяновск
Россия → Ставропольский край → Пятигорск
Россия → Ростовская область → Ростов-на-Дону
Россия → Кабардино-Балкарская Республика → Нальчик
Россия → Республика Дагестан → Дербент
Россия → Воронежская область → Воронеж
Россия → Томская область → Томск
Россия → Орловская область → Орёл
Россия → Республика Саха (Якутия) → Якутск
США → Штат Огайо
США → Штат Айдахо
США → Округ Колумбия → Вашингтон
США → Штат Невада → Лас-Вегас
США → Штат Джорджия → Атланта
США → Штат Оклахома
США → Штат Огайо → Колумбус
США → Штат Нью-Джерси → Клифтон
США → Штат Нью-Йорк → Нью-Йорк
США → Штат Невада → Невада
США → Штат Вирджиния → Ашберн
США → Штат Флорида → Оранж Парк
США → Штат Флорида → Сарасота
США → Штат Флорида → Пенсакола
США → Штат Нью-Джерси → Трентон
США → Штат Миннесота → Фэрибо
США → Штат Калифорния → Фримонт
США → Штат Айова → Каунсил Блаффс
США → Штат Нью-Йорк → Буффало
США → Штат Оклахома → Винита
США → Штат Орегон → Даллс
США → Штат Нью-Джерси
Беларусь → Витебская область → Витебск
Беларусь → Брестская область → Брест
Беларусь → Минская область → Минск
Беларусь → Могилёвская область → Могилёв
Беларусь → Гомельская область
Беларусь → Гомельская область → Гомель
Казахстан → Мангистауская область → Актау
Казахстан → Акмолинская область → Кокшетау
Казахстан → Костанайская область → Костанай
Казахстан → Алматинская область → Алматы
Казахстан → Акмолинская область → Нур-Султан
Казахстан → Кызылординская область → Кызылорда
Германия → Берлин
Германия → Гессен
Германия → Гессен → Идштайн
Германия → Гессен → Франкфурт-на-Майне
Германия → Баден-Вюртемберг → Штутгарт
Германия → Северный Рейн → Вестфалия
Германия → Северный Рейн-Вестфалия → Варендорф
Германия → Баден-Вюртемберг → Карлсруэ
Германия → Саар → Саарлуис
Германия → Гессен → Ной-Изенбург
Германия → Нижняя Саксония → Бад-Бевензен
Германия → Шлезвиг-Гольштейн → Киль
Германия → Свободный и ганзейский город Гамбург
Германия → Нижняя Саксония → Ганновер
Германия → Нижняя Саксония → Пайне
Германия → Баден-Вюртемберг → Мангейм
Германия → Свободное государство Саксония
Германия → Нижняя Саксония → Вольфсбург
Германия → Вольный ганзейский город Бремен → Бремен
Германия → Рейнланд-Пфальц
Германия → Нижняя Саксония → Эдевехт
Германия → Нижняя Саксония
Германия → Нижняя Саксония → Лангенхаген
Германия → Нижняя Саксония → Гёттинген
Украина → Харьковская область → Харьков
Украина → Донецкая область → Славянск
Украина → Донецкая область → Енакиево
Украина → Львовская область → Львов
Украина → Донецкая область → Донецк
Украина → Донецкая область → Бахмут
Украина → Черновицкая область → Новоселица
Украина → Днепропетровская область → Никополь
Украина → Киевская область → Киев
Украина → Тернопольская область → Тернополь
Украина → Луганская область → Луганск
Украина → Винницкая область → Винница
Украина → Одесская область → Одесса
Украина → Черновицкая область → Черновцы
Украина → Сумская область → Конотоп
Украина → Ивано-Франковская область → Надворная
Украина → Донецкая область → Енакиево
Украина → Донецкая область → Краматорск
Украина → Запорожская область → Запорожье
Украина → Николаевская область → Николаев
Украина → Житомирская область → Новоград-Волынский
Таджикистан → Душанбе
Узбекистан → Ташкент
Молдова → Левобережье Днестра → Тирасполь
Грузия → Тбилиси
Киргизия → Бишкек
Латвия → Рига
Литва → Вильнюсский уезд → Вильнюс
Турция → Провинция Анталья → Аланья
Эстония → Харьюмаа
Алжир
Швеция
Швеция → Лен Стокгольм
Финляндия → Уусимаа → Хельсинки
Финляндия → Уусимаа
Финляндия → Пирканмаа → Тампере
Нидерланды → Северная Голландия → Амстердам
Нидерланды → Провинция Гронинген
Чехия → Прага
Чехия → Южноморавский край → Брно
Чехия → Южноморавский край → Моравски-Крумлов
Сингапур → Сингапур
Польша → Мазовецкое воеводство → Варшава
Польша → Нижнесилезское воеводство → Легница
Польша → Великопольское воеводство → Познань
Польша → Подкарпатское воеводство → Ярослав
Польша → Малопольское воеводство → Тарнув
Польша → Силезское воеводство → Катовице
Польша → Мазовецкое воеводство → Радом
Польша → Куявско-Поморское воеводство → Быдгощ
Польша → Нижнесилезское воеводство → Вроцлав
Болгария → Шуменская область → Шумен
Япония → Префектура Айти → Цусима
Греция → Центральная Македония → Салоники
Греция → Фессалия → Ларисса
Греция → Крит → Ираклион
Швейцария → Кантон Цюрих
Швейцария → Кантон Женева → Женева
Швейцария → Кантон Цюрих → Винтертур
Словакия → Нитранский край
Турция → Провинция Стамбул → Стамбул
Китай → Хайнань
Китай → Пекин
Китай → Ляонин → Фусинь
Китай → Тяньцзинь
Китай → Шанхай
Бангладеш → Область Раджшахи → Ишварди
Вьетнам → Ханой
Испания → Каталония
Испания → Андалусия
Великобритания → Лондон
Великобритания → Графство Суррей
Великобритания → Графство Дорсет → Борнмут
Ирландия → Графство Дублин → Дублин
Венесуэла → Штат Боливар → Пуэрто-Ордас
Канада → Провинция Квебек
Канада → Провинция Онтарио → Гамильтон
Канада → Провинция Онтарио → Торонто
Канада → Провинция Квебек → Лонгёй
Франция → Приморские Альпы → Антиб
Франция → Париж
Франция → Буш-дю-Рон → Марсель
Франция → Верхний Рейн → Мюлуз
Израиль → Тель-Авивский АО → Тель-Авив
Израиль → Центральный АО → Нетания
Венгрия → Зала → Залаэгерсег
Сингапур → Сингапур
Австралия → Новый Южный Уэльс → Сидней
Австралия → Австралийская столичная территория → Канберра
Италия → Пьемонт → Турин
Италия → Кампания → Неаполь

Текстуры. Урок 13 курса «Введение в Blender»

Текстуры в Blender позволяют делать материалы более реалистичными, более похожими на вещества, из которых состоят объекты реального мира. Кроме того, с их помощью можно накладывать готовые изображения на поверхности, создавать рельефные карты и др.

В случае mesh-объектов текстура применяется как бы поверх материала. Здесь нельзя использовать текстуру, не привязав к объекту материал. С другой стороны, с материалом может быть связано несколько текстур. Каждая из них окажет свой эффект на совокупный результат.

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

В Blender 2.80 работа с текстурами, также как с материалами, претерпела изменения. Текстуры теперь нельзя просто создать и применить к объекту через вкладку Texture редактора Properties. Придется освоить работу еще как минимум в одном редакторе Blender. Это будет Shader Editor – редактор шейдеров.

Разобьем область 3D Viewport по вертикали на две части и в одну загрузим Shader Editor.

В этом редакторе масштабирование, перемещение (при зажатых шифте и колесе мыши) работают также как в 3D Viewport.

Если объекту добавлен материал, то у него уже будут две ноды. Настройки основной, в данном случае Principled BSDF, дублируются на вкладке материалов, если не выключать там кнопку Use Nodes.

У нод есть сокеты – маленькие точки по бокам. Через них происходит соединение нод. Так одна нода оказывает влияние на какое-то свойство другой. Если мы хотим добавить текстуру, нам нужна нода с текстурой. Добавить ее можно через меню заголовка Add → Texture → … . Также работает Shift + A.

Добавим Brick Texture и соединим ноду со свойством Base Color основной ноды. Мы как бы заменяем цвет на текстуру. Чтобы увидеть эффект в 3D Viewport, не забываем в нем переключиться на затенение Rendered (Z → 8).

У ноды Brick Texture много настроек, которые позволяют гибко менять текстуру. Однако здесь нельзя сделать так, чтобы кирпичи были со всех сторон куба.

Для этого нужно добавить еще одну ноду – Add → Input → Texture Coordinate. В данном случае соединим ее сокет UV с сокетом Vector в Brick Texture.

Рассмотрим ноду Image Texture – наложение на поверхность собственной картинки.

Исходно в ноде Image Texture есть кнопки New и Open. С помощью последней загружается готовое изображение. После этого заголовок Image Texture меняется на имя файла.

Если мы просто соединим ноды Image Texture и Texture Coordinate, то скорее всего получим различные эффекты оборачивания объекта картинкой. В этом случае можно вообще обойтись без Texture Coordinate.

Если же мы хотим как-то позиционировать изображение на гранях, повторить его, то между Texture Coordinate и Image Texture добавляется нода Mapping (картирование, отображение), с помощью настроек которой изображение подгоняется под грани объекта. Например, чем больше значение полей Scale, тем мельче будет картинка, и тем чаще она будет повторена. Location перемещает картинку по грани, что позволяет совместить ее края с краями грани или выравнять по центру.

Курс с инструкционными картами к части практических работ:
android-приложение, pdf-версия

Flutter уроки

От идеи до приложения

Данный ресурс посвящен разработке мобильных приложений с помощью Flutter SDK.

Flutter SDK – бесплатное кроссплатформенное средство от Google с открытым исходным кодом для быстрой разработки мобильных приложений для iOS и Android.

С появлением Flutter реализовать свои идеи в виде мобильного приложения стало как никогда просто и доступно.

В наших уроках Вы узнаете про Flutter:
– с чего начать мобильную разработку;
– особенности реализации алгоритмов и структур;
– подходы и методы для решения задач.

Начните сейчас изучать Flutter

  • Урок 1. Flutter первое приложение Hello WorldСодержание урока:
    1. Создание нового проекта в Android Studio
    2. Главная функция main()
    3. Функция runApp()
    4. Иерархия виджетов
    5. Свой «виджет» класс MyBody и горячая перезагрузка
    6. Установка и использование пакета url_launcher (открытие ссылок в браузере)
  • Урок 2. StatelessWidget и StatefulWidgetВсе собственные классы-виджеты рекомендуется создавать от двух основных: StatelessWidget и StatefulWidget.
    Отдельные части интерфейса удобно объединять в отдельные виджеты, созданные от этих двух суперклассов, но какой из них использовать – мы рассмотрим в этом уроке.
  • Урок 3. ListView бесконечный прокручиваемый списокВиджет-класс ListView позволяет создавать конечные и бесконечные списки виджетов и делает их прокручиваемыми, если они не помещаются на экране или в отведенной для них области.
    Под бесконечным списком мы будем понимать список элементов, который пополняется по мере необходимости, в нашем уроке – когда существующие элементы уже отображены. В мобильных приложениях такие списки повсюду: новостные ленты, списки сообщений, фотогалереи и т.п.
  • Урок 4. Форма ввода, проверка правильного вводаГлавным контейнером для формы является виджет-класс Form, он позволяет объединить в себе поля ввода. Обращаясь к состоянию формы FormState, можно проверить корректное заполнение полей, сбросить значения по умолчанию и сохранить значения.
  • Урок 5. Навигация и маршрутизация в приложении, class NavigatorРедкое приложение может обойтись одним окном или одной страницей.
    Во Flutter и то и другое – виджеты. Для переключения между окнами или виджетами нужно использовать Navigator.
  • Урок 6. Асинхронные методы async и awaitПрограммируя на Flutter невозможно избежать использования асинхронных методов, таких как чтение данных из сети интернет, файлов и баз данных. Работа таких методов выводится в отдельные потоки и не нарушает работы основного потока программы: вычисление и отображение интерфейса. Одним словом, функции которые выполняются относительно долго — должны быть асинхронными.
  • Урок 7. HTTP и HTTPS, сетевые запросы в Dart и FlutterДля обмена данными между клиентом и сервером в основном используется http протокол или его расширение https для безопасной передачи данных. В Dart есть одноименный пакет http, подключается он в файле зависимостей и метаданных pubspec.yaml
  • Создание мобильных игр при помощи Flutter и Flame для начинающихЗачем создавать свою мобильную игру? Многие люди согласятся, что игры — весьма увлекательное программное обеспечение, в котором можно открыть для себя множество новых миров и реальностей, в которых можно проживать целые жизни. Много зависит от игрового процесса, который может быть как линейным и простым, так и сложным, включающим в себя 3D модели, реалистичную физику движений, графику, генерацию окружающего мира и сюжетные линии, зависящие от выбора игрока. Некоторые из нас же хотят пойти дальше и создать собственные игры, и, если вы один из них, то эта статья станет весьма полезна для вас. Основное внимание в ней будет уделено концепции, а не созданию законченной или готовой к выпуску игры.
  • Создание казуальной 2D игры. Пошаговая инструкция при помощи Flame и Flutter (часть 1 из 5)Вы когда-нибудь задумывались о разработке видеоигр? Если да, то вы пришли по адресу! Эта статья расскажет и покажет, как создать свою собственную 2D мобильную игру. Эта статья — продолжение предыдущей, которая является введением в разработку игр для разработчиков любой степени продвинутости. В этой же части мы будем создавать игру в стиле «убить крота». Она будет называться Langaw (на сленге это означает дом мухи), и ее задача будет состоять в том, чтобы убить как можно больше мух, прежде чем они доберутся до кучки мусора. Игрок будет контролировать игру простыми нажатиями (не мухобойкой 🙂). Пока что мы не будем использовать какие-либо изображения или графику, и наши мухи будут просто зелеными квадратиками. При нажатии на нее, муха станет красной и опустится в нижнюю часть экрана.

Примеры приложений на Flutter

  • Flutter Pixel SandИгра с пиксельным песком. Разработана с помощью Google Flutter SDK. Прокачай акселерометр своего смартфона.
  • itsallwidgets.com — каталог Flutter приложенийКаталог itsallwidgets.com пополняется разработчиками Flutter приложений. Для добавления в него, любой желающий должен отправить свое приложение на проверку.

Быть в курсе

Новые заметки

  • Flutter 2.2: что нового?

    Этот релиз сосредоточен на оптимизации и совершенствовании функци, включая улучшение работы на iOS, отложенные компоненты Android (deferred components), обновленный сервис-воркер для Flutter web и многое другое! Перевод статьи What’s new in Flutter 2.2 …
  • Представляем Dart 2.13

    Новые функции псевдонимов (алиасов) типов, улучшенный Dart FFI. Перевод статьи Announcing Dart 2.13 Автор оригинальной статьи: Michael Thomsen Представляем обновление Dart 2.13 — версия, в которой появились псевдонимы (алиасы) типов — одна из наиболее з…
  • Создание адаптивного пользовательского интерфейса

    Автор оригинального текста Aloïs Deniel перевод статьи https://aloisdeniel.com/#/posts/adaptative-ui Недавно я представил доклад на конференции FlutterVikings, в котором подробно объяснил, о чем вам следует думать в первую очередь при создании пользова…
  • Создание бит-машины во Flutter

    Эта статья о том, как построить бит-машину с секвенсором в Dart/Flutter. Автор оригинального текста Ken Reilly. Оригинальная статья тут. Пример приложения Вступление С первого релиза Flutter в 2018 году прошло не так много времени, однако он уже набрал …
  • Анонс Dart 2.12

    Согласованные нулевые типы (Sound null safety) и Dart FFI в стабильной версии! Мы с радостью представляем вам Dart 2.12, обладающий стабильными версиями согласованных нулевых типов и Dart FFI. Null safety — наша последняя основная функция для повышения …
  • Повтор знаменитой игры с тираннозавром при помощи Flutter и Flame

    Автор оригинальной статьи — Renan C. Araujo Если вы еще не знакомы с Flutter, то у меня хорошие новости: вам предстоит познакомиться с одним из самых удобных и гибких способов создания пользовательского интерфейса. Так что не теряйте зря времени и узна…
  • Представляем Flutter 2.0

    Flutter нового поколения, созданный для WEB, мобильных устройств и настольных компьютеров
    Сегодня мы с гордостью представляем Flutter 2: большое обновление для Flutter, дающее разработчикам возможность создавать интересные, быстрые и портируемые приложе…
  • Context — как это работает во Flutter

    Перевод статьи Flutter in Context автора Greg Perry Детальный разбор класса BuidContext
    (Эта статья является частью серии Decode Flutter Series) Вы уже знакомы с контекстными объектами? Я имею в виду объекты класса BuildContext с именем context, которы…
  • Анонс Flutter 1.22

    Перевод статьи Announcing Flutter 1.22 Поддержка iOS 14 и Android 11, i18n и l10n, готовые плагины Google Maps и WebView, новый инструмент App Size и многое другое! Мы с радостью представляем вам свежую версию Flutter с обширной поддержкой iOS 14 и Andr…
  • Основы Dart 2.x (Коллекции)

    Во многих приложениях требуется создавать группы связанных объектов и управлять ими. В языке Dart для этого существуют коллекции.
    Коллекции предоставляют более гибкий способ работы с группами объектов. В отличие от массивов которые используются в других…
  • Создание мобильных игр при помощи Flutter и Flame для начинающих

    Перевод урока Create a Mobile Game with Flutter and Flame – Beginner Tutorial Зачем создавать свою мобильную игру? Многие люди согласятся, что игры — весьма увлекательное программное обеспечение, в котором можно открыть для себя множество новых миров и …
  • Представляем Вам Flutter 1.17!

    Перевод статьи Announcing Flutter 1.17 Включает в себя поддержку Metal для более быстрой работы системы iOS, новые компоненты Material, новые программы для мониторинга сети и многое другое! Сегодня мы с радостью представляем Вам Flutter 1.17, наш первый…
  • Представляем Dart 2.8!

    Перевод статьи Announcing Dart 2.8 Сегодня мы представляем вам новую версию Dart SDK — 2.8! Сообщество Dart растет, и миллионы разработчиков Flutter используют Dart как язык для создания приложений на любой платформе. Мы продолжаем работать над завершен…
  • Сохранение pdf файла во Flutter web

    Если кто-то столкнулся с проблемой сохранения бинарных файлов во Flutter web, в том числе PDF файлов, предлагаем наше решение. Для вывода бинарного файла в браузере воспользуемся функцией JavaScript, ее нужно подключить в index.html: function ToFile(arg…
  • Flutter for web — создание веб-приложения

    Flutter for web Git репозиторий ВНИМАНИЕ: Данная заметка устарела с выходом Flutter >= 1.9
    Смотрите: FlutterWeb Урок 1. Введение в разработку на Flutter для Интернета Установка и настройка необходимых пакетов Пакет stagehand — создает новый проект из в…
  • FlutterWeb Урок 1. Введение в разработку на Flutter для Интернета

    С выходом версии фреймворка Flutter 1.9 у разработчиков приложений появилась возможность создать один Flutter-проект с одной кодовой базой для платформ: Android, iOS и web.
    Это позволяет получить почти все плюсы Flutter в любом браузере и на любом устро…
посмотреть больше заметок

Algorithm Builder

Algorithm Builder — это графическая среда сторонней разработки для создания программного обеспечения для микроконтроллеров AVR, обеспечивающая быстрое написание проектов различной степени сложности без глубинного изучения языков программирования для этой архитектуры.

 

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

 

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

 

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

 

Поддерживается автоматическая перекодировка строк ANSI-кодов Windows в коды русифицированного буквенно-цифрового ЖКИ.

 

Среда объединяет в себе графический редактор, компилятор алгоритма, симулятор микроконтроллера, внутрисхемный программатор. При использовании внутрисхемного программатора микроконтроллер подключается к COM порту компьютера через несложный адаптер (три диода и несколько резисторов). Программатор ведет подсчет числа перепрограммирований кристалла, сохраняя счетчик непосредственно в кристалле.

 

Algorithm Builder обеспечивает мониторную отладку на кристалле (On-Chip debug) которая позволяет наблюдать содержимое реального кристалла в заданной точке останова. При этом, для связи микроконтроллера с компьютером используется только один вывод, причем по выбору пользователя. Мониторная отладка может быть применена к любому типу кристалла, имеющего SRAM.

 

Вопросы по Algorithm Builder можно отправлять разработчику данного программного продукта по адресу: [email protected] 

Скачать Algorithm Builder для AVR

План урока кодирования: Monster Maker! | Джейн Абрамс | Grok Learning

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

Большинство слайдов содержат интерактивные примеры, которые можно запустить, нажав кнопку ▶ в правом верхнем углу примера. Поощряйте студентов запускать эти примеры, когда они их видят. Если вы просматриваете записи в классе, это хорошая возможность, чтобы студенты выдвинули гипотезы о том, что произойдет, когда программа будет запущена!

Решение задач: Для решения задач учащиеся могут писать свои программы в редакторе, запускать их для проверки правильности их работы и затем отправлять их на автоматическую пометку.Если это неверно, они мгновенно получат обратную связь с советами о том, как решить проблему.

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

Проявите творческий подход: Заключительное задание — это игровая площадка, где ученики могут дальше экспериментировать с навыками, которые они практиковали, и создавать своего собственного монстра!

Дифференциация и расширенное обучение: Когда порядок имеет значение? По мере того, как ученики создают своих собственных монстров на игровой площадке, заставьте их больше думать о последовательности.Сколько различных алгоритмов они могут придумать, чтобы все рисовали одного и того же монстра ? Иногда у проблем есть несколько возможных решений!

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

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

Ваши ученики хотят больше писать код? Вот пара идей, что попробовать дальше!

  • Чтобы узнать больше о программировании Monster Maker, ознакомьтесь с нашими полноформатными курсами Monster Maker и More Monster Maker.Эти курсы знакомят младших школьников с более сложными алгоритмами, включая программы с решениями и пользовательским вводом.
  • Для студентов старшего возраста попробуйте один из других наших коротких бесплатных курсов. Используйте Blockly для создания снежинок или собственного виртуального питомца!

Австралийская учебная программа

  • Основа 2-го года обучения в области цифровых технологий Процессы и производственные навыки: ACTDIP004
  • 3-й и четвертый годы обучения в области цифровых технологий Процессы и производственные навыки: ACTDIP010, ACTDIP011

Новая Зеландия учебная программа

  • Технологические знания — технологические системы : Уровень 2

Национальная учебная программа в Англии

  • K — 2 Алгоритмы и программирование: 1A-AP-08, 1A-AP-10, 1A-AP-11, 1A-AP-12, 1A-AP-14, 1A-AP-15,
  • 3-5 Алгоритмы и программирование: 1B-AP-08, 1B-AP-10, 1B-AP-11, 1B-AP-15

Построители кода роботов — алгоритмы и декомпозиция цифровой деятельности

Описание

Научите студентов следовать и разлагать алгоритмы с помощью этих цифровых действий Build a Robot .В 2 типах цифровых действий учащихся просят следовать алгоритму, чтобы собрать робота, а затем взглянуть на предварительно созданного робота и ввести для него свой собственный алгоритм.

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

СОДЕРЖАНИЕ:

2 Ссылка на цифровой файл (5 слайдов с описанием следования и алгоритма, 5 слайдов с описанием алгоритма и 2 плаката с лексикой)

Плакат с 3 алгоритмами (печать на стандартной бумаге для принтера)

4-5 слов в словарном запасе

6-7 Условия использования и кредиты

Стандарты ISTE

Strand: вычислительный мыслитель

Стандарт: 5.а. формулировать определения проблем, подходящие для технологических методов, таких как анализ данных, абстрактные модели и алгоритмическое мышление при исследовании и поиске решений.

Я могу Заявления:

• Я могу следовать алгоритму.

• Я могу создать алгоритм.

• Могу написать задачу по компьютеру на

Я настоятельно рекомендую книжку с картинками «Дети получают кодирование» как введение в эту тему для вас и ваших учеников.

Условия продукта:

Авторские права © Бриттани Уошберн, 2020.Покупка этого файла дает вам право на ОДНУ классную комнату. Вы можете использовать это в нескольких классах, но не можете делиться с другими учителями. Копирование для более чем одного учителя, класса, отдела, школы или школьной системы запрещено. Этот продукт нельзя распространять или отображать в цифровом виде для всеобщего обозрения. Несоблюдение этого требования является нарушением авторских прав и Закона о защите авторских прав в цифровую эпоху (DMCA). Клипарт и элементы, содержащиеся в этом PDF-файле, защищены авторским правом и не могут быть извлечены и использованы за пределами этого файла без разрешения или лицензии.Если несколько лицензий необходимы для использования моим более чем одним преподавателем или более чем в одной компьютерной лаборатории, дополнительные лицензии не принимаются.

Связаться с другими учителями технологий:

Если вы хотите пообщаться с другими учителями технологий, посетите группу Technology Teacher Tribe на Facebook.

Свяжитесь со мной в социальных сетях!

Facebook, Pinterest, блог

Реферальная программа

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

Ваш реферальный URL: https://www.k5technologycurriculum.com/product/robot-code-builders-algorithm-and-decomposing-digital-activities/ Нажмите, чтобы скопировать

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

by peterWeinberg

Интерфейс CS-Playground-React

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

Я никогда не разбирался в математике. И я всегда связывал сильные математические навыки с естественной способностью преуспеть в программировании. Я чувствую, что должен работать усерднее, чем другие (у которых есть врожденные математические навыки), чтобы изучить те же концепции. С этой идеей, глубоко укоренившейся в моем мозгу, я был почти уверен, что никогда не смогу научиться таким вещам, как обход двоичных деревьев поиска и умение мысленно разбирать рекурсивные кошмары, такие как Mergesort.

Хоть и приложив немного усилий, удивить себя удалось. Поэтому я хотел немного рассказать о том, как и о реальных результатах моих усилий. Как всегда, в надежде, что найдутся участники, готовые принять участие!

Войдите в CS-Playground-React, простую песочницу JavaScript в браузере для изучения и отработки алгоритмов и структур данных.

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

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

Но CS Playground React стремится быть чрезвычайно минималистичным и оттачивает очень специфический набор тем. Кроме того, этот — не , который должен стать следующим большим достижением. Создание этого приложения было для меня способом развлечься. Если это окажется ценным ресурсом даже для еще одного человека, тем лучше.

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

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

Если вас интересует код, не смотрите дальше.

Остальное — это все скучные вещи о том, почему и как 🙂

Почему я создал это

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

За последние 18 месяцев или около того я могу с уверенностью сказать, что научился программировать. Хотя я пока не решаюсь называть себя программистом. И это не потому, что я не зарабатываю на жизнь программированием (я не занимаюсь им), а более или менее из-за феномена синдрома самозванца, о котором я упоминал ранее.Я, конечно, умею строить. Но до недавнего времени я очень мало знал о компьютерных науках.

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

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

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

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

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

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

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

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

Однако со временем некоторые концепции начали осваиваться. Но возникла пара проблем:

  1. Мне стало как-то скучно. Мне нравится решать проблемы, но давайте посмотрим правде в глаза: решение reverseLevelOrder обход двоичного дерева поиска намного менее увлекательно, чем решение реальной проблемы для вашего последнего приложения.
  2. Это было очень времени. Я работаю полный рабочий день (НЕ пишу код весь день), и мое свободное время для программирования чрезвычайно ценно. Я знал, что потрачу на это месяцы, и забеспокоился, что потеряю связь со своими более востребованными навыками.

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

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

Итак, я решил объединить две идеи. Ответ заключался в том, чтобы создать простое приложение, которое помогло бы мне достичь моих целей и , чтобы я хорошо отработал свои основные навыки.

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

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

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

Я нашел действительно классный сайт, который визуализирует, как работают алгоритмы сортировки и структуры данных.Это Quicksort, который делает свое дело с массивом из 100 элементов. Вы можете найти полный список визуализаций здесь. Спасибо, USF, это круто!

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

Я создал это приложение для себя, но не зря хотел поделиться им со всеми вами. Если хотя бы один человек сочтет CS-Playground-React полезным, я буду чувствовать, что сделал свою часть (или, по крайней мере, часть), чтобы отдать должное этому сообществу.

Есть так много программистов, которые свободно делятся своими знаниями и опытом и мало или ничего не просят взамен. Без такого открытого сообщества научиться программировать самостоятельно было бы невозможно.

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

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

Tech Stack & Hacks

Если вам интересно, я создал это приложение с помощью React & React-Redux (хотя первая версия была ванильным JS, CSS и HTML). Он также использует CodeMirror и React-Codemirror2 для встраивания редактора в браузер (ПРИМЕЧАНИЕ: исходный React-CodeMirror больше не поддерживается и не работает с новыми версиями React, поэтому дайте репозиторию Scniro звезду на GitHub для выбора. до слабины!).

Mock console

Небольшой взлом позволяет мне запускать действие redux каждый раз, когда пользователь вызывает консоль .введите в свой код. Таким образом, я могу записывать зарегистрированные сообщения и, в свою очередь, имитировать консоль в браузере, чтобы показать вывод кода — что, на мой взгляд, было круто! Вы можете запустить clearConsole () в любое время, когда захотите очистить сообщения фиктивной консоли.

Сохраняющийся код

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

Если по какой-то причине вы хотите стереть весь свой прогресс, вы можете запустить resetState () в любое время в редакторе. Если вы не хотите фиксировать свой код в локальном хранилище, оставьте комментарий // НЕ СОХРАНЯЙТЕ в своем коде перед тем, как уйти. Это предотвратит сохранение любого кода не только для этого файла.

В качестве примечания, оказалось, что есть пакет, который делает это за вас, под названием Redux-Persist (о котором я узнал постфактум).Но для простого случая использования, если вы можете сделать что-то с помощью нескольких строк кода или установить пакет NPM, чтобы сделать то же самое? Я буду каждый раз выбирать первое. Скорее всего, вы сохраняете сотни строк кода и целый новый набор зависимостей. Это всегда компромисс, и вы должны решить, когда оптимизированное (но более тяжелое) решение лучше, чем ваше упрощенное.

Панели с изменяемым размером

Последний трюк, который у меня был в рукаве, заключался в том, чтобы сделать рабочее пространство гибким и простым в использовании.Я хотел дать пользователям возможность изменять размер как редактора, так и консоли, поэтому я использовал небольшой скрипт, который я нашел, под названием simpleDrag.js , React refs и волшебство flexbox, чтобы сделать это возможным.

Спасибо за чтение и удачного взлома!

Стратегия

Намерение

Стратегия — это шаблон поведенческого проектирования, который позволяет вам определять семейство алгоритмов, помещать каждый из них в отдельный класс и делать их объекты взаимозаменяемыми.