Алгоритмы
- Тема: Алгоритмы.
- Видео
Концепты
Заголовок раздела «Концепты»- Алгоритм (ввод, вывод, интерфейс, функция, имплементация)
- Абстракция, уровень абстракции
- Декомпозиция задачи (как решать сложные задачи)
- Списки, массивы, индекс
Практические навыки
Заголовок раздела «Практические навыки»-
Как подходить к решению сложных задач?
Наводящий вопрос
Например, если дали задание “приготовить комплексный обед”, как приступить к его выполнению?
Подсказка 1
“Приготовить комплексный обед” — сложное задание, состоящее из высокоуровневых подзаданий: приготовить первое, приготовить второе.
Подсказка 2
Проводим анализ: что нужно для первого, что для второго. Выбираем, что именно будем готовить. Выявляем необходимые ингредиенты и посуду.
Подсказка 3
Подготавливаем ингредиенты и посуду. Готовим блюда по шагам, описанным в рецепте.
Ответ
Производим анализ комплексной задачи. Разбиваем ее на крупные, высокоуровневые подзадачи. Проводим анализ подзадач. Разбиваем их на более мелкие подзадачи. Продолжаем до тех пор, пока не доходим до элементарных задач, которые больше невозможно разбить, или которые уже являются решенными (будь то, находим рецепт со всеми шагами в интернете).
-
Как список из чисел записать в линейной памяти?
-
Что нужно сделать, чтобы пройтись по всем элементам списка? Посчитать сумму элементов списка?
Ответ
В таком случае всегда нужна переменная (ячейка памяти), которая следит за “текущим” значением. Будь то индекс, текущая сумма, или множество посещенных вершин графа — всегда будет нужна переменная.
-
Приведите пример алгоритма, который ссылается на другой алгоритм при своем выполнении.
Практика
Заголовок раздела «Практика»- Выведите алгоритм (на бумаге, словами) решения следующей задачи: “Дано 2 списка с равным количеством чисел. Вычислите попарную сумму элементов из этих списков (первый элемент из первого списка, первый из второго; второй элемент из первого списка, второй из второго; …)”