
На этом уроке мы обсудим план занятий, вспомни былые времена голых массивов, и выясним, зачем же нужны коллекции. Начнём знакомство с самой простой коллекции ArrayList и немного поэкспериментируем с ней.
Самостоятельное задание:
Создать ArrayList и добавить несколько элементов.
Узнать и написать, на сколько элементов она заряжена изначально.
Организовать два цикла для перебора элементов.
Найти интересный метод и тоже поэкспериментировать с ним.
Написать, какой метод ты выбрал и что он делает.
На этом уроке мы поработаем с типизированной коллекцией List. Обсудим её преимущества, по сравнению с ArrayList, добавим несколько элементов, отсортируем их и даже найдём их сумму. Перебор элементов мы организуем двумя разными способами — через итератор и обычным foreach().
Самостоятельное задание:
Создать List<int> и добавить несколько элементов.
Организовать два цикла для перебора элементов.
Выполнить сортировку и нахождение суммы элементов списка.
Найти интересный метод и тоже поэкспериментировать с ним.
Написать, какой метод ты выбрал и что он делает.
На этом уроке мы сравним эффективность использования ArrayList, List<> и простого массива.
Победителем окажется типизированная коллекция List<>.
Очень интересно сравнивать эффективность, нам в этом поможет флагманский класс Stopwatch.
Самостоятельное задание:
Создать три отдельные функции List0(), List1(), List2().
Создать секундомер и засечь время их работы.
Поэкспериментировать с различными операциями.
Придумать свой набор операций и рассказать о результатах.
На этом уроке мы начнём рассматривать три класса, которые похожи по функциональности, но очень сильно отличаются
по реализации, это: ListDictionary, Hashtable, HybridDictionary. Эти коллекции хранят пару значений: ключ — значение. Они нетипизированные и работают с объектами.
Самостоятельное задание:
Создать функцию Dict1().
Добавить несколько элементов.
Организовать цикл для перебора элементов.
Найти дополнительный метод и поэкспериментировать с ним.
Написать, какой метод ты выбрал и что он делает.
Посмотреть, как хранятся значения внутри коллекции.
На этом уроке мы поработаем с Hashtable, то есть, разберемся, каким именно образом в неё складываются значения и почему она будет работать, даже если хеш-функция вернёт одинаковые значения. Также мы увидим, что порядок элементов путается, а сами значения хранятся в очень хитром виде. В конце урока мы сделаем всё то же самое с гибридным классом.
Задание:
Сравнить скорость работы этих коллекций.
1 этап: создать МНОГО коллекций по 8 и по 9 элементов (ОТДЕЛЬНО).
2 этап: создать ОДНУ коллекцию из ОГРОМНОГО количества элементов.
Подвести итоги и в отчёте написать вывод.
Самостоятельное задание:
Создать функцию Dict2().
Добавить несколько элементов в Hashtable.
Организовать цикл для перебора элементов.
Создать функцию Dict3().
Добавить несколько элементов в HybridDictionary.
Организовать цикл для перебора элементов.
Проверить порядок следования 9 и 10 элементов.
* Сравнить скорость работы этих трёх коллекций.
На этом уроке мы поработаем с интересной коллекцией BitArray, которая позволяет компактно хранить большие массивы двоичных данных.
Самостоятельное задание:
Создать огромный массив.
Задать значения всем элементам.
Проверить работу метода Not() и Xor().
Выяснить размер занимаемой памяти массива на 40000 элементов.
Найти интересный метод и тоже поэкспериментировать с ним.
Описать выбранный тобой метод и то, что он делает.
На этом уроке я дам определение графа своими словами, всё, что запомнил с момента учёбы в университете. В конце урока мы зададимся вопросом — как хранить граф в памяти компьютера.
Самостоятельное задание:
Нарисовать свой граф и приложить его скриншот.
Предложить свой способ хранения графа.
Продемонстрировать этот способ на примере нарисованного графа.
На этом уроке мы начнём создавать класс Граф для хранения графа и работы с ним. На уроке мы создадим всё, что касается вершин.
Самостоятельное задание:
Создать новый проект и класс Граф.
Описать перечисление Цвет и коллекцию вершин.
Написать методы НоваяВершина(), УстановитьЦвет().
Написать методы ЦветВершины(), ВсеВершины().
Предложить способ хранения рёбер.
На этом уроке мы создадим коллекцию для хранения рёбер. Опишем методы добавления рёбер и перебора смежных вершин.
Самостоятельное задание:
Описать коллекцию рёбра.
Написать методы Новое ребро(), ДобавитьСмежнуюВершину().
Написать методы ВсеСмежныеВершины().
Создать экземпляр графа и сформировать его по примеру.
На этом уроке мы создадим экземпляр нашего графа и добавим в него все его элементы по образцу. Самостоятельное задание — вывести граф на экран.
Самостоятельное задание:
Создать граф по образцу.
Написать функцию AddLabel().
* Вывести граф на экран.
На этом уроке мы выведем граф на экран: и вершины и рёбра.
Самостоятельное задание:
Создать функцию ShowGrafLabels() и прописать все координаты.
Написать рисование линий для отображения рёбер.
На этом уроке мы создадим граф в виде Шахматной доски и организуем её вывод на экран.
Самостоятельное задание:
Создать граф для шахматной доски.
Отобразить его на экране.
На этом уроке мы познакомимся с алгоритмом поиска вширь. Мы проработаем весь алгоритм на конкретном примере. Самостоятельное задание — выбрать граф и также с ним поработать.
Самостоятельное задание:
Посмотреть видеоурок.
Нарисовать свой граф.
Проработать весь алгоритм с использованием очереди.
Приложить скриншот/фото результата с очередью.
На этом уроке мы напишем алгоритм поиска вширь. Однако, запустить его не удастся. Почему? Это вам самостоятельное задание, разобраться в причине, и найти способ, как это исправить.
Самостоятельное задание:
Вместе со мною создать алгоритм.
Добавить кнопку и сделать запуск алгоритма.
Выполнить пошагово алгоритм и выяснить, в чём проблема.
* Исправить ошибку.
На этом уроке мы исправим ошибку из прошлого урока и пройдёмся по-шагово по всему алгоритму.
Самостоятельное задание:
Исправить ошибку.
Пройтись по-шагово по всему алгоритму.
* Сделать визуализацию алгоритма на графе.
На этом уроке мы создадим делегат "Покраска" и через него реализуем отображение процесса.
Можно заменить panel1.Refresh() + ConnectLabels() на list[nr].Refresh() — будет без "морганий" ) .
Самостоятельное задание:
Создать делегат.
Написать метод MarkLabel (int nr, Цвет color).
Добавить паузу.
Насладиться созерцанием процесса работы алгоритма поиска вширь.
На этом уроке мы познакомимся с алгоритмом поиска вглубь. Мы проработаем весь алгоритм на конкретном примере. Самостоятельное задание — выбрать граф и также с ним поработать.
Самостоятельное задание:
Посмотреть видеоурок.
Нарисовать свой граф.
Проработать весь алгоритм с использованием стека.
Приложить скриншот/фото результата с очередью.
На этом уроке мы напишем алгоритм поиска вглубь. Вернее сказать — скопипастим. И пофилософствуем.На этом же уроке посмотрим, как он работает.
Самостоятельное задание:
Создать класс ПоискВГлубину.
Скопировать и подправить алгоритм.
Добавить кнопку и сделать запуск алгоритма.
Насладиться созерцанием процесса работы алгоритма поиска вширь.
Мы рассмотрим основные коллекции в языке C#: Array, List, ArrayList<>, foreach, ListDictionary, Hashtable, HybridDictionary, BitArray, Stack, Queue. Поэкспериментируем, сравним быстродействие.
Познакомимся с теорией графов. Создадим класс для представления графа в памяти компьютера. Сделаем визуальное отображения графа и составим алгоритмы поиска вширь и глубь с использованием коллекций Стек и Очередь.
После прохождения этого курса вы сможете уверенно использовать различные коллекции, знать, чем они отличаются друг от друга, выбирать более подходящие варианты для вашей задачи. Узнаете, как можно использовать коллекции для хранения графа и выполнять основные операции над ним.
Этот курс отлично сочетает алгоритмические навыки с графическим оформлением - мы сделаем визуализацию алгоритмов поиска вширь/вглубь, чтобы лучше понять принцип их работы.
Мы рассмотрим основные коллекции в языке C#: Array, List, ArrayList<>, foreach, ListDictionary, Hashtable, HybridDictionary, BitArray, Stack, Queue. Поэкспериментируем, сравним быстродействие.
Познакомимся с теорией графов. Создадим класс для представления графа в памяти компьютера. Сделаем визуальное отображения графа и составим алгоритмы поиска вширь и глубь с использованием коллекций Стек и Очередь.
После прохождения этого курса вы сможете уверенно использовать различные коллекции, знать, чем они отличаются друг от друга, выбирать более подходящие варианты для вашей задачи. Узнаете, как можно использовать коллекции для хранения графа и выполнять основные операции над ним.
Этот курс отлично сочетает алгоритмические навыки с графическим оформлением - мы сделаем визуализацию алгоритмов поиска вширь/вглубь, чтобы лучше понять принцип их работы.