Программирование на языках высокого уровня: различия между версиями

Материал из Поле цифровой дидактики
Строка 54: Строка 54:


{{#ask:
{{#ask:
[[Category:Язык программирования]] [[Визуальная реализация::Блоки-Иконки]] [[ActiveNow::Project is active]] | ?Description
[[Category:Язык программирования]] [[Визуальная реализация::Блоки-Иконки]] [[ActiveNow::Project is active]] | ?Description | ?Address
}}
}}


=== [[:Category:Person|Авторы]] и книги, которые оказали влияние на курс ===
=== [[:Category:Person|Авторы]] и книги, которые оказали влияние на курс ===

Версия 09:22, 2 сентября 2023



Планируемые результаты обучения (Знать, Уметь, Владеть) Целью освоения дисциплины является формирование у студентов понимания общих принципов использования языков высокого уровня

Результаты обучения: обучающийся понимает и умеет использовать базовые конструкции языков программирования высокого уровня

Знать
  1. основные типы данных, их особенности
  2. основы функционального и объектно-ориентированного программирования;
  3. особенности реализации программ на языках различных типов ;
Уметь
  1. выбирать наиболее подходящий способ программирования;
  2. выполнять стандартные операции над данными различного типа;
  3. писать программу разными способами - с использованием процедурного, функционального, объектно-ориентированного подходов
  4. структурировать программы;
  5. работать с файлами (создавать, записывать, считывать)
  6. использовать стандартные модули и библиотеки для работы с данными, текстами, временем
  7. находить ошибки, улучшать код, документировать программу
Владеть
  1. навыками совмещения нескольких языков высокого уровня
  2. навыками совместной деятельности в среде Semantic MediaWiki
Содержание разделов курса
  1. Языки высокого уровня. Типология языков
  2. Стандартные типы данных
  3. Концепции программирования. Распространённые языковые конструкции
  4. Контейнеры для хранения данных.
  5. Функциональное программирование. Функции высшего порядка
  6. Объектно-ориентированное программирование
  7. Визуальное программирование
  8. Алгоритмы поиска и сортировки в разных языках
  9. Модули и библиотеки
  10. Работа с данными. Среда выращивания данных и анализа данных.
  11. Работа с медиа. Программирование игр и программирование внутри игр.
Видео запись
Среды и средства, которые поддерживают учебный курс Snap!, Python, PHP, Semantic MediaWiki, Lisp, Lua, R, JavaScript
Книги, на которых основывается учебный курс The Wiki Way: Quick Collaboration on the Web, Стили и методы программирования, Structure and Interpretation of Computer Programs, Simply Scheme: Introducing Computer Science

Для магистрантов

Категория:ИВО-231м - 2023
Категория:ПБД221м и Категория:РМП221м - 2022


Содержание разделов дисциплины

Введение

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

Особенности курса

 DescriptionAddress
