Участник:Bobiloket/Алгоритмы и структуры данных: различия между версиями

Материал из Поле цифровой дидактики
Строка 3: Строка 3:
</center>
</center>


'''Посчитай внутри вики количество участников из МГПУ''' [[:Category:UserMGPU]]?
* теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования Scratch, Snap!, GP
; Знать
: Основные понятия, связанные с миром алгоритмов и структур данных
: основы алгоритмизации задач, структуры данных;
: типы данных, структуры данных;
: методы и алгоритмы поиска и сортировки данных;
; Уметь
* обращаться к внешним и внутренним данным из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki
* обмениваться проектами и блоками программ в Snap!
* сравнивать и объединять статьи о языках программирования
* импортировать и экспортировать данные в среду визуального программирования Snap!
* проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
* планировать процесс реализации алгоритма при помощи псевдокода и диаграмм
* использовать язык '''dgl''' , mermaid, '''PlantUML''' встраивать диаграммы алгоритмов в вики страницы
* представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
* создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
* оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
* использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
* использовать объекты первого класса и лямбда исчисления.
 
==  Уметь обращаться к внешним и внутренним дым из среды Semantic MediaWiki, уметь использовать различные типы данных внутри Semantic MediaWiki ==
; Примеры задач на внутренние данные
* Посчитай внутри вики количество участников из МГПУ [[:Category:UserMGPU]]?
 
