Программирование (математики и физики): различия между версиями
Patarakin (обсуждение | вклад) Нет описания правки |
Patarakin (обсуждение | вклад) Метка: ручная отмена |
||
| (не показаны 23 промежуточные версии этого же участника) | |||
| Строка 27: | Строка 27: | ||
|Book=Computer Science with Snap! by Examples, Agent-Based and Individual-Based Modeling: A Practical Introduction, Mindstorms | |Book=Computer Science with Snap! by Examples, Agent-Based and Individual-Based Modeling: A Practical Introduction, Mindstorms | ||
}} | }} | ||
Учебный курс для студентов бакалавриата групп - [[:Категория:МФ-211|МФ-211]] [[:Категория:МФ-201|МФ-201]] | |||
; Учебный курс для студентов бакалавриата групп - [[:Категория:МФ-211|МФ-211]] | |||
: Архив - [[:Категория:МФ-201|МФ-201]] | |||
== Введение - программирование, красота и радость == | |||
; Перефразируя [[Inventive Minds: Marvin Minsky on Education|Марвина Минского]]: | |||
: - К несчастью, существующие учебники по программированию зачастую напоминают сухие сводки приказов и грамматических правил волшебного языка кодирования. Они редко иллюстрируют, как эти инструменты применяются на практике для сотворения чудес. Настоящий язык — это не просто набор слов и правил, это целая вселенная возможностей, подобная богатой литературе, где каждый может найти своё вдохновение. Никто и никогда не постигал язык, зазубривая грамматику. Истинное обучение начинается с захватывающих историй, которые пробуждают наш интерес и воображение. В мечтательности учебный курс — собрание таких историй, способных увлечь в мир программирования, словно в сказку. | |||
=== Паттерны поведения === | |||
И мы можем один за другим рассматривать [[:Category:HowTo|паттерны поведения агентов]] и создавай истории, как [[активное эссе|активные эссе]] | |||
; Паттерн 1 - рождение агентов | |||
<snap project="butterfly_pattern1" user="patarakin" /> | |||
<snapblocks> | |||
when I start as a clone | |||
switch to costume (pick random (1) to ([length V] of (my [costume V]))) | |||
think ([my parent V]) | |||
</snapblocks> | |||
=== Фотография как данные для картины === | |||
* https://snap.berkeley.edu/snap/snap.html#present:Username=patarakin&ProjectName=image_data | |||
<snap project="image_data" user="patarakin" /> | |||
<snapblocks> | |||
when green flag clicked | |||
clear | |||
pen up | |||
forever { | |||
go to [random position V] | |||
set pen [hue V] to ([hue V] at [myself V]) | |||
set pen [saturation V] to ([saturation V] at [myself V]) | |||
set pen [brightness V] to ([brightness V] at [myself V]) | |||
} | |||
</snapblocks> | |||
== История учебного программирования. Примеры учебных микромиров == | == История учебного программирования. Примеры учебных микромиров == | ||
| Строка 63: | Строка 99: | ||
: Надо указать id проекта внутри блока <nowiki><scratch project="id" /> </nowiki> | : Надо указать id проекта внутри блока <nowiki><scratch project="id" /> </nowiki> | ||
<scratch project="10079315" /> | <scratch project="10079315" /> | ||
=== [[Snap!]] и встраивание проектов в страницы вики === | === [[Snap!]] и встраивание проектов в страницы вики === | ||
| Строка 85: | Строка 110: | ||
<snap project="Alonso_Ball" user="patarakin" /> | <snap project="Alonso_Ball" user="patarakin" /> | ||
{{ | == Распространённые языковые конструкции == | ||
=== Ветвление === | |||
} | |||
<sb>if <> { | |||
} @addInput</sb> | |||
<sb>if <> { | |||
} else { | |||
}</sb> | |||
<sb>(if <> then [] else [])</sb> | |||
=== Циклы === | |||
<sb>forever { | |||
}</sb> | |||
<sb>repeat (10) { | |||
}</sb> | |||
<sb>repeat until <> { | |||
}</sb> | |||
<sb>for ((i)) = (1) to (10) { | |||
}</sb> | |||
=== Обработка строк === | |||
== | === Массивы === | ||
== Паттерны поведения в цифровой среде и их симуляция == | == Паттерны поведения в цифровой среде и их симуляция == | ||
| Строка 138: | Строка 187: | ||
=== Эксперименты в среде NetLogo === | === Эксперименты в среде NetLogo === | ||
{{#widget:YouTube|id=_IRTKplE7nw|start=3}} | {{#widget:YouTube|id=_IRTKplE7nw|start=3}} | ||
== Критерии оценки по дисциплине ([[:Категория:МФ- | == Критерии оценки по дисциплине ([[:Категория:МФ-211]]) == | ||
{| {{prettytable}} | {| {{prettytable}} | ||
| Строка 218: | Строка 219: | ||
* Многообразие и возможности языков визуального программирования | * Многообразие и возможности языков визуального программирования | ||
* Паттерны поведения в цифровой среде и их симуляция | * Паттерны поведения в цифровой среде и их симуляция | ||
| Разместить в вики проект, выполненный в среде [[Scratch]] или [[Snap!]] или [[ | | Разместить в вики проект, выполненный в среде [[Scratch]] или [[Snap!]] или [[Lua]] | ||
| | | | ||
* [[Как использовать визуальные блоки на вики страницах]] | * [[Как использовать визуальные блоки на вики страницах]] | ||
| Строка 226: | Строка 227: | ||
| Уметь использовать распространенные языковые конструкции | | Уметь использовать распространенные языковые конструкции | ||
| Распространённые языковые конструкции | | Распространённые языковые конструкции | ||
| Разместите в вики статью с примером кода | | Разместите в вики статью с примером кода (Scratch % Snap!) | ||
| | | | ||
* [[How to Make a Top Down Scroller Game]], | * [[How to Make a Top Down Scroller Game]], | ||
Текущая версия от 19:09, 1 декабря 2025
| Планируемые результаты обучения (Знать, Уметь, Владеть) | Результаты обучения: обучающийся понимает и умеет использовать возможности визуальных языков программирования для освоения математических и физических понятий
|
|---|---|
| Содержание разделов курса |
|
| Видео запись | |
| Среды и средства, которые поддерживают учебный курс | Snap!, StarLogo Nova, NetsBlox, RAWGraphs, Lua, Roblox |
| Книги, на которых основывается учебный курс | Computer Science with Snap! by Examples, Agent-Based and Individual-Based Modeling: A Practical Introduction, Mindstorms |
Введение - программирование, красота и радость
- Перефразируя Марвина Минского
- - К несчастью, существующие учебники по программированию зачастую напоминают сухие сводки приказов и грамматических правил волшебного языка кодирования. Они редко иллюстрируют, как эти инструменты применяются на практике для сотворения чудес. Настоящий язык — это не просто набор слов и правил, это целая вселенная возможностей, подобная богатой литературе, где каждый может найти своё вдохновение. Никто и никогда не постигал язык, зазубривая грамматику. Истинное обучение начинается с захватывающих историй, которые пробуждают наш интерес и воображение. В мечтательности учебный курс — собрание таких историй, способных увлечь в мир программирования, словно в сказку.
Паттерны поведения
И мы можем один за другим рассматривать паттерны поведения агентов и создавай истории, как активные эссе
- Паттерн 1 - рождение агентов
<snapblocks> when I start as a clone switch to costume (pick random (1) to ([length V] of (my [costume V]))) think ([my parent V]) </snapblocks>
Фотография как данные для картины
<snapblocks> when green flag clicked clear pen up forever { go to [random position V] set pen [hue V] to ([hue V] at [myself V]) set pen [saturation V] to ([saturation V] at [myself V]) set pen [brightness V] to ([brightness V] at [myself V]) } </snapblocks>
История учебного программирования. Примеры учебных микромиров
Путь черепахи: эволюция LOGO-подобных языков
| Description | |
|---|---|
| Конструкционизм | Конструкционизм - философия обучения, развитая Сеймуром Пейпертом на основании конструктивизма. К активной позиции конструктивизма конструкционизм добавляет идею того, что люди создают новое знание особенно эффективно, когда они вовлечены в создание продуктов, наделенных личностным смыслом, будь то песочные замки, Лего машины или компьютерные программы. |
- (Logo OR Ancestors
- Logo)
- AlgoBlock (Ancestors: Лого)
- App Inventor (Ancestors: Scratch, Лого, Blockly)
- Boxer (Ancestors: Лого)
- DBSnap (Ancestors: Scratch, Snap!, Лого)
- GP (Ancestors: Scratch, Лого)
- Josef (Ancestors: Лого)
- KTurtle (Ancestors: Лого, Kumir)
- LogoBlocks (Ancestors: Лого)
- LogoWriter (Ancestors: Лого)
- Move the Turtle (Ancestors: Лого)
- NetLogo (Ancestors: Лого, StarLogo)
- NetsBlox (Ancestors: Scratch, Snap!, Лого)
- Scratch (Ancestors: Лого, Squeak, Agentsheets)
- Smalltalk (Ancestors: Лого, Lisp)
- Snap! (Ancestors: Scratch, Лого, Lisp, Smalltalk, Scheme)
- StarLogo (Ancestors: Лого)
- StarLogo Nova (Ancestors: NetLogo, Scratch, Лого)
- UCB Logo (Ancestors: Лого, Lisp)
- Лого (Ancestors: Lisp)
- ПервоЛого (Ancestors: Лого)
Примеры микромиров - Category:Model
История совместной деятельности в цифровой среде. Совместное редактирование текста и кода
- Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»
- https://www.youtube.com/watch?v=CF4YZ3vnFSs&t=5
Многообразие и возможности языков визуального программирования
Scratch встраивание проектов в страницы вики
- Надо указать id проекта внутри блока <scratch project="id" />
Snap! и встраивание проектов в страницы вики
Распространённые языковые конструкции
Ветвление
if <> {
} @addInput
if <> {
} else {
}
(if <> then [] else [])
Циклы
forever {
}
repeat (10) {
}
repeat until <> {
}
for ((i)) = (1) to (10) {
}
Обработка строк
Массивы
Паттерны поведения в цифровой среде и их симуляция
| Description of problem | Solution | |
|---|---|---|
| Вычислительное мышление | ||
| Генерировать новых агентов | Агент порождает поток других агентов - например, в экологических моделях рождение используется для создания потомков, в играх из пистолета вылетают пули, которые он порождает, в историях Scratch капли дождя клонируются и падают из тучи на землю. | Можно использовать породы или клоны. Например, в NetLogo:
|
| Накапливать энергию | Агент живёт в среде, перемещается, выполняет задания и накапливает энергию или собирает очки |
|
| Перевозить другого агента на себе | Транспортировка представляет собой ситуацию, когда один агент перевозит на себе другого агента. Например, черепаха в Frogger несёт лягушку, пересекая реку. В экологических симуляциях процесс транспортировки можно использовать, например, для перевозки пыльцы пчёлами. |
|
| Перемещаться случайным образом | Агент или агенты перемещаются по экрану случайным образом - стандартная для многих игр и симуляций ситуация, которую надо уметь воспроизводить - термиты, птицы и рыбы при формировании стай изначально перемещаются случайным образом. | Агент поворачивается в направление, которое выбирается случайным образом и делает ход в этом направлении. |
| Поглощать агентов |
| Прятать агентов или просто их убивать или умирать самому |
| Подчиняться клавишам клавиатуры | Реагировать на клавиши клавиатуры Движение клавиатуры: нажатия кнопок клавиатуры управляют движением агента. И здесь могут быть паттерны типа Прыгать - как писал Пейперт в этой статье писал про Марио и как воспроизвести поведение Марио | Использовать блоки управления в сочетании с блоками движения |
| Поиск восхождением к вершине | Поиск восхождением к вершине - алгоритм поиска в компьютерных науках, когда агент просматривает значения переменных на ближайших полях и на поле с максимальным значением переменной. Использование алгоритма поиск восхождением к вершине можно наблюдать в таких играх как Sims или Pac-Man, когда призраки преследуют Pacman, следуя наивысшему значению запаха Pac-man, который распространяется по всему полю см. http://ccl.northwestern.edu/netlogo/models/Pac-Man | Использовать встроенные команды NetLogo
|
| Превращаться в другого агента | Превращение - один агент превращается в другого агента. Возможный вариант - агент одной породы превращается в агента другой породы. | В примере на Scratch - cпрайт клонируется и содержит в себе разные породы - демонов и драконов. При столкновении с агентом другой породы агент может изменять собственную породу и становиться другим. Например, из породы демонов переходить в породу драконов. В NetLogo можно просто поменять принадлежность к породе и соответственно свойства агента. |
| Преследовать другого агента | Один агент преследует другого агента - поворачивается в его сторону или поворачивается в том же направлении, куда движется другой агент | Используются команды повернуться к другому агенту |
| Распространяться | Диффузия: паттерн распространения, когда вы можете распространять определённое количество агента на других агентов, расположенных по близости за счёт процесса диффузии. Например, в модели муравьёв в NetLogo муравьи выделяют вещества феромоны, которые диффундируют на ближайшие поля игрового поля. | В некоторых средах конструирования возможность диффузии заложена изначально. Например, в NetLogo стандартная команда к точкам - пятнам на экране diffuse |
| Сталкиваться | В ряде среде есть специальный блок Collision - что делать агенту в случае столкновения с другим агентом. Для Scratch решение собирается из блоков сенсоров - если я касаюсь другого агента (указать какого именно), то ... | |
| Тащить | Тащить - паттерн "тащить" противоположен по значению паттерну толкать - агент может тащить за собой другого агента или агентов. Например, поезд тащит за собой вагоны, лошадь тащит за собой сани, буксир тащит за собой баржи или плот. | |
| Толкать | Паттерн "толкать" — это паттерн, который мы видим во многих играх. Агент должен толкать ящики или мешки с золотом. Когда игрок толкает коробку или мешок, эти объекты движутся в том направлении (вверх, вниз, вправо или влево), в котором их толкнули. | Объект или Агент, над которым совершается действие, получает сигнал от агента субъекта деятельности, поворачивается в ту же сторону, куда смотрит толкающий агент и двигается в эту сторону. |
Создание собственных функций
Создать агентов в момент запуска модели
Создавать агентов в случае столкновения с другим агентом
Обращение к внешним данным, обработка и представление данных
- На примере того, как это можно делать в Snap!
- вбросить данные в формате CSV, JSON на рабочий экран программы
- обратиться по http адресу к внешним данным
Датасет в Snap!
Многоагентое моделирование. Породы агентов
Объединение языков многоагентного моделирования в учебном процессе на базе MediaWiki
| Описание | Фрагмент генеалогической схемы происхождения агентных языков |
|---|---|
| Область знаний | Информатика |
| Среды для создания диаграммы: | Graphviz |

Выращивание данных и их дальнейшее использование
Эксперименты в среде NetLogo
Критерии оценки по дисциплине (Категория:МФ-211)
| Образовательный результат | Тема | Задание | Пример |
|---|---|---|---|
| Знает возможности совместной цифровой деятельности и умеет ими пользоваться Semantic MediaWiki | История совместной деятельности в цифровой среде. Совместное редактирование текста и кода | Зарегистрироваться на площадке, отметить странницу категориями, заполнить поля по форме | |
| Выбирать способы программирования | История учебного программирования. Примеры учебных микромиров | Создайте собственные концепты к статьям в категории Языки программирования | |
| Использовать языки визуального программирования для моделирования базовых паттернов |
|
Разместить в вики проект, выполненный в среде Scratch или Snap! или Lua | |
| Уметь использовать распространенные языковые конструкции | Распространённые языковые конструкции | Разместите в вики статью с примером кода (Scratch % Snap!) | |
| Создавать собственные функции | Создание собственных функций | Создайте и опишите собственные полезные функции | |
| Обращаться к агентам на основе их породных свойств | Многоагентое моделирование. Породы агентов | Разместите в вики пример проекта Snap!, в котором происходит обращение к клонам спрайта | Примеры |
| Обрабатывать данные, загружать данные, сохранять данные | Обращение к внешним данным, обработка и представление данных | Разместите в вики проект Scratch или Snap!, в которых происходит обработка данных | |
| Выращивать данные в искусственных микромирах | Выращивание данных и их дальнейшее использование | Разместите в вики проект StarLogo Nova или Snap!, в которых происходит выращивание данных |
Обсуждение структуры курса
Вариант 1
Вариант 2




