Слайд 2
Цель курса
Изучение и практическое освоение современных методов программирования:
Организация
данных
Построение и исследование алгоритмов
Разработка программного обеспечения (ПО)
Слайд 3
Задачи курса
Язык программирования Си (инструмент для практической реализации)
Среда
разработки MS Visual Studio 2010
Типы данных (основные, абстрактные)
Структуры
данных (статические, динамические):
Статические массивы
Динамические массивы
Списки (различные), очередь, стек, дека
Деревья
Графы
Построение и анализ алгоритмов
Сложность алгоритмов
Сортировка и поиск
Хеширование
Генерация псевдослучайных чисел
Анализ алгоритов
Слайд 4
Литература
Дональд Кнут. Искусство программирования (в 3-х томах), последнее
издание 2010-2012 гг
Б. Керниган, Д. Ритчи. Язык программирования Си,
последнее издание 2010 г
Альфред В. Ахо, Джон Э. Хопкрофт, Джеффри Д. Ульман. Структуры данных и алгоритмы, последнее издание 2010 г
Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн. Алгоритмы. Построение и анализ, последнее издание 2012 г
А. Ахо, Дж. Ульман, Дж. Хопкрофт. Построение и анализ вычислительных алгоритмов, последнее издание 2012 г
Слайд 5
Структура курса
Лекции – еженедельно до конца семестра,
Семинары –
коллективное решение типовых задач под руководством преподавателя,
Лабораторные работы –
решение и сдача индивидуальных задач:
Соответствие постановке задачи (все, что требуется по условию задачи, должно быть правильно реализовано),
Реализация дополнительных требований (в аудиторное время),
Объяснение фрагментов кода по выбору преподавателя и ответы на вопросы.
Слайд 6
Язык программирования Си
Создавался в 1969-73 гг.
Основной разработчик
– Деннис Ритчи (Dennis Ritchie, 1941 – 2011)
Наиболее популярный
язык программирования
Простой, лаконичный, гибкий и опасный
Основа других языков (C++, Java и т.д.)
Слайд 7
Тест по Си
Дайте определения идентификатора, константы, переменной, массива,
указателя.
Как работает функция malloc?
Что такое рекурсия?
Напишите итеративную функцию возведения
в степень (аргументы (основание и показатель) – байты, результат – 64-х битное целое)
Напишите рекурсивную функцию вычисления факториала (аргумент – байт, результат – 64-х битное целое)
Слайд 8
Жизненный цикл ПО
Постановка задачи (создание новой или анализ
существующей спецификации).
Грубая модель, обобщенный алгоритм.
Проектирование данных (абстрактные типы данных).
Детализация
алгоритма.
Разработка структур данных.
Кодирование.
Компиляция, компоновка, запуск.
Тестирование и отладка.
Ввод в эксплуатацию.
Эксплуатация.
Снятие с эксплуатации.
Слайд 9
Типы данных
Основные (базовые) типы – определяют диапазон значений
переменной/функции
Целые (char, short, int, long, long long)
Вещественные (float, double)
Символьный
(char)
Строковый – набор символов
Обезличенный (void)
Слайд 10
Абстрактные типы данных
АТД = модель + операции, определенные
в данной модели
Пример – стек (stack), LIFO:
Динамическое множество (текущее
количество элементов стека меняется динамически)
Обязательные операции: запись в стек (push), чтение из стека с последующим удалением (pop)
Дополнительные операции: очистка, чтение без удаления, вычисление текущего количества хранимых элементов, контроль нижней и верхней границы
Слайд 11
Структуры данных
СД – средства для реализации АТД
Основаны на
базовых типах данных
Статические и динамические
Статические – память выделяется сразу
при запуске программы, ее объем фиксирован, пока «живет» программа.
Переменные, обычные массивы
Динамические – память выделяется по мере реальной необходимости, в процессе выполнения программы
Основаны на указателях (pointer)