[Geekbrains] Алгоритмы и структуры данных [Повтор]
Без знаний алгоритмов начинающий программист часто изобретает велосипед вместо того, чтобы решать задачу уже проверенными способами. Современные языки программирования всячески облегчают жизнь программиста, выполняя множество "грязной" работы. С одной стороны, это хорошо, но с другой - многие современные программисты перестают понимать, как на самом деле работает компьютер. Знание алгоритмов и структур данных просто необходимо как начинающим, так и уже работающим программистам.
Пользуетесь ли вы списком или стеком? Знаете ли вы, как они работают? Если нет, то как вы можете быть уверены в правильности выбранного вами алгоритма? Умение определять и сравнивать их сложность - первый шаг к пониманию алгоритмов и структур данных.
Чему Вы научитесь
Скрытое содержимое.
Без знаний алгоритмов начинающий программист часто изобретает велосипед вместо того, чтобы решать задачу уже проверенными способами. Современные языки программирования всячески облегчают жизнь программиста, выполняя множество "грязной" работы. С одной стороны, это хорошо, но с другой - многие современные программисты перестают понимать, как на самом деле работает компьютер. Знание алгоритмов и структур данных просто необходимо как начинающим, так и уже работающим программистам.
Пользуетесь ли вы списком или стеком? Знаете ли вы, как они работают? Если нет, то как вы можете быть уверены в правильности выбранного вами алгоритма? Умение определять и сравнивать их сложность - первый шаг к пониманию алгоритмов и структур данных.
Чему Вы научитесь
- Основам программирования на языке C;
- Структурам данных и алгоритмам, которые лежат в основе их работы;
- Общим подходам и полезным методикам для решения сложных задач;
- Инструментам оценки сложности решаемых задач;
- Создавать консольные программы на языке C в среде разработки QT;
- Создавать программы, используя собственные алгоритмы;
- Создавать собственные структуры данных: стеки, списки, деревья и др.;
- Оценивать производительность программ;
- Использовать “незащищённый” режим работы с памятью, основанный на указателях;
- Динамически выделять и освобождать память;
- Использовать рекурсию.
Урок 1. Управляющие конструкции языка программирования С
Язык программирования C; переменные; типы данных; простая программа; управляющие конструкции - часть 1.
Урок 2. Простые алгоритмы с использованием циклов и функций
Управляющие конструкции - часть 2; функции; генератор псевдослучайных чисел; простые алгоритмы.
Урок 3. Работа с функциями; анализ производительности
Передача аргументов по значению и по ссылке; прототипы функции; заголовочные файлы; подсчёт времени выполнения программы; структуры.
Урок 4. Работа с массивами и файловой системой
Массивы; директивы; строки; двумерные массивы; арифметика указателей; файлы.
Урок 5. Алгоритмы поиска и сортировок; сложность алгоритмов
Алгоритмы; поиск в одномерном массиве; сортировки; анализ качества алгоритма; производительность; количество маршрутов.
Урок 6. Работа со строками и динамическими массивами
Строки; динамическое выделение памяти; основные сведения о символах и строках; массив строк; функции преобразования строк; динамические массивы; массивы массивов.
Урок 7. Рекурсия
Рекурсивные алгоритмы; поиск с возвратом.
Урок 8. Динамические структуры данных. Часть 1
Динамические структуры; списки; реализация стека на односвязном списке; двухсвязные списки.
Урок 9. Динамические структуры данных. Часть 2
Деревья; рекурсивный обход двоичного дерева; использование динамических структур данных; хеш-таблицы.
Язык программирования C; переменные; типы данных; простая программа; управляющие конструкции - часть 1.
Урок 2. Простые алгоритмы с использованием циклов и функций
Управляющие конструкции - часть 2; функции; генератор псевдослучайных чисел; простые алгоритмы.
Урок 3. Работа с функциями; анализ производительности
Передача аргументов по значению и по ссылке; прототипы функции; заголовочные файлы; подсчёт времени выполнения программы; структуры.
Урок 4. Работа с массивами и файловой системой
Массивы; директивы; строки; двумерные массивы; арифметика указателей; файлы.
Урок 5. Алгоритмы поиска и сортировок; сложность алгоритмов
Алгоритмы; поиск в одномерном массиве; сортировки; анализ качества алгоритма; производительность; количество маршрутов.
Урок 6. Работа со строками и динамическими массивами
Строки; динамическое выделение памяти; основные сведения о символах и строках; массив строк; функции преобразования строк; динамические массивы; массивы массивов.
Урок 7. Рекурсия
Рекурсивные алгоритмы; поиск с возвратом.
Урок 8. Динамические структуры данных. Часть 1
Динамические структуры; списки; реализация стека на односвязном списке; двухсвязные списки.
Урок 9. Динамические структуры данных. Часть 2
Деревья; рекурсивный обход двоичного дерева; использование динамических структур данных; хеш-таблицы.
https://geekbrains.ru/courses/106