AgentCubesУчебный блочный язык программирования, ориентированный на создание трёхмерных игр, цифровых историй и симуляций
AgentsheetsПервый язык блочного программирования для создания игр, симуляций и освоения вычислительного мышления. Разработан лабораторией масштабируемого дизайна
AlgoBrixОбучающий язык блочного программирования, поддерживающий программирование роботов и кубиков
AliceЯзык для создания трехмерных миров и обучения основам программирования. Alice представляет собой среду, в которой можно манипулировать 3D-объектами (двигать, вращать, менять цвет и т. д.) и создавать программы, генерирующие анимацию в виртуальных мирах. Она очень похожа на профессиональные современные IDE. Рабочая плоскость разбита на несколько окон: в одном в реальном времени отображается виртуальный мир; в другом присутствует дерево объектов, и для каждого из них предоставляется набор доступных свойств; центральной часть отведена, естественно, под редактор исходного кода; имеется и специальная область событий, позволяющая управлять всем происходящим.
App InventorApp Inventor является бесплатным инструментом для программирования для создания мобильных приложений для Android. Он был разработан Массачусетским технологическим институтом и предоставляет простой интерфейс для создания мобильных приложений, который доступен для любого пользователя. Для программирования в App Inventor используется визуальный язык программирования, очень похожий на язык Scratch и StarLogo Nova.
webapis-get-all-posts.png
Beetle Blocks
Blockly
CreatiCodeСреда для создания 3х мерных игр средствами блочного программирования
DBSnapКлон Snap! для работами с базами данных
DRAKONДружелюбный русский алгоритмический язык, который обеспечивает наглядность (сокр. ДРАКОН) — визуальный алгоритмический язык программирования и моделирования
GPБлочный язык общего назначения, который может использоваться не только в образовательных целях
GameBlox
Gamefroot
Gamestar MechanicСреда и сообщество для создания игр. Gamestar Mechanic is an online game design platform built as a game about making games
Hopscotch
Kodu
Looking Glass
MakeCode
Mama
MicroBlocksЯзык программирования - клон языка Scratch специально спроектированный для управления физическими объектами
Move the Turtle
NetsBloxВизуальный блочный язык программирования - производный от Scratch и Snap! - внимание уделено сетевым возможностям, интеграции с Google картами. Внутри среды NetsBlox участники проектов могут коллективно редактировать блоки программы так же как это происходит в Google-документах.
OctoStudioСреда для разработки школьниками своих собственных игр на мобильных устройствах
Piktomir
Pocket CodeМобильное приложение для создание детьми игр и цифровых историй
Robo Pro Light
SciSnap!Расширения языка Snap! для использования в изучении математики
ScratchСреда программирования, которая позволяет детям создавать собственные анимированные и интерактивные истории, игры и другие произведения. Этими произведениями можно обмениваться внутри международной среды, которая постепенно формируется в сети Интернет. Scratch — это учебный блочный язык программирования, позволяющий ученикам создавать игры, цифровые истории. Среда разработки дает возможность детям редактировать аудиофайлы и монтировать небольшие, но полноценные видеоролики. В новые версии языка создатели обещают добавить функционал для создания собственных мобильных приложений.
ScratchJRScratch Junior – это визуальная среда программирования для детей от 5 до 7 лет. С ее помощью малыши могут создавать мультики, расставляя блоки действий в последовательном порядке.
Snap!Блочный язык программирования для преподавания алгоритмов и структур данных. Snap! - потомок языка Scratch. В отличие от Scratch Snap! поддерживает лямбда-исчисление, объекты первого класса, процедуры, рекурсия и множество других возможностей. С версии 4.0 Snap! получил современное название и был переписан на JavaScript. Moscow_city_univ.png
Snap4arduinoЯзык программирования для Arduino
  • Arduino_connect.png
