Участник:KuptsovaID/Алгоритмы и структуры данных

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

Это для курса "Алгоритмы и структуры данных"


Описание Отсортировать массив в порядке возрастания
Область знаний Информатика, Образование
Область использования (ISTE) Computational Thinker
Возрастная категория 14


Поясняющее видео
Близкие рецепту понятия
Среды и средства для приготовления рецепта: Pascal, Python, Python IDLE, Snap!



var a:array [1..6] of integer; i,j, min,minI: integer;
begin
for i:=1 to 6 do
begin
write ('a[',i,']=');
readln(a[i]);
end;
for i:=1 to 6 do
begin
min:=a[i];
minI:=i;
for j:=i+1 to 6 do
if a[j]<min then begin min:=a[j]; minI:=j; end;
a[minI]:=a[i];
a[i]:=min;
end;
for i:=1 to 6 do
write (a[i],' ');
end.

{{Curriculum |Learning_outcomes=Цель

  • теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP
Знать
Основные понятия, связанные с миром алгоритмов и структур данных
основы алгоритмизации задач, структуры данных;
типы данных, структуры данных;
методы и алгоритмы поиска и сортировки данных;
Уметь
  • обращаться к внешним и внутренним данным из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki
  • обмениваться проектами и блоками программ в Snap!
  • сравнивать и объединять статьи о языках программирования
  • импортировать и экспортировать данные в среду визуального программирования Snap!
  • проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
  • планировать процесс реализации алгоритма при помощи псевдокода и диаграмм
  • использовать язык dgl , mermaid, PlantUML встраивать диаграммы алгоритмов в вики страницы
  • представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
  • создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
  • оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
  • использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
  • использовать объекты первого класса и лямбда исчисления.

Уметь обращаться к внешним и внутренним дым из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki

Примеры задач на внутренние данные
  • Посчитай внутри вики количество участников из МГПУ Category:UserMGPU?

AAnosov, AbdullaevaSP041, Abushkindb, Adila, AfanasevDV, Afonbro, Agisheva Viktoria, AizatullovaDN, AizatullovaDinara, AlekhinaAA, AlexandraSemina, AlexandraSemina2, Alexbard2000, AlievM, Alina, Alina Ermakova, Alina Igorevna, AliyaSa, Anastasia Alekseychuk, Anastasia Lugovaya, Annapvorman, Annavorman, AntoshkinAA, AseevaGalina, Azevichai, BarykinaEA, Bashkatova Anna, BazanovaAY, BelikMary, BeregovaMS, Black0mesa, Bobiloket, BoboevaSN, BondarenkoEV, Borisova Tanya, BratkinPA, DavydovAE, Die Toten Engel, Dimentry, Dmitriy, Drel'Tar, Dsalokin, EVSmolin777, EgorovAS, EgorovSN, Egorovsn051, Ekaterina Listopad, ElenaGrcaheva, EliseevAV, EvgenovaKA… следующие результаты

  • Посчитай число участников, которые указали, что используют язык Scratch?
  • Собери таблицу с описанием писателей, которые оказали влияние на язык R
  • Собери тайм-лайн с языками, ведущими свое происхождение от языка Prolog
  • Предложи собственную задачу на использование внутренних данных в среде Semantic MediaWiki
Примеры задач на внешние данные
  • Размести на странице выборку из датасета, который уже есть в категории Category:Dataset
  • Добавь новый датасет в Category:Dataset и предложи вариант его использования


Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2023 году - ПБД221м
  • Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2022 году - ПБД211М
Особенность курса - Active Essay смотрим и тестируем на поле
when [up arrow v] key pressed
point in direction (0)
move (10) steps
when [down arrow v] key pressed
point in direction (180)
move (10) steps
when [right arrow v] key pressed
point in direction (90)
move (10) steps
when [left arrow v] key pressed
point in direction (-90)
move (10) steps
И смотрим на то, как они выполняются
или в Snap!

Цель, результаты освоения дисциплины

В результате изучения данной дисциплины студенты будут иметь представление о современных алгоритмических языках, о способах записи алгоритмов и конструирования программ, основах объектного подхода в программировании

Цель
теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP
Знать
  1. Основные понятия, связанные с миром алгоритмов и структур данных См. Категория:Понятие
  2. основы алгоритмизации задач, структуры данных;
  3. типы данных, структуры данных;
  4. методы и алгоритмы поиска и сортировки данных;
Уметь
  1. обращаться к внешним и внутренним данным из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki см. Категория:Dataset
  2. обмениваться проектами и блоками программ в Snap!
  3. сравнивать и объединять статьи о языках программирования Taxonomic_sandbox
  4. импортировать и экспортировать данные в среду визуального программирования Snap!
  5. проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
  6. планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - Категория:Diagrams
  7. использовать язык graphviz, mermaid, PlantUML встраивать диаграммы алгоритмов в вики страницы см. Graphviz + Категория:Diagrams -
  8. представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
  9. создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
  10. оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
  11. использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
  12. использовать объекты первого класса и лямбда исчисления

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

Введение. Основные понятия. Пространство для совместной деятельности

Основы алгоритмизации задач. Semantic MediaWiki как поле совместной деятельности. Типы данных внутри Semantic MediaWiki. Обращение к внешним данным.

История языков программирования и обучающих языков

Современные алгоритмические языки. Вычислительное мышление и вычислительное участие.

Представление алгоритмов в виде диаграмм, псевдокода, кода на различных языках программирования

  1. проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
  2. планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - Категория:Diagrams - например, Binary search (diagram)
  3. использовать язык dgl и mermaid встраивать диаграммы алгоритмов в вики страницы см. Graphviz

Diagrams_37be5e92fa212a080558fc26c16ac9cb.png

Основные характеристики изучаемого алгоритмического языка

Типы данных. Константы. Переменные. Выражения. Арифметические и логические выражения.

Snap data types2.png

Спрайты, данные, процедуры как объекты первого класса. Структуры данных. Импорт и экспорт данных. Список случайных чисел из %сколько от %min до %max Table sprite.png


Структуры данных

Collab dataset JSON.png

  • Массивы и связные списки
  • Стеки и очереди
  • Деревья (бинарные, сбалансированные, двоичные деревья поиска)
  • Графы (ориентированные и неориентированные, поиск в глубину и ширину)

Алгоритмы сортировки и поиска

Сравнение эффективности и вычислительной сложности алгоритмов

Рекурсия

Литература

Основная литература

  1. Стили и методы программирования,
  2. Computer Science with Snap! by Examples,
  3. Initiation to Algorithmics with Scratch

Дополнительная литература

https://snap.berkeley.edu/snap/help/SnapManual.pdf - Руководство по Snap!

Критерии оценки по дисциплине (2022 - 2023)

Образовательный результат Тема Задание Пример
Знает понятия мира алгоритмов и структур данных Введение. Основные понятия. Пространство для совместной деятельности Использовать различные типы данных внутри Semantic MediaWiki, включить внешние данные в состав статьи Категория понятий - Category:Понятие

В категории статей о датасетах Category:Dataset

Умеет сравнивать и объединять статьи о языках программирования История языков программирования и обучающих языков Редактировать, дополнять и объединять статьи о языках программирования Category:Язык программирования, Taxonomic_sandbox

Умеет проектировать и программировать линейные и разветвляющиеся структуры алгоритмов, планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - Категория:Diagrams, использовать язык dgl и mermaid встраивать диаграммы алгоритмов в вики страницы см. Graphviz

Представление алгоритмов в виде диаграмм, псевдокода, кода на различных языках программирования Создать диаграмму алгоритма, представить реализацию алгоритма на языке высокого уровня Пример
Умеет создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных)) Основные характеристики изучаемого алгоритмического языка Процедуры видоизменения данных в среде Snap! Примеры видоизменения данных в Snap!, Получить список значений
оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов Алгоритмы сортировки и поиска Сравнить эффективность выполнения процедур над данными Готовые датасеты из категории Category:Dataset. Сортировка вставками, Быстрая сортировка
использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций Рекурсия Создать собственные команды и процедуры, в которых используется рекурсия Рекурсия, Фрактал

Напоминание по работа в вики среде

Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»