{{#ask: [[Category:UserMGPU]] | format = count }}
{{#ask: [[Category:UserMGPU]] | format = count }}
{{#ask: [[Category:UserMGPU]] | format = ul }}
{{#ask: [[Category:UserMGPU]] | format = ul }}


'''Посчитай внутри вики количество участников из ПБД221м''' [[:Category:ПБД221м]]?
* Посчитай внутри вики количество участников из ПБД-221м [[:Category:ПБД221м]]?
 
{{#ask: [[Category:ПБД221м]] | format = count }}
{{#ask: [[Category:ПБД221м]] | format = count }}
{{#ask: [[Category:ПБД221м]] | format = ul }}
{{#ask: [[Category:ПБД221м]] | format = ul }}


* Посчитай число участников, которые указали, что используют язык Scratch?
* Собери таблицу с описанием писателей [[Category:Person]], которые оказали влияние на язык [[R]]
* Собери тайм-лайн с языками, ведущими свое происхождение от языка [[Prolog]]
* ''' Предложи собственную задачу на использование внутренних данных в среде Semantic MediaWiki '''
; Примеры задач на внешние данные
* Размести на странице выборку из датасета, который уже есть в категории [[:Category:Dataset]]
* ''' Добавь новый датасет в [[:Category:Dataset]] и предложи вариант его использования '''
; Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2023 году -  [[:Категория:ПБД221м|ПБД221м]]
* Учебная группа, работающая с курсом Алгоритмы и структуры данных данных в в 2022 году -  [[:Категория:ПБД211М|ПБД211М]]
; Особенность курса - [[Active Essay]]  смотрим и тестируем на поле
<scratchblocks>
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</scratchblocks>
: И смотрим на то, как они выполняются
<scratch project="210120481" />
: или в [[Snap!]]
<snap project="Flocking_Snap" user="patarakin" />
== Цель, результаты освоения дисциплины ==
В результате изучения данной дисциплины студенты будут иметь представление о современных алгоритмических языках, о способах записи [[алгоритм]]ов и конструирования программ, основах объектного подхода в программировании
; Цель
: теоретические знания и практический опыт в области основ алгоритмизации задач, классификации языков программирования, типов данных, структур данных, взаимосвязь алгоритмов и структур данных, особенностей реализации алгоритмов и типов данных в языках блочного программирования [[Scratch]], [[Snap!]], [[GP]]
; Знать:
# Основные понятия, связанные с миром алгоритмов и структур данных См.  [[:Категория:Понятие]]
# основы алгоритмизации задач, структуры данных;
# типы данных, структуры данных;
# методы и алгоритмы поиска и сортировки данных;
; Уметь
# обращаться к внешним и внутренним данным из среды [[Semantic MediaWiki]], уметь использовать различные типы данных внутри Semantic MediaWiki см. [[:Категория:Dataset]]
# обмениваться проектами и блоками программ в [[Snap!]]
# сравнивать и объединять статьи о языках программирования [[Taxonomic_sandbox]]
# импортировать и экспортировать данные в среду визуального программирования [[Snap!]]
# проектировать и программировать  линейные и  разветвляющиеся структуры алгоритмов;
# планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]]
# использовать язык [[graphviz]], [[mermaid]], [[PlantUML]] встраивать диаграммы алгоритмов в вики страницы см. Graphviz + [[:Категория:Diagrams]] -
# представлять алгоритмы на страницах вики в виде диаграмм, псевдокода, кода на различных языках программирования
# создавать собственные блоки (команды и процедуры с входными параметрами) в среде Snap! (создавать функции с использованием различных типов данных))
# оценивать и сравнивать эффективность алгоритмов, вычислительную сложность алгоритмов
# использовать рекурсию в командах и процедурах, использовать рекурсию при создании собственных функций
# использовать объекты первого класса и лямбда исчисления
== Содержание разделов дисциплины: ==
=== Введение. Основные понятия. Пространство для совместной деятельности ===
Основы алгоритмизации задач. Semantic MediaWiki как поле совместной деятельности. Типы данных  внутри Semantic MediaWiki. Обращение к внешним данным.
=== История языков программирования и обучающих языков ===
Современные алгоритмические языки. Вычислительное мышление и вычислительное участие.
=== Представление алгоритмов в виде диаграмм, псевдокода, кода на различных языках программирования ===
# проектировать и программировать линейные и разветвляющиеся структуры алгоритмов;
# планировать процесс реализации алгоритма при помощи псевдокода и диаграмм - [[:Категория:Diagrams]] - например, [[Binary search (diagram)]]
# использовать язык dgl и [[mermaid]] встраивать диаграммы алгоритмов в вики страницы см. [[Graphviz]]
http://digida.mgpu.ru/images/diagrams/Diagrams_37be5e92fa212a080558fc26c16ac9cb.png
{{#mermaid:graph TB
A[1-6] --> |Да| B[1-3]
A --> |Нет| C[7-9]
B --> |Да| D[1-2]
B --> |Нет| E[4-5]
D --> |Да| 1
D --> |Нет| 3
1 -->  |Нет| 2
E --> |Нет| 6
E --> |Да| 4
4 -->  |Нет| 5
C -->|Да| F[7-8] 
C -->|Нет| G[10-11] 
F --> |Да| 7
7 --> |Нет| 8
F --> |Нет| 9
G --> | Да | 10
10 --> | Нет| 11
G --> | Нет| 12
}}
===  Основные характеристики изучаемого алгоритмического языка ===
Типы данных. Константы. Переменные. Выражения. Арифметические и логические выражения.
[[Файл:Snap data types2.png|600px]]
Спрайты, данные, процедуры как объекты первого класса. Структуры данных. Импорт и экспорт данных.
Список случайных чисел из  %сколько от %min до %max
[[Файл:Table sprite.png|800px]]
===  Структуры данных ===
[[Файл:Collab dataset JSON.png]]
* [[Массив]]ы и связные [[список|списки]]
* Стеки и очереди
* Деревья (бинарные, сбалансированные, двоичные деревья поиска)
* Графы (ориентированные и неориентированные, поиск в глубину и ширину)
=== Алгоритмы сортировки и поиска ===
Сравнение эффективности и вычислительной сложности алгоритмов
* [[Временная сложность алгоритма]]
=== Рекурсия ===
* [[Рекурсия]]
* [[Фрактал]]
== Литература ==
=== Основная литература  ===
# [[Стили и методы программирования]],
# [[Computer Science with Snap! by Examples]],
# [[Initiation to Algorithmics with Scratch]]
=== Дополнительная литература  ===
https://snap.berkeley.edu/snap/help/SnapManual.pdf - Руководство по Snap!
== Напоминание по работа в вики среде ==
; [[Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»]]


{{#ask:[[Категория:ПБД221м]] [[Environment::+]] | ?Environment }}
{{#ask:[[Категория:ПБД221м]] [[Environment::+]] | ?Environment }}

Версия 12:19, 19 марта 2024


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

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

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

285

… следующие результаты

  • Посчитай внутри вики количество участников из ПБД-221м Category:ПБД221м?

10

  • Посчитай число участников, которые указали, что используют язык 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!


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

Мастер-класс «Совместная работа со знаниями на поле цифровой дидактики»
 Environment
Die Toten EngelScratch
Pascal
Kumir
Python
Ekaterina ListopadPython
C++
C
Kohan ViolettaPython
Sergey031Scratch
Python
C++
C
Загрузка...