SqueakСреда разработки живых интерактивных программ на основе SmallTalk
Stagecast Creator
StarLogo Nova120px-Slnova.png
  • StarLogo Nova – среда совместного агентного моделирования в трехмерной среде. Во многом это среда продолжает и развивает традиции языка Scratch. При этом здесь можно ставить серьезные эксперименты и получать воспроизводимые результаты. Центральной метафорой среды является мир (World), в котором можно создавать агенты различных пород.
  • ThunkableThunkable был создан в 2015 году на основе более известного конструктора приложений MIT App Inventor 2, как платформа для разработки на Android. Со временем инструмент обрел кросс-платформенность (iOS и Android) и стал платформой для разработки веб-приложений. Пользователи Thunkable могут добавлять кнопки, текст, изображения и даже карты, чтобы создать полнофункциональное приложение с такими функциями, как push-уведомления, датчики, геолокация, камера, Bluetooth, автономные возможности, и другое. Создание приложений в базовом аккаунте является бесплатным, но при этом можно создавать только общедоступные приложения.
    ToonTalkМини-язык, в котором ученик может собирать алгоритмы из объектов (вещей) на рабочем поле. Полностью веб-приложение.
    Битва Големов
    ПервоЛогоПервоЛого — универсальная проектная среда на базе языка Лого для начального и дошкольного образования. В ПервоЛого можно создавать проекты, даже не умея читать и считать — как очень простые, состоящие из картинки и текста или звука, так и весьма сложные, включающие в себя различные запрограммированные объекты, роль которых исполняет черепашка.

    Авторы и книги, которые оказали влияние на курс

     DescriptionEnvironment
    Cunningham120px-Cunningham_Patarakin_sm.jpg
    Ward Cunningham - программист и создатель первой wiki https://wiki.c2.com/?InformalHistoryOfProgrammingIdeas
    Smalltalk
    Semantic MediaWiki
    Экстремальное программирование
    DiSessaSome of his notable work in Education research focuses on the concept of material intelligence and computational literacy, and ontological innovations and the role of theory in design based research.Лого
    Boxer
    EpsteinEpstein Joshua - Профессор эпидемиологии в Школе глобального общественного здравоохранения Нью-Йоркского университета; директор-основатель Лаборатории агентного моделирования Нью-Йоркского университета, аффилированной с Курантовским институтом математических наук. Джошуа Эпштейн – автор всемирно признанных и уже ставших классическими книг по агентному моделированию - «Growing artificial societies: Social science from the bottom up», «Agent_Zero: Toward Neurocognitive Foundations for Generative Social Science» и др., в прошлом веке развивал теорию клеточных автоматов и эволюционным путем разработал методологию моделирования социальных и экономических процессов с применением агент-ориентированного подхода. Являясь пионером в этой сфере, в 2006 г. совместно с Джоном Паркером разработал крупнейшую в мире агент-ориентированную модель, включающую в себя все население планеты, которая неоднократно использовалась для оценки скорости распространения эпидемий различных заболеваний.Growing Artificial Societies: Social Science From the Bottom Up (Complex Adaptive Systems)
    GeeДжеймс Джи американский исследователь в области психолингвистики, анализа дискурса, социолингвистики , двуязычного образования, вычислительной и игровой грамотностиGamestar Mechanic
    Hal AbelsonГарольд (Хэл) Абельсон профессор электротехники и компьютерных наук в Массачусетском технологическом институте, член Института инженеров электротехники и электроники, и директор-основатель Creative Commons и Free Software Foundation.Лого
    App Inventor
    Boxer
    Scheme
    Structure and Interpretation of Computer Programs
    Turtle Geometry: The Computer as a Medium for Exploring Mathematics
    Blown to Bits
    Harvey120px-Harvey_solomon2.png
    Brian Harvey - Математик, программист, лектор, автор нескольких книг по обучению программированию. Автор UCB Logo, Snap!
    Scratch
    Snap!
    Лого
    Scheme
    UCB Logo
    KayАлан Кёртис Кэй (англ. Alan Curtis Kay; 17 мая 1940) — американский учёный в области теории вычислительных систем. Один из пионеров в областях объектно-ориентированного программирования и графического интерфейса. Также известен благодаря высказыванию «лучший способ спрогнозировать будущее — изобрести его». Президент исследовательского института Вьюпоинта, адъюнкт-профессор информатики в Калифорнийском университете.Scratch
    Squeak
    Smalltalk
    Dynabook
    LiebermanHenry Lieberman американский ученый в области информатики, языков программирования и искусственного интеллекта.Snap!
    Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems
    Minsky
    • Ма́рвин Ли Ми́нский — американский учёный в области искусственного интеллекта, сооснователь Лаборатории искусственного интеллекта в Массачусетском технологическом институте.
    Scratch
    Лого
    Wolfram
    NormanДон Норман - Norman - специалист по организации деятельности, психологии и дизайну. Автор книги Дизайн повседневных вещейThe Design of Everyday Things
    PapertСимур Паперт (Пейперт) — выдающийся математик, программист, психолог и педагог, создатель конструкционизма и языка Лого, один из основоположников теории искусственного интеллекта,Scratch
    Лого
    Lego Mindstorms
    RepenningИсследователь, профессор в области компьютерных наук и образования. Создатель первых блочных обучающих средВычислительное мышление
    Agentsheets
    AgentCubes
    ResnickМитчел Резник - профессор MIT Media Lab, создатель сред обучения программированию - StarLogo, Scratch 120px-Patarakin_resnick2007.jpgScratch
    Lego Mindstorms
    StarLogo
    Smaldino
    • Associate Professor of Cognitive & Information Sciences and faculty in the Quantitative and Systems Biology graduate program at UC Merced, where I am also affiliated with the Center for Analytic Political Engagement and the Center for Interdisciplinary Neuroscience.
    • External Professor at the Santa Fe
    NetLogo
    R
    RStudio
    Shiny
    WengerТеоретик в области обучения, известный по работам в области ситуативного обучения и сообщества практикиCommunities of Practice
    WickhamHadley Wickham - разработчик библиотек и автор книг по R, Shiny и анализу данных. His work includes the data visualisation system ggplot2 and the tidyverse, a collection of R packages for data science based on the concept of tidy data.R
    RStudio
    Shiny
    WilenskyWilensky - Ури Виленски - математик, педагог и программист, создатель языка NetLogo. Профессор в Северо-Западный университете — Чикаго.NetLogo
    StarLogo Nova
    Вольфрам, СтивенСтивен Вольфрам (англ. Stephen Wolfram, род. 29 августа 1959, Лондон) — британский физик, математик, программист и писатель. Разработчик системы компьютерной алгебры Mathematica и системы извлечения знаний WolframAlpha.Wolfram
    A new kind of science
    WolframAlpha
    SMP
    ГибсонГибсон, Джеймс Джером — американский психолог, считающийся одним из известнейших когнитивных психологов в области зрительного восприятия XX века. Согласно теории прямого восприятия Гибсона, восприятие может быть сведено к потокам информации в рецепторах органов чувств, отражающими также и контекст чувственного опыта. Среда и сопровождающая перцепцию активность субъекта в достаточной степени структурируют стимульную информацию. Стимульная информация чувственного опыта и комплексные процессы восприятия не опосредуется никакими другими более высокого уровня когнитивными процессами, процессами происходящими в головном мозге. Свой новый подход Гибсон назвал экологической психологией.Экологический подход к зрительному восприятию
    ИлличИван Иллич — американо-мексиканский богослов, педагог, философ, социальный критик смешанного хорватско-еврейского происхожденияДружественные средства
    КушниренкоАнато́лий Гео́ргиевич Кушнире́нко — советский и российский математик и специалист в области информационных технологий. Заведующий отделом учебной информатики НИИСИ РАН, автор многих учебных пособий по информатике, разработчик обучающей системы программирования КуМир.Kumir
    ЛатурБруно Латур - — французский антрополог, философ и социолог науки.Макроскоп
    ЛотманЛотман, Юрий Михайлович - литературовед, культуролог и семиотик.Семиосфера
    ПуанкареЖюль Анри́ Пуанкаре́ (фр. Jules Henri Poincaré; 29 апреля 1854, Нанси, Франция — 17 июля 1912, Париж, Франция) — французский математик, механик, физик, астроном и философ. Глава Парижской академии наук (1906), член Французской академии (1908) и ещё более 30 академий мира, в том числе иностранный член-корреспондент Петербургской академии наук (1895). Историки причисляют Анри Пуанкаре к величайшим математикам всех времён. Он считается, наряду с Гильбертом, последним математиком-универсалом, учёным, способным охватить все математические результаты своего времени.Математика
    Наука и гипотеза
    ТурчинВалентин Фёдорович Турчин - физик и кибернетик, создатель языка Рефал и новых направлений в программировании и информатикеФеномен науки: Кибернетический подход к эволюции
    РЕФАЛ
    Principia Cybernetica
    УоллЛарри Уолл (англ. Larry Wall, род.1954) — американский программист. Знаменит как создатель языка программирования Perl. Лингвист по образованию.Perl
    ЭнгестрёмЮрьё Энгестрём (Yrjo Engestrom)— известный финский ученый, один из наиболее пытливых последователей культурно-исторической теории Л.С. Выготского и психологической теории деятельности А.Н. Леонтьева, одновременно разрабатывающий собственную деятельностную концепцию экспансивного обученияТреугольник Энгестрёма

    Языки высокого уровня. Типология языков

    • Используя WebGrid соберите поле своих собственных представлений о языках высокого уровня
    Lisp Prolog C Python Snap!(Scratch)
    (progn(setq x"Здравствуй, учебный курс!")x)
    
    :-Print('Здравствуй, учебный курс!').
    
    #include <stdio.h>
    int main(void)
    {printf("Здравствуй, учебный курс!");
    return 0;}
    
    print("Здравствуй, учебный курс!")
    
    когда спрайт нажат
    сказать ["Здравствуй, учебный курс!"]
    


    Taxonomic sandbox


    Описание Несколько таксономий обучающих языков программирования - от маленькой до огромной. Большинство объектов на карте кликабельны.

    Diagrams_2df5bce0f8e7ae3415b60c040c34a9c6.png

    Область знаний NetSci, Информатика
    Среды для создания диаграммы: Graphviz



    V 2

    Вариант 3



    Стандартные типы данных

    Для Snap!

    Data snap.jpg

    Концепции программирования. Распространённые языковые конструкции

    Контейнеры для хранения данных

    Функциональное программирование

    Функции высшего порядка

    Объектно-ориентированное программирование

    Языки визуального программирования

    Визуальная реализация :Блоки-Иконки

    AgentCubes, Agentsheets, AlgoBlock, AlgoBrix, Alice, App Inventor, Beetle Blocks, Blockly, Boxer, CreatiCode, DBSnap, DRAKON, Etoys, GP, GameBlox, Gamefroot, Gamestar Mechanic, Hopscotch, Kodu, LogoBlocks, Looking Glass, MakeCode, Mama, MicroBlocks, Move the Turtle, NetsBlox, OctoStudio, Piktomir, Pocket Code, Robo Pro Light, SciSnap!, Scratch, ScratchJR, Snap!, Snap4arduino, Sophie, Squeak, Stagecast Creator, StarLogo Nova, Tangible Programming Bricks, The Incredible Machine, Thunkable, ToonTalk, Битва Големов, ПервоЛого

    Примеры создания моделей в среде StarLogo Nova


    Возможность встраивать модели StarLogo Nova + NetLogo Web

    Алгоритмы поиска и сортировки в разных языках

    Scratch

     Description
    Сортировка пузырькомСортиро́вка простыми обменами, сортировка пузырько́м (англ. bubble sort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Метод сортировки обменами лежит в основе некоторых более совершенных алгоритмов, таких как шейкерная сортировка, пирамидальная сортировка и быстрая сортировка. 400px-SortingBubble_ed.png

    Модули и библиотеки



    Описание Диаграмма, в которой демонстрируются основные принципы модульного программирования
    Область знаний Информатика, Управление
    Среды для создания диаграммы: Graphviz



    Как узнать какие модули (Extension) уже есть в системе


    Где посмотреть всё разнообразие доступных расширений

    Пространство Модулей + Lua

    Модули в Scratch

    Цветные ящики являются модулями, из которых строится среда Scratch
    StarLogo Nova + Snap!


    Собственные блоки и ящики блоков в Snap!

    Работа с данными. Среды выращивания данных и анализа данных.

    См. Семинары МГПУ о данных в образовании

     DescriptionExamples
    GoogleSchool 01(dataset)Датасет собран из лог-файла действий учителей внутри школыВ статье Патаракин Е.Д., Ярмахов Б.Б. Анализ связей между сотрудниками школы на основе их взаимодействия в домене Google Apps для образования // ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ И ОБЩЕСТВО. 2016. Vol. 19, № 2. P. 585–599.
    GoogleSchool 02(dataset)Датасет собран из лог-файла действий учителей внутри школы в среде GoogleApps - совместные действия учителей над документами различного типа превращаются в социальный граф.В статье Патаракин Е.Д., Ярмахов Б.Б. Анализ связей между сотрудниками школы на основе их взаимодействия в домене Google Apps для образования // ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ И ОБЩЕСТВО. 2016. Vol. 19, № 2. P. 585–599.
    Letopisi 2006 (dataset)120px-Hist_2006_associatios.png Лог-файл действий участников проекта Letopisi в 2006 годуPatarakin E.D. Wikigrams-Based Social Inquiry // Digital Tools and Solutions for Inquiry-Based STEM Learning. IGI Global, 2017. Vol. 1. P. 112–138.
    Preschool Digital Scopus120px-Co-ocurence-network.jpg

    1709 публикаций (стандартный набор полей Скопус) - Для выделения данных из базы Scopus использовалась следующая формула:

    • ALL (( preschool OR "primary school" ) AND ( "psychological" OR "pedagogical" ) AND ( computer OR internet OR digital ) ) AND PUBYEAR > 1999 AND ( LIMIT-TO ( ACCESSTYPE(OA) ) )
    В статье "Связь цифрового компонента обучения и развития детей дошкольного и школьного возраста: обзор исследований и международных образовательных практик" В вики тестируем анализ данных при помощи разных пакетов.
    Scopus Games (dataset)Датасет по публикациям о компьютерных играх, собранный в ScopusВКР Райкова Александра Дмитриевна Развитие навыков вычислительного мышления у детей дошкольного и младшего школьного возраста при помощи видеоигр https://youtu.be/2-M1W-wnT-U
    Библиосет: публикационная активность ВВГУ120px-Vl_sci_schools.png Данные о публикационной активности Владивостокского государственного университета https://vvsu.ru/ выгружены из Scopus в формате RIS.Научная статья
    Взаимное копирование МЭШ (датасет)При изучении записей действий над учебными сценариями в МЭШ из всей таблицы действий учителей над объектами-сценариями были выделены только действия взаимного копирования. В результате был выделен граф совместных копирований состоящий из 145 компонент. При этом узлы и связи распределены крайне неравномерно. Главный компонент содержит 1174 узлов и 17928 связей, а на остальные 144 компоненты приходится всего 378 узлов и 3421 связи.
    375px-Giant_copies.png
    Патаракин Е.Д., Буров В.В. Незримый колледж МЭШ // Вестник Мгпу. Серия: Информатика И Информатизация Образования. 2022. № 2 (60). 38-52 https://www.elibrary.ru/item.asp?id=49058657

    Взаимное копирование МЭШ (датасет)

    Описание датасета При изучении записей действий над учебными сценариями в МЭШ из всей таблицы действий учителей над объектами-сценариями были выделены только действия взаимного копирования. В результате был выделен граф совместных копирований состоящий из 145 компонент. При этом узлы и связи распределены крайне неравномерно. Главный компонент содержит 1174 узлов и 17928 связей, а на остальные 144 компоненты приходится всего 378 узлов и 3421 связи.
    375px-Giant_copies.png
    Описание полей
    1. from - ID участника, который копирует сценарий
    2. to - ID участника, у которого копируют сценарий
    3. subject - предмет сценария копируемого урока
    4. date_of_action - время действия
    Форматы данных CSV
    Область знаний Математика, Педагогика, Психология, Управление
    Веб-сайт - ссылка на датасет http://www.uic.unn.ru/pustyn/data-sets/mesh/giant recicrop component.csv
    Примеры использования датасета Патаракин Е.Д., Буров В.В. Незримый колледж МЭШ // Вестник Мгпу. Серия: Информатика И Информатизация Образования. 2022. № 2 (60). 38-52 https://www.elibrary.ru/item.asp?id=49058657
    Год создания датасета 2022



    Что делают в МЭШ учителя иностранного языка

    Описание - в статье Незримый колледж МЭШ

    Главный компонент содержит 1174 узла и 17928 связей.

    Датасет в вики

    Копирующий Копируемый Предмет Время
    1106 901 Химия 2016-12-01T16:40:44Z
    1480 234 Химия 2017-06-23T09:55:48Z
    234 1480 Химия 2017-10-12T06:08:15Z
    650 927 Химия 2018-02-21T20:15:05Z
    1362 901 Химия 2018-06-27T20:39:01Z
    390 881 Химия 2018-08-29T22:36:47Z
    647 604 Химия 2019-02-01T16:04:44Z
    430 585 Химия 2019-03-28T06:24:56Z
    927 650 Химия 2020-05-15T05:37:58Z

    Представление агентов - учителей в Snap!

    Snap! + данные

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


    WoS collection script pic.png


    Food scripte.png


    Snap Ages Plots.jpg

    Работа с медиа. Программирование игр и программирование внутри игр

    Описания игр

    Категория:DEG


    Паттерны

     Description of problemSolution
    Генерировать новых агентов120px-Create_netlogo.png
    Агент порождает поток других агентов - например, в экологических моделях рождение используется для создания потомков, в играх из пистолета вылетают пули, которые он порождает, в историях Scratch капли дождя клонируются и падают из тучи на землю.
    Можно использовать породы или клоны. Например, в NetLogo:
    • observer - наблюдатель может породить новых агентов в центре поля и сказать и что делать crt 10
    • каждая черепаха может порождать новую черепаху командой hatch - hatch-sheep 1
    • каждое пятно может на себе породить черепаху или несколько командой sprout - sprout 10
    В Scratch новые агенты создаются через клонирование уже существуюших агентов.
    Накапливать энергиюАгент живёт в среде, перемещается, выполняет задания и накапливает энергию или собирает очки
    • заносим эти данные в переменную
    • меняем свойства, которыми обладает агент
    • передаем эти данные
    Перевозить другого агента на себеТранспортировка представляет собой ситуацию, когда один агент перевозит на себе другого агента. Например, черепаха в Frogger несёт лягушку, пересекая реку. В экологических симуляциях процесс транспортировки можно использовать, например, для перевозки пыльцы пчёлами.
    • Привязать перевозимого агента к себе, чтобы он следовал за положением агента, которым мы управляем
    Перемещаться случайным образомАгент или агенты перемещаются по экрану случайным образом - стандартная для многих игр и симуляций ситуация, которую надо уметь воспроизводить - термиты, птицы и рыбы при формировании стай изначально перемещаются случайным образом.Агент поворачивается в направление, которое выбирается случайным образом и делает ход в этом направлении.
    Поглощать агентов120px-Delete_starlogo.png
    • Поглощение: обратный генерации процесс, когда агент не порождает, а поглощает других агентов. Например, земля поглощает падающие с неба капли воды, хищник съедает жертву, с которой он встречается.
    Прятать агентов или просто их убивать или умирать самому
    Подчиняться клавишам клавиатурыРеагировать на клавиши клавиатуры Движение клавиатуры: нажатия кнопок клавиатуры управляют движением агента. И здесь могут быть паттерны типа Прыгать - как писал Пейперт в этой статье писал про Марио и как воспроизвести поведение МариоИспользовать блоки управления в сочетании с блоками движения
    Поиск восхождением к вершинеПоиск восхождением к вершине - алгоритм поиска в компьютерных науках, когда агент просматривает значения переменных на ближайших полях и на поле с максимальным значением переменной. Использование алгоритма поиск восхождением к вершине можно наблюдать в таких играх как Sims или Pac-Man, когда призраки преследуют Pacman, следуя наивысшему значению запаха Pac-man, который распространяется по всему полю см. http://ccl.northwestern.edu/netlogo/models/Pac-ManИспользовать встроенные команды NetLogo
  • uphill patch-variable
  • uphill4 patch-variable
  • Превращаться в другого агентаПревращение - один агент превращается в другого агента. Возможный вариант - агент одной породы превращается в агента другой породы.В примере на Scratch - cпрайт клонируется и содержит в себе разные породы - демонов и драконов. При столкновении с агентом другой породы агент может изменять собственную породу и становиться другим. Например, из породы демонов переходить в породу драконов. В NetLogo можно просто поменять принадлежность к породе и соответственно свойства агента.
    Преследовать другого агентаОдин агент преследует другого агента - поворачивается в его сторону или поворачивается в том же направлении, куда движется другой агентИспользуются команды повернуться к другому агенту
    РаспространятьсяДиффузия: паттерн распространения, когда вы можете распространять определённое количество агента на других агентов, расположенных по близости за счёт процесса диффузии. Например, в модели муравьёв в NetLogo муравьи выделяют вещества феромоны, которые диффундируют на ближайшие поля игрового поля.В некоторых средах конструирования возможность диффузии заложена изначально. Например, в NetLogo стандартная команда к точкам - пятнам на экране diffuse
    Сталкиваться120px-Collision_starlogo.png
  • Паттерн определяет поведение агентов в случае их физического столкновения с другими агентами. Например, столкновение пули с мишенью. В игре Frogger, если грузовик сталкивается с лягушкой, лягушку нужно «раздавить»
  • В ряде среде есть специальный блок Collision - что делать агенту в случае столкновения с другим агентом. Для Scratch решение собирается из блоков сенсоров - если я касаюсь другого агента (указать какого именно), то ...
    ТащитьТащить - паттерн "тащить" противоположен по значению паттерну толкать - агент может тащить за собой другого агента или агентов. Например, поезд тащит за собой вагоны, лошадь тащит за собой сани, буксир тащит за собой баржи или плот.
    ТолкатьПаттерн "толкать" — это паттерн, который мы видим во многих играх. Агент должен толкать ящики или мешки с золотом. Когда игрок толкает коробку или мешок, эти объекты движутся в том направлении (вверх, вниз, вправо или влево), в котором их толкнули.Объект или Агент, над которым совершается действие, получает сигнал от агента субъекта деятельности, поворачивается в ту же сторону, куда смотрит толкающий агент и двигается в эту сторону.

    Критерии оценки по дисциплине

    Образовательный результат Тема Задание Пример


    Навыки совместной деятельности в среде Semantic MediaWiki Введение в курс, Языки высокого уровня. Зарегистрироваться на площадке, отметить странницу категориями, заполнить поля по форме Категория:UserMGPU Категория:ПБД221м Категория:РМП221м
    Выбирать способы программирования Языки высокого уровня. Типология языков Создайте собственные концепты к статьям в категории Языки программирования
    Использовать языки визуального программирования для моделирования базовых паттернов Визуальное программирование Разместить в вики проект, выполненный в среде Scratch или Snap! или StarLogo Nova Flocking (model), Как Организовать обмен сообщениями между агентами, Генерировать новых агентов
    Создавать диаграммы классов Объектно-ориентированное программирование Разместите в вики собственную диаграмму класса см. Использование ИИ для создания диаграмм Диаграмма класса, Языки (диаграмма класса), Robot
    Обращаться к объектам по их свойствам Объектно-ориентированное программирование Создайте примеры запросов к статьям вики с выводом результатов в виде географических карт, гистограмм и таблиц Category:Diagrams, Языки программирования Time-line
    Обращаться к агентам на основе свойств Объектно-ориентированное программирование Разместите в вики пример проекта Snap!, в котором происходит обращение к клонам спрайта Пример Flocking (model)
    Использовать готовые модули и библиотеки Модули и библиотеки Разместите в вики проект Scratch или Snap! в которых используются библиотеки Периодическая система химических элементов
    Обрабатывать данные, загружать данные, сохранять данные Работа с данными Разместите в вики проект Scratch или Snap!, в которых происходит обработка данных Периодическая система химических элементов